Ejemplo n.º 1
0
    def test_invalid(self, element, tree):
        element.append(ATOME('published', 'garbage'))

        logger = RecordingLogger()
        entry = self.parse(tree, wrap_recording_logger(logger))
        assert entry.published is None
        assert logger.messages == [{
            'event': 'invalid-published',
            'cause': 'invalid-date',
            'date': 'garbage',
            'source': None,
            'lineno': None
        }]
Ejemplo n.º 2
0
    def test_invalid(self, qname, element, tree):
        element.remove(element.find(qname))
        element.append(ATOME('updated', 'garbage'))

        logger = RecordingLogger()
        feed = atomrss.atom.parse_tree(tree, wrap_recording_logger(logger))
        assert feed.entries == []
        assert logger.messages == [{
            'event': 'invalid-entry',
            'cause': 'invalid-date',
            'date': 'garbage',
            'lineno': None,
            'source': None
        }]
Ejemplo n.º 3
0
    def test_invalid_length(self, element, enclosure_element, tree):
        enclosure_element.attrib['length'] = 'garbage'
        element.append(enclosure_element)

        logger = RecordingLogger()
        item = self.parse(tree, logger=wrap_recording_logger(logger))
        assert item.enclosure is None
        assert logger.messages == [{
            'event': 'invalid-enclosure',
            'cause': 'invalid-length',
            'length': 'garbage',
            'rss_version': '2.0',
            'lineno': None,
            'source': None
        }]
Ejemplo n.º 4
0
    def test_missing_type(self, element, enclosure_element, tree):
        del enclosure_element.attrib['type']
        element.append(enclosure_element)

        logger = RecordingLogger()
        item = self.parse(tree, logger=wrap_recording_logger(logger))
        assert item.enclosure is None
        assert logger.messages == [{
            'event': 'invalid-enclosure',
            'cause': 'missing-attribute',
            'attribute': 'type',
            'rss_version': '2.0',
            'lineno': None,
            'source': None
        }]
Ejemplo n.º 5
0
    def test_missing(self, element, tree):
        element.remove(element.find('title'))
        assert element.find('description') is None

        logger = RecordingLogger()
        feed = atomrss.rss.parse_tree(tree, wrap_recording_logger(logger))
        assert feed.channel.items == []
        assert logger.messages == [{
            'event': 'invalid-item',
            'cause': 'missing-element',
            'element': '<title> or <description>',
            'rss_version': '2.0',
            'source': None,
            'lineno': None
        }]
Ejemplo n.º 6
0
    def test_missing(self, qname, element, tree):
        element.remove(element.find(qname))

        logger = RecordingLogger()
        feed = atomrss.atom.parse_tree(tree, wrap_recording_logger(logger))
        assert feed.entries == []
        assert logger.messages == [{
            'event':
            'invalid-entry',
            'cause':
            'missing-element',
            'element':
            '<atom:{}>'.format(self.element_name),
            'source':
            None,
            'lineno':
            None
        }]
