class TestHalfMesh(unittest.TestCase): """ Tests for jpmesh.HalfMesh. """ ORG_CODE = '5339-35-96-4' CODE = '533935964' SOUTH_WEST = Coordinate(lon=Angle.from_millisecond(502942500.0), lat=Angle.from_millisecond(128385000.0)) def test_from_code(self): """ Test for jpmesh.coordinate.HalfMesh.from_code. """ _test_from_code(HalfMesh, self.ORG_CODE, self.CODE, self.SOUTH_WEST) def test_from_coordinate(self): """ Test for jpmesh.coordinate.HalfMesh.from_coordinate. """ _test_from_coordinate(HalfMesh, self.CODE, self.SOUTH_WEST) @raises(ValueError) def test_invalid_div_index(self): """ An invalid division index causes a ValueError. """ HalfMesh(self.SOUTH_WEST, 5) @staticmethod @raises(ValueError) def test_invalid_code(): """ Invalid mesh code causes a ValueError. """ HalfMesh.from_code('53393537')
def test_operators(self): """Test for operators. """ angle1 = Angle.from_millisecond(1.0) angle2 = Angle.from_millisecond(1.0) angle3 = Angle.from_millisecond(2.0) self.assertEqual((angle1 + angle2).degree, angle1.degree + angle2.degree) self.assertEqual((angle1 - angle2).degree, angle1.degree - angle2.degree) self.assertEqual((angle1 * 2).degree, angle1.degree * 2) self.assertEqual((angle1 / 2).degree, angle1.degree / 2) self.assertEqual((angle1 / 2.0).degree, angle1.degree / 2.0) self.assertEqual((+angle1).degree, +angle1.degree) self.assertEqual((-angle1).degree, -angle1.degree) self.assertEqual(abs(angle1).degree, abs(angle1.degree)) self.assertTrue(angle1 == angle2) self.assertFalse(angle1 == angle3) self.assertFalse(angle1 != angle2) self.assertTrue(angle1 != angle3) self.assertFalse(angle1 < angle2) self.assertTrue(angle2 < angle3) self.assertTrue(angle1 <= angle2) self.assertTrue(angle2 <= angle3) self.assertFalse(angle3 <= angle2) self.assertFalse(angle2 > angle1) self.assertTrue(angle3 > angle2) self.assertTrue(angle2 >= angle1) self.assertTrue(angle3 >= angle2) self.assertFalse(angle2 >= angle3) # Call __div__ and __truediv__ expressly. self.assertEqual(angle1.for_test_div(2.0).degree, angle1.degree / 2.0) self.assertEqual( angle1.for_test_truediv(2.0).degree, angle1.degree / 2.0)
def test_properties(self): """Test for properties. """ millisecond = 3600000 angle = Angle.from_millisecond(millisecond) self.assertEqual(angle.degree, float(millisecond) / 60 / 60 / 1000) self.assertEqual(angle.minute, float(millisecond) / 60 / 1000) self.assertEqual(angle.second, float(millisecond) / 1000) self.assertEqual(angle.millisecond, float(millisecond))
class TestQuarterMesh(unittest.TestCase): """ Tests for jpmesh.QuarterMesh. """ ORG_CODE = '5339-35-96-1-4' CODE = '5339359614' SOUTH_WEST = Coordinate(lon=Angle.from_millisecond(502931250.0), lat=Angle.from_millisecond(128377500.0)) def test_from_code(self): """ Test for jpmesh.coordinate.QuarterMesh.from_code. """ _test_from_code(QuarterMesh, self.ORG_CODE, self.CODE, self.SOUTH_WEST) def test_from_coordinate(self): """ Test for jpmesh.coordinate.QuarterMesh.from_coordinate. """ _test_from_coordinate(QuarterMesh, self.CODE, self.SOUTH_WEST)
class TestThirdMesh(unittest.TestCase): """Tests for jpmesh.ThirdMesh. """ ORG_CODE = '5339-35-96' CODE = '53393596' SOUTH_WEST = Coordinate(lon=Angle.from_millisecond(502920000.0), lat=Angle.from_millisecond(128370000.0)) def test_from_code(self): """ Test for jpmesh.coordinate.ThirdMesh.from_code. """ _test_from_code(ThirdMesh, self.ORG_CODE, self.CODE, self.SOUTH_WEST) def test_from_coordinate(self): """ Test for jpmesh.coordinate.ThirdMesh.from_coordinate. """ _test_from_coordinate(ThirdMesh, self.CODE, self.SOUTH_WEST) @raises(ValueError) def test_invalid_lat_number(self): """ An invalid latitude number causes a ValueError. """ ThirdMesh(self.SOUTH_WEST, 10, 0) @raises(ValueError) def test_invalid_lon_number(self): """ An invalid longitude number causes a ValueError. """ ThirdMesh(self.SOUTH_WEST, 0, 10) @staticmethod @raises(ValueError) def test_invalid_code(): """ Invalid mesh code causes a ValueError. """ ThirdMesh.from_code('533935379')
class TestOneEighthMesh(unittest.TestCase): """ Tests for jpmesh.OneEighthMesh. """ ORG_CODE = '5339-35-96-1-1-4' CODE = '53393596114' SOUTH_WEST = Coordinate(lon=Angle.from_millisecond(502925625.0), lat=Angle.from_millisecond(128373750.0)) def test_from_code(self): """ Test for jpmesh.coordinate.OneEighthMesh.from_code. """ _test_from_code(OneEighthMesh, self.ORG_CODE, self.CODE, self.SOUTH_WEST) def test_from_coordinate(self): """ Test for jpmesh.coordinate.OneEighthMesh.from_coordinate. """ _test_from_coordinate(OneEighthMesh, self.CODE, self.SOUTH_WEST)
class TestFirstMesh(unittest.TestCase): """Tests for jpmesh.FirstMesh. """ ORG_CODE = '5339' CODE = ORG_CODE SOUTH_WEST = Coordinate(lon=Angle.from_millisecond(500400000.0), lat=Angle.from_millisecond(127200000.0)) def test_from_code(self): """Test for jpmesh.coordinate.FirstMesh.from_code. """ _test_from_code(FirstMesh, self.ORG_CODE, self.CODE, self.SOUTH_WEST) def test_from_coordinate(self): """Test for jpmesh.coordinate.FirstMesh.from_coordinate. """ _test_from_coordinate(FirstMesh, self.CODE, self.SOUTH_WEST) @staticmethod @raises(ValueError) def test_invalid_lat_number(): """An invalid latitude number causes a ValueError. """ FirstMesh(100, 0) @staticmethod @raises(ValueError) def test_invalid_lon_number(): """An invalid longitude number causes a ValueError. """ FirstMesh(0, 100) @staticmethod @raises(ValueError) def test_invalid_code(): """Invalid mesh code causes a ValueError. """ FirstMesh.from_code('53393')
class TestSecondMesh(unittest.TestCase): """ Tests for jpmesh.SecondMesh. """ ORG_CODE = '5339-45' CODE = '533945' SOUTH_WEST = Coordinate(lon=Angle.from_millisecond(502650000.0), lat=Angle.from_millisecond(128400000.0)) def test_from_code(self): """Test for jpmesh.coordinate.SecondMesh.from_code. """ _test_from_code(SecondMesh, self.ORG_CODE, self.CODE, self.SOUTH_WEST) def test_from_coordinate(self): """Test for jpmesh.coordinate.SecondMesh.from_coordinate. """ _test_from_coordinate(SecondMesh, self.CODE, self.SOUTH_WEST) @raises(ValueError) def test_invalid_lat_number(self): """An invalid latitude number causes a ValueError. """ SecondMesh(self.SOUTH_WEST, 9, 0) @raises(ValueError) def test_invalid_lon_number(self): """An invalid longitude number causes a ValueError. """ SecondMesh(self.SOUTH_WEST, 0, 9) @staticmethod @raises(ValueError) def test_invalid_code(): """Invalid mesh code causes a ValueError. """ SecondMesh.from_code('5339356')
# -*- coding: utf-8 -*- from jpmesh import Angle, Coordinate, FirstMesh, SecondMesh, parse_mesh_code coordinate = Coordinate(lon=Angle.from_degree(140.0), lat=Angle.from_degree(35.0)) # mesh_code = "5240" # mesh = FirstMesh.from_coordinate(coordinate) # print("FirstMesh code: {}".format(mesh.code)) # print("FirstMesh lon: {}".format(mesh.south_west.lon.degree)) # print("FirstMesh lat: {}".format(mesh.south_west.lat.degree)) # print(dir(mesh)) # mesh = SecondMesh.from_coordinate(coordinate) # print("SecondMesh code: {}".format(mesh.code)) # print("SecondMesh lon: {}".format(mesh.south_west.lon.degree)) # print("SecondMesh lat: {}".format(mesh.south_west.lat.degree)) # print("SecondMesh lat: {}".format(mesh.south_west.lat.degree)) # print("SecondMesh size: {}".format(mesh.size.lon.degree)) # print("SecondMesh size: {}".format(mesh.size.lat.degree)) # print("") # print("SecondMesh size: {}".format(mesh.south_west.lon.degree + mesh.size.lon.degree)) # print("SecondMesh size: {}".format(mesh.south_west.lat.degree + mesh.size.lat.degree)) # print("SecondMesh Parantmesh: {}".format(dir(mesh.ParentMesh))) # print("SecondMesh Parantmesh lon: {}".format(mesh.ParentMesh.south_west)) # print("SecondMesh Parantmesh lat: {}".format(mesh.ParentMesh.south_west.lat.degreee)) # print(dir(mesh)) # print(mesh.code)
def run(file_dir_list): def summary(mesh_hash, mesh_code, summary_value_dict): if mesh_code in mesh_hash.keys(): mesh_hash[mesh_code]["count"] += 1 for summary_val in summary_value_list: mesh_hash[mesh_code]["sum"][summary_val] += summary_value_dict[summary_val] call_result = summary_value_dict["call_result"] if call_result.upper() == "OK": mesh_hash[mesh_code]["sum"]["Ok"] += 1 elif call_result.upper() == "FAIL": mesh_hash[mesh_code]["sum"]["Fail"] += 1 elif call_result.upper() == "DROP": mesh_hash[mesh_code]["sum"]["Drop"] += 1 else: mesh_hash[mesh_code] = {"count" : 1, "sum" : {}} for summary_val in summary_value_list: mesh_hash[mesh_code]["sum"][summary_val] = summary_value_dict[summary_val] mesh_hash[mesh_code]["sum"]["Ok"] = 0 mesh_hash[mesh_code]["sum"]["Fail"] = 0 mesh_hash[mesh_code]["sum"]["Drop"] = 0 call_result = summary_value_dict["call_result"] if call_result.upper() == "OK": mesh_hash[mesh_code]["sum"]["Ok"] = 1 elif call_result.upper() == "FAIL": mesh_hash[mesh_code]["sum"]["Fail"] = 1 elif call_result.upper() == "DROP": mesh_hash[mesh_code]["sum"]["Drop"] = 1 def make_mesh_hash(coordinate, mesh_hash, summary_value_dict): mesh = HalfMesh.from_coordinate(coordinate) # change summary(mesh_hash, mesh.code, summary_value_dict) summary_value_list = ["rsrp", "rsrq", "sinr", "cqi", "thp_dl", "thp_ul", "PCI", "cell_max_tx_power", "traffic_load", "rs_power"] for file_dir in file_dir_list: line_read_cmd = "cat %s | wc -l" % file_dir full_line = os.popen(line_read_cmd).read().strip() print "full line : ", full_line fail_line = [] line = 0 mesh_hash = {} s_time = time.time() with open(file_dir, "r") as f: print file_dir col_schema = f.readline().strip().split(",") for origin in f: column_dict = {} origin = origin.replace("\"", "").strip().split(",") for idx, item in enumerate(origin): column_dict[col_schema[idx]] = item date_time = column_dict["dt"].split(".")[0] summary_value_dict = {} try: summary_value_dict["rsrp"] = float(column_dict["rsrp"].strip()) summary_value_dict["rsrq"] = float(column_dict["rsrq"].strip()) summary_value_dict["sinr"] = float(column_dict["sinr"].strip()) summary_value_dict["cqi"] = float(column_dict["cqi"].strip()) if column_dict["thp_dl"].strip() == "": summary_value_dict["thp_dl"] = 0 else: summary_value_dict["thp_dl"] = float(column_dict["thp_dl"].strip()) if column_dict["thp_ul"].strip() == "": summary_value_dict["thp_ul"] = 0 else: summary_value_dict["thp_ul"] = float(column_dict["thp_ul"].strip()) summary_value_dict["PCI"] = float(column_dict["PCI"].strip()) summary_value_dict["cell_max_tx_power"] = float(column_dict["cell_max_tx_power"].strip()) summary_value_dict["traffic_load"] = float(column_dict["traffic_load"].strip()) summary_value_dict["rs_power"] = float(column_dict["rs_power"].strip()) summary_value_dict["call_result"] = column_dict["call_result"].strip() except Exception, e: print e print "thp_ul: ", column_dict["thp_ul"] print "thp_dl: ", column_dict['thp_dl'] _lon = float(column_dict["lon"]) _lat = float(column_dict["lat"]) try: coordinate = Coordinate(lon=Angle.from_degree(_lon), lat=Angle.from_degree(_lat)) make_mesh_hash(coordinate, mesh_hash, summary_value_dict) except Exception, err: print err fail_line.append(line) line += 1