test_sysinfo.py 3.0 KB
Newer Older
1 2
import os
import sys
3 4
import shutil
import tempfile
5 6 7 8 9

if sys.version_info[:2] == (2, 6):
    import unittest2 as unittest
else:
    import unittest
10

11
from avocado.core import exit_codes
12 13 14
from avocado.utils import process


15
basedir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..')
16 17 18 19 20
basedir = os.path.abspath(basedir)


class SysInfoTest(unittest.TestCase):

21
    def setUp(self):
22
        self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
23

24
    @unittest.skip("Temporary plugin infrastructure removal")
25 26
    def test_sysinfo_enabled(self):
        os.chdir(basedir)
27
        cmd_line = './scripts/avocado run --job-results-dir %s --sysinfo=on passtest' % self.tmpdir
28
        result = process.run(cmd_line)
29
        expected_rc = exit_codes.AVOCADO_ALL_OK
30 31 32
        self.assertEqual(result.exit_status, expected_rc,
                         'Avocado did not return rc %d:\n%s' % (expected_rc, result))
        output = result.stdout + result.stderr
C
Cleber Rosa 已提交
33
        sysinfo_dir = None
34 35 36 37
        for line in output.splitlines():
            if 'JOB LOG' in line:
                job_log = line.split()[-1]
                sysinfo_dir = os.path.join(os.path.dirname(job_log), 'sysinfo')
C
Cleber Rosa 已提交
38 39 40
        self.assertIsNotNone(sysinfo_dir,
                             ('Could not find sysinfo dir from human output. '
                              'Output produced: "%s" % output'))
41 42 43 44 45 46
        msg = "Avocado didn't create sysinfo directory %s:\n%s" % (sysinfo_dir, result)
        self.assertTrue(os.path.isdir(sysinfo_dir), msg)
        msg = 'The sysinfo directory is empty:\n%s' % result
        self.assertGreater(len(os.listdir(sysinfo_dir)), 0, msg)
        for hook in ('pre', 'post'):
            sysinfo_subdir = os.path.join(sysinfo_dir, hook)
C
Cleber Rosa 已提交
47 48
            msg = 'The sysinfo/%s subdirectory does not exist:\n%s' % (hook, result)
            self.assertTrue(os.path.exists(sysinfo_subdir), msg)
49

50
    @unittest.skip("Temporary plugin infrastructure removal")
51 52
    def test_sysinfo_disabled(self):
        os.chdir(basedir)
53
        cmd_line = './scripts/avocado run --job-results-dir %s --sysinfo=off passtest' % self.tmpdir
54
        result = process.run(cmd_line)
55
        expected_rc = exit_codes.AVOCADO_ALL_OK
56 57 58
        self.assertEqual(result.exit_status, expected_rc,
                         'Avocado did not return rc %d:\n%s' % (expected_rc, result))
        output = result.stdout + result.stderr
C
Cleber Rosa 已提交
59
        sysinfo_dir = None
60 61 62 63
        for line in output.splitlines():
            if 'JOB LOG' in line:
                job_log = line.split()[-1]
                sysinfo_dir = os.path.join(os.path.dirname(job_log), 'sysinfo')
C
Cleber Rosa 已提交
64 65 66
        self.assertIsNotNone(sysinfo_dir,
                             ('Could not find sysinfo dir from human output. '
                              'Output produced: "%s" % output'))
67 68 69
        msg = 'Avocado created sysinfo directory %s:\n%s' % (sysinfo_dir, result)
        self.assertFalse(os.path.isdir(sysinfo_dir), msg)

70 71
    def tearDown(self):
        shutil.rmtree(self.tmpdir)
72 73 74

if __name__ == '__main__':
    unittest.main()