From c3cdcd987a748adb2e9dc2edf146904de0235060 Mon Sep 17 00:00:00 2001 From: Davin McCall Date: Tue, 20 Mar 2018 09:54:23 +0000 Subject: [PATCH] tests: add a new test. --- src/tests/tests.cc | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/tests/tests.cc b/src/tests/tests.cc index 115535d..b6e01f3 100644 --- a/src/tests/tests.cc +++ b/src/tests/tests.cc @@ -509,6 +509,47 @@ void test11() assert(s2->get_state() == service_state_t::STOPPED); } +// Test that active service count reaches 0 when stopping a service with different types of dependency +void test12() +{ + service_set sset; + + service_record *s4 = new service_record(&sset, "test-service-4", service_type_t::INTERNAL, {}); + service_record *s3 = new service_record(&sset, "test-service-3", service_type_t::INTERNAL, {}); + service_record *s2 = new service_record(&sset, "test-service-2", service_type_t::INTERNAL, {}); + + service_record *s1 = new service_record(&sset, "test-service-1", service_type_t::INTERNAL, + {{s2, WAITS}, {s3, REG}, {s4, MS}}); + + sset.add_service(s4); + sset.add_service(s3); + sset.add_service(s2); + sset.add_service(s1); + + assert(sset.find_service("test-service-1") == s1); + assert(sset.find_service("test-service-2") == s2); + assert(sset.find_service("test-service-3") == s3); + assert(sset.find_service("test-service-4") == s4); + + // Request start of the s2 service, should also start s1: + sset.start_service(s1); + sset.process_queues(); + + assert(s1->get_state() == service_state_t::STARTED); + assert(s2->get_state() == service_state_t::STARTED); + assert(s3->get_state() == service_state_t::STARTED); + assert(s4->get_state() == service_state_t::STARTED); + + s1->stop(); + sset.process_queues(); + + assert(s1->get_state() == service_state_t::STOPPED); + assert(s2->get_state() == service_state_t::STOPPED); + assert(s3->get_state() == service_state_t::STOPPED); + assert(s4->get_state() == service_state_t::STOPPED); + + assert(sset.count_active_services() == 0); +} #define RUN_TEST(name) \ std::cout << #name "... "; \ @@ -531,4 +572,5 @@ int main(int argc, char **argv) RUN_TEST(test9); RUN_TEST(test10); RUN_TEST(test11); + RUN_TEST(test12); } -- 2.25.1