feat: 邻近高干扰小区数按制式拆分统计
This commit is contained in:
+57
-7
@@ -57,7 +57,15 @@ class PipelineTest(unittest.TestCase):
|
||||
"latitude",
|
||||
"azimuth",
|
||||
"nearby_count",
|
||||
"nearby_26g",
|
||||
"nearby_700m",
|
||||
"nearby_tdd",
|
||||
"nearby_fdd",
|
||||
"prev_nearby_count",
|
||||
"prev_nearby_26g",
|
||||
"prev_nearby_700m",
|
||||
"prev_nearby_tdd",
|
||||
"prev_nearby_fdd",
|
||||
],
|
||||
)
|
||||
rows_by_cgi = {row["cgi"]: row for row in rows}
|
||||
@@ -220,16 +228,34 @@ class PipelineTest(unittest.TestCase):
|
||||
|
||||
def test_nearby_count_uses_high_interference_rows_with_coordinates(self) -> None:
|
||||
rows = [
|
||||
nearby_row("a", "113.000000", "22.000000"),
|
||||
nearby_row("b", "113.005000", "22.000000"),
|
||||
nearby_row("c", "113.020000", "22.000000"),
|
||||
nearby_row("d", "113.000000", "22.000000"),
|
||||
nearby_row("e", "", ""),
|
||||
nearby_row("a", "113.000000", "22.000000", "2.6G"),
|
||||
nearby_row("b", "113.005000", "22.000000", "700M"),
|
||||
nearby_row("c", "113.020000", "22.000000", "TDD"),
|
||||
nearby_row("d", "113.000000", "22.000000", "FDD"),
|
||||
nearby_row("e", "", "", "TDD"),
|
||||
]
|
||||
|
||||
main.populate_nearby_counts(rows)
|
||||
|
||||
self.assertEqual([row["nearby_count"] for row in rows], ["2", "2", "0", "2", "0"])
|
||||
by_cgi = {row["cgi"]: row for row in rows}
|
||||
self.assertEqual(
|
||||
[by_cgi["a"][column] for column in ("nearby_26g", "nearby_700m", "nearby_tdd", "nearby_fdd")],
|
||||
["0", "1", "0", "1"],
|
||||
)
|
||||
self.assertEqual(
|
||||
[by_cgi["b"][column] for column in ("nearby_26g", "nearby_700m", "nearby_tdd", "nearby_fdd")],
|
||||
["1", "0", "0", "1"],
|
||||
)
|
||||
self.assertEqual(
|
||||
[by_cgi["d"][column] for column in ("nearby_26g", "nearby_700m", "nearby_tdd", "nearby_fdd")],
|
||||
["1", "1", "0", "0"],
|
||||
)
|
||||
for row in rows:
|
||||
per_type_total = sum(
|
||||
int(row[column]) for column in ("nearby_26g", "nearby_700m", "nearby_tdd", "nearby_fdd")
|
||||
)
|
||||
self.assertEqual(per_type_total, int(row["nearby_count"]))
|
||||
self.assertLess(main.haversine_distance_km(113.0, 22.0, 113.005, 22.0), 1.0)
|
||||
self.assertGreater(main.haversine_distance_km(113.0, 22.0, 113.02, 22.0), 1.0)
|
||||
|
||||
@@ -241,13 +267,25 @@ class PipelineTest(unittest.TestCase):
|
||||
previous["cgi"] = "matched"
|
||||
previous["interference_dbm"] = "-106.25"
|
||||
previous["nearby_count"] = "8"
|
||||
previous["nearby_26g"] = "3"
|
||||
previous["nearby_700m"] = "2"
|
||||
previous["nearby_tdd"] = "2"
|
||||
previous["nearby_fdd"] = "1"
|
||||
|
||||
main.populate_previous_values(rows, [previous])
|
||||
|
||||
self.assertEqual(rows[0]["prev_interference_dbm"], "-106.25")
|
||||
self.assertEqual(rows[0]["prev_nearby_count"], "8")
|
||||
self.assertEqual(rows[0]["prev_nearby_26g"], "3")
|
||||
self.assertEqual(rows[0]["prev_nearby_700m"], "2")
|
||||
self.assertEqual(rows[0]["prev_nearby_tdd"], "2")
|
||||
self.assertEqual(rows[0]["prev_nearby_fdd"], "1")
|
||||
self.assertEqual(rows[1]["prev_interference_dbm"], "")
|
||||
self.assertEqual(rows[1]["prev_nearby_count"], "")
|
||||
self.assertEqual(rows[1]["prev_nearby_26g"], "")
|
||||
self.assertEqual(rows[1]["prev_nearby_700m"], "")
|
||||
self.assertEqual(rows[1]["prev_nearby_tdd"], "")
|
||||
self.assertEqual(rows[1]["prev_nearby_fdd"], "")
|
||||
|
||||
def test_duplicate_cgi_keeps_maximum_interference(self) -> None:
|
||||
rows = [database_row(), database_row(), database_row()]
|
||||
@@ -292,12 +330,15 @@ class PipelineTest(unittest.TestCase):
|
||||
self.assertTrue(any("ADD COLUMN `latitude`" in query for query in queries))
|
||||
self.assertTrue(any("ADD COLUMN `azimuth`" in query for query in queries))
|
||||
self.assertTrue(any("ADD COLUMN `nearby_count`" in query for query in queries))
|
||||
for column in ("nearby_26g", "nearby_700m", "nearby_tdd", "nearby_fdd"):
|
||||
self.assertTrue(any(f"ADD COLUMN `{column}`" in query for query in queries))
|
||||
self.assertTrue(any(f"ADD COLUMN `prev_{column}`" in query for query in queries))
|
||||
self.assertTrue(any("ADD COLUMN `prev_interference_dbm`" in query for query in queries))
|
||||
self.assertTrue(any("ADD COLUMN `prev_nearby_count`" in query for query in queries))
|
||||
script = next(payload for endpoint, payload in client.posts if endpoint.endswith("/run-script"))
|
||||
self.assertTrue(script["single_session"])
|
||||
self.assertIn("START TRANSACTION", script["content"])
|
||||
self.assertIn("NULL, NULL, NULL, 0, 0, NULL", script["content"])
|
||||
self.assertIn("NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL", script["content"])
|
||||
self.assertIn("CONVERT(0x", script["content"])
|
||||
self.assertNotIn("source_type", script["content"])
|
||||
self.assertNotIn("source_path", script["content"])
|
||||
@@ -507,15 +548,24 @@ def database_row() -> dict[str, str]:
|
||||
"latitude": "",
|
||||
"azimuth": "0",
|
||||
"nearby_count": "0",
|
||||
"nearby_26g": "0",
|
||||
"nearby_700m": "0",
|
||||
"nearby_tdd": "0",
|
||||
"nearby_fdd": "0",
|
||||
"prev_nearby_count": "",
|
||||
"prev_nearby_26g": "",
|
||||
"prev_nearby_700m": "",
|
||||
"prev_nearby_tdd": "",
|
||||
"prev_nearby_fdd": "",
|
||||
}
|
||||
|
||||
|
||||
def nearby_row(cgi: str, longitude: str, latitude: str) -> dict[str, str]:
|
||||
def nearby_row(cgi: str, longitude: str, latitude: str, network_type: str = "2.6G") -> dict[str, str]:
|
||||
row = database_row()
|
||||
row["cgi"] = cgi
|
||||
row["longitude"] = longitude
|
||||
row["latitude"] = latitude
|
||||
row["network_type"] = network_type
|
||||
return row
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user