示例#1
0
 def test_add_dep_children(self):
     """Test method add_dep for children"""
     ent = BaseEntity('foo')
     ent_dep = BaseEntity('child')
     ent.add_dep(target=ent_dep, parent=False)
     self.assertTrue(ent.has_child_dep('child'))
     self.assertTrue(ent_dep.has_parent_dep('foo'))
示例#2
0
 def test_add_dep_parents(self):
     """Test method add dependency for parents"""
     ent = BaseEntity('foo')
     ent_dep = BaseEntity('parent')
     ent.add_dep(ent_dep)
     self.assertTrue(ent.has_parent_dep('parent'))
     self.assertTrue(ent_dep.has_child_dep('foo'))
示例#3
0
 def test_has_child_dep(self):
     """Test method has_child_dep"""
     ent = BaseEntity('foo')
     ent_dep = BaseEntity('child')
     ent.children['child'] = Dependency(ent_dep)
     self.assertTrue(ent.has_child_dep('child'))
     del ent.children['child']
     self.assertFalse(ent.has_child_dep('child'))
示例#4
0
 def test_remote(self):
     """Test the remote property"""
     ent1 = BaseEntity('father')
     self.assertTrue(ent1.remote)
     ent1.remote = False
     ent2 = BaseEntity('child')
     ent2.inherits_from(ent1)
     self.assertFalse(ent2.remote)
示例#5
0
 def test_clear_deps(self):
     """Test method clear_deps"""
     ent = BaseEntity('foo')
     ent_dep = BaseEntity('parent')
     ent.add_dep(ent_dep)
     self.assertEqual(len(ent.parents), 1)
     ent.clear_deps()
     self.assertEqual(len(ent.parents), 0)
示例#6
0
 def test_has_parent_dep(self):
     """Test method has_parent_dep"""
     ent = BaseEntity('foo')
     ent_dep = BaseEntity('parent')
     ent.parents['parent'] = Dependency(ent_dep)
     self.assertTrue(ent.has_parent_dep('parent'))
     del ent.parents['parent']
     self.assertFalse(ent.has_parent_dep('parent'))
示例#7
0
 def test_is_strong_dependency(self):
     """Test the behaviour of is_strong method."""
     dep_a = Dependency(BaseEntity("Base"), CHECK)
     dep_b = Dependency(BaseEntity("Base"), REQUIRE)
     dep_c = Dependency(BaseEntity("Base"), REQUIRE_WEAK)
     self.assertTrue(dep_a.is_strong())
     self.assertTrue(dep_b.is_strong())
     self.assertFalse(dep_c.is_strong())
示例#8
0
 def test_eval_deps_waiting(self):
     """Test that eval_deps_status return WAITING_STATUS"""
     service = BaseEntity("test_service")
     serv_a = BaseEntity("A")
     serv_b = BaseEntity("B")
     service.add_dep(serv_a)
     service.add_dep(serv_b, CHECK)
     serv_a.status = WAITING_STATUS
     self.assertEqual(service.eval_deps_status(), WAITING_STATUS)
示例#9
0
 def test_dependency_instanciation(self):
     """Test instanciation of a dependency."""
     service = BaseEntity("PARENT")
     service = BaseEntity("CHILD")
     self.assertRaises(AssertionError, Dependency, None)
     self.assertRaises(AssertionError, Dependency, service, "TEST")
     self.assertTrue(Dependency(service))
     self.assertTrue(Dependency(service, CHECK))
     self.assertTrue(Dependency(service, CHECK, True))
示例#10
0
 def test_lookup_variables3(self):
     '''Test variables resolution with an undefined var'''
     service = BaseEntity('test_service')
     service.add_var('VAR', 'test')
     group = BaseEntity('group_service')
     group.add_var('GVAR', 'group')
     service.parent = group
     self.assertRaises(UndefinedVariableError, service._lookup_variable,
                       'BAD_VAR')
示例#11
0
 def test_lookup_variables2(self):
     '''Test variables resolution through multiple entities'''
     service = BaseEntity('test_service')
     service.add_var('VAR', 'test')
     group = BaseEntity('group_service')
     group.add_var('GVAR', 'group')
     service.parent = group
     self.assertEqual(service._lookup_variable('VAR'), 'test')
     self.assertEqual(service._lookup_variable('GVAR'), 'group')
示例#12
0
 def test_fullname(self):
     '''Test that the property return the fullname of the current entity'''
     ent1 = BaseEntity('alpha')
     self.assertEqual(ent1.fullname(), ent1.name)
     ent2 = BaseEntity('beta')
     ent3 = BaseEntity('gamma')
     ent2.parent = ent3
     ent1.parent = ent2
     self.assertEqual(ent1.fullname(), 'gamma.beta.alpha')
