ChugR commented on a change in pull request #1091:
URL: https://github.com/apache/qpid-dispatch/pull/1091#discussion_r605142178



##########
File path: tests/system_tests_tcp_adaptor.py
##########
@@ -907,5 +914,164 @@ def test_60_q2_holdoff(self):
         self.logger.log("TCP_TEST Stop %s SUCCESS" % name)
 
 
+class TcpAdaptorManagementTest(TestCase):
+    """
+    Test Creation and deletion of TCP management entities
+    """
+    @classmethod
+    def setUpClass(cls):
+        super(TcpAdaptorManagementTest, cls).setUpClass()
+
+        if DISABLE_SELECTOR_TESTS:
+            return
+
+        cls.tcp_server_port = cls.tester.get_port()
+        cls.tcp_listener_port = cls.tester.get_port()
+        cls.test_name = 'TCPMgmtTest'
+
+        # Here we have a simple barebones standalone router config.
+        config = [
+            ('router', {'mode': 'standalone',
+                        'id': cls.test_name}),
+            ('listener', {'role': 'normal',
+                          'port': cls.tester.get_port()}),
+        ]
+        config = Qdrouterd.Config(config)
+        cls.router = cls.tester.qdrouterd(cls.test_name, config, wait=True)
+
+        # Start the echo server. This is the server that the tcpConnector
+        # will be connecting to.
+        server_prefix = "ECHO_SERVER ES_%s" % cls.test_name
+        cls.logger = Logger(title="TcpAdaptor",
+                            print_to_console=True,
+                            save_for_dump=False,
+                            
ofilename="../setUpClass/TcpAdaptor_echo_server.log")
+        cls.echo_server = TcpEchoServer(prefix=server_prefix,
+                                        port=cls.tcp_server_port,
+                                        logger=cls.logger)
+        # The router and the echo server are running at this point.
+        assert cls.echo_server.is_running
+
+    @SkipIfNeeded(DISABLE_SELECTOR_TESTS, DISABLE_SELECTOR_REASON)
+    def test_01_mgmt(self):
+        """
+        Create and delete TCP connectors and listeners
+        """
+        LISTENER_TYPE = 'org.apache.qpid.dispatch.tcpListener'
+        CONNECTOR_TYPE = 'org.apache.qpid.dispatch.tcpConnector'
+
+        mgmt = self.router.management
+
+        # When starting out, there should be no tcpListeners or tcpConnectors.
+        self.assertEqual(0, len(mgmt.query(type=LISTENER_TYPE).results))
+        self.assertEqual(0, len(mgmt.query(type=CONNECTOR_TYPE).results))
+
+        connector_name = "ServerConnector"
+        listener_name = "ClientListener"
+
+        mgmt.create(type=LISTENER_TYPE,
+                    name=listener_name,
+                    attributes={'address': self.test_name,
+                                'port': self.tcp_listener_port,
+                                'host': '127.0.0.1'})
+        mgmt.create(type=CONNECTOR_TYPE,
+                    name=connector_name,
+                    attributes={'address': self.test_name,
+                                'port': self.tcp_server_port,
+                                'host': '127.0.0.1'})
+
+        # verify the entities have been created and tcp traffic works
+        self.assertEqual(1, len(mgmt.query(type=LISTENER_TYPE).results))
+        self.assertEqual(1, len(mgmt.query(type=CONNECTOR_TYPE).results))
+
+        # Give a second for the tcpListener to start listening.
+        time.sleep(1)
+        # Start the echo client runner
+        client_runner_timeout = 3
+        runner = EchoClientRunner(self.test_name, 1, self.logger,
+                                  None, None, 100, 1,
+                                  timeout=client_runner_timeout,
+                                  port_override=self.tcp_listener_port)
+        result = None
+
+        # Give some time for the client runner to finish up.
+        time.sleep(client_runner_timeout + 1)

Review comment:
       you should be able to do a runner.wait() instead of sleep(). If it 
returns None then the client shut down correctly.

