def test_missing_environment(self): """ If no cluster option and no environment, script fails """ options = BenchmarkOptions() options.parseOptions([]) with capture_stderr() as captured_stderr: with self.assertRaises(SystemExit) as e: get_cluster(options, {}) self.assertIn('not set', e.exception.args[0]) self.assertIn(options.getUsage(), captured_stderr())
def test_environment_hostname_mapping_invalid_json(self): """ Rejects configuration if hostname mapping is invalid. """ options = BenchmarkOptions() options.parseOptions([]) self.environ['FLOCKER_ACCEPTANCE_HOSTNAME_TO_PUBLIC_ADDRESS'] = '}' with capture_stderr() as captured_stderr: with self.assertRaises(SystemExit) as e: get_cluster(options, self.environ) self.assertIn('JSON', e.exception.args[0]) self.assertIn(options.getUsage(), captured_stderr())
def test_environment_invalid_control_node(self): """ Rejects configuration if control node is invalid. """ options = BenchmarkOptions() options.parseOptions([]) self.environ['FLOCKER_ACCEPTANCE_CONTROL_NODE'] = 'notanipaddress' with capture_stderr() as captured_stderr: with self.assertRaises(SystemExit) as e: get_cluster(options, self.environ) self.assertIn('notanipaddress', e.exception.args[0]) self.assertIn(options.getUsage(), captured_stderr())
def test_invalid_json(self): """ Invalid JSON string handled. """ options = BenchmarkOptions() options.parseOptions(['--userdata', '"branch": "master"']) with capture_stderr() as captured_stderr: exception = self.assertRaises( SystemExit, parse_userdata, options ) self.assertIn( 'Invalid user data', exception.args[0] ) self.assertIn(options.getUsage(), captured_stderr())
def test_invalid_path(self): """ Non-existent file handled. """ no_file = FilePath(self.mktemp()) options = BenchmarkOptions() options.parseOptions(['--userdata', '@{}'.format(no_file.path)]) with capture_stderr() as captured_stderr: exception = self.assertRaises( SystemExit, parse_userdata, options ) self.assertIn( 'Invalid user data file', exception.args[0] ) self.assertIn(options.getUsage(), captured_stderr())
def test_environment_invalid_volume_size(self): """ Rejects configuration if volume size is invalid. """ options = BenchmarkOptions() options.parseOptions([]) self.environ['FLOCKER_ACCEPTANCE_DEFAULT_VOLUME_SIZE'] = 'A' with capture_stderr() as captured_stderr: exception = self.assertRaises( SystemExit, get_cluster, options, self.environ, ) self.assertIn( 'FLOCKER_ACCEPTANCE_DEFAULT_VOLUME_SIZE', exception.args[0] ) self.assertIn(options.getUsage(), captured_stderr())
def test_environment_hostname_mapping_invalid_ipaddress(self): """ Rejects configuration if hostname mapping is invalid. """ options = BenchmarkOptions() options.parseOptions([]) self.environ['FLOCKER_ACCEPTANCE_HOSTNAME_TO_PUBLIC_ADDRESS'] = ( '{"notanipaddress": "notanipaddress"}' ) with capture_stderr() as captured_stderr: exception = self.assertRaises( SystemExit, get_cluster, options, self.environ, ) self.assertIn('notanipaddress', exception.args[0]) self.assertIn(options.getUsage(), captured_stderr())
def test_missing_yaml_file(self): """ Script fails if cluster directory does not contain cluster.yml There is no fallback to environment if an error occurs reading YAML description. """ tmpdir = tempfile.mkdtemp() self.addCleanup(shutil.rmtree, tmpdir) options = BenchmarkOptions() options.parseOptions(['--cluster', tmpdir]) with capture_stderr() as captured_stderr: with self.assertRaises(SystemExit) as e: get_cluster(options, self.environ) self.assertIn('not found', e.exception.args[0]) self.assertIn(options.getUsage(), captured_stderr())
def test_invalid_file_data(self): """ Invalid file data handled. """ invalid_file = FilePath(self.mktemp()) with invalid_file.open('w') as f: f.write('hello\n') options = BenchmarkOptions() options.parseOptions(['--userdata', '@{}'.format(invalid_file.path)]) with capture_stderr() as captured_stderr: exception = self.assertRaises( SystemExit, parse_userdata, options ) self.assertIn( 'Invalid user data', exception.args[0] ) self.assertIn(options.getUsage(), captured_stderr())
def test_environment_invalid_volume_size(self): """ Rejects configuration if volume size is invalid. """ options = BenchmarkOptions() options.parseOptions([]) self.environ['FLOCKER_ACCEPTANCE_DEFAULT_VOLUME_SIZE'] = 'A' with capture_stderr() as captured_stderr: exception = self.assertRaises( SystemExit, get_cluster, options, self.environ, ) self.assertIn('FLOCKER_ACCEPTANCE_DEFAULT_VOLUME_SIZE', exception.args[0]) self.assertIn(options.getUsage(), captured_stderr())
def test_environment_hostname_mapping_invalid_ipaddress(self): """ Rejects configuration if hostname mapping is invalid. """ options = BenchmarkOptions() options.parseOptions([]) self.environ['FLOCKER_ACCEPTANCE_HOSTNAME_TO_PUBLIC_ADDRESS'] = ( '{"notanipaddress": "notanipaddress"}') with capture_stderr() as captured_stderr: exception = self.assertRaises( SystemExit, get_cluster, options, self.environ, ) self.assertIn('notanipaddress', exception.args[0]) self.assertIn(options.getUsage(), captured_stderr())
def test_missing_yaml_file(self): """ Script fails if cluster directory does not contain cluster.yml There is no fallback to environment if an error occurs reading YAML description. """ tmpdir = tempfile.mkdtemp() self.addCleanup(shutil.rmtree, tmpdir) options = BenchmarkOptions() options.parseOptions(['--cluster', tmpdir]) with capture_stderr() as captured_stderr: exception = self.assertRaises( SystemExit, get_cluster, options, self.environ, ) self.assertIn('not found', exception.args[0]) self.assertIn(options.getUsage(), captured_stderr())