import os import sys import shutil import tempfile import unittest from mock import Mock from nose.tools import assert_true, assert_false, assert_equal, assert_almost_equal from wa.framework import pluginloader from wa.framework.output import RunOutput from wa.framework.run import Runner, RunnerJob, runmethod, reset_runmethods from wa.utils.serializer import json class RunnerTest(unittest.TestCase): def setUp(self): self.output = RunOutput(tempfile.mktemp()) self.output.initialize() def tearDown(self): shutil.rmtree(self.output.output_directory) def test_run_init(self): runner = Runner(self.output) runner.initialize() runner.finalize() assert_true(runner.info.name) assert_true(runner.info.start_time) assert_true(runner.info.end_time) assert_almost_equal(runner.info.duration, runner.info.end_time - runner.info.start_time) def test_normal_run(self): runner = Runner(self.output) runner.add_job(1, Mock()) runner.add_job(2, Mock()) runner.initialize() runner.run() runner.finalize() assert_equal(len(runner.completed_jobs), 2)