Ejemplo n.º 1
0
    def test_atomizer_raises_exception_when_atomize_command_fails(self):
        mock_project = Mock(spec=ProjectType)
        mock_project.execute_command_in_project.return_value = ('ERROR ERROR ERROR', _FAILING_EXIT_CODE)

        atomizer = Atomizer([{'TEST_FILE': _FAKE_ATOMIZER_COMMAND}])
        with self.assertRaises(AtomizerError):
            atomizer.atomize_in_project(mock_project)

        mock_project.execute_command_in_project.assert_called_once_with(_FAKE_ATOMIZER_COMMAND)
Ejemplo n.º 2
0
    def test_atomizer_raises_exception_when_atomize_command_fails(self):
        mock_project = MagicMock(spec_set=ProjectType)
        mock_project.execute_command_in_project.return_value = (
            'ERROR ERROR ERROR', _FAILING_EXIT_CODE)

        atomizer = Atomizer([{'TEST_FILE': _FAKE_ATOMIZER_COMMAND}])
        with self.assertRaises(AtomizerError):
            atomizer.atomize_in_project(mock_project)

        mock_project.execute_command_in_project.assert_called_once_with(
            _FAKE_ATOMIZER_COMMAND)
Ejemplo n.º 3
0
    def test_atomizer_returns_expected_atom_list(self):
        mock_project = MagicMock(spec_set=ProjectType)
        mock_project.execute_command_in_project.return_value = (_FAKE_ATOMIZER_COMMAND_OUTPUT, _SUCCESSFUL_EXIT_CODE)

        atomizer = Atomizer([{'TEST_FILE': _FAKE_ATOMIZER_COMMAND}])
        actual_atoms = atomizer.atomize_in_project(mock_project)

        expected_atoms = ['export TEST_FILE="./test_a.py";',
                          'export TEST_FILE="./test_b.py";',
                          'export TEST_FILE="./test_c.py";']
        self.assertListEqual(expected_atoms, actual_atoms, 'List of actual atoms should match list of expected atoms.')
        mock_project.execute_command_in_project.assert_called_once_with(_FAKE_ATOMIZER_COMMAND)
Ejemplo n.º 4
0
    def _construct_job_config(self, job_name, job_values):
        """
        Produce a JobConfig object given a dictionary of values parsed from a yaml config file.
        :param job_name: The name of the job
        :type job_name: str
        :param job_values: The dict of config sections for this job as parsed from the yaml file
        :type job_values: dict
        :return: A JobConfig object wrapping the normalized data for the specified job
        :rtype: JobConfig
        """
        # Each value should be transformed from a list of commands to a single command string.
        setup_build = self._shell_command_list_to_single_command(
            job_values.get(SETUP_BUILD))
        teardown_build = self._shell_command_list_to_single_command(
            job_values.get(TEARDOWN_BUILD))
        command = self._shell_command_list_to_single_command(
            job_values[COMMANDS])

        atomizer = Atomizer(job_values[ATOMIZERS])
        max_executors = job_values.get(MAX_EXECUTORS,
                                       self.DEFAULT_MAX_EXECUTORS)
        max_executors_per_slave = job_values.get(MAX_EXECUTORS_PER_SLAVE,
                                                 self.DEFAULT_MAX_EXECUTORS)

        return JobConfig(job_name, setup_build, teardown_build, command,
                         atomizer, max_executors, max_executors_per_slave)
Ejemplo n.º 5
0
 def _create_job_config(
     self,
     max_executors=_FAKE_MAX_EXECUTORS,
     max_executors_per_slave=_FAKE_MAX_EXECUTORS_PER_SLAVE,
 ):
     atomizer = Atomizer([{'FAKE': 'fake atomizer command'}])
     return JobConfig('', '', '', '', atomizer, max_executors, max_executors_per_slave)
