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:12:14 +0100 |
| commit | d41a59b6ef7a8c935f182d498ae4df0bdd66ba02 (patch) | |
| tree | 5c2ceaf73b74fba1c5daaeec483a3aff054ca444 /test | |
| parent | 07b21bb92a8d54c6c03de9aadc63ab93b65d9bc5 (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 |
