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_run_reverse_with_dependencies(self): ser = Service('REVERSE_BASE') ser_dep = Service('REVERSE_DEP') ser.algo_reversed = True ser_dep.algo_reversed = True stop1 = Action('stop', command='/bin/true') stop2 = Action('stop', command='/bin/true') ser.add_action(stop1) ser_dep.add_action(stop2) ser.add_dep(ser_dep) ser_dep.run('stop') self.assertEqual(ser.status, DONE) self.assertTrue(stop1.duration) self.assertEqual(ser_dep.status, DONE) self.assertTrue(stop2.duration)
def test_run_reverse_with_dependencies(self): ser = Service('REVERSE_BASE') ser_dep = Service('REVERSE_DEP') ser.algo_reversed = True ser_dep.algo_reversed = True stop1 = Action('stop', command='/bin/true') stop2 = Action('stop', command='/bin/true') ser.add_action(stop1) ser_dep.add_action(stop2) ser.add_dep(ser_dep) ser_dep.run('stop') self.assertEqual(ser.status, DONE) self.assertTrue(stop1.duration) self.assertEqual(ser_dep.status, DONE) self.assertTrue(stop2.duration)
def test_run_reverse_single_service(self): """Test run action stop on service (reverse algorithm)""" ser = Service('REVERSE') ser.algo_reversed = True stop = Action('stop', command='/bin/true') ser.add_action(stop) ser.run('stop') self.assertEqual(ser.status, DONE) self.assertTrue(stop.duration)
def test_run_reverse_single_service(self): """Test run action stop on service (reverse algorithm)""" ser = Service('REVERSE') ser.algo_reversed = True stop = Action('stop', command='/bin/true') ser.add_action(stop) ser.run('stop') self.assertEqual(ser.status, DONE) self.assertTrue(stop.duration)
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_revese_multiple_services(self): """Test run stop action on service provokes reverse algorithm""" """Test prepare with multiple dependencies at different levels.""" #Service Arthemis is delcared here arth = Service('arthemis') arth.algo_reversed = True stop = Action(name='stop', command='/bin/true') stop2 = Action(name='stop', command='/bin/true') stop3 = Action(name='stop', command='/bin/true') stop4 = Action(name='stop', command='/bin/true') arth.add_action(stop) # Service Chiva is declared here chiva = Service('chiva') chiva.algo_reversed = True chiva.add_action(stop2) chiva.add_dep(arth) # Service Dyonisos is declared here dion = Service('dionysos') dion.algo_reversed = True dion.add_action(stop3) dion.add_dep(arth) # Service Brutus is declared here brut = Service('brutus') brut.algo_reversed = True brut.add_action(stop4) brut.add_dep(chiva) brut.add_dep(dion) arth.run('stop') self.assertEqual(arth.status, DONE) self.assertTrue(stop.duration) self.assertEqual(chiva.status, DONE) self.assertTrue(stop2.duration) self.assertEqual(dion.status, DONE) self.assertTrue(stop3.duration) self.assertEqual(brut.status, DONE) self.assertTrue(stop4.duration)
def test_run_revese_multiple_services(self): """Test run stop action on service provokes reverse algorithm""" """Test prepare with multiple dependencies at different levels.""" #Service Arthemis is delcared here arth = Service('arthemis') arth.algo_reversed = True stop = Action(name='stop', command='/bin/true') stop2 = Action(name='stop', command='/bin/true') stop3 = Action(name='stop', command='/bin/true') stop4 = Action(name='stop', command='/bin/true') arth.add_action(stop) # Service Chiva is declared here chiva = Service('chiva') chiva.algo_reversed = True chiva.add_action(stop2) chiva.add_dep(arth) # Service Dyonisos is declared here dion = Service('dionysos') dion.algo_reversed = True dion.add_action(stop3) dion.add_dep(arth) # Service Brutus is declared here brut = Service('brutus') brut.algo_reversed = True brut.add_action(stop4) brut.add_dep(chiva) brut.add_dep(dion) arth.run('stop') self.assertEqual(arth.status, DONE) self.assertTrue(stop.duration) self.assertEqual(chiva.status, DONE) self.assertTrue(stop2.duration) self.assertEqual(dion.status, DONE) self.assertTrue(stop3.duration) self.assertEqual(brut.status, DONE) self.assertTrue(stop4.duration)
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)