From e092deca81b6f158ff6d4476af5329f8a1aa2a2b Mon Sep 17 00:00:00 2001 From: Alexander Chemeris Date: Fri, 4 Oct 2013 23:54:17 +0200 Subject: [PATCH] nitb: Add "subscriber create" VTY command. It may be useful in production, but it's really required for VTY testing of subscriber related commands. --- openbsc/src/libmsc/vty_interface_layer3.c | 27 +++++++++++++++++++++++ openbsc/tests/vty_test_runner.py | 16 ++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/openbsc/src/libmsc/vty_interface_layer3.c b/openbsc/src/libmsc/vty_interface_layer3.c index 19c78ea9..acb4af7f 100644 --- a/openbsc/src/libmsc/vty_interface_layer3.c +++ b/openbsc/src/libmsc/vty_interface_layer3.c @@ -218,6 +218,32 @@ DEFUN(show_subscr, return CMD_SUCCESS; } +DEFUN(subscriber_create, + subscriber_create_cmd, + "subscriber create imsi ID", + "Operations on a Subscriber\n" \ + "Create new subscriber\n" \ + "Identify the subscriber by his IMSI\n" \ + "Identifier for the subscriber\n") +{ + struct gsm_network *gsmnet = gsmnet_from_vty(vty); + struct gsm_subscriber *subscr; + + subscr = db_create_subscriber(gsmnet, argv[0]); + if (!subscr) { + vty_out(vty, "%% No subscriber created for IMSI %s%s", + argv[0], VTY_NEWLINE); + return CMD_WARNING; + } + + /* Show info about the created subscriber. */ + subscr_dump_full_vty(vty, subscr, 0); + + subscr_put(subscr); + + return CMD_SUCCESS; +} + DEFUN(subscriber_send_pending_sms, subscriber_send_pending_sms_cmd, "subscriber " SUBSCR_TYPES " ID sms pending-send", @@ -949,6 +975,7 @@ int bsc_vty_init_extra(void) install_element_ve(&sms_send_pend_cmd); + install_element_ve(&subscriber_create_cmd); install_element_ve(&subscriber_send_sms_cmd); install_element_ve(&subscriber_silent_sms_cmd); install_element_ve(&subscriber_silent_call_start_cmd); diff --git a/openbsc/tests/vty_test_runner.py b/openbsc/tests/vty_test_runner.py index 3bb7bd86..0bd79720 100644 --- a/openbsc/tests/vty_test_runner.py +++ b/openbsc/tests/vty_test_runner.py @@ -215,6 +215,22 @@ class TestVTYNITB(TestVTYGenericBSC): if classNum != 10: self.assertEquals(res.find("rach access-control-class " + str(classNum) + " barred"), -1) + def testSubscriberCreate(self): + self.vty.enable() + + imsi = "204300854013739" + + # Initially we don't have this subscriber + self.vty.verify('show subscriber imsi '+imsi, ['% No subscriber found for imsi '+imsi]) + + # Lets create one + res = self.vty.command('subscriber create imsi '+imsi) + self.assert_(res.find(" IMSI: "+imsi) > 0) + + # Now we have it + res = self.vty.command('show subscriber imsi '+imsi) + self.assert_(res.find(" IMSI: "+imsi) > 0) + class TestVTYBSC(TestVTYGenericBSC): def vty_command(self):