##########
File path: tests/system_tests_tcp_adaptor.py
##########
@@ -907,5 +914,164 @@ def test_60_q2_holdoff(self):
         self.logger.log("TCP_TEST Stop %s SUCCESS" % name)
 
 
+class TcpAdaptorManagementTest(TestCase):
+    """
+    Test Creation and deletion of TCP management entities
+    """
+    @classmethod
+    def setUpClass(cls):
+        super(TcpAdaptorManagementTest, cls).setUpClass()
+
+        if DISABLE_SELECTOR_TESTS:
+            return
+
+        cls.tcp_server_port = cls.tester.get_port()
+        cls.tcp_listener_port = cls.tester.get_port()
+        cls.test_name = 'TCPMgmtTest'
+
+        # Here we have a simple barebones standalone router config.
+        config = [
+            ('router', {'mode': 'standalone',
+                        'id': cls.test_name}),
+            ('listener', {'role': 'normal',
+                          'port': cls.tester.get_port()}),
+        ]
+        config = Qdrouterd.Config(config)
+        cls.router = cls.tester.qdrouterd(cls.test_name, config, wait=True)
+
+        # Start the echo server. This is the server that the tcpConnector
+        # will be connecting to.
+        server_prefix = "ECHO_SERVER ES_%s" % cls.test_name
+        cls.logger = Logger(title="TcpAdaptor",
+                            print_to_console=True,
+                            save_for_dump=False,
+                            
ofilename="../setUpClass/TcpAdaptor_echo_server.log")
+        cls.echo_server = TcpEchoServer(prefix=server_prefix,
+                                        port=cls.tcp_server_port,
+                                        logger=cls.logger)
+        # The router and the echo server are running at this point.
+        assert cls.echo_server.is_running
+
+    @SkipIfNeeded(DISABLE_SELECTOR_TESTS, DISABLE_SELECTOR_REASON)
+    def test_01_mgmt(self):
+        """
+        Create and delete TCP connectors and listeners
+        """
+        LISTENER_TYPE = 'org.apache.qpid.dispatch.tcpListener'
+        CONNECTOR_TYPE = 'org.apache.qpid.dispatch.tcpConnector'
+
+        mgmt = self.router.management
+
+        # When starting out, there should be no tcpListeners or tcpConnectors.
+        self.assertEqual(0, len(mgmt.query(type=LISTENER_TYPE).results))
+        self.assertEqual(0, len(mgmt.query(type=CONNECTOR_TYPE).results))
+
+        connector_name = "ServerConnector"
+        listener_name = "ClientListener"
+
+        mgmt.create(type=LISTENER_TYPE,
+                    name=listener_name,
+                    attributes={'address': self.test_name,
+                                'port': self.tcp_listener_port,
+                                'host': '127.0.0.1'})
+        mgmt.create(type=CONNECTOR_TYPE,
+                    name=connector_name,
+                    attributes={'address': self.test_name,
+                                'port': self.tcp_server_port,
+                                'host': '127.0.0.1'})
+
+        # verify the entities have been created and tcp traffic works
+        self.assertEqual(1, len(mgmt.query(type=LISTENER_TYPE).results))
+        self.assertEqual(1, len(mgmt.query(type=CONNECTOR_TYPE).results))
+
+        # Give a second for the tcpListener to start listening.
+        time.sleep(1)
+        # Start the echo client runner
+        client_runner_timeout = 3
+        runner = EchoClientRunner(self.test_name, 1, self.logger,
+                                  None, None, 100, 1,
+                                  timeout=client_runner_timeout,
+                                  port_override=self.tcp_listener_port)
+        result = None
+
+        # Give some time for the client runner to finish up.
+        time.sleep(client_runner_timeout + 1)
+
+        # Make sure servers are still up
+        if self.echo_server.error:
+            self.logger.log(
+                "TCP_TEST %s Server %s stopped with error: %s" %
+                (self.test_name, self.echo_server.prefix,
+                 self.echo_server.error))
+            result = self.echo_server.error
+
+        if self.echo_server.exit_status:
+            self.logger.log(
+                "TCP_TEST %s Server %s stopped with status: %s" %
+                (self.test_name, self.echo_server.prefix, 
self.echo_server.exit_status))
+            result = self.echo_server.exit_status
+
+        self.assertIsNone(result)
+
+        error = runner.client_error()
+        if error is not None:
+            self.logger.log("TCP_TEST %s Client %s stopped with error: %s" %
+                            (self.test_name, runner.name, error))
+
+        self.assertIsNone(error)
+        status = runner.client_exit_status()
+        if status is not None:
+            self.logger.log("TCP_TEST %s Client %s stopped with status: %s" %
+                            (self.test_name, runner.name, status))
+        self.assertIsNone(status)
+        self.assertFalse(runner.client_running())
+
+        # Delete the connector and make sure the echo client fails.
+        out = mgmt.delete(type=CONNECTOR_TYPE, name=connector_name)
+        self.assertIsNone(out)
+
+        # Give some time for the connector to be deleted by the router.
+        # Deleting a connector also involves deleting existing connections
+        # that were made using the details from the connector.
+        # In this case, the router would have to drop the connection it
+        # already made to the echo server, so let's give it some time to
+        # do that.
+        time.sleep(2)
+
+        client_runner_timeout = 2
+        # Start the echo client runner
+        runner = EchoClientRunner(self.test_name, 1, self.logger,
+                                  None, None, 100, 1,
+                                  # Try for 2 seconds before timing out
+                                  timeout=client_runner_timeout,
+                                  port_override=self.tcp_listener_port)
+        time.sleep(client_runner_timeout + 1)

