Ejemplo n.º 1
0
 def test_json_userdata(self):
     """
     JSON string adds to result.
     """
     options = BenchmarkOptions()
     options.parseOptions(['--userdata', '{"branch": "master"}'])
     self.assertEqual(parse_userdata(options), {"branch": "master"})
Ejemplo n.º 2
0
 def test_no_userdata(self):
     """
     Missing option adds nothing to result.
     """
     options = BenchmarkOptions()
     options.parseOptions([])
     self.assertIs(parse_userdata(options), None)
Ejemplo n.º 3
0
 def test_empty_userdata(self):
     """
     Empty option adds nothing to result.
     """
     options = BenchmarkOptions()
     options.parseOptions(['--userdata', ''])
     self.assertIs(parse_userdata(options), None)
Ejemplo n.º 4
0
 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())
Ejemplo n.º 5
0
 def test_json_file_userdata(self):
     """
     JSON file adds to result.
     """
     json_file = FilePath(self.mktemp())
     with json_file.open('w') as f:
         f.write('{"branch": "master"}\n')
     options = BenchmarkOptions()
     options.parseOptions(['--userdata', '@{}'.format(json_file.path)])
     self.assertEqual(parse_userdata(options), {"branch": "master"})
Ejemplo n.º 6
0
    def test_environment_setup_aws(self):
        """
        Uses environment variables for cluster configuration if option missing.

        This test checks a typical AWS configuration.
        """
        options = BenchmarkOptions()
        options.parseOptions([])
        cluster = get_cluster(options, self.environ)
        self.assertEqual(cluster.control_node_address(),
                         IPAddress(_ENV_CONTROL_SERVICE_ADDRESS))
Ejemplo n.º 7
0
 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())
Ejemplo n.º 8
0
    def test_environment_setup_rackspace(self):
        """
        Uses environment variables for cluster configuration if option missing.

        This test checks a typical Rackspace configuration.
        """
        self.environ['FLOCKER_ACCEPTANCE_HOSTNAME_TO_PUBLIC_ADDRESS'] = '{}'
        self.environ['FLOCKER_ACCEPTANCE_VOLUME_BACKEND'] = 'openstack'
        options = BenchmarkOptions()
        options.parseOptions([])
        cluster = get_cluster(options, self.environ)
        self.assertEqual(cluster.control_node_address(),
                         IPAddress(_ENV_CONTROL_SERVICE_ADDRESS))
Ejemplo n.º 9
0
 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())
Ejemplo n.º 10
0
    def test_yaml_setup(self):
        """
        Uses YAML file for cluster configuration if option given.

        This is true even if the environment contains a valid configuration.
        """
        tmpdir = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, tmpdir)
        with open(os.path.join(tmpdir, 'cluster.yml'), 'wt') as f:
            f.write(_CLUSTER_YAML_CONTENTS)
        options = BenchmarkOptions()
        options.parseOptions(['--cluster', tmpdir])
        cluster = get_cluster(options, self.environ)
        self.assertEqual(cluster.control_node_address(),
                         IPAddress(_YAML_CONTROL_SERVICE_ADDRESS))
Ejemplo n.º 11
0
 def test_missing_environment(self):
     """
     If no cluster option and no environment, script fails
     """
     options = BenchmarkOptions()
     options.parseOptions([])
     with capture_stderr() as captured_stderr:
         exception = self.assertRaises(
             SystemExit,
             get_cluster,
             options,
             {},
         )
         self.assertIn('not set', exception.args[0])
         self.assertIn(options.getUsage(), captured_stderr())
Ejemplo n.º 12
0
 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:
         exception = self.assertRaises(
             SystemExit,
             get_cluster,
             options,
             self.environ,
         )
         self.assertIn('JSON', exception.args[0])
         self.assertIn(options.getUsage(), captured_stderr())
Ejemplo n.º 13
0
 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:
         exception = self.assertRaises(
             SystemExit,
             get_cluster,
             options,
             self.environ,
         )
         self.assertIn('notanipaddress', exception.args[0])
         self.assertIn(options.getUsage(), captured_stderr())
Ejemplo n.º 14
0
 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())
Ejemplo n.º 15
0
    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())