Ejemplo n.º 7
0
def test_check_patterns():
    # "eof"
    action = TestMonitorAction()
    action.logger = RecordingLogger()
    with pytest.raises(ConnectionClosedError):
        assert action.check_patterns("eof", None) is False
    assert action.logger.logs == [
        ("warning", "err: lava test monitoring reached end of file", {})
    ]
    assert action.errors == ["lava test monitoring reached end of file"]
    assert action.results == {"status": "failed"}

    # "timeout"
    action = TestMonitorAction()
    action.logger = RecordingLogger()
    assert action.check_patterns("timeout", None) is False
    assert action.logger.logs == [
        ("warning", "err: lava test monitoring has timed out", {})
    ]
    assert action.errors == ["lava test monitoring has timed out"]
    assert action.results == {"status": "failed"}

    # "end"
    action = TestMonitorAction()
    action.logger = RecordingLogger()
    assert action.check_patterns("end", None) is False
    assert action.logger.logs == [
        ("info", "ok: end string found, lava test monitoring stopped", {})
    ]
    assert action.errors == []
    assert action.results == {"status": "passed"}

    # "test_result"
    action = TestMonitorAction()
    action.test_suite_name = "monitor-1"
    action.logger = RecordingLogger()
    action.level = "3.1"
    data = {"result": "pass", "test_case_id": "hello world"}
    assert action.check_patterns("test_result", MockConnection(data)) is True
    assert action.logger.logs == [
        ("info", "ok: test case found", {}),
        ("debug", "test_case_id: %s", "hello_world", {}),
        (
            "results",
            {
                "definition": "monitor-1",
                "case": "hello_world",
                "level": "3.1",
                "result": "pass",
                "extra": {
                    "test_case_id": "hello world"
                },
            },
            {},
        ),
    ]
    assert action.results == {}

    # "test_result" with "measurement" and "units"
    action = TestMonitorAction()
    action.test_suite_name = "monitor-1"
    action.logger = RecordingLogger()
    action.level = "3.1"
    data = {
        "result": "pass",
        "test_case_id": "hello world",
        "measurement": 1.3,
        "units": "s",
    }
    assert action.check_patterns("test_result", MockConnection(data)) is True
    assert action.logger.logs == [
        ("info", "ok: test case found", {}),
        ("debug", "test_case_id: %s", "hello_world", {}),
        (
            "results",
            {
                "definition": "monitor-1",
                "case": "hello_world",
                "level": "3.1",
                "result": "pass",
                "extra": {
                    "test_case_id": "hello world"
                },
                "measurement": 1.3,
                "units": "s",
            },
            {},
        ),
    ]
    assert action.results == {}

    # "test_result" with fixupdict
    action = TestMonitorAction()
    action.test_suite_name = "monitor-1"
    action.logger = RecordingLogger()
    action.level = "3.1"
    action.fixupdict = {"PASS": "******"}
    data = {"result": "PASS", "test_case_id": "hello world"}
    assert action.check_patterns("test_result", MockConnection(data)) is True
    assert action.logger.logs == [
        ("info", "ok: test case found", {}),
        ("debug", "test_case_id: %s", "hello_world", {}),
        (
            "results",
            {
                "definition": "monitor-1",
                "case": "hello_world",
                "level": "3.1",
                "result": "pass",
                "extra": {
                    "test_case_id": "hello world"
                },
            },
            {},
        ),
    ]

    # "test_result" with invalid result
    action = TestMonitorAction()
    action.test_suite_name = "monitor-1"
    action.logger = RecordingLogger()
    action.level = "3.1"
    data = {"result": "PASS", "test_case_id": "hello world"}
    assert action.check_patterns("test_result", MockConnection(data)) is True
    assert action.logger.logs == [
        ("info", "ok: test case found", {}),
        ("error", "error: bad test results: %s", "PASS", {}),
    ]

    # no "test_result", just "test_case_id" and "measurement"
    action = TestMonitorAction()
    action.test_suite_name = "monitor-1"
    action.logger = RecordingLogger()
    action.level = "3.1"
    data = {"test_case_id": "hello world", "measurement": 45.6}
    assert action.check_patterns("test_result", MockConnection(data)) is True
    assert action.logger.logs == [
        ("info", "ok: test case found", {}),
        ("debug", "test_case_id: %s", "hello_world", {}),
        (
            "results",
            {
                "definition": "monitor-1",
                "case": "hello_world",
                "level": "3.1",
                "result": "pass",
                "measurement": 45.6,
                "extra": {
                    "test_case_id": "hello world"
                },
            },
            {},
        ),
    ]

    # no "test_result", just "test_case_id", "measurement" and units
    action = TestMonitorAction()
    action.test_suite_name = "monitor-1"
    action.logger = RecordingLogger()
    action.level = "3.1"
    data = {"test_case_id": "hello world", "measurement": 45.6, "units": "ms"}
    assert action.check_patterns("test_result", MockConnection(data)) is True
    assert action.logger.logs == [
        ("info", "ok: test case found", {}),
        ("debug", "test_case_id: %s", "hello_world", {}),
        (
            "results",
            {
                "definition": "monitor-1",
                "case": "hello_world",
                "level": "3.1",
                "result": "pass",
                "measurement": 45.6,
                "units": "ms",
                "extra": {
                    "test_case_id": "hello world"
                },
            },
            {},
        ),
    ]