19
21
super(JujuInfoTest, self).setUp()
20
self.mstore.set_accepted_types(["juju-info"])
22
self.mstore.set_accepted_types(["juju-units-info"])
21
23
self.plugin = JujuInfo()
22
24
self.monitor.add(self.plugin)
23
self.makeFile(SAMPLE_JUJU_INFO, path=self.config.juju_filename)
26
if not os.path.exists(self.config.juju_directory):
27
os.mkdir(self.config.juju_directory)
29
self.filepath = os.path.join(self.config.juju_directory,
31
self.makeFile(SAMPLE_JUJU_INFO, path=self.filepath)
25
33
def test_get_sample_juju_info(self):
30
38
self.plugin.exchange()
31
39
message = self.mstore.get_pending_messages()[0]
32
self.assertEqual(message["type"], "juju-info")
33
self.assertEqual(message["environment-uuid"], "DEAD-BEEF")
34
self.assertEqual(message["unit-name"], "juju-unit-name")
35
self.assertEqual(message["api-addresses"], ["10.0.3.1:17070"])
40
self.assertEqual(message["type"], "juju-units-info")
41
juju_info = message["juju-info-list"][0]
42
self.assertEqual(juju_info["environment-uuid"], "DEAD-BEEF")
43
self.assertEqual(juju_info["unit-name"], "juju-unit-name")
44
self.assertEqual(juju_info["api-addresses"], ["10.0.3.1:17070"])
37
46
def test_juju_info_reported_only_once(self):
42
51
self.plugin.exchange()
43
52
messages = self.mstore.get_pending_messages()
44
53
self.assertEqual(len(messages), 1)
45
self.assertEqual(messages[0]["type"], "juju-info")
54
self.assertEqual(messages[0]["type"], "juju-units-info")
47
56
self.plugin.exchange()
48
57
messages = self.mstore.get_pending_messages()
56
65
self.plugin.exchange()
57
66
message = self.mstore.get_pending_messages()[0]
58
self.assertEqual(message["type"], "juju-info")
59
self.assertEqual(message["environment-uuid"], "DEAD-BEEF")
60
self.assertEqual(message["unit-name"], "juju-unit-name")
61
self.assertEqual(message["api-addresses"], ["10.0.3.1:17070"])
67
self.assertEqual(message["type"], "juju-units-info")
68
juju_info = message["juju-info-list"][0]
69
self.assertEqual(juju_info["environment-uuid"], "DEAD-BEEF")
70
self.assertEqual(juju_info["unit-name"], "juju-unit-name")
71
self.assertEqual(juju_info["api-addresses"], ["10.0.3.1:17070"])
64
74
json.dumps({"environment-uuid": "FEED-BEEF",
65
75
"unit-name": "changed-unit-name",
66
76
"api-addresses": "10.0.3.2:17070",
67
77
"private-address": "127.0.1.1"}),
68
path=self.config.juju_filename)
78
dirname=self.config.juju_directory, suffix=".json")
69
79
self.plugin.exchange()
70
80
message = self.mstore.get_pending_messages()[1]
71
self.assertEqual(message["type"], "juju-info")
72
self.assertEqual(message["environment-uuid"], "FEED-BEEF")
73
self.assertEqual(message["unit-name"], "changed-unit-name")
74
self.assertEqual(message["api-addresses"], ["10.0.3.2:17070"])
81
self.assertEqual(message["type"], "juju-units-info")
82
juju_info = message["juju-info-list"][0]
83
self.assertEqual(juju_info["environment-uuid"], "FEED-BEEF")
84
self.assertEqual(juju_info["unit-name"], "changed-unit-name")
85
self.assertEqual(juju_info["api-addresses"], ["10.0.3.2:17070"])
76
87
def test_no_message_with_invalid_json(self):
77
88
"""No Juju message is sent if the JSON file is invalid."""
78
self.makeFile("barf", path=self.config.juju_filename)
89
self.makeFile("barf", path=self.filepath)
80
91
self.plugin.exchange()
81
92
messages = self.mstore.get_pending_messages()