Index: third_party/gsutil/third_party/boto/tests/unit/rds/test_snapshot.py |
diff --git a/third_party/gsutil/third_party/boto/tests/unit/rds/test_snapshot.py b/third_party/gsutil/third_party/boto/tests/unit/rds/test_snapshot.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c3c9d8a67282483ca4c145ede59fc32c350a3738 |
--- /dev/null |
+++ b/third_party/gsutil/third_party/boto/tests/unit/rds/test_snapshot.py |
@@ -0,0 +1,296 @@ |
+from tests.unit import unittest |
+from tests.unit import AWSMockServiceTestCase |
+ |
+from boto.rds import RDSConnection |
+from boto.rds.dbsnapshot import DBSnapshot |
+from boto.rds import DBInstance |
+ |
+ |
+class TestDescribeDBSnapshots(AWSMockServiceTestCase): |
+ connection_class = RDSConnection |
+ |
+ def default_body(self): |
+ return """ |
+ <DescribeDBSnapshotsResponse xmlns="http://rds.amazonaws.com/doc/2013-05-15/"> |
+ <DescribeDBSnapshotsResult> |
+ <DBSnapshots> |
+ <DBSnapshot> |
+ <Port>3306</Port> |
+ <SnapshotCreateTime>2011-05-23T06:29:03.483Z</SnapshotCreateTime> |
+ <Engine>mysql</Engine> |
+ <Status>available</Status> |
+ <AvailabilityZone>us-east-1a</AvailabilityZone> |
+ <LicenseModel>general-public-license</LicenseModel> |
+ <InstanceCreateTime>2011-05-23T06:06:43.110Z</InstanceCreateTime> |
+ <AllocatedStorage>10</AllocatedStorage> |
+ <DBInstanceIdentifier>simcoprod01</DBInstanceIdentifier> |
+ <EngineVersion>5.1.50</EngineVersion> |
+ <DBSnapshotIdentifier>mydbsnapshot</DBSnapshotIdentifier> |
+ <SnapshotType>manual</SnapshotType> |
+ <MasterUsername>master</MasterUsername> |
+ <OptionGroupName>myoptiongroupname</OptionGroupName> |
+ <Iops>1000</Iops> |
+ <PercentProgress>100</PercentProgress> |
+ <SourceRegion>eu-west-1</SourceRegion> |
+ <VpcId>myvpc</VpcId> |
+ </DBSnapshot> |
+ <DBSnapshot> |
+ <Port>3306</Port> |
+ <SnapshotCreateTime>2011-03-11T07:20:24.082Z</SnapshotCreateTime> |
+ <Engine>mysql</Engine> |
+ <Status>available</Status> |
+ <AvailabilityZone>us-east-1a</AvailabilityZone> |
+ <LicenseModel>general-public-license</LicenseModel> |
+ <InstanceCreateTime>2010-08-04T23:27:36.420Z</InstanceCreateTime> |
+ <AllocatedStorage>50</AllocatedStorage> |
+ <DBInstanceIdentifier>mydbinstance</DBInstanceIdentifier> |
+ <EngineVersion>5.1.49</EngineVersion> |
+ <DBSnapshotIdentifier>mysnapshot1</DBSnapshotIdentifier> |
+ <SnapshotType>manual</SnapshotType> |
+ <MasterUsername>sa</MasterUsername> |
+ <OptionGroupName>myoptiongroupname</OptionGroupName> |
+ <Iops>1000</Iops> |
+ </DBSnapshot> |
+ <DBSnapshot> |
+ <Port>3306</Port> |
+ <SnapshotCreateTime>2012-04-02T00:01:24.082Z</SnapshotCreateTime> |
+ <Engine>mysql</Engine> |
+ <Status>available</Status> |
+ <AvailabilityZone>us-east-1d</AvailabilityZone> |
+ <LicenseModel>general-public-license</LicenseModel> |
+ <InstanceCreateTime>2010-07-16T00:06:59.107Z</InstanceCreateTime> |
+ <AllocatedStorage>60</AllocatedStorage> |
+ <DBInstanceIdentifier>simcoprod01</DBInstanceIdentifier> |
+ <EngineVersion>5.1.47</EngineVersion> |
+ <DBSnapshotIdentifier>rds:simcoprod01-2012-04-02-00-01</DBSnapshotIdentifier> |
+ <SnapshotType>automated</SnapshotType> |
+ <MasterUsername>master</MasterUsername> |
+ <OptionGroupName>myoptiongroupname</OptionGroupName> |
+ <Iops>1000</Iops> |
+ </DBSnapshot> |
+ </DBSnapshots> |
+ </DescribeDBSnapshotsResult> |
+ <ResponseMetadata> |
+ <RequestId>c4191173-8506-11e0-90aa-eb648410240d</RequestId> |
+ </ResponseMetadata> |
+ </DescribeDBSnapshotsResponse> |
+ """ |
+ |
+ def test_describe_dbinstances_by_instance(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.get_all_dbsnapshots(instance_id='simcoprod01') |
+ self.assert_request_parameters({ |
+ 'Action': 'DescribeDBSnapshots', |
+ 'DBInstanceIdentifier': 'simcoprod01' |
+ }, ignore_params_values=['Version']) |
+ self.assertEqual(len(response), 3) |
+ self.assertIsInstance(response[0], DBSnapshot) |
+ self.assertEqual(response[0].id, 'mydbsnapshot') |
+ self.assertEqual(response[0].status, 'available') |
+ self.assertEqual(response[0].instance_id, 'simcoprod01') |
+ self.assertEqual(response[0].engine_version, '5.1.50') |
+ self.assertEqual(response[0].license_model, 'general-public-license') |
+ self.assertEqual(response[0].iops, 1000) |
+ self.assertEqual(response[0].option_group_name, 'myoptiongroupname') |
+ self.assertEqual(response[0].percent_progress, 100) |
+ self.assertEqual(response[0].snapshot_type, 'manual') |
+ self.assertEqual(response[0].source_region, 'eu-west-1') |
+ self.assertEqual(response[0].vpc_id, 'myvpc') |
+ |
+ |
+ |
+class TestCreateDBSnapshot(AWSMockServiceTestCase): |
+ connection_class = RDSConnection |
+ |
+ def default_body(self): |
+ return """ |
+ <CreateDBSnapshotResponse xmlns="http://rds.amazonaws.com/doc/2013-05-15/"> |
+ <CreateDBSnapshotResult> |
+ <DBSnapshot> |
+ <Port>3306</Port> |
+ <Engine>mysql</Engine> |
+ <Status>creating</Status> |
+ <AvailabilityZone>us-east-1a</AvailabilityZone> |
+ <LicenseModel>general-public-license</LicenseModel> |
+ <InstanceCreateTime>2011-05-23T06:06:43.110Z</InstanceCreateTime> |
+ <AllocatedStorage>10</AllocatedStorage> |
+ <DBInstanceIdentifier>simcoprod01</DBInstanceIdentifier> |
+ <EngineVersion>5.1.50</EngineVersion> |
+ <DBSnapshotIdentifier>mydbsnapshot</DBSnapshotIdentifier> |
+ <SnapshotType>manual</SnapshotType> |
+ <MasterUsername>master</MasterUsername> |
+ </DBSnapshot> |
+ </CreateDBSnapshotResult> |
+ <ResponseMetadata> |
+ <RequestId>c4181d1d-8505-11e0-90aa-eb648410240d</RequestId> |
+ </ResponseMetadata> |
+ </CreateDBSnapshotResponse> |
+ """ |
+ |
+ def test_create_dbinstance(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.create_dbsnapshot('mydbsnapshot', 'simcoprod01') |
+ self.assert_request_parameters({ |
+ 'Action': 'CreateDBSnapshot', |
+ 'DBSnapshotIdentifier': 'mydbsnapshot', |
+ 'DBInstanceIdentifier': 'simcoprod01' |
+ }, ignore_params_values=['Version']) |
+ self.assertIsInstance(response, DBSnapshot) |
+ self.assertEqual(response.id, 'mydbsnapshot') |
+ self.assertEqual(response.instance_id, 'simcoprod01') |
+ self.assertEqual(response.status, 'creating') |
+ |
+ |
+class TestCopyDBSnapshot(AWSMockServiceTestCase): |
+ connection_class = RDSConnection |
+ |
+ def default_body(self): |
+ return """ |
+ <CopyDBSnapshotResponse xmlns="http://rds.amazonaws.com/doc/2013-05-15/"> |
+ <CopyDBSnapshotResult> |
+ <DBSnapshot> |
+ <Port>3306</Port> |
+ <Engine>mysql</Engine> |
+ <Status>available</Status> |
+ <AvailabilityZone>us-east-1a</AvailabilityZone> |
+ <LicenseModel>general-public-license</LicenseModel> |
+ <InstanceCreateTime>2011-05-23T06:06:43.110Z</InstanceCreateTime> |
+ <AllocatedStorage>10</AllocatedStorage> |
+ <DBInstanceIdentifier>simcoprod01</DBInstanceIdentifier> |
+ <EngineVersion>5.1.50</EngineVersion> |
+ <DBSnapshotIdentifier>mycopieddbsnapshot</DBSnapshotIdentifier> |
+ <SnapshotType>manual</SnapshotType> |
+ <MasterUsername>master</MasterUsername> |
+ </DBSnapshot> |
+ </CopyDBSnapshotResult> |
+ <ResponseMetadata> |
+ <RequestId>c4181d1d-8505-11e0-90aa-eb648410240d</RequestId> |
+ </ResponseMetadata> |
+ </CopyDBSnapshotResponse> |
+ """ |
+ |
+ def test_copy_dbinstance(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.copy_dbsnapshot('myautomaticdbsnapshot', 'mycopieddbsnapshot') |
+ self.assert_request_parameters({ |
+ 'Action': 'CopyDBSnapshot', |
+ 'SourceDBSnapshotIdentifier': 'myautomaticdbsnapshot', |
+ 'TargetDBSnapshotIdentifier': 'mycopieddbsnapshot' |
+ }, ignore_params_values=['Version']) |
+ self.assertIsInstance(response, DBSnapshot) |
+ self.assertEqual(response.id, 'mycopieddbsnapshot') |
+ self.assertEqual(response.status, 'available') |
+ |
+ |
+class TestDeleteDBSnapshot(AWSMockServiceTestCase): |
+ connection_class = RDSConnection |
+ |
+ def default_body(self): |
+ return """ |
+ <DeleteDBSnapshotResponse xmlns="http://rds.amazonaws.com/doc/2013-05-15/"> |
+ <DeleteDBSnapshotResult> |
+ <DBSnapshot> |
+ <Port>3306</Port> |
+ <SnapshotCreateTime>2011-03-11T07:20:24.082Z</SnapshotCreateTime> |
+ <Engine>mysql</Engine> |
+ <Status>deleted</Status> |
+ <AvailabilityZone>us-east-1d</AvailabilityZone> |
+ <LicenseModel>general-public-license</LicenseModel> |
+ <InstanceCreateTime>2010-07-16T00:06:59.107Z</InstanceCreateTime> |
+ <AllocatedStorage>60</AllocatedStorage> |
+ <DBInstanceIdentifier>simcoprod01</DBInstanceIdentifier> |
+ <EngineVersion>5.1.47</EngineVersion> |
+ <DBSnapshotIdentifier>mysnapshot2</DBSnapshotIdentifier> |
+ <SnapshotType>manual</SnapshotType> |
+ <MasterUsername>master</MasterUsername> |
+ </DBSnapshot> |
+ </DeleteDBSnapshotResult> |
+ <ResponseMetadata> |
+ <RequestId>627a43a1-8507-11e0-bd9b-a7b1ece36d51</RequestId> |
+ </ResponseMetadata> |
+ </DeleteDBSnapshotResponse> |
+ """ |
+ |
+ def test_delete_dbinstance(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.delete_dbsnapshot('mysnapshot2') |
+ self.assert_request_parameters({ |
+ 'Action': 'DeleteDBSnapshot', |
+ 'DBSnapshotIdentifier': 'mysnapshot2' |
+ }, ignore_params_values=['Version']) |
+ self.assertIsInstance(response, DBSnapshot) |
+ self.assertEqual(response.id, 'mysnapshot2') |
+ self.assertEqual(response.status, 'deleted') |
+ |
+ |
+class TestRestoreDBInstanceFromDBSnapshot(AWSMockServiceTestCase): |
+ connection_class = RDSConnection |
+ |
+ def default_body(self): |
+ return """ |
+ <RestoreDBInstanceFromDBSnapshotResponse xmlns="http://rds.amazonaws.com/doc/2013-05-15/"> |
+ <RestoreDBInstanceFromDBSnapshotResult> |
+ <DBInstance> |
+ <ReadReplicaDBInstanceIdentifiers/> |
+ <Engine>mysql</Engine> |
+ <PendingModifiedValues/> |
+ <BackupRetentionPeriod>1</BackupRetentionPeriod> |
+ <MultiAZ>false</MultiAZ> |
+ <LicenseModel>general-public-license</LicenseModel> |
+ <DBInstanceStatus>creating</DBInstanceStatus> |
+ <EngineVersion>5.1.50</EngineVersion> |
+ <DBInstanceIdentifier>myrestoreddbinstance</DBInstanceIdentifier> |
+ <DBParameterGroups> |
+ <DBParameterGroup> |
+ <ParameterApplyStatus>in-sync</ParameterApplyStatus> |
+ <DBParameterGroupName>default.mysql5.1</DBParameterGroupName> |
+ </DBParameterGroup> |
+ </DBParameterGroups> |
+ <DBSecurityGroups> |
+ <DBSecurityGroup> |
+ <Status>active</Status> |
+ <DBSecurityGroupName>default</DBSecurityGroupName> |
+ </DBSecurityGroup> |
+ </DBSecurityGroups> |
+ <PreferredBackupWindow>00:00-00:30</PreferredBackupWindow> |
+ <AutoMinorVersionUpgrade>true</AutoMinorVersionUpgrade> |
+ <PreferredMaintenanceWindow>sat:07:30-sat:08:00</PreferredMaintenanceWindow> |
+ <AllocatedStorage>10</AllocatedStorage> |
+ <DBInstanceClass>db.m1.large</DBInstanceClass> |
+ <MasterUsername>master</MasterUsername> |
+ </DBInstance> |
+ </RestoreDBInstanceFromDBSnapshotResult> |
+ <ResponseMetadata> |
+ <RequestId>7ca622e8-8508-11e0-bd9b-a7b1ece36d51</RequestId> |
+ </ResponseMetadata> |
+ </RestoreDBInstanceFromDBSnapshotResponse> |
+ """ |
+ |
+ def test_restore_dbinstance_from_dbsnapshot(self): |
+ self.set_http_response(status_code=200) |
+ response = self.service_connection.restore_dbinstance_from_dbsnapshot('mydbsnapshot', |
+ 'myrestoreddbinstance', |
+ 'db.m1.large', |
+ '3306', |
+ 'us-east-1a', |
+ 'false', |
+ 'true') |
+ self.assert_request_parameters({ |
+ 'Action': 'RestoreDBInstanceFromDBSnapshot', |
+ 'DBSnapshotIdentifier': 'mydbsnapshot', |
+ 'DBInstanceIdentifier': 'myrestoreddbinstance', |
+ 'DBInstanceClass': 'db.m1.large', |
+ 'Port': '3306', |
+ 'AvailabilityZone': 'us-east-1a', |
+ 'MultiAZ': 'false', |
+ 'AutoMinorVersionUpgrade': 'true' |
+ }, ignore_params_values=['Version']) |
+ self.assertIsInstance(response, DBInstance) |
+ self.assertEqual(response.id, 'myrestoreddbinstance') |
+ self.assertEqual(response.status, 'creating') |
+ self.assertEqual(response.instance_class, 'db.m1.large') |
+ self.assertEqual(response.multi_az, False) |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |