Exemple #1
0
    def test_neg_point_to_self(self):
        "'Solved by' points to same requirement"
        mstderr = StringIO.StringIO()
        init_logger(mstderr)

        config = TestConfig()
        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement''', 'A', None, None, None)
        reqset.add_node(RequirementDNode(req1))
        req2 = Requirement('''Name: B
Type: requirement
Solved by: B''', 'B', None, None, None)
        reqset.add_node(RequirementDNode(req2))
        config.set_solved_by()
        rdep = RDepSolvedBy(config)
        status = rdep.rewrite(reqset)

        self.assertFalse(status)
        lstderr = hide_lineno(hide_timestamp(mstderr.getvalue()))
        tear_down_log_handler()
        result_expected = "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" \
        "__resolve_solved_by_one_req;===SOURCELINENO===; 75:B:'Solved by' " \
        "points to the requirement itself\n"
        self.assertEquals(result_expected, lstderr)
Exemple #2
0
    def test_positive_01(self):
        "Two node one edge digraph B -> A"
        config = TestConfig()

        imod = InputModules("..", config)

        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement''', 'A', None, imod, config)
        reqset.add_node(RequirementDNode(req1))
        req2 = Requirement('''Name: B
Type: requirement
Depends on: A''', 'B', None, imod, config)
        reqset.add_node(RequirementDNode(req2))
        config.set_depends_on()

        rdep = RDepDependsOn(config)
        rdep.rewrite(reqset)

        assert (reqset.get_requirement("A").get_incoming_as_named_list() == [])
        assert (reqset.get_requirement("A").get_outgoing_as_named_list() == [
            "B"
        ])
        assert (reqset.get_requirement("B").get_incoming_as_named_list() == [
            "A"
        ])
        assert (reqset.get_requirement("B").get_outgoing_as_named_list() == [])
Exemple #3
0
    def test_positive_02(self):
        "Requirement contains a tag where no handler exists - multiple tags"
        mstderr = StringIO.StringIO()
        init_logger(mstderr)

        mods = InputModules(os.path.join(mod_base_dir, "modules08"), {}, [],
                            mods_list("modules08", mod_base_dir))

        reqs = RequirementSet(None)
        req = Requirement("Hubbel: bubbel\nSiebel: do", "InvalidTagReq", reqs,
                          mods, TestConfig())
        reqs.add_node(RequirementDNode(req))
        reqs._handle_modules(mods)

        lstderr = hide_timestamp(mstderr.getvalue())
        lstderr = hide_lineno(lstderr)
        tear_down_log_handler()
        result_expected = "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" \
        "__all_tags_handled;===SOURCELINENO===; 57:InvalidTagReq:No tag " \
        "handler found " \
        "for tag(s) '['Siebel', 'Hubbel']' - Hint: typo in tag(s)?\n" \
        "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;_handle_modules;" \
        "===SOURCELINENO===; 56:There were errors encountered during parsing " \
        "and checking " \
        "- can't continue.\n"

        self.assertEquals(result_expected, lstderr)
Exemple #4
0
    def test_positive_01(self):
        "Two node one edge digraph B -> A"
        config = TestConfig()
        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement
Solved by: B''', 'A', None, None, None)

        reqset.add_node(RequirementDNode(req1))
        req2 = Requirement('''Name: B
Type: requirement''', 'B', None, None, None)
        reqset.add_node(RequirementDNode(req2))
        reqset.resolve_solved_by()
        reqset.find_master_nodes()
        reqset.graph_master_node = reqset.find("A")
        reqset.find("A").get_requirement().set_value("Factor", 1.0)
        reqset.find("B").get_requirement().set_value("Factor", 0.8)

        rdep = RDepPriority(config)
        rdep.rewrite(reqset)

        assert (
            reqset.find("A").get_requirement().get_value("Priority") == 1.0)
        assert (
            reqset.find("B").get_requirement().get_value("Priority") == 0.8)
Exemple #5
0
    def test_positive_01(self):
        "Two node one edge digraph B -> A"
        config = TestConfig()
        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement
Solved by: B''', 'A', None, None, None)

        reqset.add_node(RequirementDNode(req1))
        req2 = Requirement('''Name: B
Type: requirement''', 'B', None, None, None)
        reqset.add_node(RequirementDNode(req2))
        reqset.resolve_solved_by()
        reqset.find_master_nodes()
        reqset.graph_master_node = reqset.find("A")
        reqset.find("A").get_requirement().set_value("Factor", 1.0)
        reqset.find("B").get_requirement().set_value("Factor", 0.8)

        rdep = RDepPriority(config)
        rdep.rewrite(reqset)

        assert(reqset.find("A").get_requirement()
               .get_value("Priority") == 1.0)
        assert(reqset.find("B").get_requirement()
               .get_value("Priority") == 0.8)
    def test_neg_point_to_self(self):
        "'Solved by' points to same requirement"
        mstderr = StringIO.StringIO()
        init_logger(mstderr)

        config = TestConfig()
        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement''', 'A', None, None, None)
        reqset.add_node(RequirementDNode(req1))
        req2 = Requirement('''Name: B
