Exemple #1
0
    def test_fail_and_skip(self, mock_jobsubmit, mock_getresultstree,
                           mock_warning, mock_error):
        """ Ensure that a job with failed tasks, no waiving and skipped tests
            returns SKT_FAIL."""
        # pylint: disable=unused-argument

        beaker_xml = misc.get_asset_content('beaker_skip_and_fail.xml')
        mock_getresultstree.return_value = fromstring(beaker_xml)
        mock_jobsubmit.return_value = "J:0001"

        # no need to wait 60 seconds
        # though beaker_pass_results.xml only needs one iteration
        self.myrunner.watchdelay = 0.1

        # For the purposes of this test it's not necessary to flip the state
        # of the fake Beaker XML job to 'Completed', the asset file already has
        # that state.
        result = misc.exec_on(self.myrunner,
                              mock_jobsubmit,
                              'beaker_skip_and_fail.xml',
                              5,
                              waiving=False)

        # see method description for details why SKT_FAIL
        self.assertEqual(SKT_FAIL, result)
Exemple #2
0
    def test_jobresult_failure(self, mock_getresultstree):
        """Ensure jobresult() handles a job failure"""
        # Mock up a beaker XML reply
        beaker_xml = misc.get_asset_content('beaker_fail_results.xml')
        mock_getresultstree.return_value = etree.fromstring(beaker_xml)

        result = self.myrunner.jobresult("J:00001")
        self.assertTupleEqual(result, (1, 'Fail'))
Exemple #3
0
    def test_getresults(self, mock_getresultstree):
        """Ensure getresults() works"""
        # Mock up a beaker XML reply
        beaker_xml = misc.get_asset_content('beaker_results.xml')
        mock_getresultstree.return_value = etree.fromstring(beaker_xml)

        result = self.myrunner.getresults("J:00001")
        self.assertEqual(result, 0)
Exemple #4
0
    def test_getconsolelog(self, mock_getresultstree):
        """Ensure getconsolelog() works"""
        # Mock up a beaker XML reply
        mocked_xml = misc.get_asset_content('beaker_results.xml')
        mock_getresultstree.return_value = etree.fromstring(mocked_xml)

        result = self.myrunner.getconsolelog()
        self.assertEqual(result, "http://example.com/")
Exemple #5
0
    def test_jobresult(self, mock_getresultstree):
        """Ensure jobresult() works"""
        # beaker_xml up a beaker XML reply
        beaker_xml = misc.get_asset_content('beaker_results.xml')
        mock_getresultstree.return_value = etree.fromstring(beaker_xml)

        result = self.myrunner.jobresult("J:00001")
        self.assertTupleEqual(result, (0, 'Pass'))
Exemple #6
0
    def test_getresults_failure(self, mock_logging):
        """Ensure __getresults() handles a job failure."""
        # pylint: disable=W0212,E1101
        self.myrunner.job_to_recipe_set_map = {'jobid': set(['recipeset'])}
        self.myrunner.recipe_set_results['recipeset'] = fromstring(
            misc.get_asset_content('beaker_fail_results.xml'))

        result = self.myrunner._BeakerRunner__getresults()
        self.assertEqual(result, 1)
        mock_logging.assert_called()
Exemple #7
0
    def test_recipe_to_job(self):
        """Ensure recipe_to_job() works"""
        beaker_xml = misc.get_asset_content('beaker_results.xml')
        xml_parsed = etree.fromstring(beaker_xml)

        result = self.myrunner.recipe_to_job(xml_parsed)
        self.assertEqual(result.tag, 'job')

        result = self.myrunner.recipe_to_job(xml_parsed, samehost=True)
        self.assertEqual(result.tag, 'job')
Exemple #8
0
    def test_recipe_set_to_job(self):
        """Ensure __recipe_set_to_job() works."""
        # pylint: disable=W0212,E1101
        beaker_xml = misc.get_asset_content('beaker_recipe_set_results.xml')
        xml_parsed = fromstring(beaker_xml)

        result = self.myrunner._BeakerRunner__recipe_set_to_job(xml_parsed)
        self.assertEqual(result.tag, 'job')

        result = self.myrunner._BeakerRunner__recipe_set_to_job(xml_parsed,
                                                                samehost=True)
        self.assertEqual(result.tag, 'job')