示例#13
0
 def test_remove_dep(self):
     """Test method remove_dep."""
     ent = BaseEntity('foo')
     ent_dep = BaseEntity('child')
     ent.children['child'] = Dependency(ent_dep)
     ent_dep.parents['foo'] = Dependency(ent)
     ent.remove_dep('child', parent=False)
     self.assertTrue('child' not in ent.children)
     self.assertTrue('foo' not in ent.parents)
     self.assertRaises(AssertionError, ent.remove_dep, None)
示例#14
0
 def test_graph_dep_type(self):
     """Test the DOT output of a dependency type"""
     ent = BaseEntity("ENTITY")
     dep_c = Dependency(BaseEntity("Base"), CHECK)
     dep_r = Dependency(BaseEntity("Base"), REQUIRE)
     dep_rw = Dependency(BaseEntity("Base"), REQUIRE_WEAK)
     self.assertEqual(dep_c.graph(ent), '"ENTITY" -> "Base";\n')
     self.assertEqual(dep_r.graph(ent), '"ENTITY" -> "Base";\n')
     self.assertEqual(dep_rw.graph(ent),
                      '"ENTITY" -> "Base" [style=dashed];\n')
示例#15
0
 def test_eval_deps_error(self):
     """Test that eval_deps_status return DEP_ERROR"""
     service = BaseEntity("test_service")
     serv_a = BaseEntity("A")
     serv_b = BaseEntity("B")
     service.add_dep(serv_a)
     service.add_dep(serv_b, CHECK)
     serv_b.status = DONE
     serv_a.status = TIMEOUT
     self.assertEqual(service.eval_deps_status(), DEP_ERROR)
示例#16
0
 def test_clear_childs(self):
     '''Test remove all childrens dependencies'''
     ent1 = BaseEntity(name='A')
     ent2 = BaseEntity(name='B')
     ent3 = BaseEntity(name='C')
     ent1.add_dep(target=ent2, parent=False)
     ent1.add_dep(target=ent3, parent=False)
     ent1.clear_child_deps()
     self.assertFalse(ent1.has_child_dep('B'))
     self.assertFalse(ent1.has_child_dep('C'))
示例#17
0
 def test_clear_parents(self):
     '''Test remove all parents dependencies'''
     ent1 = BaseEntity(name='A')
     ent2 = BaseEntity(name='B')
     ent3 = BaseEntity(name='C')
     ent1.add_dep(target=ent2)
     ent1.add_dep(target=ent3)
     ent1.clear_parent_deps()
     self.assertFalse(ent1.has_parent_dep('B'))
     self.assertFalse(ent1.has_parent_dep('C'))
示例#18
0
 def test_lookup_variables4(self):
     '''Test variables resolution with a var referencing a property'''
     service = BaseEntity('test_service')
     service.add_var('VAR', 'test')
     group = BaseEntity('group_service')
     group.add_var('GVAR', 'group')
     service.parent = group
     self.assertEqual(service._lookup_variable('GVAR'), 'group')
     self.assertEqual(service._lookup_variable('TARGET'), None)
     self.assertEqual(service._lookup_variable('NAME'), 'test_service')
示例#19
0
    def test_tags(self):
        """Test tags property"""
        ent1 = BaseEntity(name='parent')
        self.assertEqual(ent1.tags, set())
        ent1.tags.add('foo')

        ent2 = BaseEntity(name='child')
        ent2.inherits_from(ent1)
        self.assertEqual(ent2.tags, set(['foo']))
        ent2.tags = set(['bar'])
        self.assertEqual(ent2.tags, set(['bar']))
示例#20
0
    def test_excluded(self):
        """Test the excluded mecanism"""
        ent1 = BaseEntity('E1')
        ent2 = BaseEntity('E2')
        ent3 = BaseEntity('E3')

        ent3.add_dep(ent2)

        self.assertFalse(ent1.excluded())
        self.assertTrue(ent1.excluded(["E1"]))
        self.assertTrue(ent3.excluded(["E2"]))
示例#21
0
 def test_inheritance_of_non_existing_target(self):
     '''
     Test inheritance between entities with non-existing target/description
     '''
     ent1 = BaseEntity(name='parent')
     ent1.desc = "foo"
     ent2 = BaseEntity(name='child', target="@none")
     ent2.desc = ""
     ent2.inherits_from(ent1)
     self.assertEqual(ent2.target, NodeSet())
     self.assertEqual(ent2.desc, "")
示例#22
0
 def test_reverse_mod(self):
     """Test enable reverse mod over a bunch of entity"""
     ent1 = BaseEntity('foo')
     ent2 = BaseEntity('bar')
     manager = entity_manager_self()
     manager.entities['foo'] = ent1
     manager.entities['bar'] = ent2
     self.assertRaises(AssertionError, manager._reverse_mod, None)
     manager._reverse_mod(True)
     self.assertTrue(ent1._algo_reversed and ent2._algo_reversed)
     self.assertFalse(not ent1._algo_reversed and not ent2._algo_reversed)
