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

Unified Diff: third_party/gsutil/third_party/boto/tests/unit/ec2/elb/test_attribute.py

Issue 1377933002: [catapult] - Copy Telemetry's gsutilz over to third_party. (Closed) Base URL: https://github.com/catapult-project/catapult.git@master
Patch Set: Rename to gsutil. Created 5 years, 3 months 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/gsutil/third_party/boto/tests/unit/ec2/elb/test_attribute.py
diff --git a/third_party/gsutil/third_party/boto/tests/unit/ec2/elb/test_attribute.py b/third_party/gsutil/third_party/boto/tests/unit/ec2/elb/test_attribute.py
new file mode 100644
index 0000000000000000000000000000000000000000..40edecba8279ecdd9e1c7f832a9fdf6fa90cedc6
--- /dev/null
+++ b/third_party/gsutil/third_party/boto/tests/unit/ec2/elb/test_attribute.py
@@ -0,0 +1,205 @@
+from tests.unit import unittest
+from tests.compat import mock
+
+from boto.ec2.elb import ELBConnection
+from boto.ec2.elb import LoadBalancer
+from boto.ec2.elb.attributes import LbAttributes
+
+ATTRIBUTE_GET_TRUE_CZL_RESPONSE = b"""<?xml version="1.0" encoding="UTF-8"?>
+<DescribeLoadBalancerAttributesResponse xmlns="http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/">
+ <DescribeLoadBalancerAttributesResult>
+ <LoadBalancerAttributes>
+ <CrossZoneLoadBalancing>
+ <Enabled>true</Enabled>
+ </CrossZoneLoadBalancing>
+ </LoadBalancerAttributes>
+ </DescribeLoadBalancerAttributesResult>
+<ResponseMetadata>
+ <RequestId>83c88b9d-12b7-11e3-8b82-87b12EXAMPLE</RequestId>
+</ResponseMetadata>
+</DescribeLoadBalancerAttributesResponse>
+"""
+
+ATTRIBUTE_GET_FALSE_CZL_RESPONSE = b"""<?xml version="1.0" encoding="UTF-8"?>
+<DescribeLoadBalancerAttributesResponse xmlns="http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/">
+ <DescribeLoadBalancerAttributesResult>
+ <LoadBalancerAttributes>
+ <CrossZoneLoadBalancing>
+ <Enabled>false</Enabled>
+ </CrossZoneLoadBalancing>
+ </LoadBalancerAttributes>
+ </DescribeLoadBalancerAttributesResult>
+<ResponseMetadata>
+ <RequestId>83c88b9d-12b7-11e3-8b82-87b12EXAMPLE</RequestId>
+</ResponseMetadata>
+</DescribeLoadBalancerAttributesResponse>
+"""
+
+ATTRIBUTE_GET_CS_RESPONSE = b"""<?xml version="1.0" encoding="UTF-8"?>
+<DescribeLoadBalancerAttributesResponse xmlns="http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/">
+ <DescribeLoadBalancerAttributesResult>
+ <LoadBalancerAttributes>
+ <ConnectionSettings>
+ <IdleTimeout>30</IdleTimeout>
+ </ConnectionSettings>
+ </LoadBalancerAttributes>
+ </DescribeLoadBalancerAttributesResult>
+<ResponseMetadata>
+ <RequestId>83c88b9d-12b7-11e3-8b82-87b12EXAMPLE</RequestId>
+</ResponseMetadata>
+</DescribeLoadBalancerAttributesResponse>
+"""
+
+ATTRIBUTE_SET_RESPONSE = b"""<?xml version="1.0" encoding="UTF-8"?>
+<ModifyLoadBalancerAttributesResponse xmlns="http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/">
+<ModifyLoadBalancerAttributesResult/>
+<ResponseMetadata>
+ <RequestId>83c88b9d-12b7-11e3-8b82-87b12EXAMPLE</RequestId>
+</ResponseMetadata>
+</ModifyLoadBalancerAttributesResponse>
+"""
+
+# make_request arguments for setting attributes.
+# Format: (API_COMMAND, API_PARAMS, API_PATH, API_METHOD)
+ATTRIBUTE_SET_CZL_TRUE_REQUEST = (
+ 'ModifyLoadBalancerAttributes',
+ {'LoadBalancerAttributes.CrossZoneLoadBalancing.Enabled': 'true',
+ 'LoadBalancerName': 'test_elb'}, mock.ANY, mock.ANY)
+ATTRIBUTE_SET_CZL_FALSE_REQUEST = (
+ 'ModifyLoadBalancerAttributes',
+ {'LoadBalancerAttributes.CrossZoneLoadBalancing.Enabled': 'false',
+ 'LoadBalancerName': 'test_elb'}, mock.ANY, mock.ANY)
+
+# Tests to be run on an LbAttributes
+# Format:
+# (EC2_RESPONSE_STRING, list( (string_of_attribute_to_test, value) ) )
+ATTRIBUTE_TESTS = [
+ (ATTRIBUTE_GET_TRUE_CZL_RESPONSE,
+ [('cross_zone_load_balancing.enabled', True)]),
+ (ATTRIBUTE_GET_FALSE_CZL_RESPONSE,
+ [('cross_zone_load_balancing.enabled', False)]),
+ (ATTRIBUTE_GET_CS_RESPONSE,
+ [('connecting_settings.idle_timeout', 30)]),
+]
+
+
+class TestLbAttributes(unittest.TestCase):
+ """Tests LB Attributes."""
+ def _setup_mock(self):
+ """Sets up a mock elb request.
+ Returns: response, elb connection and LoadBalancer
+ """
+ mock_response = mock.Mock()
+ mock_response.status = 200
+ elb = ELBConnection(aws_access_key_id='aws_access_key_id',
+ aws_secret_access_key='aws_secret_access_key')
+ elb.make_request = mock.Mock(return_value=mock_response)
+ return mock_response, elb, LoadBalancer(elb, 'test_elb')
+
+ def _verify_attributes(self, attributes, attr_tests):
+ """Verifies an LbAttributes object."""
+ for attr, result in attr_tests:
+ attr_result = attributes
+ for sub_attr in attr.split('.'):
+ attr_result = getattr(attr_result, sub_attr, None)
+ self.assertEqual(attr_result, result)
+
+ def test_get_all_lb_attributes(self):
+ """Tests getting the LbAttributes from the elb.connection."""
+ mock_response, elb, _ = self._setup_mock()
+
+ for response, attr_tests in ATTRIBUTE_TESTS:
+ mock_response.read.return_value = response
+ attributes = elb.get_all_lb_attributes('test_elb')
+ self.assertTrue(isinstance(attributes, LbAttributes))
+ self._verify_attributes(attributes, attr_tests)
+
+ def test_get_lb_attribute(self):
+ """Tests getting a single attribute from elb.connection."""
+ mock_response, elb, _ = self._setup_mock()
+
+ tests = [
+ ('crossZoneLoadBalancing', True, ATTRIBUTE_GET_TRUE_CZL_RESPONSE),
+ ('crossZoneLoadBalancing', False, ATTRIBUTE_GET_FALSE_CZL_RESPONSE),
+ ]
+
+ for attr, value, response in tests:
+ mock_response.read.return_value = response
+ status = elb.get_lb_attribute('test_elb', attr)
+ self.assertEqual(status, value)
+
+ def test_modify_lb_attribute(self):
+ """Tests setting the attributes from elb.connection."""
+ mock_response, elb, _ = self._setup_mock()
+
+ tests = [
+ ('crossZoneLoadBalancing', True, ATTRIBUTE_SET_CZL_TRUE_REQUEST),
+ ('crossZoneLoadBalancing', False, ATTRIBUTE_SET_CZL_FALSE_REQUEST),
+ ]
+
+ for attr, value, args in tests:
+ mock_response.read.return_value = ATTRIBUTE_SET_RESPONSE
+ result = elb.modify_lb_attribute('test_elb', attr, value)
+ self.assertTrue(result)
+ elb.make_request.assert_called_with(*args)
+
+ def test_lb_get_attributes(self):
+ """Tests the LbAttributes from the ELB object."""
+ mock_response, _, lb = self._setup_mock()
+
+ for response, attr_tests in ATTRIBUTE_TESTS:
+ mock_response.read.return_value = response
+ attributes = lb.get_attributes(force=True)
+ self.assertTrue(isinstance(attributes, LbAttributes))
+ self._verify_attributes(attributes, attr_tests)
+
+ def test_lb_is_cross_zone_load_balancing(self):
+ """Tests checking is_cross_zone_load_balancing."""
+ mock_response, _, lb = self._setup_mock()
+
+ tests = [
+ # Format: (method, args, result, response)
+ # Gets a true result.
+ (lb.is_cross_zone_load_balancing, [], True,
+ ATTRIBUTE_GET_TRUE_CZL_RESPONSE),
+ # Returns the previous calls cached value.
+ (lb.is_cross_zone_load_balancing, [], True,
+ ATTRIBUTE_GET_FALSE_CZL_RESPONSE),
+ # Gets a false result.
+ (lb.is_cross_zone_load_balancing, [True], False,
+ ATTRIBUTE_GET_FALSE_CZL_RESPONSE),
+ ]
+
+ for method, args, result, response in tests:
+ mock_response.read.return_value = response
+ self.assertEqual(method(*args), result)
+
+ def test_lb_enable_cross_zone_load_balancing(self):
+ """Tests enabling cross zone balancing from LoadBalancer."""
+ mock_response, elb, lb = self._setup_mock()
+
+ mock_response.read.return_value = ATTRIBUTE_SET_RESPONSE
+ self.assertTrue(lb.enable_cross_zone_load_balancing())
+ elb.make_request.assert_called_with(*ATTRIBUTE_SET_CZL_TRUE_REQUEST)
+
+ def test_lb_disable_cross_zone_load_balancing(self):
+ """Tests disabling cross zone balancing from LoadBalancer."""
+ mock_response, elb, lb = self._setup_mock()
+
+ mock_response.read.return_value = ATTRIBUTE_SET_RESPONSE
+ self.assertTrue(lb.disable_cross_zone_load_balancing())
+ elb.make_request.assert_called_with(*ATTRIBUTE_SET_CZL_FALSE_REQUEST)
+
+ def test_lb_get_connection_settings(self):
+ """Tests checking connectionSettings attribute"""
+ mock_response, elb, _ = self._setup_mock()
+
+ attrs = [('idle_timeout', 30), ]
+ mock_response.read.return_value = ATTRIBUTE_GET_CS_RESPONSE
+ attributes = elb.get_all_lb_attributes('test_elb')
+ self.assertTrue(isinstance(attributes, LbAttributes))
+ for attr, value in attrs:
+ self.assertEqual(getattr(attributes.connecting_settings, attr), value)
+
+if __name__ == '__main__':
+ unittest.main()

Powered by Google App Engine
This is Rietveld 408576698