forked from espressif/esp-idf
Merge branch 'ci/known-failure-fast-link' into 'master'
ci: added known failure cases fast link to report Closes RDT-1026 See merge request espressif/esp-idf!35566
This commit is contained in:
@@ -31,6 +31,7 @@ from .utils import format_permalink
|
||||
from .utils import get_artifacts_url
|
||||
from .utils import get_repository_file_url
|
||||
from .utils import is_url
|
||||
from .utils import known_failure_issue_jira_fast_link
|
||||
from .utils import load_known_failure_cases
|
||||
|
||||
|
||||
@@ -542,6 +543,7 @@ class TargetTestReportGenerator(ReportGenerator):
|
||||
'Failure Reason',
|
||||
f'Failures on your branch (40 latest testcases)',
|
||||
'Dut Log URL',
|
||||
'Create Known Failure Case Jira',
|
||||
'Job URL',
|
||||
'Grafana URL',
|
||||
],
|
||||
@@ -550,6 +552,10 @@ class TargetTestReportGenerator(ReportGenerator):
|
||||
(
|
||||
'Failures on your branch (40 latest testcases)',
|
||||
lambda item: f"{getattr(item, 'latest_failed_count', '')} / {getattr(item, 'latest_total_count', '')}",
|
||||
),
|
||||
(
|
||||
'Create Known Failure Case Jira',
|
||||
known_failure_issue_jira_fast_link
|
||||
)
|
||||
],
|
||||
)
|
||||
@@ -562,6 +568,7 @@ class TargetTestReportGenerator(ReportGenerator):
|
||||
'Failure Reason',
|
||||
'Cases that failed in other branches as well (40 latest testcases)',
|
||||
'Dut Log URL',
|
||||
'Create Known Failure Case Jira',
|
||||
'Job URL',
|
||||
'Grafana URL',
|
||||
],
|
||||
@@ -570,6 +577,10 @@ class TargetTestReportGenerator(ReportGenerator):
|
||||
(
|
||||
'Cases that failed in other branches as well (40 latest testcases)',
|
||||
lambda item: f"{getattr(item, 'latest_failed_count', '')} / {getattr(item, 'latest_total_count', '')}",
|
||||
),
|
||||
(
|
||||
'Create Known Failure Case Jira',
|
||||
known_failure_issue_jira_fast_link
|
||||
)
|
||||
],
|
||||
)
|
||||
|
@@ -63,6 +63,7 @@
|
||||
<th>Failure Reason</th>
|
||||
<th>Cases that failed in other branches as well (40 latest testcases)</th>
|
||||
<th>Dut Log URL</th>
|
||||
<th>Create Known Failure Case Jira</th>
|
||||
<th>Job URL</th>
|
||||
<th>Grafana URL</th>
|
||||
</tr>
|
||||
@@ -74,6 +75,7 @@
|
||||
<td>failed on setup with "EOFError"</td>
|
||||
<td>0 / 40</td>
|
||||
<td><a href="https://url/esp/esp-idf/pytest-embedded/2024-07-01_10-53-05-207900/('esp32h2', 'esp32h2').('defaults', 'defaults').test_i2c_multi_device/dut.txt">link</a></td>
|
||||
<td><a href="https://jira.com/secure/CreateIssueDetails!init.jspa?pid=10514&issuetype=10004&summary=%5BTest+Case%5D%28%27esp32h2%27%2C+%27esp32h2%27%29.%28%27defaults%27%2C+%27defaults%27%29.test_i2c_multi_device&description=job_url%3A+Not%2520found%0A%0Adut_log_url%3A+https%3A%2F%2Furl%2Fesp%2Fesp-idf%2Fpytest-embedded%2F2024-07-01_10-53-05-207900%2F%2528%2527esp32h2%2527%252C%2520%2527esp32h2%2527%2529.%2528%2527defaults%2527%252C%2520%2527defaults%2527%2529.test_i2c_multi_device%2Fdut.txt%0A%0Aci_dashboard_url%3A+https%3A%2F%2Ftest_dashboard_host%2Fd%2FUcg477Fnz%2Fcase-list%3Fvar-case_id%3D%2528%2527esp32h2%2527%252C%2520%2527esp32h2%2527%2529.%2528%2527defaults%2527%252C%2520%2527defaults%2527%2529.test_i2c_multi_device%0A%0A&components=11909&priority=3&assignee=zhangjianwen&versions=17602">Create</a></td>
|
||||
<td>Not found</td>
|
||||
<td><a href="https://test_dashboard_host/d/Ucg477Fnz/case-list?var-case_id=%28%27esp32h2%27%2C%20%27esp32h2%27%29.%28%27defaults%27%2C%20%27defaults%27%29.test_i2c_multi_device">link</a></td>
|
||||
</tr>
|
||||
@@ -83,6 +85,7 @@
|
||||
<td>pexpect.exceptions.TIMEOUT: Not found "Press ENTER to see the list of tests" Bytes in current buffer (color code eliminated): ce710,len:0x2afc entry 0x403cc710 Please check the full log here: /builds/espressif/esp-idf/pytest_embedded/2024-05-17_17-50-04/esp32c3.release.test_esp_timer/dut.txt</td>
|
||||
<td>0 / 40</td>
|
||||
<td><a href="https://url/esp/esp-idf/pytest-embedded/2024-07-01_10-53-05-207900/esp32c3.release.test_esp_timer/dut.txt">link</a></td>
|
||||
<td><a href="https://jira.com/secure/CreateIssueDetails!init.jspa?pid=10514&issuetype=10004&summary=%5BTest+Case%5Desp32c3.release.test_esp_timer&description=job_url%3A+Not%2520found%0A%0Adut_log_url%3A+https%3A%2F%2Furl%2Fesp%2Fesp-idf%2Fpytest-embedded%2F2024-07-01_10-53-05-207900%2Fesp32c3.release.test_esp_timer%2Fdut.txt%0A%0Aci_dashboard_url%3A+https%3A%2F%2Ftest_dashboard_host%2Fd%2FUcg477Fnz%2Fcase-list%3Fvar-case_id%3Desp32c3.release.test_esp_timer%0A%0A&components=11909&priority=3&assignee=zhangjianwen&versions=17602">Create</a></td>
|
||||
<td>Not found</td>
|
||||
<td><a href="https://test_dashboard_host/d/Ucg477Fnz/case-list?var-case_id=esp32c3.release.test_esp_timer">link</a></td>
|
||||
</tr>
|
||||
@@ -92,6 +95,7 @@
|
||||
<td>pexpect.exceptions.TIMEOUT: Not found "Press ENTER to see the list of tests" Bytes in current buffer (color code eliminated): 0 d4 000 00x0000 x0000x00 000000 0 Please check the full log here: /builds/espressif/esp-idf/pytest_embedded/2024-05-17_17-50-04/esp32c3.default.test_wpa_supplicant_ut/dut.txt</td>
|
||||
<td>0 / 40</td>
|
||||
<td><a href="https://url/esp/esp-idf/pytest-embedded/2024-07-01_10-53-05-207900/esp32c3.default.test_wpa_supplicant_ut/dut.txt">link</a></td>
|
||||
<td><a href="https://jira.com/secure/CreateIssueDetails!init.jspa?pid=10514&issuetype=10004&summary=%5BTest+Case%5Desp32c3.default.test_wpa_supplicant_ut&description=job_url%3A+Not%2520found%0A%0Adut_log_url%3A+https%3A%2F%2Furl%2Fesp%2Fesp-idf%2Fpytest-embedded%2F2024-07-01_10-53-05-207900%2Fesp32c3.default.test_wpa_supplicant_ut%2Fdut.txt%0A%0Aci_dashboard_url%3A+https%3A%2F%2Ftest_dashboard_host%2Fd%2FUcg477Fnz%2Fcase-list%3Fvar-case_id%3Desp32c3.default.test_wpa_supplicant_ut%0A%0A&components=11909&priority=3&assignee=zhangjianwen&versions=17602">Create</a></td>
|
||||
<td>Not found</td>
|
||||
<td><a href="https://test_dashboard_host/d/Ucg477Fnz/case-list?var-case_id=esp32c3.default.test_wpa_supplicant_ut">link</a></td>
|
||||
</tr>
|
||||
@@ -101,6 +105,7 @@
|
||||
<td>failed on setup with "EOFError"</td>
|
||||
<td>3 / 40</td>
|
||||
<td><a href="https://url/esp/esp-idf/pytest-embedded/2024-07-01_10-53-05-207900/('esp32h2', 'esp32h2').('default', 'default').test_i2s_multi_dev/dut.txt">link</a></td>
|
||||
<td><a href="https://jira.com/secure/CreateIssueDetails!init.jspa?pid=10514&issuetype=10004&summary=%5BTest+Case%5D%28%27esp32h2%27%2C+%27esp32h2%27%29.%28%27default%27%2C+%27default%27%29.test_i2s_multi_dev&description=job_url%3A+Not%2520found%0A%0Adut_log_url%3A+https%3A%2F%2Furl%2Fesp%2Fesp-idf%2Fpytest-embedded%2F2024-07-01_10-53-05-207900%2F%2528%2527esp32h2%2527%252C%2520%2527esp32h2%2527%2529.%2528%2527default%2527%252C%2520%2527default%2527%2529.test_i2s_multi_dev%2Fdut.txt%0A%0Aci_dashboard_url%3A+https%3A%2F%2Ftest_dashboard_host%2Fd%2FUcg477Fnz%2Fcase-list%3Fvar-case_id%3D%2528%2527esp32h2%2527%252C%2520%2527esp32h2%2527%2529.%2528%2527default%2527%252C%2520%2527default%2527%2529.test_i2s_multi_dev%0A%0A&components=11909&priority=3&assignee=zhangjianwen&versions=17602">Create</a></td>
|
||||
<td>Not found</td>
|
||||
<td><a href="https://test_dashboard_host/d/Ucg477Fnz/case-list?var-case_id=%28%27esp32h2%27%2C%20%27esp32h2%27%29.%28%27default%27%2C%20%27default%27%29.test_i2s_multi_dev">link</a></td>
|
||||
</tr>
|
||||
@@ -110,6 +115,7 @@
|
||||
<td>AssertionError: Unity test failed</td>
|
||||
<td>3 / 40</td>
|
||||
<td><a href="https://url/esp/esp-idf/pytest-embedded/2024-07-01_10-53-05-207900/esp32c2.default.test_wpa_supplicant_ut/dut.txt">link</a></td>
|
||||
<td><a href="https://jira.com/secure/CreateIssueDetails!init.jspa?pid=10514&issuetype=10004&summary=%5BTest+Case%5Desp32c2.default.test_wpa_supplicant_ut&description=job_url%3A+Not%2520found%0A%0Adut_log_url%3A+https%3A%2F%2Furl%2Fesp%2Fesp-idf%2Fpytest-embedded%2F2024-07-01_10-53-05-207900%2Fesp32c2.default.test_wpa_supplicant_ut%2Fdut.txt%0A%0Aci_dashboard_url%3A+https%3A%2F%2Ftest_dashboard_host%2Fd%2FUcg477Fnz%2Fcase-list%3Fvar-case_id%3Desp32c2.default.test_wpa_supplicant_ut%0A%0A&components=11909&priority=3&assignee=zhangjianwen&versions=17602">Create</a></td>
|
||||
<td>Not found</td>
|
||||
<td><a href="https://test_dashboard_host/d/Ucg477Fnz/case-list?var-case_id=esp32c2.default.test_wpa_supplicant_ut">link</a></td>
|
||||
</tr>
|
||||
@@ -119,6 +125,7 @@
|
||||
<td>pexpect.exceptions.TIMEOUT: Not found "re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)" Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB16 Connecting.... Connecting.... esptool.py v4.7.0 Found 1 serial ports Chip is ESP32-C3 (QFN32) (revision v0.3) Features: WiFi, BLE, Embedded Flash 4MB... (total 6673 bytes) Please check the full log here: /builds/espressif/esp-idf/pytest_embedded/2024-05-17_17-50-04/esp32c3.512safe.test_wear_levelling/dut.txt</td>
|
||||
<td>3 / 40</td>
|
||||
<td><a href="https://url/esp/esp-idf/pytest-embedded/2024-07-01_10-53-05-207900/esp32c3.512safe.test_wear_levelling/dut.txt">link</a></td>
|
||||
<td><a href="https://jira.com/secure/CreateIssueDetails!init.jspa?pid=10514&issuetype=10004&summary=%5BTest+Case%5Desp32c3.512safe.test_wear_levelling&description=job_url%3A+Not%2520found%0A%0Adut_log_url%3A+https%3A%2F%2Furl%2Fesp%2Fesp-idf%2Fpytest-embedded%2F2024-07-01_10-53-05-207900%2Fesp32c3.512safe.test_wear_levelling%2Fdut.txt%0A%0Aci_dashboard_url%3A+https%3A%2F%2Ftest_dashboard_host%2Fd%2FUcg477Fnz%2Fcase-list%3Fvar-case_id%3Desp32c3.512safe.test_wear_levelling%0A%0A&components=11909&priority=3&assignee=zhangjianwen&versions=17602">Create</a></td>
|
||||
<td>Not found</td>
|
||||
<td><a href="https://test_dashboard_host/d/Ucg477Fnz/case-list?var-case_id=esp32c3.512safe.test_wear_levelling">link</a></td>
|
||||
</tr>
|
||||
@@ -128,6 +135,7 @@
|
||||
<td>pexpect.exceptions.TIMEOUT: Not found "re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)" Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB16 Connecting.... Connecting.... esptool.py v4.7.0 Found 1 serial ports Chip is ESP32-C3 (QFN32) (revision v0.3) Features: WiFi, BLE, Embedded Flash 4MB... (total 24528 bytes) Please check the full log here: /builds/espressif/esp-idf/pytest_embedded/2024-05-17_17-50-04/esp32c3.release.test_wear_levelling/dut.txt</td>
|
||||
<td>3 / 40</td>
|
||||
<td><a href="https://url/esp/esp-idf/pytest-embedded/2024-07-01_10-53-05-207900/esp32c3.release.test_wear_levelling/dut.txt">link</a></td>
|
||||
<td><a href="https://jira.com/secure/CreateIssueDetails!init.jspa?pid=10514&issuetype=10004&summary=%5BTest+Case%5Desp32c3.release.test_wear_levelling&description=job_url%3A+Not%2520found%0A%0Adut_log_url%3A+https%3A%2F%2Furl%2Fesp%2Fesp-idf%2Fpytest-embedded%2F2024-07-01_10-53-05-207900%2Fesp32c3.release.test_wear_levelling%2Fdut.txt%0A%0Aci_dashboard_url%3A+https%3A%2F%2Ftest_dashboard_host%2Fd%2FUcg477Fnz%2Fcase-list%3Fvar-case_id%3Desp32c3.release.test_wear_levelling%0A%0A&components=11909&priority=3&assignee=zhangjianwen&versions=17602">Create</a></td>
|
||||
<td>Not found</td>
|
||||
<td><a href="https://test_dashboard_host/d/Ucg477Fnz/case-list?var-case_id=esp32c3.release.test_wear_levelling">link</a></td>
|
||||
</tr>
|
||||
|
@@ -32,6 +32,7 @@ class TestReportGeneration(unittest.TestCase):
|
||||
'CI_DASHBOARD_HOST': 'https://test_dashboard_host',
|
||||
'CI_PAGES_URL': 'https://artifacts_path',
|
||||
'CI_JOB_ID': '1',
|
||||
'JIRA_SERVER': 'https://jira.com',
|
||||
})
|
||||
|
||||
self.MockGitlab = self.gitlab_patcher.start()
|
||||
|
@@ -5,6 +5,8 @@ import os
|
||||
import re
|
||||
import typing as t
|
||||
import xml.etree.ElementTree as ET
|
||||
from urllib.parse import quote
|
||||
from urllib.parse import urlencode
|
||||
from urllib.parse import urlparse
|
||||
|
||||
import requests
|
||||
@@ -216,3 +218,34 @@ def get_repository_file_url(file_path: str) -> str:
|
||||
:return: The modified URL pointing to the file's path in the repository.
|
||||
"""
|
||||
return f'{CI_PROJECT_URL}/-/raw/{CI_MERGE_REQUEST_SOURCE_BRANCH_SHA}/{file_path}'
|
||||
|
||||
|
||||
def known_failure_issue_jira_fast_link(_item: TestCase) -> str:
|
||||
"""
|
||||
Generate a JIRA fast link for known issues with relevant test case details.
|
||||
"""
|
||||
jira_url = os.getenv('JIRA_SERVER')
|
||||
jira_pid = os.getenv('JIRA_KNOWN_FAILURE_PID', '10514')
|
||||
jira_issuetype = os.getenv('JIRA_KNOWN_FAILURE_ISSUETYPE', '10004')
|
||||
jira_component = os.getenv('JIRA_KNOWN_FAILURE_COMPONENT', '11909')
|
||||
jira_assignee = os.getenv('JIRA_KNOWN_FAILURE_ASSIGNEE', 'zhangjianwen')
|
||||
jira_affected_versions = os.getenv('JIRA_KNOWN_FAILURE_VERSIONS', '17602')
|
||||
jira_priority = os.getenv('JIRA_KNOWN_FAILURE_PRIORITY', '3')
|
||||
|
||||
base_url = f'{jira_url}/secure/CreateIssueDetails!init.jspa?'
|
||||
params = {
|
||||
'pid': jira_pid,
|
||||
'issuetype': jira_issuetype,
|
||||
'summary': f'[Test Case]{_item.name}',
|
||||
'description': (
|
||||
f"job_url: {quote(_item.ci_job_url, safe=':/')}\n\n"
|
||||
f"dut_log_url: {quote(_item.dut_log_url, safe=':/')}\n\n"
|
||||
f'ci_dashboard_url: {_item.ci_dashboard_url}\n\n'
|
||||
),
|
||||
'components': jira_component,
|
||||
'priority': jira_priority,
|
||||
'assignee': jira_assignee,
|
||||
'versions': jira_affected_versions
|
||||
}
|
||||
query_string = urlencode(params)
|
||||
return f'<a href="{base_url}{query_string}">Create</a>'
|
||||
|
Reference in New Issue
Block a user