Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(108)

Unified Diff: third_party/boto/tests/unit/emr/test_connection.py

Issue 698893003: Update checked in version of gsutil to version 4.6 (Closed) Base URL: http://dart.googlecode.com/svn/third_party/gsutil/
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/boto/tests/unit/emr/test_connection.py
===================================================================
--- third_party/boto/tests/unit/emr/test_connection.py (revision 33376)
+++ third_party/boto/tests/unit/emr/test_connection.py (working copy)
@@ -24,10 +24,16 @@
import boto.utils
from datetime import datetime
+from time import time
from tests.unit import AWSMockServiceTestCase
from boto.emr.connection import EmrConnection
-from boto.emr.emrobject import JobFlowStepList
+from boto.emr.emrobject import BootstrapAction, BootstrapActionList, \
+ ClusterStatus, ClusterSummaryList, \
+ ClusterSummary, ClusterTimeline, InstanceInfo, \
+ InstanceList, InstanceGroupInfo, \
+ InstanceGroup, InstanceGroupList, JobFlow, \
+ JobFlowStepList, Step, StepSummaryList, Cluster
# These tests are just checking the basic structure of
# the Elastic MapReduce code, by picking a few calls
@@ -38,7 +44,49 @@
connection_class = EmrConnection
def default_body(self):
- return """<ListClustersOutput><Clusters></Clusters></ListClustersOutput>"""
+ return """
+<ListClustersResponse xmlns="http://elasticmapreduce.amazonaws.com/doc/2009-03-31">
+ <ListClustersResult>
+ <Clusters>
+ <member>
+ <Id>j-aaaaaaaaaaaa</Id>
+ <Status>
+ <StateChangeReason>
+ <Message>Terminated by user request</Message>
+ <Code>USER_REQUEST</Code>
+ </StateChangeReason>
+ <State>TERMINATED</State>
+ <Timeline>
+ <CreationDateTime>2014-01-24T01:21:21Z</CreationDateTime>
+ <ReadyDateTime>2014-01-24T01:25:26Z</ReadyDateTime>
+ <EndDateTime>2014-01-24T02:19:46Z</EndDateTime>
+ </Timeline>
+ </Status>
+ <Name>analytics test</Name>
+ </member>
+ <member>
+ <Id>j-aaaaaaaaaaaab</Id>
+ <Status>
+ <StateChangeReason>
+ <Message>Terminated by user request</Message>
+ <Code>USER_REQUEST</Code>
+ </StateChangeReason>
+ <State>TERMINATED</State>
+ <Timeline>
+ <CreationDateTime>2014-01-21T02:53:08Z</CreationDateTime>
+ <ReadyDateTime>2014-01-21T02:56:40Z</ReadyDateTime>
+ <EndDateTime>2014-01-21T03:40:22Z</EndDateTime>
+ </Timeline>
+ </Status>
+ <Name>test job</Name>
+ </member>
+ </Clusters>
+ </ListClustersResult>
+ <ResponseMetadata>
+ <RequestId>aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee</RequestId>
+ </ResponseMetadata>
+</ListClustersResponse>
+ """
def test_list_clusters(self):
self.set_http_response(status_code=200)
@@ -49,6 +97,21 @@
'Version': '2009-03-31',
})
+ self.assertTrue(isinstance(response, ClusterSummaryList))
+
+ self.assertEqual(len(response.clusters), 2)
+ self.assertTrue(isinstance(response.clusters[0], ClusterSummary))
+ self.assertEqual(response.clusters[0].name, 'analytics test')
+
+ self.assertTrue(isinstance(response.clusters[0].status, ClusterStatus))
+
+ self.assertTrue(isinstance(response.clusters[0].status.timeline, ClusterTimeline))
+
+ self.assertEqual(response.clusters[0].status.timeline.creationdatetime, '2014-01-24T01:21:21Z')
+ self.assertEqual(response.clusters[0].status.timeline.readydatetime, '2014-01-24T01:25:26Z')
+ self.assertEqual(response.clusters[0].status.timeline.enddatetime, '2014-01-24T02:19:46Z')
+
+
def test_list_clusters_created_before(self):
self.set_http_response(status_code=200)
@@ -92,8 +155,61 @@
connection_class = EmrConnection
def default_body(self):
- return """<ListInstanceGroupsOutput><InstanceGroups></InstanceGroups></ListInstanceGroupsOutput>"""
+ return """
+<ListInstanceGroupsResponse xmlns="http://elasticmapreduce.amazonaws.com/doc/2009-03-31">
+ <ListInstanceGroupsResult>
+ <InstanceGroups>
+ <member>
+ <Id>ig-aaaaaaaaaaaaa</Id>
+ <InstanceType>m1.large</InstanceType>
+ <Market>ON_DEMAND</Market>
+ <Status>
+ <StateChangeReason>
+ <Message>Job flow terminated</Message>
+ <Code>CLUSTER_TERMINATED</Code>
+ </StateChangeReason>
+ <State>TERMINATED</State>
+ <Timeline>
+ <CreationDateTime>2014-01-24T01:21:21Z</CreationDateTime>
+ <ReadyDateTime>2014-01-24T01:25:08Z</ReadyDateTime>
+ <EndDateTime>2014-01-24T02:19:46Z</EndDateTime>
+ </Timeline>
+ </Status>
+ <Name>Master instance group</Name>
+ <RequestedInstanceCount>1</RequestedInstanceCount>
+ <RunningInstanceCount>0</RunningInstanceCount>
+ <InstanceGroupType>MASTER</InstanceGroupType>
+ </member>
+ <member>
+ <Id>ig-aaaaaaaaaaab</Id>
+ <InstanceType>m1.large</InstanceType>
+ <Market>ON_DEMAND</Market>
+ <Status>
+ <StateChangeReason>
+ <Message>Job flow terminated</Message>
+ <Code>CLUSTER_TERMINATED</Code>
+ </StateChangeReason>
+ <State>TERMINATED</State>
+ <Timeline>
+ <CreationDateTime>2014-01-24T01:21:21Z</CreationDateTime>
+ <ReadyDateTime>2014-01-24T01:25:26Z</ReadyDateTime>
+ <EndDateTime>2014-01-24T02:19:46Z</EndDateTime>
+ </Timeline>
+ </Status>
+ <Name>Core instance group</Name>
+ <RequestedInstanceCount>2</RequestedInstanceCount>
+ <RunningInstanceCount>0</RunningInstanceCount>
+ <InstanceGroupType>CORE</InstanceGroupType>
+ </member>
+ </InstanceGroups>
+ </ListInstanceGroupsResult>
+ <ResponseMetadata>
+ <RequestId>aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee</RequestId>
+ </ResponseMetadata>
+</ListInstanceGroupsResponse>
+"""
+
def test_list_instance_groups(self):
self.set_http_response(200)
@@ -108,11 +224,96 @@
'Version': '2009-03-31'
})
+ self.assertTrue(isinstance(response, InstanceGroupList))
+ self.assertEqual(len(response.instancegroups), 2)
+ self.assertTrue(isinstance(response.instancegroups[0], InstanceGroupInfo))
+ self.assertEqual(response.instancegroups[0].id, 'ig-aaaaaaaaaaaaa')
+ self.assertEqual(response.instancegroups[0].instancegrouptype, "MASTER")
+ self.assertEqual(response.instancegroups[0].instancetype, "m1.large")
+ self.assertEqual(response.instancegroups[0].market, "ON_DEMAND")
+ self.assertEqual(response.instancegroups[0].name, "Master instance group")
+ self.assertEqual(response.instancegroups[0].requestedinstancecount, '1')
+ self.assertEqual(response.instancegroups[0].runninginstancecount, '0')
+ self.assertTrue(isinstance(response.instancegroups[0].status, ClusterStatus))
+ self.assertEqual(response.instancegroups[0].status.state, 'TERMINATED')
+ # status.statechangereason is not parsed into an object
+ #self.assertEqual(response.instancegroups[0].status.statechangereason.code, 'CLUSTER_TERMINATED')
+
class TestListInstances(AWSMockServiceTestCase):
connection_class = EmrConnection
def default_body(self):
- return """<ListInstancesOutput><Instances></Instances></ListInstancesOutput>"""
+ return """
+<ListInstancesResponse xmlns="http://elasticmapreduce.amazonaws.com/doc/2009-03-31">
+ <ListInstancesResult>
+ <Instances>
+ <member>
+ <Id>ci-123456789abc</Id>
+ <Status>
+ <StateChangeReason>
+ <Message>Cluster was terminated.</Message>
+ <Code>CLUSTER_TERMINATED</Code>
+ </StateChangeReason>
+ <State>TERMINATED</State>
+ <Timeline>
+ <CreationDateTime>2014-01-24T01:21:26Z</CreationDateTime>
+ <ReadyDateTime>2014-01-24T01:25:25Z</ReadyDateTime>
+ <EndDateTime>2014-01-24T02:19:46Z</EndDateTime>
+ </Timeline>
+ </Status>
+ <PrivateDnsName>ip-10-0-0-60.us-west-1.compute.internal</PrivateDnsName>
+ <PublicIpAddress>54.0.0.1</PublicIpAddress>
+ <PublicDnsName>ec2-54-0-0-1.us-west-1.compute.amazonaws.com</PublicDnsName>
+ <Ec2InstanceId>i-aaaaaaaa</Ec2InstanceId>
+ <PrivateIpAddress>10.0.0.60</PrivateIpAddress>
+ </member>
+ <member>
+ <Id>ci-123456789abd</Id>
+ <Status>
+ <StateChangeReason>
+ <Message>Cluster was terminated.</Message>
+ <Code>CLUSTER_TERMINATED</Code>
+ </StateChangeReason>
+ <State>TERMINATED</State>
+ <Timeline>
+ <CreationDateTime>2014-01-24T01:21:26Z</CreationDateTime>
+ <ReadyDateTime>2014-01-24T01:25:25Z</ReadyDateTime>
+ <EndDateTime>2014-01-24T02:19:46Z</EndDateTime>
+ </Timeline>
+ </Status>
+ <PrivateDnsName>ip-10-0-0-61.us-west-1.compute.internal</PrivateDnsName>
+ <PublicIpAddress>54.0.0.2</PublicIpAddress>
+ <PublicDnsName>ec2-54-0-0-2.us-west-1.compute.amazonaws.com</PublicDnsName>
+ <Ec2InstanceId>i-aaaaaaab</Ec2InstanceId>
+ <PrivateIpAddress>10.0.0.61</PrivateIpAddress>
+ </member>
+ <member>
+ <Id>ci-123456789abe3</Id>
+ <Status>
+ <StateChangeReason>
+ <Message>Cluster was terminated.</Message>
+ <Code>CLUSTER_TERMINATED</Code>
+ </StateChangeReason>
+ <State>TERMINATED</State>
+ <Timeline>
+ <CreationDateTime>2014-01-24T01:21:33Z</CreationDateTime>
+ <ReadyDateTime>2014-01-24T01:25:08Z</ReadyDateTime>
+ <EndDateTime>2014-01-24T02:19:46Z</EndDateTime>
+ </Timeline>
+ </Status>
+ <PrivateDnsName>ip-10-0-0-62.us-west-1.compute.internal</PrivateDnsName>
+ <PublicIpAddress>54.0.0.3</PublicIpAddress>
+ <PublicDnsName>ec2-54-0-0-3.us-west-1.compute.amazonaws.com</PublicDnsName>
+ <Ec2InstanceId>i-aaaaaaac</Ec2InstanceId>
+ <PrivateIpAddress>10.0.0.62</PrivateIpAddress>
+ </member>
+ </Instances>
+ </ListInstancesResult>
+ <ResponseMetadata>
+ <RequestId>aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee</RequestId>
+ </ResponseMetadata>
+</ListInstancesResponse>
+ """
def test_list_instances(self):
self.set_http_response(200)
@@ -121,7 +322,17 @@
self.service_connection.list_instances()
response = self.service_connection.list_instances(cluster_id='j-123')
+ self.assertTrue(isinstance(response, InstanceList))
+ self.assertEqual(len(response.instances), 3)
+ self.assertTrue(isinstance(response.instances[0], InstanceInfo))
+ self.assertEqual(response.instances[0].ec2instanceid, 'i-aaaaaaaa')
+ self.assertEqual(response.instances[0].id, 'ci-123456789abc')
+ self.assertEqual(response.instances[0].privatednsname , 'ip-10-0-0-60.us-west-1.compute.internal')
+ self.assertEqual(response.instances[0].privateipaddress , '10.0.0.60')
+ self.assertEqual(response.instances[0].publicdnsname , 'ec2-54-0-0-1.us-west-1.compute.amazonaws.com')
+ self.assertEqual(response.instances[0].publicipaddress , '54.0.0.1')
+
self.assert_request_parameters({
'Action': 'ListInstances',
'ClusterId': 'j-123',
@@ -162,7 +373,7 @@
connection_class = EmrConnection
def default_body(self):
- return """<ListStepsOutput><Steps></Steps></ListStepsOutput>"""
+ return """<ListStepsOutput><Steps><member><Name>Step 1</Name></member></Steps></ListStepsOutput>"""
def test_list_steps(self):
self.set_http_response(200)
@@ -177,6 +388,8 @@
'ClusterId': 'j-123',
'Version': '2009-03-31'
})
+ self.assertTrue(isinstance(response, StepSummaryList))
+ self.assertEqual(response.steps[0].name, 'Step 1')
def test_list_steps_with_states(self):
self.set_http_response(200)
@@ -193,8 +406,9 @@
'StepStateList.member.2': 'FAILED',
'Version': '2009-03-31'
})
+ self.assertTrue(isinstance(response, StepSummaryList))
+ self.assertEqual(response.steps[0].name, 'Step 1')
-
class TestListBootstrapActions(AWSMockServiceTestCase):
connection_class = EmrConnection
@@ -220,7 +434,47 @@
connection_class = EmrConnection
def default_body(self):
- return """<DescribeClusterOutput></DescribeClusterOutput>"""
+ return """
+<DescribeClusterResponse xmlns="http://elasticmapreduce.amazonaws.com/doc/2009-03-31">
+ <DescribeClusterResult>
+ <Cluster>
+ <Id>j-aaaaaaaaa</Id>
+ <Tags/>
+ <Ec2InstanceAttributes>
+ <Ec2AvailabilityZone>us-west-1c</Ec2AvailabilityZone>
+ <Ec2KeyName>my_secret_key</Ec2KeyName>
+ </Ec2InstanceAttributes>
+ <RunningAmiVersion>2.4.2</RunningAmiVersion>
+ <VisibleToAllUsers>true</VisibleToAllUsers>
+ <Status>
+ <StateChangeReason>
+ <Message>Terminated by user request</Message>
+ <Code>USER_REQUEST</Code>
+ </StateChangeReason>
+ <State>TERMINATED</State>
+ <Timeline>
+ <CreationDateTime>2014-01-24T01:21:21Z</CreationDateTime>
+ <ReadyDateTime>2014-01-24T01:25:26Z</ReadyDateTime>
+ <EndDateTime>2014-01-24T02:19:46Z</EndDateTime>
+ </Timeline>
+ </Status>
+ <AutoTerminate>false</AutoTerminate>
+ <Name>test analytics</Name>
+ <RequestedAmiVersion>2.4.2</RequestedAmiVersion>
+ <Applications>
+ <member>
+ <Name>hadoop</Name>
+ <Version>1.0.3</Version>
+ </member>
+ </Applications>
+ <TerminationProtected>false</TerminationProtected>
+ </Cluster>
+ </DescribeClusterResult>
+ <ResponseMetadata>
+ <RequestId>aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee</RequestId>
+ </ResponseMetadata>
+</DescribeClusterResponse>
+ """
def test_describe_cluster(self):
self.set_http_response(200)
@@ -230,6 +484,20 @@
response = self.service_connection.describe_cluster(cluster_id='j-123')
+ self.assertTrue(isinstance(response, Cluster))
+ self.assertEqual(response.id, 'j-aaaaaaaaa')
+ self.assertEqual(response.runningamiversion, '2.4.2')
+ self.assertEqual(response.visibletoallusers, 'true')
+ self.assertEqual(response.autoterminate, 'false')
+ self.assertEqual(response.name, 'test analytics')
+ self.assertEqual(response.requestedamiversion, '2.4.2')
+ self.assertEqual(response.terminationprotected, 'false')
+ self.assertEqual(response.ec2instanceattributes.ec2availabilityzone, "us-west-1c")
+ self.assertEqual(response.ec2instanceattributes.ec2keyname, 'my_secret_key')
+ self.assertEqual(response.status.state, 'TERMINATED')
+ self.assertEqual(response.applications[0].name, 'hadoop')
+ self.assertEqual(response.applications[0].version, '1.0.3')
+
self.assert_request_parameters({
'Action': 'DescribeCluster',
'ClusterId': 'j-123',
@@ -410,3 +678,191 @@
'TagKeys.member.2': 'SecondKey',
'Version': '2009-03-31'
})
+
+class DescribeJobFlowsTestBase(AWSMockServiceTestCase):
+ connection_class = EmrConnection
+
+ def default_body(self):
+ return """
+<DescribeJobFlowsResponse xmlns="http://elasticmapreduce.amazonaws.com/doc/2009-03-31">
+ <DescribeJobFlowsResult>
+ <JobFlows>
+ <member>
+ <AmiVersion>2.4.2</AmiVersion>
+ <ExecutionStatusDetail>
+ <CreationDateTime>2014-01-24T01:21:21Z</CreationDateTime>
+ <LastStateChangeReason>Terminated by user request</LastStateChangeReason>
+ <StartDateTime>2014-01-24T01:25:26Z</StartDateTime>
+ <ReadyDateTime>2014-01-24T01:25:26Z</ReadyDateTime>
+ <State>TERMINATED</State>
+ <EndDateTime>2014-01-24T02:19:46Z</EndDateTime>
+ </ExecutionStatusDetail>
+ <BootstrapActions/>
+ <VisibleToAllUsers>true</VisibleToAllUsers>
+ <SupportedProducts/>
+ <Name>test analytics</Name>
+ <JobFlowId>j-aaaaaa</JobFlowId>
+ <Steps>
+ <member>
+ <ExecutionStatusDetail>
+ <CreationDateTime>2014-01-24T01:21:21Z</CreationDateTime>
+ <StartDateTime>2014-01-24T01:25:26Z</StartDateTime>
+ <State>COMPLETED</State>
+ <EndDateTime>2014-01-24T01:26:08Z</EndDateTime>
+ </ExecutionStatusDetail>
+ <StepConfig>
+ <HadoopJarStep>
+ <Args>
+ <member>s3://us-west-1.elasticmapreduce/libs/hive/hive-script</member>
+ <member>--base-path</member>
+ <member>s3://us-west-1.elasticmapreduce/libs/hive/</member>
+ <member>--install-hive</member>
+ <member>--hive-versions</member>
+ <member>0.11.0.1</member>
+ </Args>
+ <Jar>s3://us-west-1.elasticmapreduce/libs/script-runner/script-runner.jar</Jar>
+ <Properties/>
+ </HadoopJarStep>
+ <Name>Setup hive</Name>
+ <ActionOnFailure>TERMINATE_JOB_FLOW</ActionOnFailure>
+ </StepConfig>
+ </member>
+ </Steps>
+ <Instances>
+ <Placement>
+ <AvailabilityZone>us-west-1c</AvailabilityZone>
+ </Placement>
+ <MasterInstanceType>m1.large</MasterInstanceType>
+ <Ec2KeyName>my_key</Ec2KeyName>
+ <KeepJobFlowAliveWhenNoSteps>true</KeepJobFlowAliveWhenNoSteps>
+ <InstanceGroups>
+ <member>
+ <CreationDateTime>2014-01-24T01:21:21Z</CreationDateTime>
+ <InstanceRunningCount>0</InstanceRunningCount>
+ <StartDateTime>2014-01-24T01:23:56Z</StartDateTime>
+ <ReadyDateTime>2014-01-24T01:25:08Z</ReadyDateTime>
+ <State>ENDED</State>
+ <EndDateTime>2014-01-24T02:19:46Z</EndDateTime>
+ <InstanceRequestCount>1</InstanceRequestCount>
+ <InstanceType>m1.large</InstanceType>
+ <LastStateChangeReason>Job flow terminated</LastStateChangeReason>
+ <Market>ON_DEMAND</Market>
+ <InstanceGroupId>ig-aaaaaa</InstanceGroupId>
+ <InstanceRole>MASTER</InstanceRole>
+ <Name>Master instance group</Name>
+ </member>
+ <member>
+ <CreationDateTime>2014-01-24T01:21:21Z</CreationDateTime>
+ <InstanceRunningCount>0</InstanceRunningCount>
+ <StartDateTime>2014-01-24T01:25:26Z</StartDateTime>
+ <ReadyDateTime>2014-01-24T01:25:26Z</ReadyDateTime>
+ <State>ENDED</State>
+ <EndDateTime>2014-01-24T02:19:46Z</EndDateTime>
+ <InstanceRequestCount>2</InstanceRequestCount>
+ <InstanceType>m1.large</InstanceType>
+ <LastStateChangeReason>Job flow terminated</LastStateChangeReason>
+ <Market>ON_DEMAND</Market>
+ <InstanceGroupId>ig-aaaaab</InstanceGroupId>
+ <InstanceRole>CORE</InstanceRole>
+ <Name>Core instance group</Name>
+ </member>
+ </InstanceGroups>
+ <SlaveInstanceType>m1.large</SlaveInstanceType>
+ <MasterInstanceId>i-aaaaaa</MasterInstanceId>
+ <HadoopVersion>1.0.3</HadoopVersion>
+ <NormalizedInstanceHours>12</NormalizedInstanceHours>
+ <MasterPublicDnsName>ec2-184-0-0-1.us-west-1.compute.amazonaws.com</MasterPublicDnsName>
+ <InstanceCount>3</InstanceCount>
+ <TerminationProtected>false</TerminationProtected>
+ </Instances>
+ </member>
+ </JobFlows>
+ </DescribeJobFlowsResult>
+ <ResponseMetadata>
+ <RequestId>aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee</RequestId>
+ </ResponseMetadata>
+</DescribeJobFlowsResponse>
+ """
+
+class TestDescribeJobFlows(DescribeJobFlowsTestBase):
+
+ def test_describe_jobflows_response(self):
+ self.set_http_response(200)
+
+ response = self.service_connection.describe_jobflows()
+ self.assertTrue(isinstance(response, list))
+
+ jf = response[0]
+ self.assertTrue(isinstance(jf, JobFlow))
+ self.assertEqual(jf.amiversion, '2.4.2')
+ self.assertEqual(jf.visibletoallusers, 'true')
+ self.assertEqual(jf.name, 'test analytics')
+ self.assertEqual(jf.jobflowid, 'j-aaaaaa')
+ self.assertEqual(jf.ec2keyname, 'my_key')
+ self.assertEqual(jf.masterinstancetype, 'm1.large')
+ self.assertEqual(jf.availabilityzone, 'us-west-1c')
+ self.assertEqual(jf.keepjobflowalivewhennosteps, 'true')
+ self.assertEqual(jf.slaveinstancetype, 'm1.large')
+ self.assertEqual(jf.masterinstanceid, 'i-aaaaaa')
+ self.assertEqual(jf.hadoopversion, '1.0.3')
+ self.assertEqual(jf.normalizedinstancehours, '12')
+ self.assertEqual(jf.masterpublicdnsname, 'ec2-184-0-0-1.us-west-1.compute.amazonaws.com')
+ self.assertEqual(jf.instancecount, '3')
+ self.assertEqual(jf.terminationprotected, 'false')
+
+ self.assertTrue(isinstance(jf.steps, list))
+ step = jf.steps[0]
+ self.assertTrue(isinstance(step, Step))
+ self.assertEqual(step.jar, 's3://us-west-1.elasticmapreduce/libs/script-runner/script-runner.jar')
+ self.assertEqual(step.name, 'Setup hive')
+ self.assertEqual(step.actiononfailure, 'TERMINATE_JOB_FLOW')
+
+ self.assertTrue(isinstance(jf.instancegroups, list))
+ ig = jf.instancegroups[0]
+ self.assertTrue(isinstance(ig, InstanceGroup))
+ self.assertEqual(ig.creationdatetime, '2014-01-24T01:21:21Z')
+ self.assertEqual(ig.state, 'ENDED')
+ self.assertEqual(ig.instancerequestcount, '1')
+ self.assertEqual(ig.instancetype, 'm1.large')
+ self.assertEqual(ig.laststatechangereason, 'Job flow terminated')
+ self.assertEqual(ig.market, 'ON_DEMAND')
+ self.assertEqual(ig.instancegroupid, 'ig-aaaaaa')
+ self.assertEqual(ig.instancerole, 'MASTER')
+ self.assertEqual(ig.name, 'Master instance group')
+
+ def test_describe_jobflows_no_args(self):
+ self.set_http_response(200)
+
+ self.service_connection.describe_jobflows()
+
+ self.assert_request_parameters({
+ 'Action': 'DescribeJobFlows',
+ }, ignore_params_values=['Version'])
+
+ def test_describe_jobflows_filtered(self):
+ self.set_http_response(200)
+
+ now = datetime.now()
+ a_bit_before = datetime.fromtimestamp(time() - 1000)
+
+ self.service_connection.describe_jobflows(states=['WAITING', 'RUNNING'], jobflow_ids=['j-aaaaaa', 'j-aaaaab'], created_after=a_bit_before, created_before=now)
+ self.assert_request_parameters({
+ 'Action': 'DescribeJobFlows',
+ 'JobFlowIds.member.1': 'j-aaaaaa',
+ 'JobFlowIds.member.2': 'j-aaaaab',
+ 'JobFlowStates.member.1': 'WAITING',
+ 'JobFlowStates.member.2': 'RUNNING',
+ 'CreatedAfter': a_bit_before.strftime(boto.utils.ISO8601),
+ 'CreatedBefore': now.strftime(boto.utils.ISO8601),
+ }, ignore_params_values=['Version'])
+
+class TestDescribeJobFlow(DescribeJobFlowsTestBase):
+ def test_describe_jobflow(self):
+ self.set_http_response(200)
+
+ response = self.service_connection.describe_jobflow('j-aaaaaa')
+ self.assertTrue(isinstance(response, JobFlow))
+ self.assert_request_parameters({
+ 'Action': 'DescribeJobFlows',
+ 'JobFlowIds.member.1': 'j-aaaaaa',
+ }, ignore_params_values=['Version'])
« no previous file with comments | « third_party/boto/tests/unit/ecs/test_connection.py ('k') | third_party/boto/tests/unit/glacier/test_concurrent.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698