Exemple #9
0
    def test_waived_hidden(self, mock_jobsubmit, mock_getresultstree):
        """ Ensure that waived tests don't affect overall test result."""

        beaker_xml = misc.get_asset_content('beaker_results.xml')
        mock_getresultstree.return_value = fromstring(beaker_xml)
        mock_jobsubmit.return_value = "J:0001"

        # no need to wait 60 seconds
        # though beaker_pass_results.xml only needs one iteration
        self.myrunner.watchdelay = 0.1

        result = misc.exec_on(self.myrunner, mock_jobsubmit,
                              'beaker_results.xml', 5, 'Completed')
        self.assertEqual(SKT_SUCCESS, result)
Exemple #10
0
    def test_run_wait(self, mock_jobsubmit, mock_getresultstree):
        """Ensure BeakerRunner.run works"""
        url = "http://machine1.example.com/builds/1234567890.tar.gz"
        release = "4.17.0-rc1"
        wait = True

        beaker_xml = misc.get_asset_content('beaker_pass_results.xml')
        mock_getresultstree.return_value = etree.fromstring(beaker_xml)
        mock_jobsubmit.return_value = "J:0001"

        # no need to wait 60 seconds
        # though beaker_pass_results.xml only needs one iteration
        self.myrunner.watchdelay = 0.1
        result = self.myrunner.run(url, release, wait)
        self.assertEqual(result, 0)
Exemple #11
0
    def test_fetchdata_normal(self):
        """Ensure __fetchdata() works."""
        # pylint: disable=W0212,E1101
        responses.add(responses.GET,
                      'http://whatever.example.com/console/log',
                      body=misc.get_asset_content('x86_one_trace.txt'),
                      status=200)

        # get path to trace asset
        real_path = misc.get_asset_path('x86_one_trace.txt')

        consolelog = console.ConsoleLog(kver='4-5-fake', url_or_path=real_path)
        result = consolelog._ConsoleLog__fetchdata()

        # check we got expected file content
        self.assertIn('Linux version 4-5-fake', result[0])
Exemple #12
0
    def test_getverboseresults(self, mock_getresultstree):
        """Ensure getverboseresults() works"""
        # Mock up a beaker XML reply
        mocked_xml = misc.get_asset_content('beaker_results.xml')
        mock_getresultstree.return_value = etree.fromstring(mocked_xml)

        result = self.myrunner.getverboseresults(["R:00001"])
        expected_result = {
            'R:00001': {
                'R:None': (None, None, 'http://example.com/',
                           'http://example.com/machinedesc.log',
                           'http://example.com/lshw.log'),
                'result':
                'Pass'
            }
        }
        self.assertDictEqual(result, expected_result)
Exemple #13
0
    def test_waived_abort(self, mock_jobsubmit, mock_getresultstree,
                          mock_warning, mock_error):
        """ Ensure that one test failing and one waived test aborting
            leads to failure. """
        # pylint: disable=unused-argument

        beaker_xml = misc.get_asset_content('beaker_aborted_some.xml')
        mock_getresultstree.return_value = fromstring(beaker_xml)
        mock_jobsubmit.return_value = "J:0001"

        # no need to wait 60 seconds
        # though beaker_pass_results.xml only needs one iteration
        self.myrunner.watchdelay = 0.1

        result = misc.exec_on(self.myrunner, mock_jobsubmit,
                              'beaker_aborted_some.xml', 5, 'Aborted')

        self.assertEqual(result, SKT_ERROR)
Exemple #14
0
    def request_get_mocked(filename):
        """Mock request.get to allow feeding consolelog with known inputs. When
        request.get is called, it "fetches" the content of the asset passed as
        parameter.

        Args:
            filename: Asset's filename.
        """
        get_mocked = mock.Mock()

        def remove_nt_marker(line):
            """Filter function for removing the 'nt ' markers on assets"""
            return not re.match(r'^nt ', line)

        get_mocked.text = filter(remove_nt_marker,
                                 misc.get_asset_content(filename))
        with mock.patch('requests.get', mock.Mock(return_value=get_mocked)):
            yield
Exemple #15
0
    def test_match_one_trace2(self):
        """ Check one trace can be extracted from a console log. Check
            that exclude pattern is skipped.
        """
        # pylint: disable=W0212,E1101

        # append OK line to the testing content
        content = misc.get_asset_content('x86_one_trace.txt').splitlines()
        content = [content[0], '[166357.530080] aa OK aa'] + content[1:]
        content = '\n'.join(content) + '\n'

        with tempfile.NamedTemporaryFile(delete=True) as temp:
            temp.write(content)
            temp.seek(0)

            consolelog = console.ConsoleLog('4-5-fake', temp.name)
            traces = consolelog.gettraces()
            self.assertEqual(len(traces), 1)
        expected_trace = self.get_expected_traces('x86_one_trace.txt')[0]
        self.assertEqual(expected_trace, traces[0])