Review comment:
       same runner.wait() here

##########
File path: tests/system_tests_tcp_adaptor.py
##########
@@ -907,5 +914,164 @@ def test_60_q2_holdoff(self):
         self.logger.log("TCP_TEST Stop %s SUCCESS" % name)
 
 
+class TcpAdaptorManagementTest(TestCase):
+    """
+    Test Creation and deletion of TCP management entities
+    """
+    @classmethod
+    def setUpClass(cls):
+        super(TcpAdaptorManagementTest, cls).setUpClass()
+
+        if DISABLE_SELECTOR_TESTS:
+            return
+
+        cls.tcp_server_port = cls.tester.get_port()
+        cls.tcp_listener_port = cls.tester.get_port()
+        cls.test_name = 'TCPMgmtTest'
+
+        # Here we have a simple barebones standalone router config.
+        config = [
+            ('router', {'mode': 'standalone',
+                        'id': cls.test_name}),
+            ('listener', {'role': 'normal',
+                          'port': cls.tester.get_port()}),
+        ]
+        config = Qdrouterd.Config(config)
+        cls.router = cls.tester.qdrouterd(cls.test_name, config, wait=True)
+
+        # Start the echo server. This is the server that the tcpConnector
+        # will be connecting to.
+        server_prefix = "ECHO_SERVER ES_%s" % cls.test_name
+        cls.logger = Logger(title="TcpAdaptor",
+                            print_to_console=True,
+                            save_for_dump=False,
+                            
ofilename="../setUpClass/TcpAdaptor_echo_server.log")
+        cls.echo_server = TcpEchoServer(prefix=server_prefix,
+                                        port=cls.tcp_server_port,
+                                        logger=cls.logger)
+        # The router and the echo server are running at this point.
+        assert cls.echo_server.is_running
+
+    @SkipIfNeeded(DISABLE_SELECTOR_TESTS, DISABLE_SELECTOR_REASON)
+    def test_01_mgmt(self):
+        """
+        Create and delete TCP connectors and listeners
+        """
+        LISTENER_TYPE = 'org.apache.qpid.dispatch.tcpListener'
+        CONNECTOR_TYPE = 'org.apache.qpid.dispatch.tcpConnector'
+
+        mgmt = self.router.management
+
+        # When starting out, there should be no tcpListeners or tcpConnectors.
+        self.assertEqual(0, len(mgmt.query(type=LISTENER_TYPE).results))
+        self.assertEqual(0, len(mgmt.query(type=CONNECTOR_TYPE).results))
+
+        connector_name = "ServerConnector"
+        listener_name = "ClientListener"
+
+        mgmt.create(type=LISTENER_TYPE,
+                    name=listener_name,
+                    attributes={'address': self.test_name,
+                                'port': self.tcp_listener_port,
+                                'host': '127.0.0.1'})
+        mgmt.create(type=CONNECTOR_TYPE,
+                    name=connector_name,
+                    attributes={'address': self.test_name,
+                                'port': self.tcp_server_port,
+                                'host': '127.0.0.1'})
+
+        # verify the entities have been created and tcp traffic works
+        self.assertEqual(1, len(mgmt.query(type=LISTENER_TYPE).results))
+        self.assertEqual(1, len(mgmt.query(type=CONNECTOR_TYPE).results))
+
+        # Give a second for the tcpListener to start listening.
+        time.sleep(1)
+        # Start the echo client runner
+        client_runner_timeout = 3
+        runner = EchoClientRunner(self.test_name, 1, self.logger,
+                                  None, None, 100, 1,
+                                  timeout=client_runner_timeout,
+                                  port_override=self.tcp_listener_port)
+        result = None
+
+        # Give some time for the client runner to finish up.
+        time.sleep(client_runner_timeout + 1)
+
+        # Make sure servers are still up
+        if self.echo_server.error:
+            self.logger.log(
+                "TCP_TEST %s Server %s stopped with error: %s" %
+                (self.test_name, self.echo_server.prefix,
+                 self.echo_server.error))
+            result = self.echo_server.error
+
+        if self.echo_server.exit_status:
+            self.logger.log(
+                "TCP_TEST %s Server %s stopped with status: %s" %
+                (self.test_name, self.echo_server.prefix, 
self.echo_server.exit_status))
+            result = self.echo_server.exit_status
+
+        self.assertIsNone(result)
+
+        error = runner.client_error()
+        if error is not None:
+            self.logger.log("TCP_TEST %s Client %s stopped with error: %s" %
+                            (self.test_name, runner.name, error))
+
+        self.assertIsNone(error)
+        status = runner.client_exit_status()
+        if status is not None:
+            self.logger.log("TCP_TEST %s Client %s stopped with status: %s" %
+                            (self.test_name, runner.name, status))
+        self.assertIsNone(status)
+        self.assertFalse(runner.client_running())
+
+        # Delete the connector and make sure the echo client fails.
+        out = mgmt.delete(type=CONNECTOR_TYPE, name=connector_name)
+        self.assertIsNone(out)
+
+        # Give some time for the connector to be deleted by the router.
+        # Deleting a connector also involves deleting existing connections
+        # that were made using the details from the connector.
+        # In this case, the router would have to drop the connection it
+        # already made to the echo server, so let's give it some time to
+        # do that.
+        time.sleep(2)
+
+        client_runner_timeout = 2
+        # Start the echo client runner
+        runner = EchoClientRunner(self.test_name, 1, self.logger,
+                                  None, None, 100, 1,
+                                  # Try for 2 seconds before timing out
+                                  timeout=client_runner_timeout,
+                                  port_override=self.tcp_listener_port)
+        time.sleep(client_runner_timeout + 1)
+        exit_status = runner.client_exit_status()
+
+        if exit_status is not None:
+            # The test is a success, the echo client sender timed out
+            # because it did not receive anything back from the
+            # echo server because the connector to the echo server
+            # got deleted
+            self.logger.log("TCP_TEST %s Client %s timedout with error: %s" %
+                            (self.test_name, runner.name, exit_status))
+        else:
+            self.logger.log("ERROR: Connector not deleted")
+        self.assertIsNotNone(exit_status)
+
+        # Now delete the tcpListener
+        out = mgmt.delete(type=LISTENER_TYPE, name=listener_name)
+        self.assertIsNone(out)
+
+        runner = EchoClientRunner(self.test_name, 1, self.logger,
+                                  None, None, 100, 1,
+                                  # Try for 2 seconds before timing out
+                                  timeout=client_runner_timeout,
+                                  port_override=self.tcp_listener_port)
+        time.sleep(client_runner_timeout + 1)

Review comment:
       and here




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to