summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-11-24 00:16:15 +0100
committerCarl Hetherington <cth@carlh.net>2021-11-28 21:12:14 +0100
commitd41a59b6ef7a8c935f182d498ae4df0bdd66ba02 (patch)
tree5c2ceaf73b74fba1c5daaeec483a3aff054ca444 /test
parent07b21bb92a8d54c6c03de9aadc63ab93b65d9bc5 (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/wscript2
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