Ejemplo n.º 6
0
    def test_atomizer_returns_expected_atom_list(self):
        mock_project = MagicMock(spec_set=ProjectType)
        mock_project.execute_command_in_project.return_value = (_FAKE_ATOMIZER_COMMAND_OUTPUT, _SUCCESSFUL_EXIT_CODE)

        atomizer = Atomizer([{'TEST_FILE': _FAKE_ATOMIZER_COMMAND}])
        actual_atoms = atomizer.atomize_in_project(mock_project)
        actual_atom_commands = [atom.command_string for atom in actual_atoms]

        expected_atom_commands = [
            get_environment_variable_setter_command('TEST_FILE', 'test_a.py'),
            get_environment_variable_setter_command('TEST_FILE', 'test_b.py'),
            get_environment_variable_setter_command('TEST_FILE', 'test_c.py'),
        ]
        self.assertListEqual(expected_atom_commands, actual_atom_commands,
                             'List of actual atoms should match list of expected atoms.')
        mock_project.execute_command_in_project.assert_called_once_with(_FAKE_ATOMIZER_COMMAND)
Ejemplo n.º 7
0
    def test_atomizer_returns_expected_atom_list(self):
        mock_project = MagicMock(spec_set=ProjectType)
        mock_project.execute_command_in_project.return_value = (
            _FAKE_ATOMIZER_COMMAND_OUTPUT, _SUCCESSFUL_EXIT_CODE)

        atomizer = Atomizer([{'TEST_FILE': _FAKE_ATOMIZER_COMMAND}])
        actual_atoms = atomizer.atomize_in_project(mock_project)

        expected_atoms = [
            'export TEST_FILE="./test_a.py";',
            'export TEST_FILE="./test_b.py";',
            'export TEST_FILE="./test_c.py";'
        ]
        self.assertListEqual(
            expected_atoms, actual_atoms,
            'List of actual atoms should match list of expected atoms.')
        mock_project.execute_command_in_project.assert_called_once_with(
            _FAKE_ATOMIZER_COMMAND)
Ejemplo n.º 8
0
    def test_atomizer_returns_expected_atom_list(self):
        mock_project = MagicMock(spec_set=ProjectType)
        mock_project.execute_command_in_project.return_value = (
            _FAKE_ATOMIZER_COMMAND_OUTPUT, _SUCCESSFUL_EXIT_CODE)

        atomizer = Atomizer([{'TEST_FILE': _FAKE_ATOMIZER_COMMAND}])
        actual_atoms = atomizer.atomize_in_project(mock_project)
        actual_atom_commands = [atom.command_string for atom in actual_atoms]

        expected_atom_commands = [
            get_environment_variable_setter_command('TEST_FILE', 'test_a.py'),
            get_environment_variable_setter_command('TEST_FILE', 'test_b.py'),
            get_environment_variable_setter_command('TEST_FILE', 'test_c.py'),
        ]
        self.assertListEqual(
            expected_atom_commands, actual_atom_commands,
            'List of actual atoms should match list of expected atoms.')
        mock_project.execute_command_in_project.assert_called_once_with(
            _FAKE_ATOMIZER_COMMAND)
Ejemplo n.º 9
0
    def _unpack(cls, name, config_dict):
        """
        Set class attributes from config dictionary.

        :type name: str
        :type config_dict: dict
        :rtype: JobConfig
        """
        setup_build = cls._shell_command_list_to_single_command(config_dict.get(SETUP_BUILD))
        teardown_build = cls._shell_command_list_to_single_command(config_dict.get(TEARDOWN_BUILD))
        command = cls._shell_command_list_to_single_command(config_dict[COMMANDS])
        atomizer = Atomizer(config_dict[ATOMIZERS])
        max_executors = config_dict.get(MAX_EXECUTORS, cls.DEFAULT_MAX_EXECUTORS)
        max_executors_per_slave = config_dict.get(MAX_EXECUTORS_PER_SLAVE, cls.DEFAULT_MAX_EXECUTORS)
        return cls(name, setup_build, teardown_build, command, atomizer, max_executors, max_executors_per_slave)
Ejemplo n.º 10
0
 def _create_job_config(self) -> JobConfig:
     max_executors = max_executors_per_slave = maxsize
     atomizer = Atomizer([{'FAKE': 'fake atomizer command'}])
     return JobConfig('', '', '', '', atomizer, max_executors,
                      max_executors_per_slave)