def process_args(args): args_copy = copy.copy(vars(args)) config = args_copy.pop('config', None) func = args_copy.pop('func', None) pth = args_copy.pop('path', None) cmd = args_copy.pop('cmd', None) if config: settings.update(settings.parse_config_file(config)) func_kwargs = { key: Path(val) if type(val) is TempPath else val for key, val in args_copy.items() if val } try: if pth: return func(pth, **func_kwargs) return func(**func_kwargs) except NotImplementedError: if pth: value = pth elif len(func_kwargs) > 0: value = list(func_kwargs.values())[0] else: perror('%s is not a valid command for the given input\n' % cmd) perror('%s is not a valid command for %s\n' % (cmd, value)) except ValueError as exc: perror('Error: %s\n' % str(exc)) except exceptions.RemoteError as exc: if type(exc) is exceptions.NotFoundError and pth: perror('Not Found: %s' % pth) perror('%s: %s\n' % (exc.__class__.__name__, str(exc)))
def setUp(self): super(SwiftIntegrationTest, self).setUp() if not os.environ.get('SWIFT_TEST_USERNAME'): raise unittest.SkipTest( 'SWIFT_TEST_USERNAME env var not set. Skipping integration test') # Disable loggers so nose output wont be trashed logging.getLogger('requests').setLevel(logging.CRITICAL) logging.getLogger('swiftclient').setLevel(logging.CRITICAL) logging.getLogger('keystoneclient').setLevel(logging.CRITICAL) settings.update({ 'swift': { 'username': os.environ.get('SWIFT_TEST_USERNAME'), 'password': os.environ.get('SWIFT_TEST_PASSWORD'), 'num_retries': 5 }}) # fall back on to swiftstack auth for tenant tenant = os.environ.get('SWIFT_TEST_TENANT', 'AUTH_%s' % os.environ['SWIFT_TEST_USERNAME']) self.test_container = Path('swift://%s/%s' % (tenant, uuid.uuid4())) if self.test_container.exists(): raise ValueError('test container %s already exists.' % self.test_container) try: self.test_container.post() except BaseException: self.test_container.rmtree() raise self.test_dir = self.test_container / 'test'
def test_update_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 } } settings.update(settings=update_settings) self.assertEquals(settings._global_settings, expected_settings)
def setUp(self): super(SwiftTestCase, self).setUp() self.setup_swift_mocks() # make sure swift credentials aren't included settings.update({ 'swift': { 'username': '******', 'password': '******', 'auth_url': '__dummy__' } })
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})
def test_use_update_w_error(self): with settings.use({'foo': 1}): with self.assertRaises(RuntimeError): settings.update({'foo': 3})
def test_update_validation_error(self): with self.assertRaisesRegexp(ValueError, 'not a valid setting'): settings.update({'foo': {'bar': 3}}) with self.assertRaisesRegexp(ValueError, 'not a valid setting'): settings.update({'bar': 4})
def test_update_wo_settings(self): settings.update() self.assertEquals(settings._global_settings, test_settings)