~larry-e-works/uci-engine/write-exitcode-to-file

« back to all changes in this revision

Viewing changes to lander/lander/tests/test_service_wrapper.py

  • Committer: Joe Talbott
  • Date: 2014-01-27 14:54:08 UTC
  • mfrom: (126.3.8 webui)
  • mto: This revision was merged to the branch mainline in revision 161.
  • Revision ID: joe.talbott@canonical.com-20140127145408-zpubebx02y6oumxq
merge doanac's cleanup branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
47
47
                'request_parameters': 'blah',
48
48
                'ppa_assigner_url': 'foo',
49
49
                'bsb_url': 'bar',
 
50
                'imgbuilder_url': 'foo',
50
51
                'progress_trigger': 'progress-trigger',
 
52
                'base_image': {},
 
53
                'package_list': {},
51
54
            },
52
55
            'ppa_assigner': {
53
56
                'ppa': 'ppa-name',
54
57
                'location': 'ppa-location',
55
 
            }
 
58
            },
 
59
            'bsbuilder': {
 
60
                'ppa': 'ppa-name',
 
61
            },
56
62
        }
57
63
        with open(self.params, 'w') as f:
58
64
            f.write(json.dumps(data))
162
168
            data = json.loads(f.read())
163
169
            self.assertEqual(state, data)
164
170
 
 
171
    @mock.patch('lander_service_wrapper._post')
 
172
    def testImageBuilderUnexpected(self, post):
 
173
        '''Ensure unexpected errors still generate a response'''
 
174
        err_msg = 'foo bar'
 
175
        post.side_effect = RuntimeError(err_msg)
 
176
 
 
177
        args = self.base_args + ['--service', 'image_builder']
 
178
        args = lander_service_wrapper._get_parser().parse_args(args)
 
179
        rc = lander_service_wrapper.main(args)
 
180
        self.assertEqual(1, rc)
 
181
 
 
182
        with open(self.results) as f:
 
183
            data = json.loads(f.read())
 
184
            self.assertEqual('FAILED', data['result'])
 
185
            self.assertEqual(err_msg, data['error'])
 
186
 
 
187
    @mock.patch('lander_service_wrapper._post')
 
188
    @mock.patch('ci_utils.amqp_utils.connection')
 
189
    def testImageBuilderSucceeds(self, connection, post):
 
190
        '''Ensure we generate the proper response if things succeed.'''
 
191
 
 
192
        # mock the run-forever logic to ensure we return what we expect
 
193
        state = {'state': 'DONE', 'foo': 'bar', 'exit': True}
 
194
 
 
195
        def amqp():
 
196
            def run_forever(channel, queue, callback):
 
197
                m = mock.Mock()
 
198
                m.body = json.dumps({'state': 'WAITING'})
 
199
                callback(m)
 
200
                m.body = json.dumps(state)
 
201
                callback(m)
 
202
            return run_forever
 
203
 
 
204
        args = self.base_args + ['--service', 'image_builder']
 
205
        args = lander_service_wrapper._get_parser().parse_args(args)
 
206
 
 
207
        with mock.patch('ci_utils.amqp_utils._run_forever', new_callable=amqp):
 
208
            rc = lander_service_wrapper.main(args)
 
209
            self.assertEqual(0, rc)
 
210
 
 
211
        with open(self.results) as f:
 
212
            data = json.loads(f.read())
 
213
            self.assertEqual(state, data)
 
214
 
165
215
    @mock.patch('lander_service_wrapper._patch')
166
216
    def testPPAFreeSucceeds(self, patch):
167
217
        '''ensure we can free a PPA'''