--- openbsc/tests/vty_test_runner.py | 83 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+)
diff --git a/openbsc/tests/vty_test_runner.py b/openbsc/tests/vty_test_runner.py index 3594129..6f45939 100755 --- a/openbsc/tests/vty_test_runner.py +++ b/openbsc/tests/vty_test_runner.py @@ -205,6 +205,89 @@ class TestVTYNITB(TestVTYGenericBSC): res = self.vty.command("write terminal") self.assert_(res.find('auth policy black-list') > 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 + self.vty.verify("rach access-control-class 0 barred", ['']) + self.vty.verify("rach access-control-class 1 barred", ['']) + self.vty.verify("rach access-control-class 2 barred", ['']) + self.vty.verify("rach access-control-class 3 barred", ['']) + self.vty.verify("rach access-control-class 4 barred", ['']) + self.vty.verify("rach access-control-class 5 barred", ['']) + self.vty.verify("rach access-control-class 6 barred", ['']) + self.vty.verify("rach access-control-class 7 barred", ['']) + self.vty.verify("rach access-control-class 8 barred", ['']) + self.vty.verify("rach access-control-class 9 barred", ['']) + self.vty.verify("rach access-control-class 11 barred", ['']) + self.vty.verify("rach access-control-class 12 barred", ['']) + self.vty.verify("rach access-control-class 13 barred", ['']) + self.vty.verify("rach access-control-class 14 barred", ['']) + self.vty.verify("rach access-control-class 15 barred", ['']) + + # Verify settings + res = self.vty.command("write terminal") + self.assert_(res.find('rach access-control-class 0 barred') > 0) + self.assert_(res.find('rach access-control-class 1 barred') > 0) + self.assert_(res.find('rach access-control-class 2 barred') > 0) + self.assert_(res.find('rach access-control-class 3 barred') > 0) + self.assert_(res.find('rach access-control-class 4 barred') > 0) + self.assert_(res.find('rach access-control-class 5 barred') > 0) + self.assert_(res.find('rach access-control-class 6 barred') > 0) + self.assert_(res.find('rach access-control-class 7 barred') > 0) + self.assert_(res.find('rach access-control-class 8 barred') > 0) + self.assert_(res.find('rach access-control-class 9 barred') > 0) + self.assert_(res.find('rach access-control-class 11 barred') > 0) + self.assert_(res.find('rach access-control-class 12 barred') > 0) + self.assert_(res.find('rach access-control-class 13 barred') > 0) + self.assert_(res.find('rach access-control-class 14 barred') > 0) + self.assert_(res.find('rach access-control-class 15 barred') > 0) + + # Allowed rach access control classes + self.vty.verify("rach access-control-class 0 allowed", ['']) + self.vty.verify("rach access-control-class 1 allowed", ['']) + self.vty.verify("rach access-control-class 2 allowed", ['']) + self.vty.verify("rach access-control-class 3 allowed", ['']) + self.vty.verify("rach access-control-class 4 allowed", ['']) + self.vty.verify("rach access-control-class 5 allowed", ['']) + self.vty.verify("rach access-control-class 6 allowed", ['']) + self.vty.verify("rach access-control-class 7 allowed", ['']) + self.vty.verify("rach access-control-class 8 allowed", ['']) + self.vty.verify("rach access-control-class 9 allowed", ['']) + self.vty.verify("rach access-control-class 11 allowed", ['']) + self.vty.verify("rach access-control-class 12 allowed", ['']) + self.vty.verify("rach access-control-class 13 allowed", ['']) + self.vty.verify("rach access-control-class 14 allowed", ['']) + self.vty.verify("rach access-control-class 15 allowed", ['']) + + # Verify settings + res = self.vty.command("write terminal") + self.assertEquals(res.find('rach access-control-class 0 barred'), -1) + self.assertEquals(res.find('rach access-control-class 1 barred'), -1) + self.assertEquals(res.find('rach access-control-class 2 barred'), -1) + self.assertEquals(res.find('rach access-control-class 3 barred'), -1) + self.assertEquals(res.find('rach access-control-class 4 barred'), -1) + self.assertEquals(res.find('rach access-control-class 5 barred'), -1) + self.assertEquals(res.find('rach access-control-class 6 barred'), -1) + self.assertEquals(res.find('rach access-control-class 7 barred'), -1) + self.assertEquals(res.find('rach access-control-class 8 barred'), -1) + self.assertEquals(res.find('rach access-control-class 9 barred'), -1) + self.assertEquals(res.find('rach access-control-class 11 barred'), -1) + self.assertEquals(res.find('rach access-control-class 12 barred'), -1) + self.assertEquals(res.find('rach access-control-class 13 barred'), -1) + self.assertEquals(res.find('rach access-control-class 14 barred'), -1) + self.assertEquals(res.find('rach access-control-class 15 barred'), -1) + class TestVTYBSC(TestVTYGenericBSC):
def vty_command(self):
--- openbsc/tests/vty_test_runner.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)
diff --git a/openbsc/tests/vty_test_runner.py b/openbsc/tests/vty_test_runner.py index 3594129..1e25a91 100755 --- a/openbsc/tests/vty_test_runner.py +++ b/openbsc/tests/vty_test_runner.py @@ -205,6 +205,41 @@ class TestVTYNITB(TestVTYGenericBSC): res = self.vty.command("write terminal") self.assert_(res.find('auth policy black-list') > 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) + class TestVTYBSC(TestVTYGenericBSC):
def vty_command(self):
On Fri, Sep 13, 2013 at 07:59:03PM +0400, Ivan Kluchnikov wrote:
Dear Ivan,
it was just a question if you knew range. It is fine to decide not to use it. I just wanted to know. :)
All patches look fine, I plan to integrate them on Sunday.
holger
2013/9/13 Holger Hans Peter Freyther holger@freyther.de:
it was just a question if you knew range. It is fine to decide not to use it. I just wanted to know. :)
I really think that last version of this patch looks much more better than previous. I know range, but in this case I just wrote code in "VTY-style" (command by command), but I think, that this style looks ugly, when we have fifteen identical commands :)
Hey,
Ivan Kluchnikov wrote:
# Barred rach access control classesself.vty.verify("rach access-control-class 0 barred", [''])self.vty.verify("rach access-control-class 1 barred", [''])self.vty.verify("rach access-control-class 2 barred", [''])
what happened to the code that I sent for parsing ranges and not just a single class digit?
//Peter
On Sat, Sep 14, 2013 at 12:59:22AM +0200, Peter Stuge wrote:
Hey,
Ivan Kluchnikov wrote:
# Barred rach access control classesself.vty.verify("rach access-control-class 0 barred", [''])self.vty.verify("rach access-control-class 1 barred", [''])self.vty.verify("rach access-control-class 2 barred", [''])what happened to the code that I sent for parsing ranges and not just a single class digit?
can you re-send your patch/diff for that? I can help with the test case for that.
Holger Hans Peter Freyther wrote:
# Barred rach access control classesself.vty.verify("rach access-control-class 0 barred", [''])self.vty.verify("rach access-control-class 1 barred", [''])self.vty.verify("rach access-control-class 2 barred", [''])what happened to the code that I sent for parsing ranges and not just a single class digit?
can you re-send your patch/diff for that? I can help with the test case for that.
I didn't make an actual patch, I only wrote and sent the range/list parsing code, since Alex wrote that it would get used it if I sent it.
I'm attaching a cleaned-up version with all functionality moved to an actual function and now also featuring input validation not just for characters but also their meaning. Out-of-range list/range numbers are no longer silently ignored but cause an error.
What's the best way to proceed? I suppose I could send a patch to add this function somewhere - maybe libosmocore? It should obviously log instead of sending to stderr then.
//Peter