diff options
author | Daniel G. Taylor <dan@programmer-art.org> | 2014-08-04 13:55:29 -0700 |
---|---|---|
committer | Daniel G. Taylor <dan@programmer-art.org> | 2014-08-04 13:55:29 -0700 |
commit | 2ffb00a6692f61fda1fe6f67b2253e2e1228eca5 (patch) | |
tree | b3a2c9587b4620134bc6441ae5dab01f02196d8f /tests | |
parent | e872d9475ab5535f8b3391ffbeda5a698d473658 (diff) | |
parent | e2a20c6743f020e5ce5c7fffc3c67915c621fd3b (diff) | |
download | boto-2ffb00a6692f61fda1fe6f67b2253e2e1228eca5.tar.gz |
Merge pull request #2456 from danielgtaylor/emr-fix
Fix parsing of EMR step summary response. Fixes #2456.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/unit/emr/test_connection.py | 93 |
1 files changed, 92 insertions, 1 deletions
diff --git a/tests/unit/emr/test_connection.py b/tests/unit/emr/test_connection.py index 5badd6ad..c60f04a4 100644 --- a/tests/unit/emr/test_connection.py +++ b/tests/unit/emr/test_connection.py @@ -372,7 +372,74 @@ class TestListSteps(AWSMockServiceTestCase): connection_class = EmrConnection def default_body(self): - return b"""<ListStepsOutput><Steps><member><Name>Step 1</Name></member></Steps></ListStepsOutput>""" + return b"""<ListStepsResponse xmlns="http://elasticmapreduce.amazonaws.com/doc/2009-03-31"> + <ListStepsResult> + <Steps> + <member> + <Id>abc123</Id> + <Status> + <StateChangeReason/> + <Timeline> + <CreationDateTime>2014-07-01T00:00:00.000Z</CreationDateTime> + </Timeline> + <State>PENDING</State> + </Status> + <Name>Step 1</Name> + <Config> + <Jar>/home/hadoop/lib/emr-s3distcp-1.0.jar</Jar> + <Args> + <member>--src</member> + <member>hdfs:///data/test/</member> + <member>--dest</member> + <member>s3n://test/data</member> + </Args> + <Properties/> + </Config> + <ActionOnFailure>CONTINUE</ActionOnFailure> + </member> + <member> + <Id>def456</Id> + <Status> + <StateChangeReason/> + <Timeline> + <CreationDateTime>2014-07-01T00:00:00.000Z</CreationDateTime> + </Timeline> + <State>COMPLETED</State> + </Status> + <Name>Step 2</Name> + <Config> + <MainClass>my.main.SomeClass</MainClass> + <Jar>s3n://test/jars/foo.jar</Jar> + </Config> + <ActionOnFailure>CONTINUE</ActionOnFailure> + </member> + <member> + <Id>ghi789</Id> + <Status> + <StateChangeReason/> + <Timeline> + <CreationDateTime>2014-07-01T00:00:00.000Z</CreationDateTime> + </Timeline> + <State>FAILED</State> + </Status> + <Name>Step 3</Name> + <Config> + <Jar>s3n://test/jars/bar.jar</Jar> + <Args> + <member>-arg</member> + <member>value</member> + </Args> + <Properties/> + </Config> + <ActionOnFailure>TERMINATE_CLUSTER</ActionOnFailure> + </member> + </Steps> + </ListStepsResult> + <ResponseMetadata> + <RequestId>eff31ee5-0342-11e4-b3c7-9de5a93f6fcb</RequestId> + </ResponseMetadata> +</ListStepsResponse> +""" def test_list_steps(self): self.set_http_response(200) @@ -390,6 +457,30 @@ class TestListSteps(AWSMockServiceTestCase): self.assertTrue(isinstance(response, StepSummaryList)) self.assertEqual(response.steps[0].name, 'Step 1') + valid_states = [ + 'PENDING', + 'RUNNING', + 'COMPLETED', + 'CANCELLED', + 'FAILED', + 'INTERRUPTED' + ] + + # Check for step states + for step in response.steps: + self.assertIn(step.status.state, valid_states) + + # Check for step config + step = response.steps[0] + self.assertEqual(step.config.jar, + '/home/hadoop/lib/emr-s3distcp-1.0.jar') + self.assertEqual(len(step.config.args), 4) + self.assertEqual(step.config.args[0].value, '--src') + self.assertEqual(step.config.args[1].value, 'hdfs:///data/test/') + + step = response.steps[1] + self.assertEqual(step.config.mainclass, 'my.main.SomeClass') + def test_list_steps_with_states(self): self.set_http_response(200) response = self.service_connection.list_steps( |