Beispiel #1
0
    def rmttest_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_requirement(req1)
        req2 = Requirement('''Name: B
Type: requirement
Depends on: A''', 'B', None, imod, config)
        reqset.add_requirement(req2)
        config.set_depends_on()

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

        self.assertEqual([],
                         reqset.get_requirement("A").incoming_as_named_list())
        self.assertEqual(["B"],
                         reqset.get_requirement("A").outgoing_as_named_list())
        self.assertEqual(["A"],
                         reqset.get_requirement("B").incoming_as_named_list())
        self.assertEqual([],
                         reqset.get_requirement("B").outgoing_as_named_list())
Beispiel #2
0
    def rmttest_neg_solved_by_to_nonex_req(self):
        "'Solved by' points to a non existing requirement"
        mstderr = StringIO()
        init_logger(mstderr)

        config = TestConfig()
        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement''', 'A', None, None, None)
        reqset.add_requirement(req1)
        req2 = Requirement('''Name: B
Type: requirement
Solved by: C''', 'B', None, None, None)
        reqset.add_requirement(req2)

        config.set_solved_by()
        rdep = RDepSolvedBy(config)
        status = rdep.rewrite(reqset)

        assert not status
        lstderr = hide_volatile(mstderr.getvalue())
        tear_down_log_handler()
        result_expected \
            = "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" \
            "__resolve_solved_by_one_req_deps;===LINENO===; " \
            "74:B:'Solved by' points to a non-existing requirement 'C'\n"
        assert result_expected == lstderr
Beispiel #3
0
    def rmttest_neg_point_to_self(self):
        "'Solved by' points to same requirement"
        mstderr = StringIO()
        init_logger(mstderr)

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

        assert not status
        lstderr = hide_volatile(mstderr.getvalue())
        tear_down_log_handler()
        result_expected \
            = "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" \
            "__resolve_solved_by_one_req_deps;===LINENO===; " \
            "75:B:'Solved by' points to the requirement itself\n"
        assert result_expected == lstderr
Beispiel #4
0
    def rmttest_neg_point_to_self(self):
        "'Solved by' points to same requirement"
        mstderr = StringIO()
        init_logger(mstderr)

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

        self.assertFalse(status)
        lstderr = hide_volatile(mstderr.getvalue())
        tear_down_log_handler()
        result_expected \
            = "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" \
            "__resolve_solved_by_one_req_deps;===LINENO===; " \
            "75:B:'Solved by' points to the requirement itself\n"
        self.assertEquals(result_expected, lstderr)
Beispiel #5
0
    def rmttest_positive_01(self):
        """Requirement contains a tag where no handler exists"""
        mstderr = StringIO()
        init_logger(mstderr)

        test_config = TestConfig()
        test_config.set_solved_by()
        mods = InputModules(test_config)

        reqs = RequirementSet(None)
        req = Requirement("Hubbel: bubbel", "hubbel", reqs, mods, test_config)
        reqs.add_requirement(req)
        reqs._handle_modules(mods)

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

        lstderr_last_two_lines = lstderr.split("\n")[-3:-1]

        assert result_expected == lstderr_last_two_lines
Beispiel #6
0
    def rmttest_positive_01(self):
        """Requirement contains a tag where no handler exists"""
        mstderr = StringIO()
        init_logger(mstderr)

        test_config = TestConfig()
        test_config.set_solved_by()
        mods = InputModules(test_config)

        reqs = RequirementSet(None)
        req = Requirement("Hubbel: bubbel", "hubbel",
                          reqs, mods, test_config)
        reqs.add_requirement(req)
        reqs._handle_modules(mods)

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

        lstderr_last_two_lines = lstderr.split("\n")[-3:-1]

        assert result_expected == lstderr_last_two_lines
Beispiel #7
0
    def rmttest_neg_empty_solved_by(self):
        "Normal requirement has empty 'Solved by'"
        mstderr = StringIO()
        init_logger(mstderr)

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

        assert not status
        lstderr = hide_volatile(mstderr.getvalue())
        tear_down_log_handler()
        result_expected \
            = "===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;" \
            "__resolve_solved_by_one_req_deps;===LINENO===; " \
            "77:B:'Solved by' field has length 0\n"
        assert result_expected == lstderr
Beispiel #8
0
    def rmttest_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_requirement(req1)
        config.set_depends_on()

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

        assert not status
    def rmttest_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_requirement(req1)
        config.set_depends_on()

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

        assert not status
    def rmttest_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_requirement(req1)
        req2 = Requirement('''Name: B
