11
11
from juju.errors import FileNotFound
12
12
from juju.environment.environment import Environment
13
13
from juju.lib.mocker import ANY
14
from juju.lib.serializer import dump
14
from juju.lib.serializer import dump, load
15
from juju.state.relation import RelationStateManager
15
16
from juju.unit.workflow import UnitWorkflowState
74
75
self.stderr = self.capture_stream("stderr")
78
def test_charm_upgrade_new_peer(self):
79
repository = self.increment_charm(self.charm)
82
md_path = os.path.join(repository.path, "series", "mysql", "metadata.yaml")
83
with open(md_path) as fh:
84
data = load(fh.read())
85
data['peers'] = {'nonce': {'interface': 'nonce'}}
86
with open(md_path, "w") as fh:
89
mock_environment = self.mocker.patch(Environment)
90
mock_environment.get_machine_provider()
91
self.mocker.result(self.provider)
93
finished = self.setup_cli_reactor()
96
main(["upgrade-charm", "--repository", repository.path, "mysql"])
99
# Verify the service has a new charm reference
100
charm_id = yield self.service_state1.get_charm_id()
101
self.assertEqual(charm_id, "local:series/mysql-2")
102
rels = yield RelationStateManager(
103
self.client).get_relations_for_service(self.service_state1)
104
self.assertEqual(len(rels), 1)
107
(r.relation_role, r.relation_name),
77
111
def test_charm_upgrade(self):
79
113
'juju charm-upgrade <service_name>' will schedule