def run_qdrouterd_as_daemon(self, config_file_name, pid_file_name):
        """
        Runs qdrouterd as a daemon, using the provided config_file_name
        in order to ensure router is able to load it, be it using a
        full or relative path.

        :param config_file_name: The configuration file name to be written
        :param pid_file_name: PID file name (must be full path)
        :return:
        """
        pipe = self.popen([
            os.path.join(os.environ.get('BUILD_DIR'), 'router', 'qdrouterd'),
            '-d', '-I',
            os.path.join(os.environ.get('SOURCE_DIR'), 'python'), '-c',
            self.config.write(config_file_name), '-P', pid_file_name
        ],
                          stdout=PIPE,
                          stderr=STDOUT,
                          expect=Process.EXIT_OK,
                          universal_newlines=True)
        out = pipe.communicate()[0]
        wait_port(CommandLineTest.testport)

        try:
            pipe.teardown()
            # kill qdrouterd running as a daemon
            with open(pid_file_name, 'r') as pidfile:
                for line in pidfile:
                    os.kill(int(line), signal.SIGTERM)
            pidfile.close()
        except OSError as ex:
            raise Exception("%s\n%s" % (ex, out))
    def run_qdrouterd_as_daemon(self, config_file_name, pid_file_name):
        """
        Runs qdrouterd as a daemon, using the provided config_file_name
        in order to ensure router is able to load it, be it using a
        full or relative path.

        :param config_file_name: The configuration file name to be written
        :param pid_file_name: PID file name (must be full path)
        :return:
        """
        pipe = self.popen(
            [os.path.join(os.environ.get('BUILD_DIR'), 'router', 'qdrouterd'), '-d',
             '-I', os.path.join(os.environ.get('SOURCE_DIR'), 'python'),
             '-c', self.config.write(config_file_name), '-P', pid_file_name],
            stdout=PIPE, stderr=STDOUT, expect=Process.EXIT_OK,
            universal_newlines=True)
        out = pipe.communicate()[0]
        wait_port(CommandLineTest.testport)

        try:
            pipe.teardown()
            # kill qdrouterd running as a daemon
            with open(pid_file_name, 'r') as pidfile:
                for line in pidfile:
                    os.kill(int(line), signal.SIGTERM)
            pidfile.close()
        except OSError as ex:
            raise Exception("%s\n%s" % (ex, out))
 def run(self, host=None, port=None, pf=None):
     if port:
         wait_port(port, protocol_family=pf)
         if pf and pf.lower() == 'ipv6':
             self._addr = "amqp://[%s]:%s" % (host, port)
         else:
             self._addr = "amqp://%s:%s" % (host, port)
     else:
         self._addr = self._router.addresses[0]
     Container(self).run()
    def test_zzz_create_delete_listener(self):
        long_type = "org.apache.qpid.dispatch.listener"
        name = "ealistener"

        listener_port = self.get_port()

        listener = self.create(long_type, name, str(listener_port))
        self.assertEquals(listener["type"], long_type)
        self.assertEquals(listener["name"], name)

        exception_occurred = False

        try:
            # Try to connect to the port that was closed, it should not return an error
            wait_port(listener_port, timeout=2)
        except Exception as e:
            exception_occurred = True

        self.assertFalse(exception_occurred)

        delete_command = "DELETE --type=" + long_type + " --name=" + name
        self.run_qdmanage(delete_command)

        exception_occurred = False
        try:
            # Try deleting an already deleted connector, this should raise an exception
            self.run_qdmanage(delete_command)
        except Exception as e:
            exception_occurred = True
            self.assertTrue("NotFoundStatus: No entity with name='" + name + "'" in e.message)

        self.assertTrue(exception_occurred)

        try:
            # Try to connect to that port, it should not return an error
            wait_port(listener_port, timeout=2)
        except Exception as e:
            exception_occurred = True

        self.assertTrue(exception_occurred)

        # Now try the same thing with a short_type
        short_type = "listener"

        listener_port = self.get_port()

        listener = self.create(long_type, name, str(listener_port))
        self.assertEquals(listener["type"], long_type)
        self.assertEquals(listener["name"], name)

        delete_command = "DELETE --type=" + short_type + " --name=" + name
        self.run_qdmanage(delete_command)

        exception_occurred = False

        try:
            # Try to connect to that port, it should not return an error
            wait_port(listener_port, timeout=2)
        except Exception as e:
            exception_occurred = True

        self.assertTrue(exception_occurred)
    def test_zzz_create_delete_listener(self):
        long_type = 'org.apache.qpid.dispatch.listener'
        name = 'ealistener'

        listener_port = self.get_port()

        listener = self.create(long_type, name, str(listener_port))
        self.assertEquals(listener['type'], long_type)
        self.assertEquals(listener['name'], name)

        exception_occurred = False

        try:
            # Try to connect to the port that was closed, it should not return an error
            wait_port(listener_port, timeout=2)
        except Exception as e:
            exception_occurred = True

        self.assertFalse(exception_occurred)

        delete_command = 'DELETE --type=' + long_type + ' --name=' + name
        self.run_qdmanage(delete_command)

        exception_occurred = False
        try:
            # Try deleting an already deleted connector, this should raise an exception
            self.run_qdmanage(delete_command)
        except Exception as e:
            exception_occurred = True
            self.assertTrue("NotFoundStatus: No entity with name='" + name +
                            "'" in e.message)

        self.assertTrue(exception_occurred)

        try:
            # Try to connect to that port, it should not return an error
            wait_port(listener_port, timeout=2)
        except Exception as e:
            exception_occurred = True

        self.assertTrue(exception_occurred)

        # Now try the same thing with a short_type
        short_type = 'listener'

        listener_port = self.get_port()

        listener = self.create(long_type, name, str(listener_port))
        self.assertEquals(listener['type'], long_type)
        self.assertEquals(listener['name'], name)

        delete_command = 'DELETE --type=' + short_type + ' --name=' + name
        self.run_qdmanage(delete_command)

        exception_occurred = False

        try:
            # Try to connect to that port, it should not return an error
            wait_port(listener_port, timeout=2)
        except Exception as e:
            exception_occurred = True

        self.assertTrue(exception_occurred)