Type: requirement''', 'B', None, imod, config)
        reqset.add_requirement(req2)
        config.set_depends_on()

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

        assert not status
Beispiel #11
0
    def rmttest_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_requirement(req1)
        req2 = Requirement('''Name: B
Type: requirement''', 'B', None, imod, config)
        reqset.add_requirement(req2)
        config.set_depends_on()

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

        assert not status
Beispiel #12
0
    def rmttest_negative_07(self):
        "'Depends on' points to same requirement"
        config = TestConfig()

        imod = InputModules(config)

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

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

        self.assertFalse(status)
Beispiel #13
0
    def rmttest_positive_02(self):
        "Three node digraph C -> B -> A"
        config = TestConfig()
        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement
Solved by: B''', 'A', None, None, None)
        reqset.add_requirement(req1)
        req2 = Requirement('''Name: B
Type: requirement
Solved by: C''', 'B', None, None, None)
        reqset.add_requirement(req2)
        req3 = Requirement('''Name: C
Type: requirement''', 'C', None, None, None)
        reqset.add_requirement(req3)
        reqset.resolve_solved_by()
        reqset.find_master_nodes()
        reqset.build_named_nodes()

        reqset.graph_master_node = reqset.get_named_node("A")
        reqset.get_named_node("A").set_value("Factor", 1.0)
        reqset.get_named_node("B").set_value("Factor", 0.8)
        reqset.get_named_node("C").set_value("Factor", 0.5)

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

        assert 1.0 == reqset.get_named_node("A").get_value("Priority")
        assert 0.8 == reqset.get_named_node("B").get_value("Priority")
        assert 0.4 == reqset.get_named_node("C").get_value("Priority")
Beispiel #14
0
    def rmttest_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_requirement(req1)
        req2 = Requirement('''Name: B
Type: requirement
Depends on: A''', 'B', None, imod, config)
        reqset.add_requirement(req2)
        config.set_depends_on()
        req3 = Requirement('''Name: C
Type: requirement
Depends on: A B''', 'C', None, imod, config)
        reqset.add_requirement(req3)
        config.set_depends_on()

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

        assert [] == reqset.get_requirement("A").incoming_as_named_list()
        # There are two possible valid results
        assert reqset.get_requirement("A").outgoing_as_named_list() \
            in [["C", "B"], ["B", "C"]]
        assert ["A"] == reqset.get_requirement("B").incoming_as_named_list()
        assert ["C"] == reqset.get_requirement("B").outgoing_as_named_list()
        assert ["A", "B"] == reqset.get_requirement(
            "C").incoming_as_named_list()
        assert [] == reqset.get_requirement("C").outgoing_as_named_list()
    def rmttest_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_requirement(req1)
        req2 = Requirement('''Name: B
Type: requirement
Depends on: A''', 'B', None, imod, config)
        reqset.add_requirement(req2)
        config.set_depends_on()
        req3 = Requirement('''Name: C
Type: requirement
Depends on: A B''', 'C', None, imod, config)
        reqset.add_requirement(req3)
        config.set_depends_on()

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

        assert [] == reqset.get_requirement("A").incoming_as_named_list()
        # There are two possible valid results
        assert reqset.get_requirement("A").outgoing_as_named_list() \
            in [["C", "B"], ["B", "C"]]
        assert ["A"] == reqset.get_requirement("B").incoming_as_named_list()
        assert ["C"] == reqset.get_requirement("B").outgoing_as_named_list()
        assert ["A",
                "B"] == reqset.get_requirement("C").incoming_as_named_list()
        assert [] == reqset.get_requirement("C").outgoing_as_named_list()
    def rmttest_positive_02(self):
        "Three node digraph C -> B -> A"
        config = TestConfig()
        reqset = RequirementSet(config)
        req1 = Requirement('''Name: A
Type: master requirement
Solved by: B''', 'A', None, None, None)
        reqset.add_requirement(req1)
        req2 = Requirement('''Name: B
Type: requirement
Solved by: C''', 'B', None, None, None)
        reqset.add_requirement(req2)
        req3 = Requirement('''Name: C
Type: requirement''', 'C', None, None, None)
        reqset.add_requirement(req3)
        reqset.resolve_solved_by()
        reqset.find_master_nodes()
        reqset.build_named_nodes()

        reqset.graph_master_node = reqset.get_named_node("A")
        reqset.get_named_node("A").set_value("Factor", 1.0)
        reqset.get_named_node("B").set_value("Factor", 0.8)
        reqset.get_named_node("C").set_value("Factor", 0.5)

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

        assert 1.0 == reqset.get_named_node("A").get_value("Priority")
        assert 0.8 == reqset.get_named_node("B").get_value("Priority")
        assert 0.4 == reqset.get_named_node("C").get_value("Priority")
