~juju/ubuntu/quantal/juju/0.6

« back to all changes in this revision

Viewing changes to juju/agents/tests/common.py

  • Committer: Package Import Robot
  • Author(s): Clint Byrum
  • Date: 2011-09-28 09:42:32 UTC
  • Revision ID: package-import@ubuntu.com-20110928094232-o1yozyv3nw3ejymz
Tags: upstream-0.5+bzr361
ImportĀ upstreamĀ versionĀ 0.5+bzr361

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import os
 
2
 
 
3
from twisted.internet.defer import inlineCallbacks, succeed
 
4
 
 
5
from txzookeeper.tests.utils import deleteTree
 
6
 
 
7
from juju.agents.base import TwistedOptionNamespace
 
8
from juju.environment.config import EnvironmentsConfig
 
9
from juju.state.tests.common import StateTestBase
 
10
from juju.tests.common import get_test_zookeeper_address
 
11
 
 
12
 
 
13
SAMPLE_ENV = """\
 
14
environments:
 
15
  myfirstenv:
 
16
    type: dummy
 
17
    foo: bar
 
18
    storage-directory: %s
 
19
"""
 
20
 
 
21
 
 
22
class AgentTestBase(StateTestBase):
 
23
 
 
24
    agent_class = None
 
25
    juju_directory = None
 
26
 
 
27
    @inlineCallbacks
 
28
    def setUp(self):
 
29
        self.juju_directory = self.makeDir()
 
30
        yield super(AgentTestBase, self).setUp()
 
31
        assert self.agent_class, "Agent Class must be specified on test"
 
32
        self.agent = self.agent_class()
 
33
        self.options = yield self.get_agent_config()
 
34
        self.agent.configure(self.options)
 
35
        self.agent.set_watch_enabled(False)
 
36
 
 
37
    def tearDown(self):
 
38
        if self.agent.client and self.agent.client.connected:
 
39
            self.agent.client.close()
 
40
 
 
41
        if self.client.connected:
 
42
            deleteTree("/", self.client.handle)
 
43
            self.client.close()
 
44
 
 
45
    def get_test_environment_config(self):
 
46
        sample_config = SAMPLE_ENV % self.makeDir()
 
47
        config = EnvironmentsConfig()
 
48
        config.parse(sample_config)
 
49
        return config
 
50
 
 
51
    def get_test_environment(self):
 
52
        return self.get_test_environment_config().get_default()
 
53
 
 
54
    def get_agent_config(self):
 
55
        options = TwistedOptionNamespace()
 
56
        options["juju_directory"] = self.juju_directory
 
57
        options["zookeeper_servers"] = get_test_zookeeper_address()
 
58
        return succeed(options)
 
59
 
 
60
    @inlineCallbacks
 
61
    def debug_pprint_tree(self, path="/", indent=1):
 
62
        children = yield self.client.get_children(path)
 
63
        for n in children:
 
64
            print " " * indent, "/" + n
 
65
            yield self.debug_pprint_tree(
 
66
                os.path.join(path, n),
 
67
                indent + 1)