Browse Source

1. Raise CmdctlException instead of exiting when port is used by other processes. 2. Make error message be more accurate.

git-svn-id: svn://bind10.isc.org/svn/bind10/branches/trac277@2521 e5f2f494-b856-4b98-b285-d166d9295462
Likun Zhang 14 years ago
parent
commit
c08819a735
3 changed files with 8 additions and 6 deletions
  1. 1 0
      src/bin/cmdctl/TODO
  2. 4 3
      src/bin/cmdctl/cmdctl.py.in
  3. 3 3
      src/bin/cmdctl/tests/cmdctl_test.py

+ 1 - 0
src/bin/cmdctl/TODO

@@ -3,4 +3,5 @@
 . Add check for the content of key/certificate file
   (when cmdctl starts or is configured by bindctl).
 . Use only one msgq/session to communicate with other modules?
+. Add more test cases.
 

+ 4 - 3
src/bin/cmdctl/cmdctl.py.in

@@ -444,8 +444,7 @@ class SecureHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
         try:
             http.server.HTTPServer.__init__(self, server_address, RequestHandlerClass)
         except socket.error as err:
-            sys.stderr.write("[b10-cmdctl] Error creating b10-cmdctl, because: %s \n" % str(err))
-            sys.exit(0)
+            raise CmdctlException("Error creating server, because: %s \n" % str(err))
 
         self.user_sessions = {}
         self.idle_timeout = idle_timeout
@@ -598,11 +597,13 @@ if __name__ == '__main__':
     (options, args) = parser.parse_args()
     try:
         run(options.addr, options.port, options.idle_timeout, options.verbose)
-    except isc.cc.SessionError as se:
+    except isc.cc.SessionError as err:
         sys.stderr.write("[b10-cmdctl] Error creating b10-cmdctl, "
                          "is the command channel daemon running?\n")        
     except KeyboardInterrupt:
         sys.stderr.write("[b10-cmdctl] exit from Cmdctl\n")
+    except CmdctlException as err:
+        sys.stderr.write("[b10-cmdctl] " + str(err) + "\n")
 
     if httpd:
         httpd.shutdown()

+ 3 - 3
src/bin/cmdctl/tests/cmdctl_test.py

@@ -397,13 +397,13 @@ class TestSecureHTTPServer(unittest.TestCase):
     def test_addr_in_use(self):
         server_one = None
         try:
-            server_one = SecureHTTPServer(('localhost', 8080),
+            server_one = SecureHTTPServer(('localhost', 53531),
                                         MySecureHTTPRequestHandler,
                                         MyCommandControl)
-        except SystemExit:
+        except CmdctlException:
             pass
         else:
-            self.assertRaises(SystemExit, SecureHTTPServer, ('localhost', 8080), 
+            self.assertRaises(CmdctlException, SecureHTTPServer, ('localhost', 53531), 
                               MySecureHTTPRequestHandler, MyCommandControl)
         if server_one:
             server_one.server_close()