Ejemplo n.º 1
0
    def test_902_two_regions_any_zones_three_replicas(self):
        """Create an object with three replicas across two regions.

        We set write affinity to write the first copy in the local
        region of the proxy used to perform the write, at least one
        of the other two replicas will end up in the opposite region
        based on primary partitions in the ring.
        """
        swift_utils.apply_proxy_config(
            self.region1_proxy_app, {
                'write-affinity': 'r1',
                'write-affinity-node-count': '1',
                'replicas': '3'
            }, self.region1_model_name)
        swift_utils.apply_proxy_config(
            self.region2_proxy_app, {
                'write-affinity': 'r2',
                'write-affinity-node-count': '1',
                'replicas': '3'
            }, self.region2_model_name)
        logging.info('Proxy configs updated in both regions')
        container_name, obj_name, obj_replicas = swift_utils.create_object(
            self.swift_region1,
            self.region1_proxy_app,
            self.storage_topology,
            self.RESOURCE_PREFIX,
            model_name=self.region1_model_name)
        # Check object is accessible from other regions proxy.
        self.swift_region2.head_object(container_name, obj_name)
        # Check there is at least one replica in each region.
        self.assertEqual(sorted(obj_replicas.distinct_regions), [1, 2])
        # Check there are three relicas
        self.assertEqual(len(obj_replicas.all_zones), 3)
Ejemplo n.º 2
0
 def test_apply_proxy_config_noop(self):
     self.patch_object(zaza.model, 'block_until_all_units_idle')
     self.patch_object(zaza.model,
                       'get_application_config',
                       return_value={'go-faster': {
                           'value': True
                       }})
     self.patch_object(zaza.model, 'set_application_config')
     swift_utils.apply_proxy_config('proxy-app', {'go-faster': True})
     self.assertFalse(self.set_application_config.called)
Ejemplo n.º 3
0
 def test_apply_proxy_config(self):
     self.patch_object(zaza.model, 'block_until_all_units_idle')
     self.patch_object(zaza.model,
                       'get_application_config',
                       return_value={'go-faster': {
                           'value': False
                       }})
     self.patch_object(zaza.model, 'set_application_config')
     swift_utils.apply_proxy_config('proxy-app', {'go-faster': True})
     self.set_application_config.assert_called_once_with(
         'proxy-app', {'go-faster': True}, model_name=None)
Ejemplo n.º 4
0
 def test_two_regions_any_zones_three_replicas(self):
     """Create an object with three replicas across two regions."""
     swift_utils.apply_proxy_config(
         self.region1_proxy_app, {
             'write-affinity': 'r1, r2',
             'write-affinity-node-count': '1',
             'replicas': '3'
         }, self.region1_model_name)
     container_name, obj_name, obj_replicas = swift_utils.create_object(
         self.swift_region1,
         self.region1_proxy_app,
         self.storage_topology,
         self.RESOURCE_PREFIX,
         model_name=self.region1_model_name)
     # Check object is accessible from other regions proxy.
     self.swift_region2.head_object(container_name, obj_name)
     # Check there is at least one replica in each region.
     self.assertEqual(sorted(obj_replicas.distinct_regions), [1, 2])
     # Check there are three relicas
     self.assertEqual(len(obj_replicas.all_zones), 3)