示例#23
0
 def test_search_node_graph(self):
     """Test the research of a node through a graph"""
     ent1 = BaseEntity('E1')
     ent2 = BaseEntity('E2')
     ent3 = BaseEntity('E3')
     ent4 = BaseEntity('E4')
     ent1.add_dep(ent2)
     ent1.add_dep(ent3)
     ent2.add_dep(ent4)
     ent3.add_dep(ent4)
     self.assertTrue(ent1.search('E3') is ent3)
     self.assertTrue(ent1.search('E5') is None)
示例#24
0
 def test_search_node_graph_reverse(self):
     """Test the research of node through a graph in reverse mod"""
     ent1 = BaseEntity('E1')
     ent2 = BaseEntity('E2')
     ent3 = BaseEntity('E3')
     ent4 = BaseEntity('E4')
     ent1.add_dep(ent2)
     ent1.add_dep(ent3)
     ent2.add_dep(ent4)
     ent3.add_dep(ent4)
     self.assertTrue(ent4.search('E1', True) is ent1)
     self.assertTrue(ent4.search('E5', True) is None)
示例#25
0
 def test_eval_deps_no_status(self):
     """Test that eval_deps_status return NO_STATUS"""
     service = BaseEntity("test_service")
     serv_a = BaseEntity("A")
     serv_b = BaseEntity("B")
     serv_a.status = WARNING
     service.add_dep(serv_a)
     service.add_dep(serv_b, CHECK)
     self.assertEqual(service.eval_deps_status(), NO_STATUS)
     serv_a.status = NO_STATUS
     serv_b.status = WARNING
     self.assertEqual(service.eval_deps_status(), NO_STATUS)
示例#26
0
 def test_inheritance_of_properties1(self):
     '''Test inheritance between entities'''
     ent1 = BaseEntity(name='parent', target='aury[10-16]')
     ent1.fanout = 5
     ent1.errors = 2
     ent1.timeout = 15
     ent2 = BaseEntity(name='child')
     ent2.inherits_from(ent1)
     self.assertEqual(ent2.target, NodeSet('aury[10-16]'))
     self.assertEqual(ent2.fanout, 5)
     self.assertEqual(ent2.errors, 2)
     self.assertEqual(ent2.timeout, 15)
示例#27
0
 def test_is_ready(self):
     """Test method allowing us to determine if a service can be processed"""
     ent = BaseEntity('foo')
     ent_dep = BaseEntity('parent')
     ent_dep2 = BaseEntity('parent2')
     ent.add_dep(ent_dep)
     ent.add_dep(ent_dep2)
     self.assertFalse(ent.is_ready())
     ent_dep.status = WAITING_STATUS
     self.assertFalse(ent.is_ready())
     ent_dep.status = DONE
     ent_dep2.status = DONE
     self.assertTrue(ent.is_ready())
示例#28
0
 def test_eval_deps_warnings(self):
     """eval_deps_status() is DONE with REQUIRE_WEAK on error"""
     service = BaseEntity("test_service")
     serv_a = BaseEntity("A")
     serv_b = BaseEntity("B")
     service.add_dep(serv_a, REQUIRE_WEAK)
     service.add_dep(serv_b, REQUIRE_WEAK)
     serv_a.status = DONE
     serv_b.status = ERROR
     self.assertEqual(service.eval_deps_status(), DONE)
     serv_b.status = DEP_ERROR
     serv_a.status = TIMEOUT
     self.assertEqual(service.eval_deps_status(), DONE)
示例#29
0
 def test_search_deps(self):
     """Test method search_deps"""
     ent = BaseEntity('test_service')
     ent_a = BaseEntity('A')
     ent_b = BaseEntity('B')
     ent.add_dep(ent_a)
     ent.add_dep(ent_b, CHECK)
     self.assertEqual(len(ent.search_deps()), 2)
     self.assertEqual(len(ent.search_deps([NO_STATUS])), 2)
     ent_c = BaseEntity('C')
     ent_c.status = DONE
     ent.add_dep(ent_c)
     self.assertEqual(len(ent.search_deps([NO_STATUS])), 2)
     self.assertEqual(len(ent.search_deps([NO_STATUS, DONE])), 3)
示例#30
0
    def test_longname(self):
        """ """
        # No dep, no desc
        ent1 = BaseEntity('alpha')
        self.assertEqual(ent1.longname(), "alpha")

        # Desc, no dep
        ent1.desc = "small description"
        self.assertEqual(ent1.longname(), "alpha - small description")

        # Desc and dep
        ent2 = BaseEntity('beta')
        ent2.desc = "another description"
        ent2.parent = ent1
        self.assertEqual(ent2.longname(), "alpha.beta - another description")