diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-11-24 00:16:15 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-11-28 21:08:08 +0100 |
| commit | 4ee083dc0862b30325c709e913772a6898378d0e (patch) | |
| tree | 58f62e90e3b6c5522bac210907ea834b2cebbb86 /test | |
| parent | b2d850326af5c9ffc6486e4cc40bef6e1c051a6f (diff) | |
Simplify and fix job scheduler, especially with respect to the priority system.
Diffstat (limited to 'test')
| -rw-r--r-- | test/job_manager_test.cc (renamed from test/job_test.cc) | 47 | ||||
| -rw-r--r-- | test/wscript | 2 |
2 files changed, 43 insertions, 6 deletions
diff --git a/test/job_test.cc b/test/job_manager_test.cc index 7fb240843..1baa5767e 100644 --- a/test/job_test.cc +++ b/test/job_manager_test.cc @@ -19,8 +19,8 @@ */ -/** @file test/job_test.cc - * @brief Test Job and JobManager. +/** @file test/job_manager_test.cc + * @brief Test JobManager. * @ingroup selfcontained */ @@ -34,6 +34,7 @@ using std::make_shared; using std::shared_ptr; using std::string; +using std::vector; class TestJob : public Job @@ -77,7 +78,7 @@ public: }; -BOOST_AUTO_TEST_CASE (job_manager_test) +BOOST_AUTO_TEST_CASE (job_manager_test1) { shared_ptr<Film> film; @@ -86,8 +87,44 @@ BOOST_AUTO_TEST_CASE (job_manager_test) JobManager::instance()->add (a); dcpomatic_sleep_seconds (1); - BOOST_CHECK_EQUAL (a->running (), true); + BOOST_CHECK (a->running()); a->set_finished_ok (); dcpomatic_sleep_seconds (2); - BOOST_CHECK_EQUAL (a->finished_ok(), true); + BOOST_CHECK (a->finished_ok()); } + + +BOOST_AUTO_TEST_CASE (job_manager_test2) +{ + shared_ptr<Film> film; + + vector<shared_ptr<TestJob>> jobs; + for (int i = 0; i < 16; ++i) { + auto job = make_shared<TestJob>(film); + jobs.push_back (job); + JobManager::instance()->add (job); + } + + dcpomatic_sleep_seconds (1); + BOOST_CHECK (jobs[0]->running()); + jobs[0]->set_finished_ok(); + + dcpomatic_sleep_seconds (1); + BOOST_CHECK (!jobs[0]->running()); + BOOST_CHECK (jobs[1]->running()); + + /* Push our jobs[5] to the top of the list */ + for (int i = 0; i < 5; ++i) { + JobManager::instance()->increase_priority(jobs[5]); + } + + dcpomatic_sleep_seconds (1); + for (int i = 0; i < 16; ++i) { + BOOST_CHECK (i == 5 ? jobs[i]->running() : !jobs[i]->running()); + } + + for (auto job: jobs) { + job->set_finished_ok(); + } +} + diff --git a/test/wscript b/test/wscript index ff6895d9a..a5366b3ec 100644 --- a/test/wscript +++ b/test/wscript @@ -96,7 +96,7 @@ def build(bld): interrupt_encoder_test.cc isdcf_name_test.cc j2k_bandwidth_test.cc - job_test.cc + job_manager_test.cc kdm_naming_test.cc low_bitrate_test.cc markers_test.cc |
