argus-alm 0.15.3__tar.gz → 0.15.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. {argus_alm-0.15.3 → argus_alm-0.15.6}/.gitignore +1 -0
  2. {argus_alm-0.15.3 → argus_alm-0.15.6}/Dockerfile +2 -2
  3. {argus_alm-0.15.3 → argus_alm-0.15.6}/PKG-INFO +5 -5
  4. {argus_alm-0.15.3 → argus_alm-0.15.6}/README.md +1 -1
  5. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/_version.py +16 -3
  6. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/client/base.py +14 -8
  7. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/client/generic/cli.py +3 -2
  8. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/client/generic/client.py +2 -1
  9. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/client/sct/client.py +15 -2
  10. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/common/enums.py +16 -0
  11. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/common/sct_types.py +15 -0
  12. {argus_alm-0.15.3 → argus_alm-0.15.6}/argusAI/deployment/argusai_event_similarity_processor.service +1 -1
  13. {argus_alm-0.15.3 → argus_alm-0.15.6}/argusAI/event_similarity_processor.py +43 -16
  14. {argus_alm-0.15.3 → argus_alm-0.15.6}/argusAI/pyproject.toml +1 -0
  15. {argus_alm-0.15.3 → argus_alm-0.15.6}/argusAI/utils/event_message_sanitizer.py +33 -0
  16. argus_alm-0.15.6/argusAI/uv.lock +1636 -0
  17. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus_alm.egg-info/PKG-INFO +5 -5
  18. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus_alm.egg-info/SOURCES.txt +19 -1
  19. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus_alm.egg-info/requires.txt +3 -3
  20. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus_web.example.yaml +10 -0
  21. {argus_alm-0.15.3 → argus_alm-0.15.6}/docs/dev-setup.md +1 -1
  22. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/AdminPanel.svelte +8 -6
  23. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/BatchTestMover.svelte +5 -6
  24. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/GroupCreator.svelte +16 -6
  25. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/ReleaseCreator.svelte +9 -5
  26. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/ReleaseDeletionConfirmationPopup.svelte +5 -5
  27. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/ReleaseEditor.svelte +6 -6
  28. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/ReleaseManager.svelte +23 -23
  29. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/ReleaseManagerGroup.svelte +20 -19
  30. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/ReleaseManagerTest.svelte +14 -13
  31. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/TestCreator.svelte +17 -9
  32. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/UserManager.svelte +81 -67
  33. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/ViewListItem.svelte +8 -8
  34. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/ViewSelectItem.svelte +14 -5
  35. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/ViewWidget.svelte +21 -13
  36. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/ViewsManager.svelte +47 -34
  37. argus_alm-0.15.6/frontend/Alert.js +11 -0
  38. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Alerts/AlertMessage.svelte +4 -4
  39. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Alerts/AlertWidget.svelte +8 -8
  40. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/AssigneeSelector.svelte +13 -5
  41. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/ModalWindow.svelte +12 -6
  42. argus_alm-0.15.6/frontend/Common/SelectUtils.js +14 -0
  43. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/TestStatus.js +98 -5
  44. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/ViewTypes.js +22 -1
  45. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Debug/FlashDebugComponent.svelte +2 -2
  46. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Discussion/Comment.svelte +24 -15
  47. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Discussion/CommentEditor.svelte +40 -27
  48. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Discussion/MentionSelector.svelte +14 -7
  49. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Discussion/UserProfile.svelte +3 -3
  50. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Github/GithubIssue.svelte +53 -17
  51. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Github/GithubIssues.svelte +48 -32
  52. argus_alm-0.15.6/frontend/Github/GithubIssuesCopyModal.svelte +126 -0
  53. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/JobsList.svelte +10 -10
  54. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/Login.svelte +8 -6
  55. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/Notification.svelte +10 -5
  56. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/NotificationCommentWrapper.svelte +7 -7
  57. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/NotificationCounter.svelte +1 -1
  58. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/NotificationSender.svelte +2 -2
  59. argus_alm-0.15.6/frontend/Profile/NotificationTestRunWrapper.svelte +7 -0
  60. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/NotificationsReader.svelte +9 -9
  61. argus_alm-0.15.6/frontend/Profile/PlannedJob.svelte +60 -0
  62. argus_alm-0.15.6/frontend/Profile/PlannedJobs.svelte +104 -0
  63. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/ProfileJob.svelte +11 -7
  64. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/ProfileJobs.svelte +22 -12
  65. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/ProfileJobsTab.svelte +26 -19
  66. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/ProfileSchedules.svelte +2 -2
  67. argus_alm-0.15.6/frontend/Profile/User.svelte +41 -0
  68. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/UserSelection.svelte +2 -2
  69. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Profile/ViewUserResolver.svelte +6 -2
  70. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleaseDashboard/AssigneeFilter.svelte +20 -10
  71. argus_alm-0.15.6/frontend/ReleaseDashboard/FlatViewHelper.svelte +13 -0
  72. argus_alm-0.15.6/frontend/ReleaseDashboard/GroupedViewHelper.svelte +11 -0
  73. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleaseDashboard/ReleaseActivity.svelte +17 -13
  74. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleaseDashboard/ReleaseDashboard.svelte +7 -7
  75. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleaseDashboard/ReleaseGithubIssues.svelte +11 -7
  76. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleaseDashboard/TestDashboard.svelte +289 -48
  77. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleaseDashboard/TestDashboardFlatView.svelte +8 -7
  78. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleaseDashboard/TestDashboardGroup.svelte +35 -14
  79. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleaseDashboard/TestDashboardTest.svelte +32 -16
  80. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleaseDashboard/TestPopoutSelector.svelte +23 -13
  81. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleaseDashboard/TestWithIssuesCard.svelte +3 -4
  82. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/CommentTableRow.svelte +20 -10
  83. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/DutyPlanner.svelte +23 -15
  84. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/EntityReplacer.svelte +23 -15
  85. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/ReleasePlan.svelte +22 -14
  86. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/ReleasePlanCopyForm.svelte +23 -19
  87. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/ReleasePlanCreator.svelte +88 -47
  88. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/ReleasePlanEditor.svelte +46 -35
  89. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/ReleasePlanTable.svelte +21 -15
  90. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/ReleasePlanner.svelte +105 -78
  91. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/ReleasePlannerGridView.svelte +36 -25
  92. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/ReleaseScheduler.svelte +13 -10
  93. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/Schedule.svelte +10 -3
  94. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/ScheduleTable.svelte +20 -14
  95. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/ReleasePlanner/SearchBar.svelte +23 -10
  96. argus_alm-0.15.6/frontend/Stats/ChartStats.svelte +51 -0
  97. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Stats/NumberStats.svelte +22 -12
  98. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Stats/ProgressBarStats.svelte +6 -6
  99. argus_alm-0.15.6/frontend/Stats/ReleaseStats.svelte +52 -0
  100. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Stats/StatsFetcher.svelte +3 -4
  101. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Teams/TeamCreateForm.svelte +17 -8
  102. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Teams/TeamDetail.svelte +29 -18
  103. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Teams/TeamList.svelte +7 -3
  104. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Teams/TeamManager.svelte +8 -4
  105. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Teams/TeamMember.svelte +13 -9
  106. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Teams/TeamShort.svelte +12 -8
  107. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/ActivityTab.svelte +16 -8
  108. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/ArtifactRow.svelte +3 -5
  109. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/ArtifactTab.svelte +9 -8
  110. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Components/Cell.svelte +9 -5
  111. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Components/Filters.svelte +14 -10
  112. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Components/GraphFilters.svelte +24 -16
  113. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Components/ResultTable.svelte +64 -52
  114. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Components/ScreenshotModal.svelte +7 -3
  115. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/DriverMatrixBreakdown.svelte +13 -9
  116. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/DriverMatrixRunInfo.svelte +6 -7
  117. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/DriverMatrixTestCollection.svelte +6 -2
  118. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/DriverMatrixTestRun.svelte +31 -22
  119. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/DriverMatrixTestSuites.svelte +2 -0
  120. argus_alm-0.15.6/frontend/TestRun/EventsTab.svelte +451 -0
  121. argus_alm-0.15.6/frontend/TestRun/Generic/GenericTestRun.svelte +307 -0
  122. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Generic/GenericTestRunInfo.svelte +7 -5
  123. argus_alm-0.15.6/frontend/TestRun/Generic/Subtest.js +17 -0
  124. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/HeartbeatIndicator.svelte +14 -10
  125. argus_alm-0.15.6/frontend/TestRun/IssueTab.svelte +73 -0
  126. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/IssueTemplate.svelte +165 -25
  127. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/BuildConfirmationDialog.svelte +8 -4
  128. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/BuildStartPlaceholder.svelte +6 -2
  129. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/BuildSuccessPlaceholder.svelte +10 -10
  130. argus_alm-0.15.6/frontend/TestRun/Jenkins/CheckParam.svelte +8 -0
  131. argus_alm-0.15.6/frontend/TestRun/Jenkins/CloneCreatePlaceholder.svelte +15 -0
  132. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/CloneSuccess.svelte +7 -5
  133. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/CloneTargetSelector.svelte +19 -25
  134. argus_alm-0.15.6/frontend/TestRun/Jenkins/DummyCheckParam.svelte +11 -0
  135. argus_alm-0.15.6/frontend/TestRun/Jenkins/DummySelectParam.svelte +11 -0
  136. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/JenkinsBuildModal.svelte +9 -9
  137. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/JenkinsCloneModal.svelte +17 -13
  138. argus_alm-0.15.6/frontend/TestRun/Jenkins/LoadTargetsPlaceholder.svelte +14 -0
  139. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/ModalError.svelte +6 -4
  140. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/ParamFetchPlaceholder.svelte +6 -2
  141. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/ParameterEditor.svelte +16 -11
  142. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/SCTParameterWizard.svelte +15 -8
  143. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/SelectParam.svelte +3 -5
  144. argus_alm-0.15.6/frontend/TestRun/Jenkins/StringParam.svelte +5 -0
  145. argus_alm-0.15.6/frontend/TestRun/Jenkins/TextParam.svelte +5 -0
  146. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/NemesisData.svelte +3 -3
  147. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/NemesisReason.svelte +2 -2
  148. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/NemesisTable.svelte +88 -87
  149. argus_alm-0.15.6/frontend/TestRun/PackagesInfo.svelte +196 -0
  150. argus_alm-0.15.6/frontend/TestRun/Pytest/DtestTab.svelte +22 -0
  151. argus_alm-0.15.6/frontend/TestRun/Pytest/PytestItem.svelte +109 -0
  152. argus_alm-0.15.6/frontend/TestRun/Pytest/PytestRun.svelte +170 -0
  153. argus_alm-0.15.6/frontend/TestRun/Pytest/PytestTab.svelte +22 -0
  154. argus_alm-0.15.6/frontend/TestRun/Pytest/index.js +7 -0
  155. argus_alm-0.15.6/frontend/TestRun/Pytest/types.ts +39 -0
  156. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/RawEvent.svelte +2 -3
  157. argus_alm-0.15.6/frontend/TestRun/ResourcesInfo.svelte +416 -0
  158. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/ResultsGraph.svelte +61 -40
  159. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/ResultsGraphs.svelte +41 -34
  160. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/ResultsTab.svelte +31 -12
  161. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/RunAssigneeSelector.svelte +29 -14
  162. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/RunInvestigationStatusButton.svelte +4 -4
  163. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/RunStatusButton.svelte +5 -5
  164. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabBodyComponent.svelte +3 -3
  165. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabComponent.svelte +2 -2
  166. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabBodyComponent.svelte +13 -11
  167. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabComponent.svelte +2 -2
  168. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Screenshots.svelte +6 -8
  169. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Sirenada/SirenadaIssueTemplate.svelte +7 -7
  170. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Sirenada/SirenadaRunInfo.svelte +11 -7
  171. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Sirenada/SirenadaTestBreakdown.svelte +15 -12
  172. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Sirenada/SirenadaTestRun.svelte +31 -22
  173. argus_alm-0.15.6/frontend/TestRun/StructuredEvent.svelte +359 -0
  174. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/TestRun.svelte +165 -54
  175. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/TestRunComments.svelte +14 -11
  176. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/TestRunInfo.svelte +40 -24
  177. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/jUnitChart.svelte +4 -4
  178. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/jUnitResults.svelte +2 -2
  179. argus_alm-0.15.6/frontend/Utils/IntersectionObserver.svelte +70 -0
  180. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/ViewDashboard.svelte +20 -13
  181. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/ViewSelect.svelte +14 -5
  182. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/WidgetSettingTypes/CheckValue.svelte +8 -9
  183. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/WidgetSettingTypes/IntegerValue.svelte +8 -9
  184. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/WidgetSettingTypes/MultiSelectValue.svelte +8 -11
  185. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/WidgetSettingTypes/MultiStringValue.svelte +10 -11
  186. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/WidgetSettingTypes/StringValue.svelte +8 -9
  187. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/GraphsWidget/GraphsWidget.svelte +18 -14
  188. argus_alm-0.15.6/frontend/Views/Widgets/PytestWidget/PytestCalendarSelector.svelte +57 -0
  189. argus_alm-0.15.6/frontend/Views/Widgets/PytestWidget/PytestCollapseHelper.svelte +35 -0
  190. argus_alm-0.15.6/frontend/Views/Widgets/PytestWidget/PytestFlatHelper.svelte +17 -0
  191. argus_alm-0.15.6/frontend/Views/Widgets/PytestWidget/PytestOverviewWidget.svelte +29 -0
  192. argus_alm-0.15.6/frontend/Views/Widgets/PytestWidget/PytestResultRow.svelte +144 -0
  193. argus_alm-0.15.6/frontend/Views/Widgets/PytestWidget/PytestTableWidget.svelte +92 -0
  194. argus_alm-0.15.6/frontend/Views/Widgets/PytestWidget/ViewPytestOverview.svelte +438 -0
  195. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/SummaryWidget/RunIssues.svelte +5 -6
  196. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/SummaryWidget/SummaryWidget.svelte +51 -26
  197. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGithubIssues.svelte +11 -9
  198. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGraphedStats/AssigneeCell.svelte +13 -5
  199. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGraphedStats/Filters.svelte +11 -7
  200. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGraphedStats/InvestigationStatusCell.svelte +5 -1
  201. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGraphedStats/IssuesCell.svelte +5 -1
  202. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGraphedStats/NemesisTable.svelte +8 -4
  203. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGraphedStats/PaginatedTable.svelte +45 -39
  204. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGraphedStats/StackTracePreview.svelte +7 -3
  205. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGraphedStats/StatusBadge.svelte +5 -1
  206. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGraphedStats/StatusCell.svelte +5 -1
  207. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGraphedStats/TestRunTable.svelte +16 -8
  208. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGraphedStats.svelte +106 -124
  209. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewHighlights/ActionItem.svelte +19 -15
  210. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewHighlights/Comment.svelte +19 -9
  211. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewHighlights/HighlightItem.svelte +12 -14
  212. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewHighlights/ViewHighlights.svelte +27 -22
  213. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewNemesisStats.svelte +54 -53
  214. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewReleaseStats.svelte +2 -3
  215. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewTestDashboard.svelte +10 -8
  216. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/WorkArea/AssigneeList.svelte +14 -6
  217. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/WorkArea/JobConfigureModal.svelte +10 -11
  218. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/WorkArea/RunGroup.svelte +32 -20
  219. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/WorkArea/RunRelease.svelte +22 -18
  220. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/WorkArea/Test.svelte +20 -10
  221. argus_alm-0.15.6/frontend/WorkArea/TestRunDispatcher.svelte +15 -0
  222. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/WorkArea/TestRuns.svelte +48 -28
  223. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/WorkArea/TestRunsMessage.svelte +3 -3
  224. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/WorkArea/TestRunsPanel.svelte +24 -12
  225. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/WorkArea/TestRunsSelector.svelte +20 -18
  226. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/WorkArea/UnknownTest.svelte +4 -6
  227. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/WorkArea/WorkArea.svelte +5 -5
  228. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/admin-panel.js +2 -1
  229. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/argus.css +2 -2
  230. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/argus.js +1 -0
  231. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/duty-planner.js +2 -1
  232. argus_alm-0.15.6/frontend/flashDebug.js +9 -0
  233. argus_alm-0.15.6/frontend/font-awesome.css +1 -0
  234. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/login.js +2 -2
  235. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/notification-counter.js +5 -4
  236. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/plan.js +2 -1
  237. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/profile-jobs.js +2 -1
  238. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/profile-notifications.js +2 -1
  239. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/profile-schedules.js +2 -1
  240. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/release-dashboard.js +2 -1
  241. argus_alm-0.15.6/frontend/release-page.js +16 -0
  242. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/release-planner.js +2 -1
  243. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/release-scheduler.js +2 -1
  244. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/run-by-plugin.js +2 -1
  245. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/teams.js +2 -1
  246. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/test-run-details.js +2 -1
  247. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/test-runs-breakout.js +2 -1
  248. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/test-runs-standalone.js +2 -1
  249. argus_alm-0.15.6/frontend/view-dashboard.js +11 -0
  250. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/view-user-resolver.js +7 -6
  251. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/work-area.js +2 -1
  252. argus_alm-0.15.6/package.json +66 -0
  253. {argus_alm-0.15.3 → argus_alm-0.15.6}/pyproject.toml +3 -3
  254. {argus_alm-0.15.3 → argus_alm-0.15.6}/pytest-argus-reporter/pytest_argus_reporter.py +1 -1
  255. argus_alm-0.15.6/rollup.config.js +67 -0
  256. argus_alm-0.15.6/scripts/migration/migration_2025-07-18.py +63 -0
  257. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/admin/index.html.j2 +1 -1
  258. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/auth/login.html.j2 +1 -1
  259. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/base.html.j2 +4 -6
  260. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/dashboard.html.j2 +1 -1
  261. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/duty_planner.html.j2 +1 -1
  262. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/partials/nav_bar.html.j2 +6 -1
  263. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/plan_dashboard.html.j2 +1 -1
  264. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/profile_jobs.html.j2 +1 -1
  265. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/profile_notifications.html.j2 +1 -1
  266. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/profile_schedules.html.j2 +1 -1
  267. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/release_dashboard.html.j2 +1 -1
  268. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/release_planner.html.j2 +1 -1
  269. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/release_schedule.html.j2 +1 -1
  270. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/releases.html.j2 +1 -1
  271. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/run_view_by_plugin.html.j2 +1 -1
  272. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/standalone_test_with_runs.html.j2 +1 -1
  273. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/teams.html.j2 +1 -1
  274. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/test_run.html.j2 +1 -1
  275. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/test_runs.html.j2 +1 -1
  276. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/view_dashboard.html.j2 +1 -1
  277. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/views.html.j2 +1 -1
  278. {argus_alm-0.15.3 → argus_alm-0.15.6}/uv.lock +128 -120
  279. argus_alm-0.15.6/yarn.lock +2493 -0
  280. argus_alm-0.15.3/argusAI/uv.lock +0 -1412
  281. argus_alm-0.15.3/frontend/Alert.js +0 -10
  282. argus_alm-0.15.3/frontend/Common/SelectUtils.js +0 -3
  283. argus_alm-0.15.3/frontend/Github/GithubIssuesCopyModal.svelte +0 -109
  284. argus_alm-0.15.3/frontend/Profile/NotificationTestRunWrapper.svelte +0 -7
  285. argus_alm-0.15.3/frontend/Profile/User.svelte +0 -61
  286. argus_alm-0.15.3/frontend/ReleaseDashboard/FlatViewHelper.svelte +0 -5
  287. argus_alm-0.15.3/frontend/ReleaseDashboard/GroupedViewHelper.svelte +0 -3
  288. argus_alm-0.15.3/frontend/Stats/ChartStats.svelte +0 -43
  289. argus_alm-0.15.3/frontend/Stats/ReleaseStats.svelte +0 -39
  290. argus_alm-0.15.3/frontend/TestRun/EventsTab.svelte +0 -271
  291. argus_alm-0.15.3/frontend/TestRun/Generic/GenericTestRun.svelte +0 -262
  292. argus_alm-0.15.3/frontend/TestRun/IssueTab.svelte +0 -22
  293. argus_alm-0.15.3/frontend/TestRun/Jenkins/CheckParam.svelte +0 -9
  294. argus_alm-0.15.3/frontend/TestRun/Jenkins/CloneCreatePlaceholder.svelte +0 -17
  295. argus_alm-0.15.3/frontend/TestRun/Jenkins/DummyCheckParam.svelte +0 -13
  296. argus_alm-0.15.3/frontend/TestRun/Jenkins/DummySelectParam.svelte +0 -13
  297. argus_alm-0.15.3/frontend/TestRun/Jenkins/LoadTargetsPlaceholder.svelte +0 -10
  298. argus_alm-0.15.3/frontend/TestRun/Jenkins/StringParam.svelte +0 -7
  299. argus_alm-0.15.3/frontend/TestRun/Jenkins/TextParam.svelte +0 -7
  300. argus_alm-0.15.3/frontend/TestRun/PackagesInfo.svelte +0 -194
  301. argus_alm-0.15.3/frontend/TestRun/ResourcesInfo.svelte +0 -395
  302. argus_alm-0.15.3/frontend/TestRun/StructuredEvent.svelte +0 -269
  303. argus_alm-0.15.3/frontend/WorkArea/TestRunDispatcher.svelte +0 -11
  304. argus_alm-0.15.3/frontend/flashDebug.js +0 -8
  305. argus_alm-0.15.3/frontend/font-awesome.css +0 -1
  306. argus_alm-0.15.3/frontend/release-page.js +0 -15
  307. argus_alm-0.15.3/frontend/view-dashboard.js +0 -8
  308. argus_alm-0.15.3/package.json +0 -59
  309. argus_alm-0.15.3/webpack.config.js +0 -148
  310. argus_alm-0.15.3/yarn.lock +0 -2218
  311. {argus_alm-0.15.3 → argus_alm-0.15.6}/.dockerignore +0 -0
  312. {argus_alm-0.15.3 → argus_alm-0.15.6}/.envrc +0 -0
  313. {argus_alm-0.15.3 → argus_alm-0.15.6}/.eslintrc.js +0 -0
  314. {argus_alm-0.15.3 → argus_alm-0.15.6}/.github/workflows/.gitkeep +0 -0
  315. {argus_alm-0.15.3 → argus_alm-0.15.6}/.github/workflows/lint.yml +0 -0
  316. {argus_alm-0.15.3 → argus_alm-0.15.6}/.github/workflows/release.yml +0 -0
  317. {argus_alm-0.15.3 → argus_alm-0.15.6}/.github/workflows/test.yml +0 -0
  318. {argus_alm-0.15.3 → argus_alm-0.15.6}/.pre-commit-config.yaml +0 -0
  319. {argus_alm-0.15.3 → argus_alm-0.15.6}/.prettierrc.js +0 -0
  320. {argus_alm-0.15.3 → argus_alm-0.15.6}/LICENSE +0 -0
  321. {argus_alm-0.15.3 → argus_alm-0.15.6}/MANIFEST.in +0 -0
  322. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/__init__.py +0 -0
  323. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/client/__init__.py +0 -0
  324. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/client/driver_matrix_tests/cli.py +0 -0
  325. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/client/driver_matrix_tests/client.py +0 -0
  326. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/client/generic_result.py +0 -0
  327. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/client/sct/types.py +0 -0
  328. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/client/sirenada/client.py +0 -0
  329. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/common/__init__.py +0 -0
  330. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus/common/sirenada_types.py +0 -0
  331. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus.yaml +0 -0
  332. {argus_alm-0.15.3 → argus_alm-0.15.6}/argusAI/README.md +0 -0
  333. {argus_alm-0.15.3 → argus_alm-0.15.6}/argusAI/logs/.gitignore +0 -0
  334. {argus_alm-0.15.3 → argus_alm-0.15.6}/argusAI/utils/__init__.py +0 -0
  335. {argus_alm-0.15.3 → argus_alm-0.15.6}/argusAI/utils/scylla_connection.py +0 -0
  336. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus_alm.egg-info/dependency_links.txt +0 -0
  337. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus_alm.egg-info/entry_points.txt +0 -0
  338. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus_alm.egg-info/top_level.txt +0 -0
  339. {argus_alm-0.15.3 → argus_alm-0.15.6}/argus_backend.py +0 -0
  340. {argus_alm-0.15.3 → argus_alm-0.15.6}/commitlint.config.js +0 -0
  341. {argus_alm-0.15.3 → argus_alm-0.15.6}/dev-db/.gitignore +0 -0
  342. {argus_alm-0.15.3 → argus_alm-0.15.6}/dev-db/alpha-config/cassandra-rackdc.properties +0 -0
  343. {argus_alm-0.15.3 → argus_alm-0.15.6}/dev-db/alpha-config/machine_image_configured +0 -0
  344. {argus_alm-0.15.3 → argus_alm-0.15.6}/dev-db/alpha-config/scylla.yaml +0 -0
  345. {argus_alm-0.15.3 → argus_alm-0.15.6}/dev-db/alpha-data/.gitignore +0 -0
  346. {argus_alm-0.15.3 → argus_alm-0.15.6}/dev-db/docker-compose.yaml +0 -0
  347. {argus_alm-0.15.3 → argus_alm-0.15.6}/dev-db/export_data.py +0 -0
  348. {argus_alm-0.15.3 → argus_alm-0.15.6}/dev-db/import_data.py +0 -0
  349. {argus_alm-0.15.3 → argus_alm-0.15.6}/docker/config/nginx-docker.conf +0 -0
  350. {argus_alm-0.15.3 → argus_alm-0.15.6}/docker/config/supervisord.conf +0 -0
  351. {argus_alm-0.15.3 → argus_alm-0.15.6}/docker-entrypoint.sh +0 -0
  352. {argus_alm-0.15.3 → argus_alm-0.15.6}/docs/api_usage.md +0 -0
  353. {argus_alm-0.15.3 → argus_alm-0.15.6}/docs/argus_status_page.md +0 -0
  354. {argus_alm-0.15.3 → argus_alm-0.15.6}/docs/argus_status_page_diagram.jpg +0 -0
  355. {argus_alm-0.15.3 → argus_alm-0.15.6}/docs/config/argus.nginx.conf +0 -0
  356. {argus_alm-0.15.3 → argus_alm-0.15.6}/docs/config/argus.service +0 -0
  357. {argus_alm-0.15.3 → argus_alm-0.15.6}/docs/generic_results.md +0 -0
  358. {argus_alm-0.15.3 → argus_alm-0.15.6}/docs/pypi-guide.md +0 -0
  359. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/AdminPanel/AdminPanelWelcome.svelte +0 -0
  360. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/ApiUtils.js +0 -0
  361. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/ArgusNotification.ts +0 -0
  362. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/AssigneeUtils.js +0 -0
  363. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/DateUtils.js +0 -0
  364. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/DriverMatrixTypes.ts +0 -0
  365. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/IssueDestinations.js +0 -0
  366. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/JenkinsSettingsHelp.js +0 -0
  367. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/PluginDispatch.js +0 -0
  368. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/PluginNames.js +0 -0
  369. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/RunUtils.js +0 -0
  370. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/StateManagement.js +0 -0
  371. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/TextUtils.js +0 -0
  372. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/UserTypes.ts +0 -0
  373. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Common/UserUtils.js +0 -0
  374. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Discussion/MarkedMentionExtension.js +0 -0
  375. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Stores/AlertStore.js +0 -0
  376. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Stores/AssigneeSubscriber.js +0 -0
  377. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Stores/SingleTestRunSubscriber.js +0 -0
  378. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Stores/TestRunsSubscriber.js +0 -0
  379. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Stores/UserlistSubscriber.js +0 -0
  380. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Stores/WorkspaceStore.js +0 -0
  381. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Teams/TeamUtils.ts +0 -0
  382. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/Build.js +0 -0
  383. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/Jenkins/WizardUnavailable.svelte +0 -0
  384. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/TestRun/SCTSubTests/Subtest.js +0 -0
  385. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewGraphedStats/Interfaces.ts +0 -0
  386. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/Views/Widgets/ViewUnsupportedPlaceholder.svelte +0 -0
  387. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/font-awesome.js +0 -0
  388. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/fonts/NotoSans-Bold.ttf +0 -0
  389. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/fonts/NotoSans-BoldItalic.ttf +0 -0
  390. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/fonts/NotoSans-Italic.ttf +0 -0
  391. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/fonts/NotoSans-Regular.ttf +0 -0
  392. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/fonts/OFL.txt +0 -0
  393. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/fonts/noto.css +0 -0
  394. {argus_alm-0.15.3 → argus_alm-0.15.6}/frontend/markdownOptions.js +0 -0
  395. {argus_alm-0.15.3 → argus_alm-0.15.6}/profile/.gitkeep +0 -0
  396. {argus_alm-0.15.3 → argus_alm-0.15.6}/public/argus.png +0 -0
  397. {argus_alm-0.15.3 → argus_alm-0.15.6}/public/no-user-picture.png +0 -0
  398. {argus_alm-0.15.3 → argus_alm-0.15.6}/pytest-argus-reporter/.envrc +0 -0
  399. {argus_alm-0.15.3 → argus_alm-0.15.6}/pytest-argus-reporter/LICENSE +0 -0
  400. {argus_alm-0.15.3 → argus_alm-0.15.6}/pytest-argus-reporter/MANIFEST.in +0 -0
  401. {argus_alm-0.15.3 → argus_alm-0.15.6}/pytest-argus-reporter/README.md +0 -0
  402. {argus_alm-0.15.3 → argus_alm-0.15.6}/pytest-argus-reporter/noxfile.py +0 -0
  403. {argus_alm-0.15.3 → argus_alm-0.15.6}/pytest-argus-reporter/pyproject.toml +0 -0
  404. {argus_alm-0.15.3 → argus_alm-0.15.6}/run_with_profiler.py +0 -0
  405. {argus_alm-0.15.3 → argus_alm-0.15.6}/scripts/argus-status-page/index.html +0 -0
  406. {argus_alm-0.15.3 → argus_alm-0.15.6}/scripts/argus-status-page/js/status.js +0 -0
  407. {argus_alm-0.15.3 → argus_alm-0.15.6}/scripts/argus-status-page/static/app.css +0 -0
  408. {argus_alm-0.15.3 → argus_alm-0.15.6}/scripts/argus-status-page/static/argus.png +0 -0
  409. {argus_alm-0.15.3 → argus_alm-0.15.6}/scripts/argus-status-page/static/scylla.png +0 -0
  410. {argus_alm-0.15.3 → argus_alm-0.15.6}/scripts/argus-status-page/status.json +0 -0
  411. {argus_alm-0.15.3 → argus_alm-0.15.6}/scripts/migration/migration_2023-04-07.py +0 -0
  412. {argus_alm-0.15.3 → argus_alm-0.15.6}/scripts/migration/migration_2024-04-14.py +0 -0
  413. {argus_alm-0.15.3 → argus_alm-0.15.6}/setup.cfg +0 -0
  414. {argus_alm-0.15.3 → argus_alm-0.15.6}/start_argus.sh +0 -0
  415. {argus_alm-0.15.3 → argus_alm-0.15.6}/storage/profile_pictures/.gitignore +0 -0
  416. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/admin/base.html.j2 +0 -0
  417. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/auth/register.html.j2 +0 -0
  418. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/error.html.j2 +0 -0
  419. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/flash_debug.html.j2 +0 -0
  420. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/groups.html.j2 +0 -0
  421. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/home.html.j2 +0 -0
  422. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/notifications/assigned.html.j2 +0 -0
  423. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/notifications/assigned_email.html.j2 +0 -0
  424. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/notifications/email_mention.html.j2 +0 -0
  425. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/notifications/mention.html.j2 +0 -0
  426. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/notifications/view_action_item_assigned.html.j2 +0 -0
  427. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/notifications/view_action_item_assigned_email.html.j2 +0 -0
  428. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/notifications/view_highlight_mention.html.j2 +0 -0
  429. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/notifications/view_highlight_mention_email.html.j2 +0 -0
  430. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/profile.html.j2 +0 -0
  431. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/runs.html.j2 +0 -0
  432. {argus_alm-0.15.3 → argus_alm-0.15.6}/templates/tests.html.j2 +0 -0
  433. {argus_alm-0.15.3 → argus_alm-0.15.6}/tsconfig.json +0 -0
  434. {argus_alm-0.15.3 → argus_alm-0.15.6}/uwsgi.ini +0 -0