Type: requirement
Solved by: B''', 'B', None, None, None)
        reqset.add_node(RequirementDNode(req2))
        config.set_solved_by()
        rdep = RDepSolvedBy(config)
        status = rdep.rewrite(reqset)

        self.assertFalse(status)
        lstderr = hide_lineno(hide_timestamp(mstderr.getvalue()))
        tear_down_log_handler()
        result_expected = "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" \
        "__resolve_solved_by_one_req;===SOURCELINENO===; 75:B:'Solved by' " \
        "points to the requirement itself\n"
        self.assertEquals(result_expected, lstderr)
Exemple #7
0
    def test_positive_02(self):
        "Requirement contains a tag where no handler exists - multiple tags"
        mstderr = StringIO.StringIO()
        init_logger(mstderr)

        mods = InputModules(os.path.join(mod_base_dir, "modules08"),
                       {}, [], mods_list("modules08", mod_base_dir))

        reqs = RequirementSet(None)
        req = Requirement("Hubbel: bubbel\nSiebel: do", "InvalidTagReq",
                          reqs, mods, TestConfig())
        reqs.add_node(RequirementDNode(req))
        reqs._handle_modules(mods)

        lstderr = hide_timestamp(mstderr.getvalue())
        lstderr = hide_lineno(lstderr)
        tear_down_log_handler()
        result_expected = "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" \
        "__all_tags_handled;===SOURCELINENO===; 57:InvalidTagReq:No tag " \
        "handler found " \
        "for tag(s) '['Siebel', 'Hubbel']' - Hint: typo in tag(s)?\n" \
        "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;_handle_modules;" \
        "===SOURCELINENO===; 56:There were errors encountered during parsing " \
        "and checking " \
        "- can't continue.\n"

        self.assertEquals(result_expected, lstderr)
Exemple #8
0
    def test_negative_01(self):
        "Master requirement with Depends on field"
        config = TestConfig()

        imod = InputModules("..", config)

        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement
Depends on: A''', 'A', None, imod, config)
        reqset.add_node(RequirementDNode(req1))
        config.set_depends_on()

        rdep = RDepDependsOn(config)
        status = rdep.rewrite(reqset)

        assert(status == False)
Exemple #9
0
    def test_negative_01(self):
        "Master requirement with Depends on field"
        config = TestConfig()

        imod = InputModules("..", config)

        reqset = RequirementSet(config)
        req1 = Requirement(
            '''Name: A
Type: master requirement
Depends on: A''', 'A', None, imod, config)
        reqset.add_node(RequirementDNode(req1))
        config.set_depends_on()

        rdep = RDepDependsOn(config)
        status = rdep.rewrite(reqset)

        assert (status == False)
Exemple #10
0
    def test_negative_03(self):
        "Normal requirement has no 'Depends on'"
        config = TestConfig()

        imod = InputModules("..", config)

        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement''', 'A', None, imod, config)
        reqset.add_node(RequirementDNode(req1))
        req2 = Requirement('''Name: B
Type: requirement''', 'B', None, imod, config)
        reqset.add_node(RequirementDNode(req2))
        config.set_depends_on()

        rdep = RDepDependsOn(config)
        status = rdep.rewrite(reqset)

        assert (status == False)
Exemple #11
0
    def test_negative_03(self):
        "Normal requirement has no 'Depends on'"
        config = TestConfig()

        imod = InputModules("..", config)

        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement''', 'A', None, imod, config)
        reqset.add_node(RequirementDNode(req1))
        req2 = Requirement('''Name: B
Type: requirement''', 'B', None, imod, config)
        reqset.add_node(RequirementDNode(req2))
        config.set_depends_on()

        rdep = RDepDependsOn(config)
        status = rdep.rewrite(reqset)

        assert(status == False)
