def test_core_behaviour_reverse(self): '''Test ability of the core to solve a large graph in reverse mode''' # Define Group 1 grp1 = ServiceGroup('GRP1') grp1.algo_reversed = True grp1_i1 = Service('I1') grp1_i1.algo_reversed = True grp1_i2 = Service('I2') grp1_i2.algo_reversed = True grp1_i3 = Service('I3') grp1_i3.algo_reversed = True grp1_i1.add_action(Action('stop', command='/bin/true')) grp1_i2.add_action(Action('stop', command='/bin/true')) grp1_i3.add_action(Action('stop', command='/bin/true')) grp1.add_inter_dep(target=grp1_i1) grp1.add_inter_dep(base=grp1_i1, target=grp1_i2) grp1.add_inter_dep(target=grp1_i3) # Define Group 2 grp2 = ServiceGroup('GRP2') grp2.algo_reversed = True grp2_i1 = Service('I1') grp2_i1.algo_reversed = True grp2_i2 = Service('I2') grp2_i2.algo_reversed = True grp2_i1.add_action(Action('stop', command='/bin/true')) grp2_i2.add_action(Action('stop', command='/bin/true')) grp2.add_inter_dep(target=grp2_i1) grp2.add_inter_dep(base=grp2_i1, target=grp2_i2) # Define Group init svc1 = Service('S1') svc1.algo_reversed = True svc1.add_action(Action('stop', command='/bin/true')) svc2 = Service('S2') svc2.algo_reversed = True svc2.add_action(Action('stop', command='/bin/true')) svc3 = Service('S3') svc3.algo_reversed = True svc3.add_action(Action('stop', command='/bin/true')) group_init = ServiceGroup('GROUP_INIT') group_init.algo_reversed = True group_init.add_inter_dep(target=svc1) group_init.add_inter_dep(base=svc1, target=svc2, sgth=REQUIRE_WEAK) group_init.add_inter_dep(base=svc1, target=grp1) group_init.add_inter_dep(base=svc2, target=svc3) group_init.add_inter_dep(base=grp1, target=svc3) group_init.add_inter_dep(base=svc3, target=grp2) # Solve the graph group_init.run('stop') # Assertions self.assertEqual(grp2.status, DONE) self.assertEqual(svc3.status, DONE) self.assertEqual(svc2.status, DONE) self.assertEqual(grp1.status, DONE) self.assertEqual(svc1.status, DONE) self.assertEqual(group_init.status, DONE)
def test_core_behaviour_reverse(self): '''Test ability of the core to solve a large graph in reverse mode''' # Define Group 1 grp1 = ServiceGroup('GRP1') grp1.algo_reversed = True grp1_i1 = Service('I1') grp1_i1.algo_reversed = True grp1_i2 = Service('I2') grp1_i2.algo_reversed = True grp1_i3 = Service('I3') grp1_i3.algo_reversed = True grp1_i1.add_action(Action('stop', command='/bin/true')) grp1_i2.add_action(Action('stop', command='/bin/true')) grp1_i3.add_action(Action('stop', command='/bin/true')) grp1.add_inter_dep(target=grp1_i1) grp1.add_inter_dep(base=grp1_i1, target=grp1_i2) grp1.add_inter_dep(target=grp1_i3) # Define Group 2 grp2 = ServiceGroup('GRP2') grp2.algo_reversed = True grp2_i1 = Service('I1') grp2_i1.algo_reversed = True grp2_i2 = Service('I2') grp2_i2.algo_reversed = True grp2_i1.add_action(Action('stop', command='/bin/true')) grp2_i2.add_action(Action('stop', command='/bin/true')) grp2.add_inter_dep(target=grp2_i1) grp2.add_inter_dep(base=grp2_i1, target=grp2_i2) # Define Group init svc1 = Service('S1') svc1.algo_reversed = True svc1.add_action(Action('stop', command='/bin/true')) svc2 = Service('S2') svc2.algo_reversed = True svc2.add_action(Action('stop', command='/bin/true')) svc3 = Service('S3') svc3.algo_reversed = True svc3.add_action(Action('stop', command='/bin/true')) group_init = ServiceGroup('GROUP_INIT') group_init.algo_reversed = True group_init.add_inter_dep(target=svc1) group_init.add_inter_dep(base=svc1, target=svc2, sgth=REQUIRE_WEAK) group_init.add_inter_dep(base=svc1, target=grp1) group_init.add_inter_dep(base=svc2, target=svc3) group_init.add_inter_dep(base=grp1, target=svc3) group_init.add_inter_dep(base=svc3, target=grp2) # Solve the graph group_init.run('stop') # Assertions self.assertEqual(grp2.status, DONE) self.assertEqual(svc3.status, DONE) self.assertEqual(svc2.status, DONE) self.assertEqual(grp1.status, DONE) self.assertEqual(svc1.status, DONE) self.assertEqual(group_init.status, DONE)
def test_set_algo_reversed(self): '''Test updates dependencies in changing the reversed flag''' group = ServiceGroup('group') self.assertTrue(group._source.has_child_dep('group')) self.assertFalse(group._sink.has_parent_dep('group')) group.algo_reversed = True self.assertFalse(group._source.has_child_dep('group')) self.assertTrue(group._sink.has_parent_dep('group')) group.algo_reversed = False self.assertTrue(group._source.has_child_dep('group')) self.assertFalse(group._sink.has_parent_dep('group'))
def test_set_algo_reversed(self): '''Test updates dependencies in changing the reversed flag''' group = ServiceGroup('group') self.assertTrue(group._source.has_child_dep('group')) self.assertFalse(group._sink.has_parent_dep('group')) group.algo_reversed = True self.assertFalse(group._source.has_child_dep('group')) self.assertTrue(group._sink.has_parent_dep('group')) group.algo_reversed = False self.assertTrue(group._source.has_child_dep('group')) self.assertFalse(group._sink.has_parent_dep('group'))
def test_prepare_group_subservice_reverse(self): '''Test prepare reverse group with an internal dependency.''' group = ServiceGroup('GROUP') group.algo_reversed = True subserv = Service('SUB1') subserv.algo_reversed = True subserv.add_action(Action('start', command='/bin/true')) group.add_inter_dep(target=subserv) group.run('start') self.assertEqual(group.status, DONE) self.assertEqual(subserv.status, DONE)
def test_prepare_group_subservice_reverse(self): '''Test prepare reverse group with an internal dependency.''' group = ServiceGroup('GROUP') group.algo_reversed = True subserv = Service('SUB1') subserv.algo_reversed = True subserv.add_action(Action('start', command='/bin/true')) group.add_inter_dep(target=subserv) group.run('start') self.assertEqual(group.status, DONE) self.assertEqual(subserv.status, DONE)
def test_run_stop_on_group(self): '''Test stop algorithm on a group''' group = ServiceGroup('G1') i1 = Service('I1') i1.add_action(Action('stop', command='/bin/true')) group.add_inter_dep(target=i1) s1 = Service('S1') s1.add_action(Action('stop', command='/bin/true')) s1.add_dep(target=group) s1.algo_reversed = True group.algo_reversed = True group.run('stop') self.assertEqual(s1.status, DONE) self.assertEqual(i1.status, DONE) self.assertEqual(group.status, DONE)
def test_run_stop_on_group(self): '''Test stop algorithm on a group''' group = ServiceGroup('G1') i1 = Service('I1') i1.add_action(Action('stop', command='/bin/true')) group.add_inter_dep(target=i1) s1 = Service('S1') s1.add_action(Action('stop', command='/bin/true')) s1.add_dep(target=group) s1.algo_reversed = True group.algo_reversed = True group.run('stop') self.assertEqual(s1.status, DONE) self.assertEqual(i1.status, DONE) self.assertEqual(group.status, DONE)
def test_prepare_empty_group_reverse(self): '''Test method prepare reverse with a single empty ServiceGroup.''' group = ServiceGroup('GROUP') group.algo_reversed = True group.run('start') self.assertEqual(group.status, MISSING)
def test_prepare_empty_group_reverse(self): '''Test method prepare reverse with a single empty ServiceGroup.''' group = ServiceGroup('GROUP') group.algo_reversed = True group.run('start') self.assertEqual(group.status, MISSING)