Exemple #1
0
 def test_as_app(self):
     """The agent class can be accessed as an application."""
     app = BaseAgent().as_app()
     multi_service = IService(app, None)
     self.assertTrue(IServiceCollection.providedBy(multi_service))
     services = list(multi_service)
     self.assertEqual(len(services), 1)
Exemple #2
0
    def test_stop_service_stub_ignores_disconnected_agent(self):
        """The base class agent, stopService will the stop method.

        If the client is not connected then no attempt is made to close it.
        """
        mock_agent = self.mocker.patch(BaseAgent)
        mock_client = self.mocker.mock(ZookeeperClient)

        # connection is closed after agent.stop invoked.
        with self.mocker.order():
            mock_agent.stop()

            # client existence check
            mock_agent.client
            self.mocker.result(mock_client)

            # client connected check
            mock_agent.client
            self.mocker.result(mock_client)
            mock_client.connected
            self.mocker.result(False)

        self.mocker.replay()

        agent = BaseAgent()
        return agent.stopService()
Exemple #3
0
    def test_stop_service_stub_closes_agent(self):
        """The base class agent, stopService will the stop method.

        Additionally it will close the agent's zookeeper client if
        the client is still connected.
        """
        mock_agent = self.mocker.patch(BaseAgent)
        mock_client = self.mocker.mock(ZookeeperClient)

        # connection is closed after agent.stop invoked.
        with self.mocker.order():
            mock_agent.stop()
            self.mocker.passthrough()

            # client existence check
            mock_agent.client
            self.mocker.result(mock_client)

            # client connected check
            mock_agent.client
            self.mocker.result(mock_client)
            mock_client.connected
            self.mocker.result(True)

            # client close
            mock_agent.client
            self.mocker.result(mock_client)
            mock_client.close()

        self.mocker.replay()

        agent = BaseAgent()
        return agent.stopService()
Exemple #4
0
    def test_non_existant_directory(self):
        """If the juju directory does not exist an error should be raised.
        """
        juju_directory = self.makeDir()
        os.rmdir(juju_directory)
        data = {
            "zookeeper_servers": get_test_zookeeper_address(),
            "juju_directory": juju_directory
        }

        agent = BaseAgent()
        self.assertRaises(JujuError, agent.configure, data)
Exemple #5
0
    def test_directory_cli_option(self):
        """The juju directory can be configured on the cli."""
        juju_directory = self.makeDir()
        self.change_args("es-agent", "--zookeeper-servers",
                         get_test_zookeeper_address(), "--juju-directory",
                         juju_directory)

        agent = BaseAgent()
        parser = argparse.ArgumentParser()
        agent.setup_options(parser)
        options = parser.parse_args(namespace=TwistedOptionNamespace())
        agent.configure(options)
        self.assertEqual(agent.config["juju_directory"], juju_directory)
Exemple #6
0
    def test_directory_env(self):
        """The juju directory passed via environment."""
        self.change_args("es-agent")

        juju_directory = self.makeDir()
        self.change_environment(JUJU_HOME=juju_directory,
                                JUJU_ZOOKEEPER=get_test_zookeeper_address())

        agent = BaseAgent()
        parser = argparse.ArgumentParser()
        agent.setup_options(parser)
        options = parser.parse_args(namespace=TwistedOptionNamespace())
        agent.configure(options)
        self.assertEqual(agent.config["juju_directory"], juju_directory)
Exemple #7
0
    def test_connect_cli_option(self):
        """The zookeeper server can be passed via cli argument."""
        mock_client = self.mocker.mock()
        client = self.mocker.patch(ZookeeperClient)
        client.connect("x2.example.com")
        self.mocker.result(succeed(mock_client))
        self.mocker.replay()

        agent = BaseAgent()
        agent.configure({
            "zookeeper_servers": "x2.example.com",
            "juju_directory": self.makeDir()
        })
        result = agent.connect()
        self.assertEqual(result.result, mock_client)
        self.assertEqual(agent.client, mock_client)
Exemple #8
0
    def test_run_base_raises_error(self):
        """The base class agent, raises a notimplemented error when started."""
        client = self.mocker.patch(ZookeeperClient)
        client.connect(get_test_zookeeper_address())
        client_mock = self.mocker.mock()
        self.mocker.result(succeed(client_mock))
        self.mocker.replay()

        agent = BaseAgent()
        agent.configure({
            "zookeeper_servers": get_test_zookeeper_address(),
            "juju_directory": self.makeDir()
        })
        d = agent.startService()
        self.failUnlessFailure(d, NotImplementedError)
        return d
Exemple #9
0
    def test_connect_env(self):
        """Zookeeper connection information can be passed via environment."""
        self.change_args("es-agent")
        self.change_environment(JUJU_HOME=self.makeDir(),
                                JUJU_ZOOKEEPER="x1.example.com",
                                JUJU_PRINCIPALS="admin:abc agent:xyz")

        client = self.mocker.patch(ZookeeperClient)
        client.connect("x1.example.com")
        self.mocker.result(succeed(client))
        client.add_auth("digest", "admin:abc")
        client.add_auth("digest", "agent:xyz")
        client.exists("/")
        self.mocker.replay()

        agent = BaseAgent()
        parser = argparse.ArgumentParser()
        agent.setup_options(parser)
        options = parser.parse_args(namespace=TwistedOptionNamespace())
        agent.configure(options)
        d = agent.startService()
        self.failUnlessFailure(d, NotImplementedError)
        return d
Exemple #10
0
 def test_watch_enabled_accessors(self):
     agent = BaseAgent()
     self.assertTrue(agent.get_watch_enabled())
     agent.set_watch_enabled(False)
     self.assertFalse(agent.get_watch_enabled())
Exemple #11
0
 def test_zookeeper_hosts_not_configured(self):
     """a NoConnection error is raised if no zookeeper host is specified."""
     agent = BaseAgent()
     self.assertRaises(NoConnection, agent.configure,
                       {"zookeeper_servers": None})