From c25317893082b6238c574e04c252315dd66ed4d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rud=C3=A1=20Moura?= Date: Wed, 15 Apr 2015 12:22:37 -0300 Subject: [PATCH] selftests: Add functional tests for '--job-timeout' feature. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rudá Moura --- .../functional/avocado/job_timeout_tests.py | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 selftests/all/functional/avocado/job_timeout_tests.py diff --git a/selftests/all/functional/avocado/job_timeout_tests.py b/selftests/all/functional/avocado/job_timeout_tests.py new file mode 100644 index 00000000..d1e68b6e --- /dev/null +++ b/selftests/all/functional/avocado/job_timeout_tests.py @@ -0,0 +1,119 @@ +import os +import sys +import unittest +import tempfile +import shutil + +if sys.version_info[:2] == (2, 6): + import unittest2 as unittest +else: + import unittest + +# simple magic for using scripts within a source tree +basedir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', + '..', '..') +basedir = os.path.abspath(basedir) +if os.path.isdir(os.path.join(basedir, 'avocado')): + sys.path.append(basedir) + +from avocado.utils import process +from avocado.utils import script + +SCRIPT_CONTENT = """#!/bin/bash +sleep 2 +""" + +PYTHON_CONTENT = """#!/usr/bin/env python +import time +from avocado import test + +class Dummy(test.Test): + def test00sleep(self): + time.sleep(2) + def test01pass(self): + pass + def test02pass(self): + pass +""" + + +class JobTimeOutTest(unittest.TestCase): + + def setUp(self): + self.script = script.TemporaryScript( + 'sleep.sh', + SCRIPT_CONTENT, + 'avocado_timeout_functional') + self.script.save() + self.py = script.TemporaryScript( + 'sleep_test.py', + PYTHON_CONTENT, + 'avocado_timeout_functional') + self.py.save() + self.tmpdir = tempfile.mkdtemp() + os.chdir(basedir) + + def test_sleep_longer_timeout(self): + cmd_line = ('./scripts/avocado run --job-results-dir %s --sysinfo=off ' + '--job-timeout=5 %s examples/tests/passtest.py' % (self.tmpdir, self.script.path)) + result = process.run(cmd_line, ignore_status=True) + self.assertEqual(result.exit_status, 0) + self.assertIn('PASS : 2', result.stdout) + self.assertIn('ERROR : 0', result.stdout) + self.assertIn('SKIP : 0', result.stdout) + + def test_sleep_short_timeout(self): + cmd_line = ('./scripts/avocado run --job-results-dir %s --sysinfo=off ' + '--job-timeout=1 %s examples/tests/passtest.py' % (self.tmpdir, self.script.path)) + result = process.run(cmd_line, ignore_status=True) + self.assertEqual(result.exit_status, 1) + self.assertIn('PASS : 0', result.stdout) + self.assertIn('ERROR : 1', result.stdout) + self.assertIn('SKIP : 1', result.stdout) + + def test_sleep_short_timeout_with_test_methods(self): + cmd_line = ('./scripts/avocado run --job-results-dir %s --sysinfo=off ' + '--job-timeout=1 %s' % (self.tmpdir, self.py.path)) + result = process.run(cmd_line, ignore_status=True) + self.assertEqual(result.exit_status, 1) + self.assertIn('PASS : 0', result.stdout) + self.assertIn('ERROR : 1', result.stdout) + self.assertIn('SKIP : 2', result.stdout) + + def test_invalid_values(self): + cmd_line = ('./scripts/avocado run --job-results-dir %s --sysinfo=off ' + '--job-timeout=0 examples/tests/passtest.py' % self.tmpdir) + result = process.run(cmd_line, ignore_status=True) + self.assertEqual(result.exit_status, 3) + self.assertIn('Invalid number', result.stderr) + cmd_line = ('./scripts/avocado run --job-results-dir %s --sysinfo=off ' + '--job-timeout=123x examples/tests/passtest.py' % self.tmpdir) + result = process.run(cmd_line, ignore_status=True) + self.assertEqual(result.exit_status, 3) + self.assertIn('Invalid number', result.stderr) + + def test_valid_values(self): + cmd_line = ('./scripts/avocado run --job-results-dir %s --sysinfo=off ' + '--job-timeout=123 examples/tests/passtest.py' % self.tmpdir) + result = process.run(cmd_line, ignore_status=True) + self.assertEqual(result.exit_status, 0) + cmd_line = ('./scripts/avocado run --job-results-dir %s --sysinfo=off ' + '--job-timeout=123s examples/tests/passtest.py' % self.tmpdir) + result = process.run(cmd_line, ignore_status=True) + self.assertEqual(result.exit_status, 0) + cmd_line = ('./scripts/avocado run --job-results-dir %s --sysinfo=off ' + '--job-timeout=123m examples/tests/passtest.py' % self.tmpdir) + result = process.run(cmd_line, ignore_status=True) + self.assertEqual(result.exit_status, 0) + cmd_line = ('./scripts/avocado run --job-results-dir %s --sysinfo=off ' + '--job-timeout=123h examples/tests/passtest.py' % self.tmpdir) + result = process.run(cmd_line, ignore_status=True) + self.assertEqual(result.exit_status, 0) + + def tearDown(self): + self.script.remove() + self.py.remove() + shutil.rmtree(self.tmpdir) + +if __name__ == '__main__': + unittest.main() -- GitLab