Exemple #16
0
    def test_getresults_failure(self, mock_getresultstree):
        """Ensure getresults() handles a job failure"""
        # Mock up a beaker XML reply
        beaker_xml = misc.get_asset_content('beaker_fail_results.xml')
        mock_getresultstree.return_value = etree.fromstring(beaker_xml)

        # Ensure that the failure loop hits 'continue'
        self.myrunner.failures = {'test': ['A', None, 4]}
        result = self.myrunner.getresults("J:00001")
        self.assertEqual(result, 1)

        # Go through the failure loop with one failed host
        self.myrunner.failures = {'test': [['A'], ['a'], 1]}
        result = self.myrunner.getresults("J:00001")
        self.assertEqual(result, 1)

        # Go through the failure loop with multiple failed hosts
        self.myrunner.failures = {'test': [['A', 'B'], ['a'], 1]}
        result = self.myrunner.getresults("J:00001")
        self.assertEqual(result, 1)
Exemple #17
0
    def get_expected_traces(filename):
        """Return expected traces from an asset. Each line started with 'nt '
        is discarded.

        Args:
            filename: Asset's filename.
        Returns:
            A list where every member is a trace.
        """
        expected_traces = []
        tmp_trace = []
        for line in misc.get_asset_content(filename).splitlines()[1:]:
            if line.startswith('nt '):
                if tmp_trace:
                    expected_traces.append('\n'.join(tmp_trace))
                    tmp_trace = []
            else:
                tmp_trace.append(line)
        expected_traces.append('\n'.join(tmp_trace))
        return expected_traces
Exemple #18
0
    def test_fetchdata_gz(self):
        """Ensure __fetchdata() gzip handling works."""
        # pylint: disable=W0212,E1101
        content = misc.get_asset_content('x86_one_trace.txt')

        responses.add(responses.GET,
                      'http://whatever.example.com/console/log.bz',
                      body=content,
                      status=200)

        with tempfile.NamedTemporaryFile(delete=True, suffix='.gz') as temp:
            with gzip.open(temp.name, 'wb') as gzip_file:
                gzip_file.write(content)

            consolelog = console.ConsoleLog(kver='4-5-fake',
                                            url_or_path=temp.name)
            result = consolelog._ConsoleLog__fetchdata()

            # check we got expected file content
            self.assertIn('Linux version 4-5-fake', result[0])
Exemple #19
0
    def test_waived_fails(self, mock_jobsubmit, mock_getresultstree):
        """ Ensure that waived tests don't affect overall
            test result. This tests test failure."""

        beaker_xml = misc.get_asset_content('beaker_results.xml')
        mock_getresultstree.return_value = fromstring(beaker_xml)
        mock_jobsubmit.return_value = "J:0001"

        # no need to wait 60 seconds
        # though beaker_pass_results.xml only needs one iteration
        self.myrunner.watchdelay = 0.1

        # waiving=False : failure must show
        result = misc.exec_on(self.myrunner,
                              mock_jobsubmit,
                              'beaker_results.xml',
                              5,
                              'Completed',
                              waiving=False)

        self.assertEqual(result, SKT_FAIL)
Exemple #20
0
    def test_waived_fails2(self, mock_jobsubmit, mock_getresultstree,
                           mock_warning, mock_error):
        """ Ensure that waived tests don't affect overall
            test result. This tests test abort."""
        # pylint: disable=unused-argument

        beaker_xml = misc.get_asset_content('beaker_aborted_some.xml')
        mock_getresultstree.return_value = fromstring(beaker_xml)
        mock_jobsubmit.return_value = "J:0001"

        # no need to wait 60 seconds
        # though beaker_pass_results.xml only needs one iteration
        self.myrunner.watchdelay = 0.1

        # waiving=False: infrastructure error must be reported
        result = misc.exec_on(self.myrunner,
                              mock_jobsubmit,
                              'beaker_aborted_some.xml',
                              5,
                              'Completed',
                              waiving=False)

        self.assertEqual(result, SKT_ERROR)