diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2021-10-27 10:57:41 +0200 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2021-11-03 17:25:28 +0000 |
commit | 085a92584fa95da2694052237f6c43a6909dc397 (patch) | |
tree | f7884ed6d830461d21b0785b2bd8ab266210b6f4 /tests | |
parent | 554e16978465dbad5002ffb4724b42d408ae7927 (diff) |
heighbor_ident: add/del neighbor cells via ctrl interface
The VTY allows flexible control over the neighbor cell information via
the neighbor command, which can be found in the configure terminal under
the bts node. Lets add pendant of this command on the control interface
as well.
Change-Id: I343a40e18fa9b91e6c381912c0426a002841e079
Related: SYS#5641
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/ctrl_test_runner.py | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/tests/ctrl_test_runner.py b/tests/ctrl_test_runner.py index bd2cb1061..5e9bcefe3 100755 --- a/tests/ctrl_test_runner.py +++ b/tests/ctrl_test_runner.py @@ -562,6 +562,177 @@ class TestCtrlBSCNeighbor(TestCtrlBase): self.assertEqual(r['var'], 'neighbor_resolve_cgi_ps_from_lac_ci.1.6969.23.32') self.assertEqual(r['value'], '023-42-423-2-5') + +class TestCtrlBSCNeighborCell(TestCtrlBase): + + def tearDown(self): + TestCtrlBase.tearDown(self) + os.unlink("tmp_dummy_sock") + + def ctrl_command(self): + return ["./src/osmo-bsc/osmo-bsc", "-r", "tmp_dummy_sock", "-c", + "tests/ctrl/osmo-bsc-neigh-test.cfg"] + + def ctrl_app(self): + return (4249, "./src/osmo-bsc/osmo-bsc", "OsmoBSC", "bsc") + + def testCtrlAddDelBTS(self): + r = self.do_set('bts.0.neighbor-bts.add', '1') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-bts.add') + self.assertEqual(r['value'], 'OK') + r = self.do_set('bts.0.neighbor-bts.del', '1') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-bts.del') + self.assertEqual(r['value'], 'OK') + + def testCtrlAddDelLAC(self): + # without ARFCN+BSIC: + r = self.do_set('bts.0.neighbor-lac.add', '100') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-lac.add') + self.assertEqual(r['value'], 'OK') + r = self.do_set('bts.0.neighbor-lac.del', '100') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-lac.del') + self.assertEqual(r['value'], 'OK') + + # with ARFCN+BSIC: + r = self.do_set('bts.0.neighbor-lac.add', '100-123-4') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-lac.add') + self.assertEqual(r['value'], 'OK') + r = self.do_set('bts.0.neighbor-lac.del', '100-123-4') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-lac.del') + self.assertEqual(r['value'], 'OK') + + def testCtrlAddDelLACCI(self): + # without ARFCN+BSIC: + r = self.do_set('bts.0.neighbor-lac-ci.add', '100-200') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-lac-ci.add') + self.assertEqual(r['value'], 'OK') + r = self.do_set('bts.0.neighbor-lac-ci.del', '100-200') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-lac-ci.del') + self.assertEqual(r['value'], 'OK') + + # with ARFCN+BSIC: + r = self.do_set('bts.0.neighbor-lac-ci.add', '100-200-123-any') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-lac-ci.add') + self.assertEqual(r['value'], 'OK') + r = self.do_set('bts.0.neighbor-lac-ci.del', '100-200-123-any') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-lac-ci.del') + self.assertEqual(r['value'], 'OK') + + def testCtrlAddDelCGI(self): + # without ARFCN+BSIC: + r = self.do_set('bts.0.neighbor-cgi.add', '001-01-100-200') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-cgi.add') + self.assertEqual(r['value'], 'OK') + r = self.do_set('bts.0.neighbor-cgi.del', '001-01-100-200') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-cgi.del') + self.assertEqual(r['value'], 'OK') + + # with ARFCN+BSIC: + r = self.do_set('bts.0.neighbor-cgi.add', '001-01-100-200-123-4') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-cgi.add') + self.assertEqual(r['value'], 'OK') + r = self.do_set('bts.0.neighbor-cgi.del', '001-01-100-200-123-4') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-cgi.del') + self.assertEqual(r['value'], 'OK') + + def testCtrlAddDelCGIPS(self): + # without ARFCN+BSIC: + r = self.do_set('bts.0.neighbor-cgi-ps.add', '001-01-100-33-200') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-cgi-ps.add') + self.assertEqual(r['value'], 'OK') + r = self.do_set('bts.0.neighbor-cgi-ps.del', '001-01-100-33-200') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-cgi-ps.del') + self.assertEqual(r['value'], 'OK') + + # with ARFCN+BSIC: + r = self.do_set('bts.0.neighbor-cgi-ps.add', '001-01-100-33-200-123-any') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-cgi-ps.add') + self.assertEqual(r['value'], 'OK') + r = self.do_set('bts.0.neighbor-cgi-ps.del', '001-01-100-33-200-123-any') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-cgi-ps.del') + self.assertEqual(r['value'], 'OK') + + def testCtrlClearNeighbors(self): + r = self.do_set('bts.0.neighbor-clear', 'ignored') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'SET_REPLY') + self.assertEqual(r['var'], 'bts.0.neighbor-clear') + self.assertEqual(r['value'], 'OK') + + def testCtrlErrs(self): + # Missing BSIC + r = self.do_set('bts.0.neighbor-lac.add', '100-123') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'ERROR') + self.assertEqual(r['error'], 'Value failed verification.') + + # Short value (missing RAC) + r = self.do_set('bts.0.neighbor-cgi-ps.del', '001-01-100-200-123-1') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'ERROR') + self.assertEqual(r['error'], 'Value failed verification.') + + # Long value + r = self.do_set('bts.0.neighbor-cgi-ps.del', '001-01-100-33-200-123-1-2') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'ERROR') + self.assertEqual(r['error'], 'Value failed verification.') + + # Out of range values + r = self.do_set('bts.0.neighbor-cgi.add', '100001-1123401-100-200') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'ERROR') + self.assertEqual(r['error'], 'Value failed verification.') + + # Garbage + r = self.do_set('bts.0.neighbor-lac-ci.add', '0G1-Z1-1U0-a3-2p0') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'ERROR') + self.assertEqual(r['error'], 'Value failed verification.') + + # Delete something that shouldn't be there + r = self.do_set('bts.0.neighbor-cgi-ps.del', '001-01-100-33-200-123-any') + print('respose: ' + str(r)) + self.assertEqual(r['mtype'], 'ERROR') + self.assertEqual(r['error'], 'Failed to delete neighbor') + + def add_bsc_test(suite, workdir, klass): if not os.path.isfile(os.path.join(workdir, "src/osmo-bsc/osmo-bsc")): print("Skipping the BSC test") @@ -601,5 +772,6 @@ if __name__ == '__main__': suite = unittest.TestSuite() add_bsc_test(suite, workdir, TestCtrlBSC) add_bsc_test(suite, workdir, TestCtrlBSCNeighbor) + add_bsc_test(suite, workdir, TestCtrlBSCNeighborCell) res = unittest.TextTestRunner(verbosity=verbose_level).run(suite) sys.exit(len(res.errors) + len(res.failures)) |