Exemple #12
0
    def test_positive_02(self):
        "Three node one edge digraph B -> A, C -> A and C -> B"
        config = TestConfig()

        imod = InputModules("..", config)

        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement''', 'A', None, imod, config)
        reqset.add_node(RequirementDNode(req1))
        req2 = Requirement('''Name: B
Type: requirement
Depends on: A''', 'B', None, imod, config)
        reqset.add_node(RequirementDNode(req2))
        config.set_depends_on()
        req3 = Requirement('''Name: C
Type: requirement
Depends on: A B''', 'C', None, imod, config)
        reqset.add_node(RequirementDNode(req3))
        config.set_depends_on()

        rdep = RDepDependsOn(config)
        rdep.rewrite(reqset)

        assert(reqset.get_requirement("A").get_incoming_as_named_list() == [])
        assert(reqset.get_requirement("A").get_outgoing_as_named_list() == ["C", "B"])
        assert(reqset.get_requirement("B").get_incoming_as_named_list() == ["A"])
        assert(reqset.get_requirement("B").get_outgoing_as_named_list() == ["C"])
        assert(reqset.get_requirement("C").get_incoming_as_named_list() == ["A", "B"])
        assert(reqset.get_requirement("C").get_outgoing_as_named_list() == [])
Exemple #13
0
    def test_positive_03(self):
        "Four node digraph D -> B -> A and D -> C -> A"
        config = TestConfig()
        reqset = RequirementSet(config)
        req1 = Requirement(
            '''Name: A
Type: master requirement
Solved by: B C''', 'A', None, None, None)
        reqset.add_node(RequirementDNode(req1))
        req2 = Requirement('''Name: B
Type: requirement
Solved by: D''', 'B', None, None, None)
        reqset.add_node(RequirementDNode(req2))
        req3 = Requirement('''Name: C
Type: requirement
Solved by: D''', 'C', None, None, None)
        reqset.add_node(RequirementDNode(req3))
        req4 = Requirement('''Name: D
Type: requirement''', 'D', None, None, None)
        reqset.add_node(RequirementDNode(req4))
        reqset.resolve_solved_by()
        reqset.find_master_nodes()

        reqset.graph_master_node = reqset.find("A")
        reqset.find("A").get_requirement().set_value("Factor", 1.0)
        reqset.find("B").get_requirement().set_value("Factor", 0.2)
        reqset.find("C").get_requirement().set_value("Factor", 0.4)
        reqset.find("D").get_requirement().set_value("Factor", 0.5)

        rdep = RDepPriority(config)
        rdep.rewrite(reqset)

        assert (
            reqset.find("A").get_requirement().get_value("Priority") == 1.0)
        assert (
            reqset.find("B").get_requirement().get_value("Priority") == 0.2)
        assert (
            reqset.find("C").get_requirement().get_value("Priority") == 0.4)
        assert (
            reqset.find("D").get_requirement().get_value("Priority") == 0.2)
Exemple #14
0
    def test_positive_03(self):
        "Four node digraph D -> B -> A and D -> C -> A"
        config = TestConfig()
        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement
Solved by: B C''', 'A', None, None, None)
        reqset.add_node(RequirementDNode(req1))
        req2 = Requirement('''Name: B
Type: requirement
Solved by: D''', 'B', None, None, None)
        reqset.add_node(RequirementDNode(req2))
        req3 = Requirement('''Name: C
Type: requirement
Solved by: D''', 'C', None, None, None)
        reqset.add_node(RequirementDNode(req3))
        req4 = Requirement('''Name: D
Type: requirement''', 'D', None, None, None)
        reqset.add_node(RequirementDNode(req4))
        reqset.resolve_solved_by()
        reqset.find_master_nodes()

        reqset.graph_master_node = reqset.find("A")
        reqset.find("A").get_requirement().set_value("Factor", 1.0)
        reqset.find("B").get_requirement().set_value("Factor", 0.2)
        reqset.find("C").get_requirement().set_value("Factor", 0.4)
        reqset.find("D").get_requirement().set_value("Factor", 0.5)

        rdep = RDepPriority(config)
        rdep.rewrite(reqset)

        assert(reqset.find("A").get_requirement()
               .get_value("Priority") == 1.0)
        assert(reqset.find("B").get_requirement()
               .get_value("Priority") == 0.2)
        assert(reqset.find("C").get_requirement()
               .get_value("Priority") == 0.4)
        assert(reqset.find("D").get_requirement()
               .get_value("Priority") == 0.2)