Beispiel #17
0
    def rmttest_positive_02(self):
        "Requirement contains a tag where no handler exists - multiple tags"
        mstderr = StringIO()
        init_logger(mstderr)

        tc = TestConfig()
        tc.set_solved_by()
        mods = InputModules(tc)

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

        lstderr = hide_volatile(mstderr.getvalue())
        tear_down_log_handler()

        lstderr_last_two_lines = lstderr.split("\n")[-3:-1]

        result0 \
            = re.match(
                "^===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;"
                "__all_tags_handled;===LINENO===; 57:InvalidTagReq:"
                "No tag handler found "
                "for tag\(s\) '\[.*\]' - Hint: typo in tag\(s\)\?$",
                lstderr_last_two_lines[0])
        result1 \
            = re.match(
                "^===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;"
                "_handle_modules;"
                "===LINENO===; 56:There were errors encountered "
                "during parsing "
                "and checking - can't continue.$",
                lstderr_last_two_lines[1])

        assert result0
        assert result1
Beispiel #18
0
    def rmttest_positive_02(self):
        "Requirement contains a tag where no handler exists - multiple tags"
        mstderr = StringIO()
        init_logger(mstderr)

        tc = TestConfig()
        tc.set_solved_by()
        mods = InputModules(tc)

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

        lstderr = hide_volatile(mstderr.getvalue())
        tear_down_log_handler()

        lstderr_last_two_lines = lstderr.split("\n")[-3:-1]

        result0 \
            = re.match(
                r"^===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;"
                r"__all_tags_handled;===LINENO===; 57:InvalidTagReq:"
                r"No tag handler found "
                r"for tag\(s\) '\[.*\]' - Hint: typo in tag\(s\)\?$",
                lstderr_last_two_lines[0])
        result1 \
            = re.match(
                r"^===DATETIMESTAMP===;rmtoo;ERROR;RequirementSet;"
                "_handle_modules;"
                "===LINENO===; 56:There were errors encountered "
                "during parsing "
                "and checking - can't continue.$",
                lstderr_last_two_lines[1])

        assert result0
        assert result1
Beispiel #19
0
    def rmttest_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_requirement(req1)
        req2 = Requirement('''Name: B
Type: requirement
Depends on: A''', 'B', None, imod, config)
        reqset.add_requirement(req2)
        config.set_depends_on()

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

        assert [] == reqset.get_requirement("A").incoming_as_named_list()
        assert ["B"] == reqset.get_requirement("A").outgoing_as_named_list()
        assert ["A"] == reqset.get_requirement("B").incoming_as_named_list()
        assert [] == reqset.get_requirement("B").outgoing_as_named_list()