@@ -137,3 +137,4 @@ argus_web.yaml
137
137
  .vscode
138
138
  /profile/*
139
139
  !/profile/.gitkeep
140
+ argus/_version.py
@@ -1,7 +1,7 @@
1
1
  ARG PYTHON_VERSION=3.10.4-bullseye
2
2
 
3
3
  FROM python:${PYTHON_VERSION}
4
- ENV WEBPACK_ENVIRONMENT=production
4
+ ENV ROLLUP_ENV=production
5
5
  ENV FLASK_ENV=production
6
6
  ENV CQLENG_ALLOW_SCHEMA_MANAGEMENT=1
7
7
  ENV ARGUS_USER=argus
@@ -29,7 +29,7 @@ WORKDIR /app
29
29
  # Build project
30
30
  RUN uv sync --extra web-backend --extra docker-image \
31
31
  && yarn \
32
- && WEBPACK_ENVIRONMENT=${WEBPACK_ENVIRONMENT} yarn webpack \
32
+ && ROLLUP_ENV=${ROLLUP_ENV} yarn rollup -c \
33
33
  && mkdir /app/nginx
34
34
  VOLUME [ "/app/storage", "/app/config" ]
35
35
  EXPOSE 8000/tcp
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-alm
3
- Version: 0.15.3
3
+ Version: 0.15.6
4
4
  Summary: Argus
5
5
  Author-email: Alexey Kartashov <alexey.kartashov@scylladb.com>, Łukasz Sójka <lukasz.sojka@scylladb.com>
6
6
  License-Expression: Apache-2.0
@@ -13,16 +13,16 @@ Requires-Dist: requests>=2.26.0
13
13
  Requires-Dist: click>=8.1.3
14
14
  Provides-Extra: web-backend
15
15
  Requires-Dist: PyYAML~=6.0.0; extra == "web-backend"
16
- Requires-Dist: scylla-driver~=3.26.8; extra == "web-backend"
16
+ Requires-Dist: scylla-driver>=3.26.8; extra == "web-backend"
17
17
  Requires-Dist: Flask~=3.0.0; extra == "web-backend"
18
18
  Requires-Dist: Flask-WTF~=1.0.0; extra == "web-backend"
19
19
  Requires-Dist: Flask-Login~=0.5.0; extra == "web-backend"
20
20
  Requires-Dist: humanize~=3.13.1; extra == "web-backend"
21
21
  Requires-Dist: python-magic~=0.4.24; extra == "web-backend"
22
22
  Requires-Dist: uwsgi~=2.0.20; extra == "web-backend"
23
- Requires-Dist: python-jenkins~=1.7.0; extra == "web-backend"
23
+ Requires-Dist: python-jenkins>=1.7.0; extra == "web-backend"
24
24
  Requires-Dist: python-slugify~=6.1.1; extra == "web-backend"
25
- Requires-Dist: pygithub~=2.6.1; extra == "web-backend"
25
+ Requires-Dist: pygithub>=2.6.1; extra == "web-backend"
26
26
  Requires-Dist: boto3~=1.38.9; extra == "web-backend"
27
27
  Provides-Extra: docker-image
28
28
  Requires-Dist: supervisor~=4.2.4; extra == "docker-image"
@@ -106,7 +106,7 @@ yarn install
106
106
  Compile frontend files from `/frontend` into `/public/dist`
107
107
 
108
108
  ```bash
109
- yarn webpack
109
+ yarn rollup -c
110
110
  ```
111
111
 
112
112
  Create a `argus.local.yaml` configuration file (used to configure database connection) and a `argus_web.yaml` (used for webapp secrets) in your application install directory.
@@ -61,7 +61,7 @@ yarn install
61
61
  Compile frontend files from `/frontend` into `/public/dist`
62
62
 
63
63
  ```bash
64
- yarn webpack
64
+ yarn rollup -c
65
65
  ```
66
66
 
67
67
  Create a `argus.local.yaml` configuration file (used to configure database connection) and a `argus_web.yaml` (used for webapp secrets) in your application install directory.
@@ -1,7 +1,14 @@
1
1
  # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
3
 
4
- __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
5
12
 
6
13
  TYPE_CHECKING = False
7
14
  if TYPE_CHECKING:
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
9
16
  from typing import Union
10
17
 
11
18
  VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
12
20
  else:
13
21
  VERSION_TUPLE = object
22
+ COMMIT_ID = object
14
23
 
15
24
  version: str
16
25
  __version__: str
17
26
  __version_tuple__: VERSION_TUPLE
18
27
  version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
19
30
 
20
- __version__ = version = '0.15.3'
21
- __version_tuple__ = version_tuple = (0, 15, 3)
31
+ __version__ = version = '0.15.6'
32
+ __version_tuple__ = version_tuple = (0, 15, 6)
33
+
34
+ __commit_id__ = commit_id = 'g46c898c68'
@@ -96,14 +96,17 @@ class ArgusClient:
96
96
  }
97
97
 
98
98
  def get(self, endpoint: str, location_params: dict[str, str] = None, params: dict = None) -> requests.Response:
99
+ url = self.get_url_for_endpoint(
100
+ endpoint=endpoint,
101
+ location_params=location_params
102
+ )
103
+ LOGGER.debug("GET Request: %s, params: %s", url, params)
99
104
  response = requests.get(
100
- url=self.get_url_for_endpoint(
101
- endpoint=endpoint,
102
- location_params=location_params
103
- ),
105
+ url=url,
104
106
  params=params,
105
107
  headers=self.request_headers
106
108
  )
109
+ LOGGER.debug("GET Response: %s %s", response.status_code, response.url)
107
110
 
108
111
  return response
109
112
 
@@ -114,15 +117,18 @@ class ArgusClient:
114
117
  params: dict = None,
115
118
  body: dict = None,
116
119
  ) -> requests.Response:
120
+ url = self.get_url_for_endpoint(
121
+ endpoint=endpoint,
122
+ location_params=location_params
123
+ )
124
+ LOGGER.debug("POST Request: %s, params: %s, body: %s", url, params, body)
117
125
  response = requests.post(
118
- url=self.get_url_for_endpoint(
119
- endpoint=endpoint,
120
- location_params=location_params
121
- ),
126
+ url=url,
122
127
  params=params,
123
128
  json=body,
124
129
  headers=self.request_headers,
125
130
  )
131
+ LOGGER.debug("POST Response: %s %s", response.status_code, response.url)
126
132
 
127
133
  return response
128
134
 
@@ -32,13 +32,14 @@ def cli():
32
32
  @click.option("--build-id", required=True, help="Unique job identifier in the build system, e.g. scylla-master/group/job for jenkins (The full path)")
33
33
  @click.option("--build-url", required=True, help="Job URL in the build system")
34
34
  @click.option("--started-by", required=True, help="Username of the user who started the job")
35
+ @click.option("--sub-type", required=False, help="Sub-type of the generic test: pytest, dtest")
35
36
  @click.option("--scylla-version", required=False, default=None, help="Version of Scylla used for this job")
36
37
  @click.option("--extra-headers", default={}, type=click.UNPROCESSED, callback=validate_extra_headers, help="extra headers to pass to argus, should be in json format", envvar='ARGUS_EXTRA_HEADERS')
37
- def submit_run(api_key: str, base_url: str, id: str, build_id: str, build_url: str, started_by: str, scylla_version: str = None, extra_headers: dict | None = None):
38
+ def submit_run(api_key: str, base_url: str, id: str, build_id: str, build_url: str, started_by: str, sub_type: str = None, scylla_version: str = None, extra_headers: dict | None = None):
38
39
  LOGGER.info("Submitting %s (%s) to Argus...", build_id, id)
39
40
  client = ArgusGenericClient(auth_token=api_key, base_url=base_url, extra_headers=extra_headers)
40
41
  client.submit_generic_run(build_id=build_id, run_id=id, started_by=started_by,
41
- build_url=build_url, scylla_version=scylla_version)
42
+ build_url=build_url, scylla_version=scylla_version, sub_type=sub_type)
42
43
  LOGGER.info("Done.")
43
44
 
44
45
 
@@ -15,12 +15,13 @@ class ArgusGenericClient(ArgusClient):
15
15
  def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
16
16
  super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
17
17
 
18
- def submit_generic_run(self, build_id: str, run_id: str, started_by: str, build_url: str, scylla_version: str | None = None):
18
+ def submit_generic_run(self, build_id: str, run_id: str, started_by: str, build_url: str, sub_type: str = None, scylla_version: str | None = None):
19
19
  request_body = {
20
20
  "build_id": build_id,
21
21
  "run_id": run_id,
22
22
  "started_by": started_by,
23
23
  "build_url": build_url,
24
+ "sub_type": sub_type,
24
25
  "scylla_version": scylla_version
25
26
  }
26
27
 
@@ -2,7 +2,7 @@ import base64
2
2
  from typing import Any
3
3
  from uuid import UUID
4
4
  from dataclasses import asdict
5
- from argus.common.sct_types import GeminiResultsRequest, PerformanceResultsRequest
5
+ from argus.common.sct_types import GeminiResultsRequest, PerformanceResultsRequest, RawEventPayload
6
6
  from argus.common.enums import ResourceState, TestStatus
7
7
  from argus.client.base import ArgusClient
8
8
  from argus.client.sct.types import EventsInfo, LogLink, Package
@@ -25,6 +25,7 @@ class ArgusSCTClient(ArgusClient):
25
25
  SUBMIT_PERFORMANCE_RESULTS = "/sct/$id/performance/submit"
26
26
  FINALIZE_NEMESIS = "/sct/$id/nemesis/finalize"
27
27
  SUBMIT_EVENTS = "/sct/$id/events/submit"
28
+ SUBMIT_EVENT = "/sct/$id/event/submit"
28
29
  SUBMIT_JUNIT_REPORT = "/sct/$id/junit/submit"
29
30
 
30
31
  def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
@@ -81,6 +82,17 @@ class ArgusSCTClient(ArgusClient):
81
82
  response = super().update_product_version(run_type=self.test_type, run_id=self.run_id, product_version=version)
82
83
  self.check_response(response)
83
84
 
85
+ def submit_event(self, event_data: RawEventPayload | list[RawEventPayload]):
86
+ response = self.post(
87
+ endpoint=self.Routes.SUBMIT_EVENT,
88
+ location_params={"id": str(self.run_id)},
89
+ body={
90
+ **self.generic_body,
91
+ "data": event_data,
92
+ }
93
+ )
94
+ self.check_response(response)
95
+
84
96
  def submit_sct_logs(self, logs: list[LogLink]) -> None:
85
97
  """
86
98
  Submits links to logs collected from nodes by SCT
@@ -152,7 +164,7 @@ class ArgusSCTClient(ArgusClient):
152
164
  )
153
165
  self.check_response(response)
154
166
 
155
- def create_resource(self, name: str, resource_type: str, public_ip: str, private_ip: str,
167
+ def create_resource(self, name: str, resource_type: str, public_ip: str, private_ip: str, instance_type: str,
156
168
  region: str, provider: str, dc_name: str, rack_name: str, shards_amount: int, state=ResourceState.RUNNING) -> None:
157
169
  """
158
170
  Creates a cloud resource record in argus.
@@ -167,6 +179,7 @@ class ArgusSCTClient(ArgusClient):
167
179
  "state": state,
168
180
  "resource_type": resource_type,
169
181
  "instance_details": {
182
+ "instance_type": instance_type,
170
183
  "provider": provider,
171
184
  "region": region,
172
185
  "dc_name": dc_name,
@@ -22,6 +22,22 @@ class TestStatus(str, Enum):
22
22
  NOT_RUN = "not_run"
23
23
 
24
24
 
25
+ class PytestStatus(str, Enum):
26
+ ERROR = "error"
27
+ PASSED = "passed"
28
+ FAILURE = "failure"
29
+ SKIPPED = "skipped"
30
+ XFAILED = "xfailed"
31
+ XPASS = "xpass"
32
+ # Following statuses reflect test & teardown state
33
+ # Example: passed & error means the test passed
34
+ # but the tearDown stage errored
35
+ PASSED_ERROR = "passed & error"
36
+ FAILURE_ERROR = "failure & error"
37
+ SKIPPED_ERROR = "skipped & error"
38
+ ERROR_ERROR = "error & error"
39
+
40
+
25
41
  class TestInvestigationStatus(str, Enum):
26
42
  NOT_INVESTIGATED = "not_investigated"
27
43
  IN_PROGRESS = "in_progress"
@@ -1,6 +1,21 @@
1
1
  from typing import TypedDict
2
2
 
3
3
 
4
+ class RawEventPayload(TypedDict):
5
+ run_id: str
6
+ severity: str
7
+ ts: float
8
+ message: str
9
+ event_type: str
10
+ received_timestamp: str | None
11
+ nemesis_name: str | None
12
+ duration: float | None
13
+ node: str | None
14
+ target_node: str | None
15
+ known_issue: str | None
16
+ nemesis_status: str | None
17
+
18
+
4
19
  class RawHDRHistogram(TypedDict):
5
20
  start_time: int
6
21
  percentile_90: float
@@ -6,7 +6,7 @@ After=network.target
6
6
  Type=simple
7
7
  User=argus
8
8
  Group=argus
9
- WorkingDirectory=/home/argus/app
9
+ WorkingDirectory=/home/argus/argusAI
10
10
  Environment="PYTHONPATH=."
11
11
  Environment="DAYS_BACK=120"
12
12
  ExecStart=/usr/bin/uv --project argusAI/pyproject.toml run argusAI/event_similarity_processor.py
@@ -1,6 +1,8 @@
1
1
  import os
2
2
  from collections import namedtuple
3
3
  from pathlib import Path
4
+
5
+ import cassandra
4
6
  import chromadb
5
7
  from threading import Thread, Event
6
8
  import time
@@ -9,7 +11,7 @@ import datetime
9
11
  from typing import Dict, Set, List, Tuple, Union
10
12
  import uuid
11
13
 
12
- from chromadb.api.types import IncludeEnum, Embeddings
14
+ from chromadb.api.types import Embeddings
13
15
  from chromadb.utils.embedding_functions.onnx_mini_lm_l6_v2 import ONNXMiniLM_L6_V2
14
16
  from chromadb.config import Settings
15
17
 
@@ -24,6 +26,7 @@ SLEEP_INTERVAL: int = 300 # 5 minutes
24
26
  SIMILARITY_THRESHOLD: float = 0.90
25
27
  MAX_SIMILARS: int = 200
26
28
  DAYS_BACK: int = int(os.getenv("DAYS_BACK", "120"))
29
+ RECREATE_EMBEDDINGS: bool = os.getenv("RECREATE_EMBEDDINGS", "false").lower() in ("true", "1", "yes")
27
30
 
28
31
  logging.basicConfig(
29
32
  level=logging.INFO,
@@ -98,13 +101,22 @@ class EventSimilarityProcessor:
98
101
 
99
102
  LOGGER.info(f"Finding similarities for run_id: {run_id}, event_index: {event_index}, type: {event_type}")
100
103
 
101
- similar: Dict = collection.query(
104
+ similar = collection.query(
102
105
  query_embeddings=[embedding],
103
106
  n_results=max_similars,
104
107
  where={"run_id": {"$ne": str(run_id)}},
105
108
  include=[
106
- IncludeEnum.metadatas,
107
- IncludeEnum.distances,
109
+ "metadatas",
110
+ "distances",
111
+ ],
112
+ )
113
+ duplicate = collection.query(
114
+ query_embeddings=[embedding],
115
+ n_results=100,
116
+ where={"run_id": str(run_id)},
117
+ include=[
118
+ "metadatas",
119
+ "distances",
108
120
  ],
109
121
  )
110
122
 
@@ -117,17 +129,24 @@ class EventSimilarityProcessor:
117
129
  if len(similar_map) >= max_similars:
118
130
  break
119
131
 
132
+ duplicate_list: List[int] = []
133
+ for j, distance in enumerate(duplicate["distances"][0]):
134
+ if 1 - distance >= 0.95 and event_index != duplicate["metadatas"][0][j]["idx"]:
135
+ duplicate_list.append(duplicate["metadatas"][0][j]["idx"])
136
+
120
137
  table = ErrorEventEmbeddings if event_type == EventType.ERROR else CriticalEventEmbeddings
121
138
  try:
122
139
  self._db.execute(
123
- f"UPDATE {table.__table_name__} SET similars_map = ? WHERE run_id = ? AND event_index = ?",
124
- (similar_map, run_id, event_index),
140
+ f"UPDATE {table.__table_name__} SET similars_map = ?, duplicates_list = ? WHERE run_id = ? AND event_index = ?",
141
+ (similar_map, duplicate_list, run_id, event_index),
125
142
  )
126
143
  LOGGER.info(
127
144
  f"Found {len(similar_map)} similar {event_type} events for run_id: {run_id}, event_index: {event_index}"
128
145
  )
129
146
  except Exception as e: # noqa: BLE001
130
- LOGGER.error(f"Failed to update similars_map for run_id: {run_id}, event_index: {event_index}: {e}")
147
+ LOGGER.error(
148
+ f"Failed to update similars_map/duplicates_list for run_id: {run_id}, event_index: {event_index}: {e}"
149
+ )
131
150
 
132
151
  def load_events(
133
152
  self, event_type: str, cutoff_time: datetime.datetime, batch_size: int = 5000
@@ -148,7 +167,9 @@ class EventSimilarityProcessor:
148
167
  collection: chromadb.Collection = self._collections[event_type]
149
168
  table = ErrorEventEmbeddings if event_type == EventType.ERROR else CriticalEventEmbeddings
150
169
  similars_to_update: List[EmbeddingEntry] = []
151
-
170
+ if RECREATE_EMBEDDINGS:
171
+ LOGGER.info(f"Skipping loading of {event_type} events due to RECREATE_EMBEDDINGS setting")
172
+ return processed_runs, similars_to_update
152
173
  LOGGER.info(f"Loading processed {event_type} events...")
153
174
  query: str = f"SELECT * FROM {table.__table_name__} WHERE start_time > ? ALLOW FILTERING BYPASS CACHE"
154
175
  rows = self._db.execute(query, (cutoff_time,))
@@ -168,7 +189,7 @@ class EventSimilarityProcessor:
168
189
  ids.append(f"{emb.run_id}_{emb.event_index}")
169
190
  embeddings_list.append(emb.embedding)
170
191
  metadatas.append({"run_id": str(emb.run_id), "idx": emb.event_index})
171
- if emb.similars_map is None:
192
+ if emb.similars_map is None or emb.duplicates_list is None:
172
193
  similars_to_update.append(
173
194
  EmbeddingEntry(emb.run_id, emb.event_index, emb.embedding, emb.start_time)
174
195
  )
@@ -195,13 +216,19 @@ class EventSimilarityProcessor:
195
216
  new_embeddings: Dict[str, List[EmbeddingEntry]] = similars_to_find
196
217
  while not stop_event.is_set():
197
218
  LOGGER.info(f"Starting event processing cycle; fetching tests since: {cutoff_time}")
198
- tests_to_process_result = self._db.execute(
199
- f"SELECT id, status FROM {SCTTestRun.table_name()} WHERE start_time > ? ALLOW FILTERING BYPASS CACHE",
200
- (cutoff_time,),
201
- )
202
- tests_to_process: Set[uuid.UUID] = {
203
- run.id for run in tests_to_process_result if run.status != TestStatus.PASSED.value
204
- } - processed_runs
219
+ try:
220
+ tests_to_process_result = self._db.execute(
221
+ f"SELECT id, status FROM {SCTTestRun.table_name()} WHERE start_time > ? ALLOW FILTERING BYPASS CACHE",
222
+ (cutoff_time,),
223
+ )
224
+ tests_to_process: Set[uuid.UUID] = {
225
+ run.id for run in tests_to_process_result if run.status != TestStatus.PASSED.value
226
+ } - processed_runs
227
+ except cassandra.ReadTimeout:
228
+ LOGGER.error("Read Timeout while trying to get new events to process - skipping until next iteration")
229
+ stop_event.wait(timeout=SLEEP_INTERVAL)
230
+ continue
231
+
205
232
  LOGGER.info(f"tests to process (including in progress) count: {len(tests_to_process)}")
206
233
  try:
207
234
  stats: Dict[str, int] = {
@@ -6,5 +6,6 @@ readme = "README.md"
6
6
  requires-python = ">=3.12"
7
7
  dependencies = [
8
8
  "chromadb>=0.6.3",
9
+ "flask>=3.1.1",
9
10
  "scylla-driver>=3.28.0",
10
11
  ]
@@ -49,6 +49,7 @@ class MessageSanitizer:
49
49
  r"Machine ID|Hostname|Storage|Size on Disk|Message|Disk Size):.*?(?=\n|$)",
50
50
  re.MULTILINE,
51
51
  )
52
+ self.report_at_pattern: Pattern = re.compile(r"Please report: at .*\n")
52
53
  self.lib_address_pattern: Pattern = re.compile(r"\([^()]+ \+ 0x[0-9a-fA-F]+\)")
53
54
  self.module_pattern: Pattern = re.compile(r"Module [^\n]+ from rpm [^\n]+")
54
55
  self.stack_header_pattern: Pattern = re.compile(r"Stack trace of thread \d+:")
@@ -62,6 +63,17 @@ class MessageSanitizer:
62
63
  self.eol_pattern = re.compile(r"\\n")
63
64
  self.backslashes_pattern = re.compile(r"\\")
64
65
  self.repetitions_pattern = re.compile(r"(\b\w+\b)(?:\s+\1)+")
66
+ self.backtrace_unwanted_lines = {
67
+ "seastar::backtrace",
68
+ "seastar::print_with_backtrace",
69
+ "seastar::install_oneshot_signal_handler",
70
+ "seastar::current_backtrace",
71
+ "seastar::current_tasktrace",
72
+ "seastar::memory::cpu_pages::warn_large_allocation",
73
+ "seastar::memory::allocate_slowpath",
74
+ "at main.cc:",
75
+ " ??:",
76
+ }
65
77
 
66
78
  self.sanitizers: List[Callable[[str], str]] = [
67
79
  self.remove_preface,
@@ -72,8 +84,10 @@ class MessageSanitizer:
72
84
  self.remove_ip_addresses,
73
85
  self.remove_urls,
74
86
  self.remove_metadata,
87
+ self.remove_backtrace_unwanted_lines,
75
88
  self.remove_modules,
76
89
  self.remove_message_prefix,
90
+ self.remove_report_at,
77
91
  self.remove_lib_address,
78
92
  self.remove_process_ids,
79
93
  self.remove_memory_addresses,
@@ -213,3 +227,22 @@ class MessageSanitizer:
213
227
 
214
228
  def remove_repetitions(self, text: str) -> str:
215
229
  return self.repetitions_pattern.sub(r"\1", text)
230
+
231
+ def remove_report_at(self, text: str) -> str:
232
+ return self.report_at_pattern.sub("", text)
233
+
234
+ def _remove_inlined_starting(self, text: str) -> str:
235
+ """Remove inlined starting text that is not useful."""
236
+ if not text.startswith("(inlined by) "):
237
+ return text
238
+ return text.split("(inlined by) ", 1)[-1].strip()
239
+
240
+ def remove_backtrace_unwanted_lines(self, text: str) -> str:
241
+ """Specific lines in backtrace that are not useful and can be removed."""
242
+ if not "backtrace" in text[:1000]:
243
+ return text
244
+ return "\n".join(
245
+ self._remove_inlined_starting(line)
246
+ for line in text.splitlines()
247
+ if not any(problem in line for problem in self.backtrace_unwanted_lines)
248
+ )