| OLD | NEW |
| (Empty) | |
| 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 Amazon.com, Inc. or its affiliates. All Rights Reserved |
| 3 # |
| 4 # Permission is hereby granted, free of charge, to any person obtaining a |
| 5 # copy of this software and associated documentation files (the |
| 6 # "Software"), to deal in the Software without restriction, including |
| 7 # without limitation the rights to use, copy, modify, merge, publish, dis- |
| 8 # tribute, sublicense, and/or sell copies of the Software, and to permit |
| 9 # persons to whom the Software is furnished to do so, subject to the fol- |
| 10 # lowing conditions: |
| 11 # |
| 12 # The above copyright notice and this permission notice shall be included |
| 13 # in all copies or substantial portions of the Software. |
| 14 # |
| 15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| 16 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- |
| 17 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT |
| 18 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
| 19 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| 20 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
| 21 # IN THE SOFTWARE. |
| 22 # |
| 23 |
| 24 from tests.unit import unittest |
| 25 from tests.unit import AWSMockServiceTestCase |
| 26 |
| 27 from boto.ec2.securitygroup import SecurityGroup |
| 28 from boto.rds2.layer1 import RDSConnection |
| 29 |
| 30 |
| 31 class TestRDS2Connection(AWSMockServiceTestCase): |
| 32 connection_class = RDSConnection |
| 33 |
| 34 def setUp(self): |
| 35 super(TestRDS2Connection, self).setUp() |
| 36 |
| 37 def default_body(self): |
| 38 return """{ |
| 39 "DescribeDBInstancesResponse": { |
| 40 "DescribeDBInstancesResult": { |
| 41 "DBInstances": [{ |
| 42 "DBInstance": { |
| 43 "Iops": 2000, |
| 44 "BackupRetentionPeriod": 1, |
| 45 "MultiAZ": false, |
| 46 "DBInstanceStatus": "backing-up", |
| 47 "DBInstanceIdentifier": "mydbinstance2", |
| 48 "PreferredBackupWindow": "10:30-11:00", |
| 49 "PreferredMaintenanceWindow": "wed:06:30-wed:07:00", |
| 50 "OptionGroupMembership": { |
| 51 "OptionGroupName": "default:mysql-5-5", |
| 52 "Status": "in-sync" |
| 53 }, |
| 54 "AvailabilityZone": "us-west-2b", |
| 55 "ReadReplicaDBInstanceIdentifiers": null, |
| 56 "Engine": "mysql", |
| 57 "PendingModifiedValues": null, |
| 58 "LicenseModel": "general-public-license", |
| 59 "DBParameterGroups": [{ |
| 60 "DBParameterGroup": { |
| 61 "ParameterApplyStatus": "in-sync", |
| 62 "DBParameterGroupName": "default.mysql5.5" |
| 63 } |
| 64 }], |
| 65 "Endpoint": { |
| 66 "Port": 3306, |
| 67 "Address": "mydbinstance2.c0hjqouvn9mf.us-west-2.rds.ama
zonaws.com" |
| 68 }, |
| 69 "EngineVersion": "5.5.27", |
| 70 "DBSecurityGroups": [{ |
| 71 "DBSecurityGroup": { |
| 72 "Status": "active", |
| 73 "DBSecurityGroupName": "default" |
| 74 } |
| 75 }], |
| 76 "VpcSecurityGroups": [{ |
| 77 "VpcSecurityGroupMembership": { |
| 78 "VpcSecurityGroupId": "sg-1", |
| 79 "Status": "active" |
| 80 } |
| 81 }], |
| 82 "DBName": "mydb2", |
| 83 "AutoMinorVersionUpgrade": true, |
| 84 "InstanceCreateTime": "2012-10-03T22:01:51.047Z", |
| 85 "AllocatedStorage": 200, |
| 86 "DBInstanceClass": "db.m1.large", |
| 87 "MasterUsername": "awsuser", |
| 88 "StatusInfos": [{ |
| 89 "DBInstanceStatusInfo": { |
| 90 "Message": null, |
| 91 "Normal": true, |
| 92 "Status": "replicating", |
| 93 "StatusType": "read replication" |
| 94 } |
| 95 }], |
| 96 "DBSubnetGroup": { |
| 97 "VpcId": "990524496922", |
| 98 "SubnetGroupStatus": "Complete", |
| 99 "DBSubnetGroupDescription": "My modified DBSubnetGroup", |
| 100 "DBSubnetGroupName": "mydbsubnetgroup", |
| 101 "Subnets": [{ |
| 102 "Subnet": { |
| 103 "SubnetStatus": "Active", |
| 104 "SubnetIdentifier": "subnet-7c5b4115", |
| 105 "SubnetAvailabilityZone": { |
| 106 "Name": "us-east-1c" |
| 107 } |
| 108 }, |
| 109 "Subnet": { |
| 110 "SubnetStatus": "Active", |
| 111 "SubnetIdentifier": "subnet-7b5b4112", |
| 112 "SubnetAvailabilityZone": { |
| 113 "Name": "us-east-1b" |
| 114 } |
| 115 }, |
| 116 "Subnet": { |
| 117 "SubnetStatus": "Active", |
| 118 "SubnetIdentifier": "subnet-3ea6bd57", |
| 119 "SubnetAvailabilityZone": { |
| 120 "Name": "us-east-1d" |
| 121 } |
| 122 } |
| 123 }] |
| 124 } |
| 125 } |
| 126 }] |
| 127 } |
| 128 } |
| 129 }""" |
| 130 |
| 131 def test_describe_db_instances(self): |
| 132 self.set_http_response(status_code=200) |
| 133 response = self.service_connection.describe_db_instances('instance_id') |
| 134 self.assertEqual(len(response), 1) |
| 135 self.assert_request_parameters({ |
| 136 'Action': 'DescribeDBInstances', |
| 137 'ContentType': 'JSON', |
| 138 'DBInstanceIdentifier': 'instance_id', |
| 139 }, ignore_params_values=['Version']) |
| 140 db = response['DescribeDBInstancesResponse']\ |
| 141 ['DescribeDBInstancesResult']['DBInstances'][0]\ |
| 142 ['DBInstance'] |
| 143 self.assertEqual(db['DBInstanceIdentifier'], 'mydbinstance2') |
| 144 self.assertEqual(db['InstanceCreateTime'], '2012-10-03T22:01:51.047Z') |
| 145 self.assertEqual(db['Engine'], 'mysql') |
| 146 self.assertEqual(db['DBInstanceStatus'], 'backing-up') |
| 147 self.assertEqual(db['AllocatedStorage'], 200) |
| 148 self.assertEqual(db['Endpoint']['Port'], 3306) |
| 149 self.assertEqual(db['DBInstanceClass'], 'db.m1.large') |
| 150 self.assertEqual(db['MasterUsername'], 'awsuser') |
| 151 self.assertEqual(db['AvailabilityZone'], 'us-west-2b') |
| 152 self.assertEqual(db['BackupRetentionPeriod'], 1) |
| 153 self.assertEqual(db['PreferredBackupWindow'], '10:30-11:00') |
| 154 self.assertEqual(db['PreferredMaintenanceWindow'], |
| 155 'wed:06:30-wed:07:00') |
| 156 self.assertEqual(db['MultiAZ'], False) |
| 157 self.assertEqual(db['Iops'], 2000) |
| 158 self.assertEqual(db['PendingModifiedValues'], None) |
| 159 self.assertEqual( |
| 160 db['DBParameterGroups'][0]['DBParameterGroup']\ |
| 161 ['DBParameterGroupName'], |
| 162 'default.mysql5.5' |
| 163 ) |
| 164 self.assertEqual( |
| 165 db['DBSecurityGroups'][0]['DBSecurityGroup']['DBSecurityGroupName'], |
| 166 'default' |
| 167 ) |
| 168 self.assertEqual( |
| 169 db['DBSecurityGroups'][0]['DBSecurityGroup']['Status'], |
| 170 'active' |
| 171 ) |
| 172 self.assertEqual(len(db['StatusInfos']), 1) |
| 173 self.assertEqual( |
| 174 db['StatusInfos'][0]['DBInstanceStatusInfo']['Message'], |
| 175 None |
| 176 ) |
| 177 self.assertEqual( |
| 178 db['StatusInfos'][0]['DBInstanceStatusInfo']['Normal'], |
| 179 True |
| 180 ) |
| 181 self.assertEqual( |
| 182 db['StatusInfos'][0]['DBInstanceStatusInfo']['Status'], |
| 183 'replicating' |
| 184 ) |
| 185 self.assertEqual( |
| 186 db['StatusInfos'][0]['DBInstanceStatusInfo']['StatusType'], |
| 187 'read replication' |
| 188 ) |
| 189 self.assertEqual( |
| 190 db['VpcSecurityGroups'][0]['VpcSecurityGroupMembership']['Status'], |
| 191 'active' |
| 192 ) |
| 193 self.assertEqual( |
| 194 db['VpcSecurityGroups'][0]['VpcSecurityGroupMembership']\ |
| 195 ['VpcSecurityGroupId'], |
| 196 'sg-1' |
| 197 ) |
| 198 self.assertEqual(db['LicenseModel'], 'general-public-license') |
| 199 self.assertEqual(db['EngineVersion'], '5.5.27') |
| 200 self.assertEqual(db['AutoMinorVersionUpgrade'], True) |
| 201 self.assertEqual( |
| 202 db['DBSubnetGroup']['DBSubnetGroupName'], |
| 203 'mydbsubnetgroup' |
| 204 ) |
| 205 |
| 206 |
| 207 if __name__ == '__main__': |
| 208 unittest.main() |
| 209 |
| OLD | NEW |