~juju/pyjuju/0.7

« back to all changes in this revision

Viewing changes to juju/control/tests/test_upgrade_charm.py

  • Committer: Kapil Thangavelu
  • Date: 2013-05-15 19:44:24 UTC
  • Revision ID: kapil@canonical.com-20130515194424-smiec39th8ofxm7n
merge upgrade-charm with new peer rels

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
16
17
 
17
18
 
74
75
        self.stderr = self.capture_stream("stderr")
75
76
 
76
77
    @inlineCallbacks
 
78
    def test_charm_upgrade_new_peer(self):
 
79
        repository = self.increment_charm(self.charm)
 
80
 
 
81
        # Add a peer rel
 
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:
 
87
            fh.write(dump(data))
 
88
 
 
89
        mock_environment = self.mocker.patch(Environment)
 
90
        mock_environment.get_machine_provider()
 
91
        self.mocker.result(self.provider)
 
92
 
 
93
        finished = self.setup_cli_reactor()
 
94
        self.setup_exit(0)
 
95
        self.mocker.replay()
 
96
        main(["upgrade-charm", "--repository", repository.path, "mysql"])
 
97
        yield finished
 
98
 
 
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)
 
105
        r = rels[0]
 
106
        self.assertEqual(
 
107
            (r.relation_role, r.relation_name),
 
108
            ('peer', 'nonce'))
 
109
 
 
110
    @inlineCallbacks
77
111
    def test_charm_upgrade(self):
78
112
        """
79
113
        'juju charm-upgrade <service_name>' will schedule