aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/tests
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-03-03 22:36:56 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-03-16 15:32:33 +0100
commit6bd5d09507a5f8d28f93c43d1221152fd4e6bde9 (patch)
tree6b5b6bbd57a7c9bed04d2170d1640aa76754df30 /openbsc/tests
parente48c9d13ae37545fecbd9ddde5f326c12ebb9f93 (diff)
make python tests pass for new OsmoMSC
Diffstat (limited to 'openbsc/tests')
-rw-r--r--openbsc/tests/ctrl_test_runner.py108
-rw-r--r--openbsc/tests/smpp_test_runner.py12
-rw-r--r--openbsc/tests/vty_test_runner.py137
3 files changed, 33 insertions, 224 deletions
diff --git a/openbsc/tests/ctrl_test_runner.py b/openbsc/tests/ctrl_test_runner.py
index 5030e8b1b..058b6f45f 100644
--- a/openbsc/tests/ctrl_test_runner.py
+++ b/openbsc/tests/ctrl_test_runner.py
@@ -462,109 +462,6 @@ class TestCtrlBSC(TestCtrlBase):
self.assertEquals(r['var'], 'mcc')
self.assertEquals(r['value'], '202')
-class TestCtrlNITB(TestCtrlBase):
-
- def tearDown(self):
- TestCtrlBase.tearDown(self)
- os.unlink("test_hlr.sqlite3")
-
- def ctrl_command(self):
- return ["./src/osmo-nitb/osmo-nitb", "-c",
- "doc/examples/osmo-nitb/nanobts/openbsc.cfg", "-l", "test_hlr.sqlite3"]
-
- def ctrl_app(self):
- return (4249, "./src/osmo-nitb/osmo-nitb", "OsmoBSC", "nitb")
-
- def testNumberOfBTS(self):
- r = self.do_get('number-of-bts')
- self.assertEquals(r['mtype'], 'GET_REPLY')
- self.assertEquals(r['var'], 'number-of-bts')
- self.assertEquals(r['value'], '1')
-
- def testSubscriberAddWithKi(self):
- """Test that we can set the algorithm to none, xor, comp128v1"""
-
- r = self.do_set('subscriber-modify-v1', '2620345,445566')
- self.assertEquals(r['mtype'], 'SET_REPLY')
- self.assertEquals(r['var'], 'subscriber-modify-v1')
- self.assertEquals(r['value'], 'OK')
-
- r = self.do_set('subscriber-modify-v1', '2620345,445566,none')
- self.assertEquals(r['mtype'], 'SET_REPLY')
- self.assertEquals(r['var'], 'subscriber-modify-v1')
- self.assertEquals(r['value'], 'OK')
-
- r = self.do_set('subscriber-modify-v1', '2620345,445566,xor')
- self.assertEquals(r['mtype'], 'ERROR')
- self.assertEquals(r['error'], 'Value failed verification.')
-
- r = self.do_set('subscriber-modify-v1', '2620345,445566,comp128v1,00112233445566778899AABBCCDDEEFF')
- self.assertEquals(r['mtype'], 'SET_REPLY')
- self.assertEquals(r['var'], 'subscriber-modify-v1')
- self.assertEquals(r['value'], 'OK')
-
- r = self.do_set('subscriber-modify-v1', '2620345,445566,none')
- self.assertEquals(r['mtype'], 'SET_REPLY')
- self.assertEquals(r['var'], 'subscriber-modify-v1')
- self.assertEquals(r['value'], 'OK')
-
- def testSubscriberAddRemove(self):
- r = self.do_set('subscriber-modify-v1', '2620345,445566')
- self.assertEquals(r['mtype'], 'SET_REPLY')
- self.assertEquals(r['var'], 'subscriber-modify-v1')
- self.assertEquals(r['value'], 'OK')
-
- r = self.do_set('subscriber-modify-v1', '2620345,445567')
- self.assertEquals(r['mtype'], 'SET_REPLY')
- self.assertEquals(r['var'], 'subscriber-modify-v1')
- self.assertEquals(r['value'], 'OK')
-
- # TODO. verify that the entry has been created and modified? Invoke
- # the sqlite3 CLI or do it through the DB libraries?
-
- r = self.do_set('subscriber-delete-v1', '2620345')
- self.assertEquals(r['mtype'], 'SET_REPLY')
- self.assertEquals(r['value'], 'Removed')
-
- r = self.do_set('subscriber-delete-v1', '2620345')
- self.assertEquals(r['mtype'], 'ERROR')
- self.assertEquals(r['error'], 'Failed to find subscriber')
-
- def testSubscriberList(self):
- # TODO. Add command to mark a subscriber as active
- r = self.do_get('subscriber-list-active-v1')
- self.assertEquals(r['mtype'], 'GET_REPLY')
- self.assertEquals(r['var'], 'subscriber-list-active-v1')
- self.assertEquals(r['value'], None)
-
- def testApplyConfiguration(self):
- r = self.do_get('bts.0.apply-configuration')
- self.assertEquals(r['mtype'], 'ERROR')
- self.assertEquals(r['error'], 'Write Only attribute')
-
- r = self.do_set('bts.0.apply-configuration', '1')
- self.assertEquals(r['mtype'], 'SET_REPLY')
- self.assertEquals(r['value'], 'Tried to drop the BTS')
-
- def testGprsMode(self):
- r = self.do_get('bts.0.gprs-mode')
- self.assertEquals(r['mtype'], 'GET_REPLY')
- self.assertEquals(r['var'], 'bts.0.gprs-mode')
- self.assertEquals(r['value'], 'none')
-
- r = self.do_set('bts.0.gprs-mode', 'bla')
- self.assertEquals(r['mtype'], 'ERROR')
- self.assertEquals(r['error'], 'Mode is not known')
-
- r = self.do_set('bts.0.gprs-mode', 'egprs')
- self.assertEquals(r['mtype'], 'SET_REPLY')
- self.assertEquals(r['value'], 'egprs')
-
- r = self.do_get('bts.0.gprs-mode')
- self.assertEquals(r['mtype'], 'GET_REPLY')
- self.assertEquals(r['var'], 'bts.0.gprs-mode')
- self.assertEquals(r['value'], 'egprs')
-
class TestCtrlNAT(TestCtrlBase):
def ctrl_command(self):
@@ -634,10 +531,6 @@ def add_bsc_test(suite, workdir):
test = unittest.TestLoader().loadTestsFromTestCase(TestCtrlBSC)
suite.addTest(test)
-def add_nitb_test(suite, workdir):
- test = unittest.TestLoader().loadTestsFromTestCase(TestCtrlNITB)
- suite.addTest(test)
-
def add_nat_test(suite, workdir):
if not os.path.isfile(os.path.join(workdir, "src/osmo-bsc_nat/osmo-bsc_nat")):
print("Skipping the NAT test")
@@ -683,7 +576,6 @@ if __name__ == '__main__':
print "Running tests for specific control commands"
suite = unittest.TestSuite()
add_bsc_test(suite, workdir)
- add_nitb_test(suite, workdir)
add_nat_test(suite, workdir)
add_sgsn_test(suite, workdir)
res = unittest.TextTestRunner(verbosity=verbose_level).run(suite)
diff --git a/openbsc/tests/smpp_test_runner.py b/openbsc/tests/smpp_test_runner.py
index 06fb7665b..af0da8150 100644
--- a/openbsc/tests/smpp_test_runner.py
+++ b/openbsc/tests/smpp_test_runner.py
@@ -59,14 +59,14 @@ class TestVTYBase(unittest.TestCase):
osmoutil.end_proc(self.proc)
-class TestSMPPNITB(TestVTYBase):
+class TestSMPPMSC(TestVTYBase):
def vty_command(self):
- return ["./src/osmo-nitb/osmo-nitb", "-c",
- "doc/examples/osmo-nitb/nanobts/openbsc.cfg"]
+ return ["./src/osmo-msc/osmo-msc", "-c",
+ "doc/examples/osmo-msc/osmo-msc.cfg"]
def vty_app(self):
- return (4242, "./src/osmo-nitb/osmo-nitb", "OpenBSC", "nitb")
+ return (4254, "./src/osmo-msc/osmo-msc", "OsmoMSC", "msc")
def testSMPPCrashes(self):
# Enable the configuration
@@ -83,7 +83,7 @@ class TestSMPPNITB(TestVTYBase):
self.assertTrue(self.vty.verify('default-route', ['']))
self.assertTrue(self.vty.verify('end', ['']))
- # NITB should listen to 2775 now!
+ # MSC should listen to 2775 now!
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.setblocking(1)
sck.connect(('0.0.0.0', 2775))
@@ -131,6 +131,6 @@ if __name__ == '__main__':
os.chdir(workdir)
print "Running tests for specific SMPP"
suite = unittest.TestSuite()
- suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestSMPPNITB))
+ suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestSMPPMSC))
res = unittest.TextTestRunner(verbosity=verbose_level).run(suite)
sys.exit(len(res.errors) + len(res.failures))
diff --git a/openbsc/tests/vty_test_runner.py b/openbsc/tests/vty_test_runner.py
index d27e915c5..8147cb6ae 100644
--- a/openbsc/tests/vty_test_runner.py
+++ b/openbsc/tests/vty_test_runner.py
@@ -31,6 +31,14 @@ confpath = '.'
class TestVTYBase(unittest.TestCase):
+ def checkForEndAndExit(self):
+ res = self.vty.command("list")
+ #print ('looking for "exit"\n')
+ self.assert_(res.find(' exit\r') > 0)
+ #print 'found "exit"\nlooking for "end"\n'
+ self.assert_(res.find(' end\r') > 0)
+ #print 'found "end"\n'
+
def vty_command(self):
raise Exception("Needs to be implemented by a subclass")
@@ -121,15 +129,7 @@ class TestVTYMGCP(TestVTYBase):
class TestVTYGenericBSC(TestVTYBase):
- def checkForEndAndExit(self):
- res = self.vty.command("list")
- #print ('looking for "exit"\n')
- self.assert_(res.find(' exit\r') > 0)
- #print 'found "exit"\nlooking for "end"\n'
- self.assert_(res.find(' end\r') > 0)
- #print 'found "end"\n'
-
- def _testConfigNetworkTree(self):
+ def _testConfigNetworkTree(self, include_bsc_items=True):
self.vty.enable()
self.assertTrue(self.vty.verify("configure terminal",['']))
self.assertEquals(self.vty.node(), 'config')
@@ -163,17 +163,28 @@ class TestVTYGenericBSC(TestVTYBase):
self.assertTrue(self.vty.verify("exit",['']))
self.assertTrue(self.vty.node() is None)
-class TestVTYNITB(TestVTYGenericBSC):
+class TestVTYMSC(TestVTYBase):
def vty_command(self):
- return ["./src/osmo-nitb/osmo-nitb", "-c",
- "doc/examples/osmo-nitb/nanobts/openbsc.cfg"]
+ return ["./src/osmo-msc/osmo-msc", "-c",
+ "doc/examples/osmo-msc/osmo-msc.cfg"]
def vty_app(self):
- return (4242, "./src/osmo-nitb/osmo-nitb", "OpenBSC", "nitb")
+ return (4254, "./src/osmo-msc/osmo-msc", "OsmoMSC", "msc")
- def testConfigNetworkTree(self):
- self._testConfigNetworkTree()
+ def testConfigNetworkTree(self, include_bsc_items=True):
+ self.vty.enable()
+ self.assertTrue(self.vty.verify("configure terminal",['']))
+ self.assertEquals(self.vty.node(), 'config')
+ self.checkForEndAndExit()
+ self.assertTrue(self.vty.verify("network",['']))
+ self.assertEquals(self.vty.node(), 'config-net')
+ self.checkForEndAndExit()
+ self.vty.command("write terminal")
+ self.assertTrue(self.vty.verify("exit",['']))
+ self.assertEquals(self.vty.node(), 'config')
+ self.assertTrue(self.vty.verify("exit",['']))
+ self.assertTrue(self.vty.node() is None)
def checkForSmpp(self):
"""SMPP is not always enabled, check if it is"""
@@ -245,13 +256,6 @@ class TestVTYNITB(TestVTYGenericBSC):
self.assertTrue(self.vty.verify("authorized-regexp 02$", ['']))
self.assertTrue(self.vty.verify("authorized-regexp *123.*", ['']))
self.vty.command("end")
- self.vty.command("configure terminal")
- self.vty.command("nitb")
- self.assertTrue(self.vty.verify('subscriber-create-on-demand',
- ["% 'subscriber-create-on-demand' is no longer supported.", '% This is now up to osmo-hlr.']))
- self.assertTrue(self.vty.verify("subscriber-create-on-demand no-extension",
- ["% 'subscriber-create-on-demand' is no longer supported.", '% This is now up to osmo-hlr.']))
- self.vty.command("end")
def testSi2Q(self):
self.vty.enable()
@@ -313,93 +317,6 @@ class TestVTYNITB(TestVTYGenericBSC):
self.assertEquals(res.find('periodic location update 60'), -1)
self.assert_(res.find('no periodic location update') > 0)
- def testEnableDisableSiHacks(self):
- self.vty.enable()
- self.vty.command("configure terminal")
- self.vty.command("network")
- self.vty.command("bts 0")
-
- # Enable periodic lu..
- self.vty.verify("force-combined-si", [''])
- res = self.vty.command("write terminal")
- self.assert_(res.find(' force-combined-si') > 0)
- self.assertEquals(res.find('no force-combined-si'), -1)
-
- # Now disable it..
- self.vty.verify("no force-combined-si", [''])
- res = self.vty.command("write terminal")
- self.assertEquals(res.find(' force-combined-si'), -1)
- self.assert_(res.find('no force-combined-si') > 0)
-
- def testRachAccessControlClass(self):
- self.vty.enable()
- self.vty.command("configure terminal")
- self.vty.command("network")
- self.vty.command("bts 0")
-
- # Test invalid input
- self.vty.verify("rach access-control-class", ['% Command incomplete.'])
- self.vty.verify("rach access-control-class 1", ['% Command incomplete.'])
- self.vty.verify("rach access-control-class -1", ['% Unknown command.'])
- self.vty.verify("rach access-control-class 10", ['% Unknown command.'])
- self.vty.verify("rach access-control-class 16", ['% Unknown command.'])
-
- # Barred rach access control classes
- for classNum in range(16):
- if classNum != 10:
- self.vty.verify("rach access-control-class " + str(classNum) + " barred", [''])
-
- # Verify settings
- res = self.vty.command("write terminal")
- for classNum in range(16):
- if classNum != 10:
- self.assert_(res.find("rach access-control-class " + str(classNum) + " barred") > 0)
-
- # Allowed rach access control classes
- for classNum in range(16):
- if classNum != 10:
- self.vty.verify("rach access-control-class " + str(classNum) + " allowed", [''])
-
- # Verify settings
- res = self.vty.command("write terminal")
- for classNum in range(16):
- if classNum != 10:
- self.assertEquals(res.find("rach access-control-class " + str(classNum) + " barred"), -1)
-
- def testSubscriberCreateDelete(self):
- self.vty.enable()
-
- imsi = "204300854013739"
- imsi2 = "222301824913762"
- imsi3 = "333500854113763"
- imsi4 = "444583744053764"
-
- # Initially we don't have this subscriber
- self.assertTrue(self.vty.verify('show subscriber imsi '+imsi, ['% No subscriber found for imsi '+imsi]))
-
- # deprecated
- self.assertTrue(self.vty.verify('subscriber create imsi '+imsi, ["% 'subscriber create' now needs to be done at osmo-hlr"]))
-
- def testSubscriberSettings(self):
- self.vty.enable()
-
- imsi = "204300854013739"
-
- self.assertTrue(self.vty.verify('subscriber imsi '+imsi+' name foo', ["% 'subscriber name' is no longer supported.", '% This is now up to osmo-hlr.']))
- self.assertTrue(self.vty.verify('subscriber imsi '+imsi+' extension 1234', ["% 'subscriber extension' is no longer supported.", '% This is now up to osmo-hlr.']))
- self.assertTrue(self.vty.verify('subscriber imsi '+imsi+' delete', ["% 'subscriber delete' is no longer supported.", '% This is now up to osmo-hlr.']))
-
- # With narrow random interval
- self.vty.command("configure terminal")
- self.vty.command("nitb")
- self.assertTrue(self.vty.verify('subscriber-create-on-demand', ["% 'subscriber-create-on-demand' is no longer supported.", '% This is now up to osmo-hlr.']))
-
- def testShowPagingGroup(self):
- res = self.vty.command("show paging-group 255 1234567")
- self.assertEqual(res, "% can't find BTS 255")
- res = self.vty.command("show paging-group 0 1234567")
- self.assertEquals(res, "%Paging group for IMSI 1234567 on BTS #0 is 7")
-
def testShowNetwork(self):
res = self.vty.command("show network")
self.assert_(res.startswith('BSC is on Country Code') >= 0)
@@ -1233,7 +1150,7 @@ if __name__ == '__main__':
print "Running tests for specific VTY commands"
suite = unittest.TestSuite()
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestVTYMGCP))
- suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestVTYNITB))
+ suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestVTYMSC))
add_bsc_test(suite, workdir)
add_nat_test(suite, workdir)
add_gbproxy_test(suite, workdir)