Browse Source

[1843] lettuce test for builtin init_authoritative_server

Jelte Jansen 13 years ago
parent
commit
a6cc81d79b

+ 1 - 0
src/bin/bindctl/bindcmd.py

@@ -781,6 +781,7 @@ class BindCmdInterpreter(Cmd):
            The execution is stopped if there are any errors.
         '''
         verbose = False
+        # TODO: revert local changes on failure
         try:
             for line in commands:
                 line = line.strip()

+ 0 - 2
src/bin/bindctl/bindctl_main.py.in

@@ -128,8 +128,6 @@ def prepare_execute_commands(tool):
         desc="Show the list of commands without executing them"))
     module.add_command(cmd)
 
-
-
     tool.add_module_info(module)
 
 def check_port(option, opt_str, value, parser):

+ 1 - 0
src/lib/python/isc/config/ccsession.py

@@ -559,6 +559,7 @@ class UIModuleCCSession(MultiConfigData):
                                                           " already in " +
                                                           identifier)
 
+
     def add_value(self, identifier, value_str = None, set_value_str = None):
         """Add a value to a configuration list. Raises a DataTypeError
            if the value does not conform to the list_item_spec field

+ 22 - 0
tests/lettuce/configurations/bindctl/bindctl.config.orig

@@ -0,0 +1,22 @@
+{
+    "version": 2,
+    "Logging": {
+        "loggers": [ {
+            "debuglevel": 99,
+            "severity": "DEBUG",
+            "name": "*"
+        } ]
+    },
+    "Auth": {
+        "database_file": "data/example.org.sqlite3",
+        "listen_on": [ {
+            "port": 47806,
+            "address": "127.0.0.1"
+        } ]
+    },
+    "Boss": {
+        "components": {
+            "b10-cmdctl": { "special": "cmdctl", "kind": "needed" }
+        }
+    }
+}

+ 145 - 99
tests/lettuce/features/bindctl_commands.feature

@@ -1,103 +1,149 @@
 Feature: control with bindctl
     Assorted tests using bindctl for the administration of BIND 10.
 
+
     Scenario: Removing modules
-    # This test runs the original example configuration, which has
-    # a number of modules. It then removes all non-essential modules,
-    # and checks whether they do disappear from the list of running
-    # modules (note that it 'misuses' the help command for this,
-    # there is a Boss command 'show_processes' but it's output is
-    # currently less standardized than 'help')
-    Given I have bind10 running with configuration bindctl_commands.config
-    And wait for bind10 stderr message BIND10_STARTED_CC
-    And wait for bind10 stderr message CMDCTL_STARTED
-    And wait for bind10 stderr message ZONEMGR_STARTED
-    And wait for bind10 stderr message AUTH_SERVER_STARTED
-    And wait for bind10 stderr message XFRIN_STARTED
-    And wait for bind10 stderr message XFROUT_STARTED
-    And wait for bind10 stderr message STATS_STARTING
-    And wait for bind10 stderr message STATHTTPD_STARTED
-
-    Then remove bind10 configuration Boss/components/NOSUCHMODULE
-    last bindctl output should contain Error
-
-    bind10 module Xfrout should be running
-    bind10 module Stats should be running
-    bind10 module Zonemgr should be running
-    bind10 module Xfrin should be running
-    bind10 module Auth should be running
-    bind10 module StatsHttpd should be running
-    bind10 module Resolver should not be running
-
-    Then remove bind10 configuration Boss/components value b10-xfrout
-    And wait for new bind10 stderr message BIND10_PROCESS_ENDED
-    last bindctl output should not contain Error
-
-    # assuming it won't error for further modules (if it does, the final
-    # 'should not be running' tests would fail anyway)
-    Then remove bind10 configuration Boss/components value b10-stats-httpd
-    And wait for new bind10 stderr message BIND10_PROCESS_ENDED
-    last bindctl output should not contain Error
-
-    Then remove bind10 configuration Boss/components value b10-stats
-    And wait for new bind10 stderr message BIND10_PROCESS_ENDED
-    last bindctl output should not contain Error
-
-    Then remove bind10 configuration Boss/components value b10-zonemgr
-    And wait for new bind10 stderr message BIND10_PROCESS_ENDED
-    last bindctl output should not contain Error
-
-    Then remove bind10 configuration Boss/components value b10-xfrin
-    And wait for new bind10 stderr message BIND10_PROCESS_ENDED
-    last bindctl output should not contain Error
-
-    Then remove bind10 configuration Boss/components value b10-auth
-    And wait for new bind10 stderr message BIND10_PROCESS_ENDED
-    last bindctl output should not contain Error
-
-    # After these ^^^ have been stopped...
-    bind10 module Xfrout should not be running
-    bind10 module Zonemgr should not be running
-    bind10 module Xfrin should not be running
-    bind10 module Auth should not be running
-    bind10 module StatsHttpd should not be running
-    bind10 module Stats should not be running
-    bind10 module Resolver should not be running
-
-    Scenario: Executing scripts
-    # This test tests the 'execute' command, which reads and executes
-    # bindctl commands from a file
-    Given I have bind10 running with configuration bindctl_commands.config
-    And wait for bind10 stderr message BIND10_STARTED_CC
-    And wait for bind10 stderr message CMDCTL_STARTED
-
-    # first a few bad commands
-    When I send bind10 the command execute
-    last bindctl output should contain Error
-    When I send bind10 the command execute file
-    last bindctl output should contain Error
-    When I send bind10 the command execute file data/commands/nosuchfile
-    last bindctl output should contain Error
-
-    # empty list should be no-op
-    When I send bind10 the command execute file data/commands/empty
-    last bindctl output should not contain Error
-
-    # some tests of directives like !echo and !verbose
-    When I send bind10 the command execute file data/commands/directives
-    last bindctl output should not contain Error
-    last bindctl output should not contain commentexample1
-    last bindctl output should contain echoexample
-    last bindctl output should contain verbosecommentexample
-    last bindctl output should not contain commentexample2
-
-    # bad_command contains a bad command, at which point execution should stop
-    When I send bind10 the command execute file data/commands/bad_command
-    last bindctl output should contain shouldshow
-    last bindctl output should contain Error
-    last bindctl output should not contain shouldnotshow
-
-    # nested_command contains another execute script
-    When I send bind10 the command execute file data/commands/nested
-    last bindctl output should contain shouldshow
-    last bindctl output should not contain Error    
+        # This test runs the original example configuration, which has
+        # a number of modules. It then removes all non-essential modules,
+        # and checks whether they do disappear from the list of running
+        # modules (note that it 'misuses' the help command for this,
+        # there is a Boss command 'show_processes' but it's output is
+        # currently less standardized than 'help')
+        Given I have bind10 running with configuration bindctl_commands.config
+        And wait for bind10 stderr message BIND10_STARTED_CC
+        And wait for bind10 stderr message CMDCTL_STARTED
+        And wait for bind10 stderr message ZONEMGR_STARTED
+        And wait for bind10 stderr message AUTH_SERVER_STARTED
+        And wait for bind10 stderr message XFRIN_STARTED
+        And wait for bind10 stderr message XFROUT_STARTED
+        And wait for bind10 stderr message STATS_STARTING
+        And wait for bind10 stderr message STATHTTPD_STARTED
+
+        Then remove bind10 configuration Boss/components/NOSUCHMODULE
+        last bindctl output should contain Error
+
+        bind10 module Xfrout should be running
+        bind10 module Stats should be running
+        bind10 module Zonemgr should be running
+        bind10 module Xfrin should be running
+        bind10 module Auth should be running
+        bind10 module StatsHttpd should be running
+        bind10 module Resolver should not be running
+
+        Then remove bind10 configuration Boss/components value b10-xfrout
+        And wait for new bind10 stderr message BIND10_PROCESS_ENDED
+        last bindctl output should not contain Error
+
+        # assuming it won't error for further modules (if it does, the final
+        # 'should not be running' tests would fail anyway)
+        Then remove bind10 configuration Boss/components value b10-stats-httpd
+        And wait for new bind10 stderr message BIND10_PROCESS_ENDED
+        last bindctl output should not contain Error
+
+        Then remove bind10 configuration Boss/components value b10-stats
+        And wait for new bind10 stderr message BIND10_PROCESS_ENDED
+        last bindctl output should not contain Error
+
+        Then remove bind10 configuration Boss/components value b10-zonemgr
+        And wait for new bind10 stderr message BIND10_PROCESS_ENDED
+        last bindctl output should not contain Error
+
+        Then remove bind10 configuration Boss/components value b10-xfrin
+        And wait for new bind10 stderr message BIND10_PROCESS_ENDED
+        last bindctl output should not contain Error
+
+        Then remove bind10 configuration Boss/components value b10-auth
+        And wait for new bind10 stderr message BIND10_PROCESS_ENDED
+        last bindctl output should not contain Error
+
+        # After these ^^^ have been stopped...
+        bind10 module Xfrout should not be running
+        bind10 module Zonemgr should not be running
+        bind10 module Xfrin should not be running
+        bind10 module Auth should not be running
+        bind10 module StatsHttpd should not be running
+        bind10 module Stats should not be running
+        bind10 module Resolver should not be running
+
+    Scenario: Executing scripts from files
+        # This test tests the 'execute' command, which reads and executes
+        # bindctl commands from a file
+        Given I have bind10 running with configuration bindctl_commands.config
+        And wait for bind10 stderr message BIND10_STARTED_CC
+        And wait for bind10 stderr message CMDCTL_STARTED
+
+        # first a few bad commands
+        When I send bind10 the command execute
+        last bindctl output should contain Error
+        When I send bind10 the command execute file
+        last bindctl output should contain Error
+        When I send bind10 the command execute file data/commands/nosuchfile
+        last bindctl output should contain Error
+
+        # empty list should be no-op
+        When I send bind10 the command execute file data/commands/empty
+        last bindctl output should not contain Error
+
+        # some tests of directives like !echo and !verbose
+        When I send bind10 the command execute file data/commands/directives
+        last bindctl output should not contain Error
+        last bindctl output should not contain commentexample1
+        last bindctl output should contain echoexample
+        last bindctl output should contain verbosecommentexample
+        last bindctl output should not contain commentexample2
+
+        # bad_command contains a bad command, at which point execution should stop
+        When I send bind10 the command execute file data/commands/bad_command
+        last bindctl output should contain shouldshow
+        last bindctl output should contain Error
+        last bindctl output should not contain shouldnotshow
+
+        # nested_command contains another execute script
+        When I send bind10 the command execute file data/commands/nested
+        last bindctl output should contain shouldshow
+        last bindctl output should not contain Error    
+
+        # show commands from a file
+        When I send bind10 the command execute file data/commands/bad_command show
+        last bindctl output should not contain Error
+        last bindctl output should contain shouldshow
+        last bindctl output should contain shouldnotshow
+
+    Scenario: Executing builting script init_authoritative_server
+        Given I have bind10 running with configuration bindctl/bindctl.config
+        And wait for bind10 stderr message BIND10_STARTED_CC
+        And wait for bind10 stderr message CMDCTL_STARTED
+
+        When I send bind10 the command execute init_authoritative_server show
+        # just test some parts of the output
+        last bindctl output should contain /Boss/components/b10-auth/special
+        last bindctl output should contain /Boss/components/b10-zonemgr/kind
+        last bindctl output should contain Please
+
+        # nothing should have been changed
+        When I send bind10 the command config diff
+        last bindctl output should contain {}
+
+        # ok now make sure modules aren't running, execute it, and make
+        # sure modules are running
+        bind10 module Auth should not be running
+        bind10 module Xfrout should not be running
+        bind10 module Xfrin should not be running
+        bind10 module Zonemgr should not be running
+
+        When I send bind10 the following commands:
+        """
+        execute init_authoritative_server
+        config commit
+        """
+        And wait for bind10 stderr message AUTH_SERVER_STARTED
+        And wait for bind10 stderr message ZONEMGR_STARTED
+        And wait for bind10 stderr message XFRIN_STARTED
+        And wait for bind10 stderr message XFROUT_STARTED
+
+        last bindctl output should not contain Error
+        bind10 module Auth should be running
+        bind10 module Xfrout should be running
+        bind10 module Xfrin should be running
+        bind10 module Zonemgr should be running
+        

+ 2 - 0
tests/lettuce/features/terrain/terrain.py

@@ -46,6 +46,8 @@ copylist = [
      "configurations/bindctl_commands.config"],
     ["configurations/example.org.config.orig",
      "configurations/example.org.config"],
+    ["configurations/bindctl/bindctl.config.orig",
+     "configurations/bindctl/bindctl.config"],
     ["configurations/resolver/resolver_basic.config.orig",
      "configurations/resolver/resolver_basic.config"],
     ["configurations/multi_instance/multi_auth.config.orig",