Example #1
0
 def test_use_nested_w_update(self):
     settings.update({'foo': 0})
     self.assertEquals(settings.get(), {'foo': 0})
     with settings.use({'foo': 1}):
         self.assertEquals(settings.get(), {'foo': 1})
         self.assertEquals(settings._global_settings, {'foo': 0})
         with settings.use({'foo': 2}):
             self.assertEquals(settings.get(), {'foo': 2})
             self.assertEquals(settings._global_settings, {'foo': 0})
         self.assertEquals(settings.get(), {'foo': 1})
         self.assertEquals(settings._global_settings, {'foo': 0})
     self.assertEquals(settings.get(), {'foo': 0})
     self.assertFalse(hasattr(settings.thread_local, 'settings'))
     settings.update({'foo': 3})
     self.assertEquals(settings.get(), {'foo': 3})
Example #2
0
    def test_static_large_obj_copy_and_segment_container(self):
        with NamedTemporaryDirectory(change_dir=True) as tmp_d:
            segment_size = 1048576
            obj_size = segment_size * 4 + 100
            self.create_dataset(tmp_d, 1, obj_size)
            obj_path = stor.join(tmp_d,
                                 self.get_dataset_obj_names(1)[0])
            options = {'swift:upload': {'segment_size': segment_size}}
            with settings.use(options):
                obj_path.copy(self.test_container / 'large_object.txt')

            # Verify there is a segment container and that it can be ignored when listing a dir
            segment_container = Path(self.test_container.parent) / ('.segments_%s' % self.test_container.name)  # noqa
            containers = Path(self.test_container.parent).listdir(ignore_segment_containers=False)
            self.assertTrue(segment_container in containers)
            self.assertTrue(self.test_container in containers)
            containers = Path(self.test_container.parent).listdir(ignore_segment_containers=True)
            self.assertFalse(segment_container in containers)
            self.assertTrue(self.test_container in containers)

            # Verify there are five segments
            objs = set(segment_container.list(condition=lambda results: len(results) == 5))
            self.assertEquals(len(objs), 5)

            # Copy back the large object and verify its contents
            obj_path = Path(tmp_d) / 'large_object.txt'
            Path(self.test_container / 'large_object.txt').copy(obj_path)
            self.assertCorrectObjectContents(obj_path, self.get_dataset_obj_names(1)[0], obj_size)
Example #3
0
    def test_use_w_settings(self):
        update_settings = {
            'swift:upload': {
                'skip_identical': True,
                'object_threads': 30
            },
            'swift:download': {
                'object_threads': 20
            }
        }
        expected_settings = {
            'swift:download': {
                'container_threads': 10,
                'object_threads': 20,
                'shuffle': True,
                'skip_identical': True
            },
            'swift:upload': {
                'changed': False,
                'checksum': True,
                'leave_segments': True,
                'object_threads': 30,
                'segment_size': 1073741824,
                'segment_threads': 10,
                'skip_identical': True,
                'use_slo': True
            }
        }

        self.assertEquals(settings._global_settings, test_settings)
        with settings.use(update_settings):
            self.assertEquals(settings._global_settings, test_settings)
            self.assertEquals(settings.get(), expected_settings)
        self.assertEquals(settings._global_settings, test_settings)
        self.assertEquals(settings.get(), test_settings)
Example #4
0
    def test_swift_destination(self, mock_upload):
        source = '.'
        dest = Path('swift://tenant/container')
        options = {
            'swift:upload': {
                'object_threads': 30,
                'segment_threads': 40
            }
        }

        with settings.use(options):
            utils.copytree(source, dest)
        mock_upload.assert_called_once_with(dest, ['.'],
                                            condition=None,
                                            use_manifest=False,
                                            headers=None)
Example #5
0
 def _use_contextmanager(self, value):
     with settings.use({'foo': value}):
         time.sleep(.01)
         self.assertEquals(settings.get(), {'foo': value})
         time.sleep(.01)
Example #6
0
 def test_use_update_w_error(self):
     with settings.use({'foo': 1}):
         with self.assertRaises(RuntimeError):
             settings.update({'foo': 3})
Example #7
0
 def test_use_wo_settings(self):
     self.assertEquals(settings._global_settings, test_settings)
     with settings.use():
         self.assertEquals(settings._global_settings, test_settings)
     self.assertEquals(settings._global_settings, test_settings)