3
from twisted.internet.defer import inlineCallbacks, succeed
5
from txzookeeper.tests.utils import deleteTree
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
22
class AgentTestBase(StateTestBase):
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)
38
if self.agent.client and self.agent.client.connected:
39
self.agent.client.close()
41
if self.client.connected:
42
deleteTree("/", self.client.handle)
45
def get_test_environment_config(self):
46
sample_config = SAMPLE_ENV % self.makeDir()
47
config = EnvironmentsConfig()
48
config.parse(sample_config)
51
def get_test_environment(self):
52
return self.get_test_environment_config().get_default()
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)
61
def debug_pprint_tree(self, path="/", indent=1):
62
children = yield self.client.get_children(path)
64
print " " * indent, "/" + n
65
yield self.debug_pprint_tree(
66
os.path.join(path, n),