~bcsaller/pyjuju/makefile-meta

« back to all changes in this revision

Viewing changes to ensemble/providers/ec2/tests/test_connect.py

merge handling of invalid stored zk instance id and resulting ec2 exception. [r=niemeyer][f=659930]

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
from twisted.internet.defer import inlineCallbacks, succeed, fail
6
6
 
7
7
from txaws.ec2.model import Instance
 
8
from txaws.ec2.exception import EC2Error
8
9
 
9
10
import zookeeper
10
11
 
83
84
        self.mocker.result(succeed(dump(
84
85
            {"zookeeper-instances": [server1.instance_id,
85
86
                                     server2.instance_id]})))
86
 
        self.ec2.describe_instances(server1.instance_id,
87
 
                                    server2.instance_id)
88
 
        self.mocker.result(succeed([server1, server2]))
89
 
 
 
87
 
 
88
        # Zk instances are checked individually to handle invalid ids correctly
 
89
        self.ec2.describe_instances(server1.instance_id)
 
90
        self.mocker.result(succeed([server1]))
 
91
 
 
92
        self.ec2.describe_instances(server2.instance_id)
 
93
        self.mocker.result(succeed([server2]))
90
94
        client = self.mocker.patch(SSHClient)
91
95
 
92
96
        connected_client = self.mocker.mock(type=SSHClient)
109
113
        d.addCallback(verify_result)
110
114
        return d
111
115
 
 
116
    def test_provider_connect_with_invalid_instance_id(self):
 
117
        """
 
118
        Using an invalid instance id, still gets the appropriate ensemble error
 
119
        """
 
120
        server1 = Instance("i-foobar", "pending", dns_name="x1.example.com")
 
121
        self.s3.get_object(self.env_name, "provider-state")
 
122
        self.mocker.result(succeed(dump(
 
123
            {"zookeeper-instances": [server1.instance_id]})))
 
124
 
 
125
        invalid_id_error = EC2Error("<error/>", 400)
 
126
        invalid_id_error.errors = [{"Code": "InvalidInstanceID.NotFound"}]
 
127
 
 
128
        self.ec2.describe_instances(server1.instance_id)
 
129
        self.mocker.result(fail(invalid_id_error))
 
130
        self.mocker.replay()
 
131
 
 
132
        provider = self.get_provider()
 
133
        d = provider.connect()
 
134
        return self.assertFailure(d, EnvironmentNotFound)
 
135
 
112
136
    @inlineCallbacks
113
137
    def test_provider_connect_waits_on_initialization(self):
114
138
        """