argus-alm 0.15.2__tar.gz → 0.15.5__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 (509) hide show
  1. {argus_alm-0.15.2 → argus_alm-0.15.5}/.github/workflows/release.yml +4 -2
  2. {argus_alm-0.15.2 → argus_alm-0.15.5}/.gitignore +1 -0
  3. argus_alm-0.15.5/MANIFEST.in +2 -0
  4. {argus_alm-0.15.2 → argus_alm-0.15.5}/PKG-INFO +4 -4
  5. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/_version.py +2 -2
  6. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/base.py +14 -8
  7. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/generic/cli.py +3 -2
  8. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/generic/client.py +2 -1
  9. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/generic_result.py +6 -1
  10. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/sct/client.py +2 -1
  11. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/common/enums.py +16 -0
  12. {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/deployment/argusai_event_similarity_processor.service +1 -1
  13. {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/event_similarity_processor.py +43 -16
  14. {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/pyproject.toml +1 -0
  15. {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/utils/event_message_sanitizer.py +33 -0
  16. argus_alm-0.15.5/argusAI/uv.lock +1636 -0
  17. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_alm.egg-info/PKG-INFO +4 -4
  18. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_alm.egg-info/SOURCES.txt +19 -104
  19. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_alm.egg-info/requires.txt +3 -3
  20. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_web.example.yaml +10 -0
  21. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/TestStatus.js +98 -5
  22. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/ViewTypes.js +22 -1
  23. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Github/GithubIssue.svelte +24 -1
  24. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Github/GithubIssues.svelte +4 -4
  25. argus_alm-0.15.5/frontend/Profile/PlannedJob.svelte +56 -0
  26. argus_alm-0.15.5/frontend/Profile/PlannedJobs.svelte +100 -0
  27. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/ProfileJobs.svelte +12 -3
  28. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/AssigneeFilter.svelte +2 -1
  29. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestDashboard.svelte +238 -18
  30. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestDashboardFlatView.svelte +2 -3
  31. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestDashboardGroup.svelte +11 -4
  32. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestDashboardTest.svelte +2 -3
  33. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanCreator.svelte +7 -2
  34. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Components/ResultTable.svelte +15 -9
  35. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/EventsTab.svelte +186 -6
  36. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Generic/GenericTestRun.svelte +115 -80
  37. argus_alm-0.15.5/frontend/TestRun/Generic/Subtest.js +17 -0
  38. argus_alm-0.15.5/frontend/TestRun/IssueTab.svelte +74 -0
  39. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/IssueTemplate.svelte +127 -2
  40. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/SCTParameterWizard.svelte +2 -2
  41. argus_alm-0.15.5/frontend/TestRun/Pytest/DtestTab.svelte +22 -0
  42. argus_alm-0.15.5/frontend/TestRun/Pytest/PytestItem.svelte +103 -0
  43. argus_alm-0.15.5/frontend/TestRun/Pytest/PytestRun.svelte +164 -0
  44. argus_alm-0.15.5/frontend/TestRun/Pytest/PytestTab.svelte +22 -0
  45. argus_alm-0.15.5/frontend/TestRun/Pytest/index.js +7 -0
  46. argus_alm-0.15.5/frontend/TestRun/Pytest/types.ts +39 -0
  47. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ResourcesInfo.svelte +21 -0
  48. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ResultsTab.svelte +15 -0
  49. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/StructuredEvent.svelte +83 -9
  50. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/TestRun.svelte +163 -54
  51. argus_alm-0.15.5/frontend/Utils/IntersectionObserver.svelte +58 -0
  52. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/ViewDashboard.svelte +1 -3
  53. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestCalendarSelector.svelte +51 -0
  54. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestCollapseHelper.svelte +30 -0
  55. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestFlatHelper.svelte +12 -0
  56. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestOverviewWidget.svelte +22 -0
  57. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestResultRow.svelte +138 -0
  58. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/PytestTableWidget.svelte +84 -0
  59. argus_alm-0.15.5/frontend/Views/Widgets/PytestWidget/ViewPytestOverview.svelte +424 -0
  60. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/SummaryWidget/SummaryWidget.svelte +23 -4
  61. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/view-dashboard.js +2 -0
  62. {argus_alm-0.15.2 → argus_alm-0.15.5}/package.json +2 -1
  63. {argus_alm-0.15.2 → argus_alm-0.15.5}/pyproject.toml +3 -3
  64. {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/pytest_argus_reporter.py +1 -1
  65. argus_alm-0.15.5/scripts/migration/migration_2025-07-18.py +63 -0
  66. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/partials/nav_bar.html.j2 +6 -1
  67. {argus_alm-0.15.2 → argus_alm-0.15.5}/uv.lock +128 -120
  68. argus_alm-0.15.2/argus/backend/cli.py +0 -57
  69. argus_alm-0.15.2/argus/backend/controller/admin.py +0 -20
  70. argus_alm-0.15.2/argus/backend/controller/admin_api.py +0 -355
  71. argus_alm-0.15.2/argus/backend/controller/api.py +0 -589
  72. argus_alm-0.15.2/argus/backend/controller/auth.py +0 -67
  73. argus_alm-0.15.2/argus/backend/controller/client_api.py +0 -109
  74. argus_alm-0.15.2/argus/backend/controller/main.py +0 -316
  75. argus_alm-0.15.2/argus/backend/controller/notification_api.py +0 -72
  76. argus_alm-0.15.2/argus/backend/controller/notifications.py +0 -13
  77. argus_alm-0.15.2/argus/backend/controller/planner_api.py +0 -194
  78. argus_alm-0.15.2/argus/backend/controller/team.py +0 -129
  79. argus_alm-0.15.2/argus/backend/controller/team_ui.py +0 -19
  80. argus_alm-0.15.2/argus/backend/controller/testrun_api.py +0 -513
  81. argus_alm-0.15.2/argus/backend/controller/view_api.py +0 -188
  82. argus_alm-0.15.2/argus/backend/controller/views_widgets/__init__.py +0 -0
  83. argus_alm-0.15.2/argus/backend/controller/views_widgets/graphed_stats.py +0 -54
  84. argus_alm-0.15.2/argus/backend/controller/views_widgets/graphs.py +0 -68
  85. argus_alm-0.15.2/argus/backend/controller/views_widgets/highlights.py +0 -135
  86. argus_alm-0.15.2/argus/backend/controller/views_widgets/nemesis_stats.py +0 -26
  87. argus_alm-0.15.2/argus/backend/controller/views_widgets/summary.py +0 -43
  88. argus_alm-0.15.2/argus/backend/db.py +0 -98
  89. argus_alm-0.15.2/argus/backend/error_handlers.py +0 -41
  90. argus_alm-0.15.2/argus/backend/events/event_processors.py +0 -34
  91. argus_alm-0.15.2/argus/backend/models/__init__.py +0 -0
  92. argus_alm-0.15.2/argus/backend/models/argus_ai.py +0 -24
  93. argus_alm-0.15.2/argus/backend/models/github_issue.py +0 -60
  94. argus_alm-0.15.2/argus/backend/models/plan.py +0 -24
  95. argus_alm-0.15.2/argus/backend/models/result.py +0 -187
  96. argus_alm-0.15.2/argus/backend/models/runtime_store.py +0 -58
  97. argus_alm-0.15.2/argus/backend/models/view_widgets.py +0 -25
  98. argus_alm-0.15.2/argus/backend/models/web.py +0 -403
  99. argus_alm-0.15.2/argus/backend/plugins/__init__.py +0 -0
  100. argus_alm-0.15.2/argus/backend/plugins/core.py +0 -248
  101. argus_alm-0.15.2/argus/backend/plugins/driver_matrix_tests/controller.py +0 -66
  102. argus_alm-0.15.2/argus/backend/plugins/driver_matrix_tests/model.py +0 -429
  103. argus_alm-0.15.2/argus/backend/plugins/driver_matrix_tests/plugin.py +0 -21
  104. argus_alm-0.15.2/argus/backend/plugins/driver_matrix_tests/raw_types.py +0 -62
  105. argus_alm-0.15.2/argus/backend/plugins/driver_matrix_tests/service.py +0 -61
  106. argus_alm-0.15.2/argus/backend/plugins/driver_matrix_tests/udt.py +0 -42
  107. argus_alm-0.15.2/argus/backend/plugins/generic/model.py +0 -86
  108. argus_alm-0.15.2/argus/backend/plugins/generic/plugin.py +0 -15
  109. argus_alm-0.15.2/argus/backend/plugins/generic/types.py +0 -14
  110. argus_alm-0.15.2/argus/backend/plugins/loader.py +0 -39
  111. argus_alm-0.15.2/argus/backend/plugins/sct/controller.py +0 -224
  112. argus_alm-0.15.2/argus/backend/plugins/sct/plugin.py +0 -37
  113. argus_alm-0.15.2/argus/backend/plugins/sct/resource_setup.py +0 -177
  114. argus_alm-0.15.2/argus/backend/plugins/sct/service.py +0 -682
  115. argus_alm-0.15.2/argus/backend/plugins/sct/testrun.py +0 -288
  116. argus_alm-0.15.2/argus/backend/plugins/sct/udt.py +0 -100
  117. argus_alm-0.15.2/argus/backend/plugins/sirenada/model.py +0 -118
  118. argus_alm-0.15.2/argus/backend/plugins/sirenada/plugin.py +0 -16
  119. argus_alm-0.15.2/argus/backend/service/admin.py +0 -26
  120. argus_alm-0.15.2/argus/backend/service/argus_service.py +0 -696
  121. argus_alm-0.15.2/argus/backend/service/build_system_monitor.py +0 -185
  122. argus_alm-0.15.2/argus/backend/service/client_service.py +0 -127
  123. argus_alm-0.15.2/argus/backend/service/event_service.py +0 -18
  124. argus_alm-0.15.2/argus/backend/service/github_service.py +0 -233
  125. argus_alm-0.15.2/argus/backend/service/jenkins_service.py +0 -269
  126. argus_alm-0.15.2/argus/backend/service/notification_manager.py +0 -159
  127. argus_alm-0.15.2/argus/backend/service/planner_service.py +0 -608
  128. argus_alm-0.15.2/argus/backend/service/release_manager.py +0 -229
  129. argus_alm-0.15.2/argus/backend/service/results_service.py +0 -690
  130. argus_alm-0.15.2/argus/backend/service/stats.py +0 -610
  131. argus_alm-0.15.2/argus/backend/service/team_manager_service.py +0 -82
  132. argus_alm-0.15.2/argus/backend/service/test_lookup.py +0 -172
  133. argus_alm-0.15.2/argus/backend/service/testrun.py +0 -489
  134. argus_alm-0.15.2/argus/backend/service/user.py +0 -308
  135. argus_alm-0.15.2/argus/backend/service/views.py +0 -219
  136. argus_alm-0.15.2/argus/backend/service/views_widgets/__init__.py +0 -0
  137. argus_alm-0.15.2/argus/backend/service/views_widgets/graphed_stats.py +0 -180
  138. argus_alm-0.15.2/argus/backend/service/views_widgets/highlights.py +0 -374
  139. argus_alm-0.15.2/argus/backend/service/views_widgets/nemesis_stats.py +0 -34
  140. argus_alm-0.15.2/argus/backend/template_filters.py +0 -27
  141. argus_alm-0.15.2/argus/backend/tests/__init__.py +0 -0
  142. argus_alm-0.15.2/argus/backend/tests/client_service/__init__.py +0 -0
  143. argus_alm-0.15.2/argus/backend/tests/client_service/test_submit_results.py +0 -79
  144. argus_alm-0.15.2/argus/backend/tests/conftest.py +0 -180
  145. argus_alm-0.15.2/argus/backend/tests/results_service/__init__.py +0 -0
  146. argus_alm-0.15.2/argus/backend/tests/results_service/test_best_results.py +0 -178
  147. argus_alm-0.15.2/argus/backend/tests/results_service/test_cell.py +0 -65
  148. argus_alm-0.15.2/argus/backend/tests/results_service/test_chartjs_additional_functions.py +0 -259
  149. argus_alm-0.15.2/argus/backend/tests/results_service/test_create_chartjs.py +0 -220
  150. argus_alm-0.15.2/argus/backend/tests/results_service/test_result_metadata.py +0 -100
  151. argus_alm-0.15.2/argus/backend/tests/results_service/test_results_service.py +0 -203
  152. argus_alm-0.15.2/argus/backend/tests/results_service/test_validation_rules.py +0 -213
  153. argus_alm-0.15.2/argus/backend/tests/view_widgets/__init__.py +0 -0
  154. argus_alm-0.15.2/argus/backend/tests/view_widgets/test_highlights_api.py +0 -532
  155. argus_alm-0.15.2/argus/backend/util/common.py +0 -65
  156. argus_alm-0.15.2/argus/backend/util/config.py +0 -38
  157. argus_alm-0.15.2/argus/backend/util/encoders.py +0 -56
  158. argus_alm-0.15.2/argus/backend/util/logsetup.py +0 -80
  159. argus_alm-0.15.2/argus/backend/util/module_loaders.py +0 -30
  160. argus_alm-0.15.2/argus/backend/util/send_email.py +0 -91
  161. argus_alm-0.15.2/argus/client/tests/__init__.py +0 -0
  162. argus_alm-0.15.2/argus/client/tests/conftest.py +0 -19
  163. argus_alm-0.15.2/argus/client/tests/test_package.py +0 -45
  164. argus_alm-0.15.2/argus/client/tests/test_results.py +0 -224
  165. argus_alm-0.15.2/argus/common/__init__.py +0 -0
  166. argus_alm-0.15.2/argusAI/utils/__init__.py +0 -0
  167. argus_alm-0.15.2/argusAI/uv.lock +0 -1412
  168. argus_alm-0.15.2/frontend/TestRun/IssueTab.svelte +0 -22
  169. argus_alm-0.15.2/profile/.gitkeep +0 -0
  170. argus_alm-0.15.2/pytest-argus-reporter/tests/conftest.py +0 -75
  171. argus_alm-0.15.2/pytest-argus-reporter/tests/test_argus_reporter.py +0 -511
  172. argus_alm-0.15.2/pytest-argus-reporter/tests/test_slices.py +0 -61
  173. argus_alm-0.15.2/pytest-argus-reporter/tests/test_xdist.py +0 -42
  174. {argus_alm-0.15.2 → argus_alm-0.15.5}/.dockerignore +0 -0
  175. {argus_alm-0.15.2 → argus_alm-0.15.5}/.envrc +0 -0
  176. {argus_alm-0.15.2 → argus_alm-0.15.5}/.eslintrc.js +0 -0
  177. {argus_alm-0.15.2 → argus_alm-0.15.5}/.github/workflows/.gitkeep +0 -0
  178. {argus_alm-0.15.2 → argus_alm-0.15.5}/.github/workflows/lint.yml +0 -0
  179. {argus_alm-0.15.2 → argus_alm-0.15.5}/.github/workflows/test.yml +0 -0
  180. {argus_alm-0.15.2 → argus_alm-0.15.5}/.pre-commit-config.yaml +0 -0
  181. {argus_alm-0.15.2 → argus_alm-0.15.5}/.prettierrc.js +0 -0
  182. {argus_alm-0.15.2 → argus_alm-0.15.5}/Dockerfile +0 -0
  183. {argus_alm-0.15.2 → argus_alm-0.15.5}/LICENSE +0 -0
  184. {argus_alm-0.15.2 → argus_alm-0.15.5}/README.md +0 -0
  185. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/__init__.py +0 -0
  186. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/__init__.py +0 -0
  187. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/driver_matrix_tests/cli.py +0 -0
  188. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/driver_matrix_tests/client.py +0 -0
  189. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/sct/types.py +0 -0
  190. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/client/sirenada/client.py +0 -0
  191. {argus_alm-0.15.2/argus/backend → argus_alm-0.15.5/argus/common}/__init__.py +0 -0
  192. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/common/sct_types.py +0 -0
  193. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus/common/sirenada_types.py +0 -0
  194. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus.yaml +0 -0
  195. {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/README.md +0 -0
  196. {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/logs/.gitignore +0 -0
  197. {argus_alm-0.15.2/argus/backend/controller → argus_alm-0.15.5/argusAI/utils}/__init__.py +0 -0
  198. {argus_alm-0.15.2 → argus_alm-0.15.5}/argusAI/utils/scylla_connection.py +0 -0
  199. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_alm.egg-info/dependency_links.txt +0 -0
  200. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_alm.egg-info/entry_points.txt +0 -0
  201. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_alm.egg-info/top_level.txt +0 -0
  202. {argus_alm-0.15.2 → argus_alm-0.15.5}/argus_backend.py +0 -0
  203. {argus_alm-0.15.2 → argus_alm-0.15.5}/commitlint.config.js +0 -0
  204. {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/.gitignore +0 -0
  205. {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/alpha-config/cassandra-rackdc.properties +0 -0
  206. {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/alpha-config/machine_image_configured +0 -0
  207. {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/alpha-config/scylla.yaml +0 -0
  208. {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/alpha-data/.gitignore +0 -0
  209. {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/docker-compose.yaml +0 -0
  210. {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/export_data.py +0 -0
  211. {argus_alm-0.15.2 → argus_alm-0.15.5}/dev-db/import_data.py +0 -0
  212. {argus_alm-0.15.2 → argus_alm-0.15.5}/docker/config/nginx-docker.conf +0 -0
  213. {argus_alm-0.15.2 → argus_alm-0.15.5}/docker/config/supervisord.conf +0 -0
  214. {argus_alm-0.15.2 → argus_alm-0.15.5}/docker-entrypoint.sh +0 -0
  215. {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/api_usage.md +0 -0
  216. {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/argus_status_page.md +0 -0
  217. {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/argus_status_page_diagram.jpg +0 -0
  218. {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/config/argus.nginx.conf +0 -0
  219. {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/config/argus.service +0 -0
  220. {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/dev-setup.md +0 -0
  221. {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/generic_results.md +0 -0
  222. {argus_alm-0.15.2 → argus_alm-0.15.5}/docs/pypi-guide.md +0 -0
  223. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/AdminPanel.svelte +0 -0
  224. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/AdminPanelWelcome.svelte +0 -0
  225. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/BatchTestMover.svelte +0 -0
  226. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/GroupCreator.svelte +0 -0
  227. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseCreator.svelte +0 -0
  228. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseDeletionConfirmationPopup.svelte +0 -0
  229. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseEditor.svelte +0 -0
  230. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseManager.svelte +0 -0
  231. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseManagerGroup.svelte +0 -0
  232. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ReleaseManagerTest.svelte +0 -0
  233. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/TestCreator.svelte +0 -0
  234. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/UserManager.svelte +0 -0
  235. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ViewListItem.svelte +0 -0
  236. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ViewSelectItem.svelte +0 -0
  237. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ViewWidget.svelte +0 -0
  238. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/AdminPanel/ViewsManager.svelte +0 -0
  239. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Alert.js +0 -0
  240. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Alerts/AlertMessage.svelte +0 -0
  241. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Alerts/AlertWidget.svelte +0 -0
  242. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/ApiUtils.js +0 -0
  243. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/ArgusNotification.ts +0 -0
  244. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/AssigneeSelector.svelte +0 -0
  245. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/AssigneeUtils.js +0 -0
  246. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/DateUtils.js +0 -0
  247. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/DriverMatrixTypes.ts +0 -0
  248. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/IssueDestinations.js +0 -0
  249. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/JenkinsSettingsHelp.js +0 -0
  250. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/ModalWindow.svelte +0 -0
  251. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/PluginDispatch.js +0 -0
  252. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/PluginNames.js +0 -0
  253. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/RunUtils.js +0 -0
  254. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/SelectUtils.js +0 -0
  255. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/StateManagement.js +0 -0
  256. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/TextUtils.js +0 -0
  257. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/UserTypes.ts +0 -0
  258. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Common/UserUtils.js +0 -0
  259. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Debug/FlashDebugComponent.svelte +0 -0
  260. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Discussion/Comment.svelte +0 -0
  261. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Discussion/CommentEditor.svelte +0 -0
  262. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Discussion/MarkedMentionExtension.js +0 -0
  263. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Discussion/MentionSelector.svelte +0 -0
  264. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Discussion/UserProfile.svelte +0 -0
  265. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Github/GithubIssuesCopyModal.svelte +0 -0
  266. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/JobsList.svelte +0 -0
  267. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/Login.svelte +0 -0
  268. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/Notification.svelte +0 -0
  269. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/NotificationCommentWrapper.svelte +0 -0
  270. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/NotificationCounter.svelte +0 -0
  271. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/NotificationSender.svelte +0 -0
  272. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/NotificationTestRunWrapper.svelte +0 -0
  273. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/NotificationsReader.svelte +0 -0
  274. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/ProfileJob.svelte +0 -0
  275. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/ProfileJobsTab.svelte +0 -0
  276. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/ProfileSchedules.svelte +0 -0
  277. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/User.svelte +0 -0
  278. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/UserSelection.svelte +0 -0
  279. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Profile/ViewUserResolver.svelte +0 -0
  280. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/FlatViewHelper.svelte +0 -0
  281. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/GroupedViewHelper.svelte +0 -0
  282. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/ReleaseActivity.svelte +0 -0
  283. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/ReleaseDashboard.svelte +0 -0
  284. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/ReleaseGithubIssues.svelte +0 -0
  285. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestPopoutSelector.svelte +0 -0
  286. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleaseDashboard/TestWithIssuesCard.svelte +0 -0
  287. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/CommentTableRow.svelte +0 -0
  288. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/DutyPlanner.svelte +0 -0
  289. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/EntityReplacer.svelte +0 -0
  290. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlan.svelte +0 -0
  291. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanCopyForm.svelte +0 -0
  292. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanEditor.svelte +0 -0
  293. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanTable.svelte +0 -0
  294. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlanner.svelte +0 -0
  295. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleasePlannerGridView.svelte +0 -0
  296. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ReleaseScheduler.svelte +0 -0
  297. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/Schedule.svelte +0 -0
  298. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/ScheduleTable.svelte +0 -0
  299. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/ReleasePlanner/SearchBar.svelte +0 -0
  300. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stats/ChartStats.svelte +0 -0
  301. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stats/NumberStats.svelte +0 -0
  302. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stats/ProgressBarStats.svelte +0 -0
  303. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stats/ReleaseStats.svelte +0 -0
  304. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stats/StatsFetcher.svelte +0 -0
  305. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stores/AlertStore.js +0 -0
  306. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stores/AssigneeSubscriber.js +0 -0
  307. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stores/SingleTestRunSubscriber.js +0 -0
  308. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stores/TestRunsSubscriber.js +0 -0
  309. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stores/UserlistSubscriber.js +0 -0
  310. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Stores/WorkspaceStore.js +0 -0
  311. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamCreateForm.svelte +0 -0
  312. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamDetail.svelte +0 -0
  313. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamList.svelte +0 -0
  314. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamManager.svelte +0 -0
  315. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamMember.svelte +0 -0
  316. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamShort.svelte +0 -0
  317. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Teams/TeamUtils.ts +0 -0
  318. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ActivityTab.svelte +0 -0
  319. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ArtifactRow.svelte +0 -0
  320. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ArtifactTab.svelte +0 -0
  321. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Components/Cell.svelte +0 -0
  322. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Components/Filters.svelte +0 -0
  323. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Components/GraphFilters.svelte +0 -0
  324. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Components/ScreenshotModal.svelte +0 -0
  325. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixBreakdown.svelte +0 -0
  326. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixRunInfo.svelte +0 -0
  327. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixTestCollection.svelte +0 -0
  328. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixTestRun.svelte +0 -0
  329. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/DriverMatrixTestSuites.svelte +0 -0
  330. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Generic/GenericTestRunInfo.svelte +0 -0
  331. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/HeartbeatIndicator.svelte +0 -0
  332. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/Build.js +0 -0
  333. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/BuildConfirmationDialog.svelte +0 -0
  334. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/BuildStartPlaceholder.svelte +0 -0
  335. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/BuildSuccessPlaceholder.svelte +0 -0
  336. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/CheckParam.svelte +0 -0
  337. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/CloneCreatePlaceholder.svelte +0 -0
  338. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/CloneSuccess.svelte +0 -0
  339. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/CloneTargetSelector.svelte +0 -0
  340. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/DummyCheckParam.svelte +0 -0
  341. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/DummySelectParam.svelte +0 -0
  342. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/JenkinsBuildModal.svelte +0 -0
  343. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/JenkinsCloneModal.svelte +0 -0
  344. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/LoadTargetsPlaceholder.svelte +0 -0
  345. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/ModalError.svelte +0 -0
  346. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/ParamFetchPlaceholder.svelte +0 -0
  347. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/ParameterEditor.svelte +0 -0
  348. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/SelectParam.svelte +0 -0
  349. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/StringParam.svelte +0 -0
  350. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/TextParam.svelte +0 -0
  351. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Jenkins/WizardUnavailable.svelte +0 -0
  352. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/NemesisData.svelte +0 -0
  353. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/NemesisReason.svelte +0 -0
  354. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/NemesisTable.svelte +0 -0
  355. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/PackagesInfo.svelte +0 -0
  356. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/RawEvent.svelte +0 -0
  357. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ResultsGraph.svelte +0 -0
  358. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/ResultsGraphs.svelte +0 -0
  359. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/RunAssigneeSelector.svelte +0 -0
  360. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/RunInvestigationStatusButton.svelte +0 -0
  361. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/RunStatusButton.svelte +0 -0
  362. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabBodyComponent.svelte +0 -0
  363. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabComponent.svelte +0 -0
  364. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabBodyComponent.svelte +0 -0
  365. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabComponent.svelte +0 -0
  366. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/SCTSubTests/Subtest.js +0 -0
  367. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Screenshots.svelte +0 -0
  368. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Sirenada/SirenadaIssueTemplate.svelte +0 -0
  369. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Sirenada/SirenadaRunInfo.svelte +0 -0
  370. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Sirenada/SirenadaTestBreakdown.svelte +0 -0
  371. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/Sirenada/SirenadaTestRun.svelte +0 -0
  372. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/TestRunComments.svelte +0 -0
  373. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/TestRunInfo.svelte +0 -0
  374. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/jUnitChart.svelte +0 -0
  375. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/TestRun/jUnitResults.svelte +0 -0
  376. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/ViewSelect.svelte +0 -0
  377. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/CheckValue.svelte +0 -0
  378. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/IntegerValue.svelte +0 -0
  379. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/MultiSelectValue.svelte +0 -0
  380. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/MultiStringValue.svelte +0 -0
  381. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/WidgetSettingTypes/StringValue.svelte +0 -0
  382. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/GraphsWidget/GraphsWidget.svelte +0 -0
  383. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/SummaryWidget/RunIssues.svelte +0 -0
  384. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGithubIssues.svelte +0 -0
  385. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/AssigneeCell.svelte +0 -0
  386. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/Filters.svelte +0 -0
  387. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/Interfaces.ts +0 -0
  388. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/InvestigationStatusCell.svelte +0 -0
  389. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/IssuesCell.svelte +0 -0
  390. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/NemesisTable.svelte +0 -0
  391. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/PaginatedTable.svelte +0 -0
  392. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/StackTracePreview.svelte +0 -0
  393. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/StatusBadge.svelte +0 -0
  394. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/StatusCell.svelte +0 -0
  395. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats/TestRunTable.svelte +0 -0
  396. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewGraphedStats.svelte +0 -0
  397. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewHighlights/ActionItem.svelte +0 -0
  398. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewHighlights/Comment.svelte +0 -0
  399. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewHighlights/HighlightItem.svelte +0 -0
  400. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewHighlights/ViewHighlights.svelte +0 -0
  401. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewNemesisStats.svelte +0 -0
  402. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewReleaseStats.svelte +0 -0
  403. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewTestDashboard.svelte +0 -0
  404. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/Views/Widgets/ViewUnsupportedPlaceholder.svelte +0 -0
  405. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/AssigneeList.svelte +0 -0
  406. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/JobConfigureModal.svelte +0 -0
  407. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/RunGroup.svelte +0 -0
  408. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/RunRelease.svelte +0 -0
  409. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/Test.svelte +0 -0
  410. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/TestRunDispatcher.svelte +0 -0
  411. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/TestRuns.svelte +0 -0
  412. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/TestRunsMessage.svelte +0 -0
  413. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/TestRunsPanel.svelte +0 -0
  414. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/TestRunsSelector.svelte +0 -0
  415. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/UnknownTest.svelte +0 -0
  416. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/WorkArea/WorkArea.svelte +0 -0
  417. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/admin-panel.js +0 -0
  418. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/argus.css +0 -0
  419. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/argus.js +0 -0
  420. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/duty-planner.js +0 -0
  421. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/flashDebug.js +0 -0
  422. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/font-awesome.css +0 -0
  423. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/font-awesome.js +0 -0
  424. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/fonts/NotoSans-Bold.ttf +0 -0
  425. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/fonts/NotoSans-BoldItalic.ttf +0 -0
  426. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/fonts/NotoSans-Italic.ttf +0 -0
  427. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/fonts/NotoSans-Regular.ttf +0 -0
  428. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/fonts/OFL.txt +0 -0
  429. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/fonts/noto.css +0 -0
  430. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/login.js +0 -0
  431. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/markdownOptions.js +0 -0
  432. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/notification-counter.js +0 -0
  433. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/plan.js +0 -0
  434. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/profile-jobs.js +0 -0
  435. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/profile-notifications.js +0 -0
  436. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/profile-schedules.js +0 -0
  437. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/release-dashboard.js +0 -0
  438. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/release-page.js +0 -0
  439. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/release-planner.js +0 -0
  440. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/release-scheduler.js +0 -0
  441. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/run-by-plugin.js +0 -0
  442. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/teams.js +0 -0
  443. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/test-run-details.js +0 -0
  444. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/test-runs-breakout.js +0 -0
  445. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/test-runs-standalone.js +0 -0
  446. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/view-user-resolver.js +0 -0
  447. {argus_alm-0.15.2 → argus_alm-0.15.5}/frontend/work-area.js +0 -0
  448. {argus_alm-0.15.2/argus/backend → argus_alm-0.15.5/profile}/.gitkeep +0 -0
  449. {argus_alm-0.15.2 → argus_alm-0.15.5}/public/argus.png +0 -0
  450. {argus_alm-0.15.2 → argus_alm-0.15.5}/public/no-user-picture.png +0 -0
  451. {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/.envrc +0 -0
  452. {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/LICENSE +0 -0
  453. {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/MANIFEST.in +0 -0
  454. {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/README.md +0 -0
  455. {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/noxfile.py +0 -0
  456. {argus_alm-0.15.2 → argus_alm-0.15.5}/pytest-argus-reporter/pyproject.toml +0 -0
  457. {argus_alm-0.15.2 → argus_alm-0.15.5}/run_with_profiler.py +0 -0
  458. {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/argus-status-page/index.html +0 -0
  459. {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/argus-status-page/js/status.js +0 -0
  460. {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/argus-status-page/static/app.css +0 -0
  461. {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/argus-status-page/static/argus.png +0 -0
  462. {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/argus-status-page/static/scylla.png +0 -0
  463. {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/argus-status-page/status.json +0 -0
  464. {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/migration/migration_2023-04-07.py +0 -0
  465. {argus_alm-0.15.2 → argus_alm-0.15.5}/scripts/migration/migration_2024-04-14.py +0 -0
  466. {argus_alm-0.15.2 → argus_alm-0.15.5}/setup.cfg +0 -0
  467. {argus_alm-0.15.2 → argus_alm-0.15.5}/start_argus.sh +0 -0
  468. {argus_alm-0.15.2 → argus_alm-0.15.5}/storage/profile_pictures/.gitignore +0 -0
  469. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/admin/base.html.j2 +0 -0
  470. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/admin/index.html.j2 +0 -0
  471. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/auth/login.html.j2 +0 -0
  472. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/auth/register.html.j2 +0 -0
  473. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/base.html.j2 +0 -0
  474. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/dashboard.html.j2 +0 -0
  475. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/duty_planner.html.j2 +0 -0
  476. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/error.html.j2 +0 -0
  477. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/flash_debug.html.j2 +0 -0
  478. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/groups.html.j2 +0 -0
  479. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/home.html.j2 +0 -0
  480. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/assigned.html.j2 +0 -0
  481. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/assigned_email.html.j2 +0 -0
  482. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/email_mention.html.j2 +0 -0
  483. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/mention.html.j2 +0 -0
  484. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/view_action_item_assigned.html.j2 +0 -0
  485. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/view_action_item_assigned_email.html.j2 +0 -0
  486. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/view_highlight_mention.html.j2 +0 -0
  487. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/notifications/view_highlight_mention_email.html.j2 +0 -0
  488. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/plan_dashboard.html.j2 +0 -0
  489. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/profile.html.j2 +0 -0
  490. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/profile_jobs.html.j2 +0 -0
  491. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/profile_notifications.html.j2 +0 -0
  492. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/profile_schedules.html.j2 +0 -0
  493. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/release_dashboard.html.j2 +0 -0
  494. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/release_planner.html.j2 +0 -0
  495. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/release_schedule.html.j2 +0 -0
  496. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/releases.html.j2 +0 -0
  497. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/run_view_by_plugin.html.j2 +0 -0
  498. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/runs.html.j2 +0 -0
  499. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/standalone_test_with_runs.html.j2 +0 -0
  500. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/teams.html.j2 +0 -0
  501. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/test_run.html.j2 +0 -0
  502. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/test_runs.html.j2 +0 -0
  503. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/tests.html.j2 +0 -0
  504. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/view_dashboard.html.j2 +0 -0
  505. {argus_alm-0.15.2 → argus_alm-0.15.5}/templates/views.html.j2 +0 -0
  506. {argus_alm-0.15.2 → argus_alm-0.15.5}/tsconfig.json +0 -0
  507. {argus_alm-0.15.2 → argus_alm-0.15.5}/uwsgi.ini +0 -0
  508. {argus_alm-0.15.2 → argus_alm-0.15.5}/webpack.config.js +0 -0
  509. {argus_alm-0.15.2 → argus_alm-0.15.5}/yarn.lock +0 -0
@@ -35,7 +35,7 @@ jobs:
35
35
  publish-to-pypi:
36
36
  name: >-
37
37
  Publish Python 🐍 distribution 📦 to PyPI
38
- # if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
38
+ if: github.ref_type == 'tag'
39
39
  needs:
40
40
  - build
41
41
  runs-on: ubuntu-latest
@@ -44,6 +44,7 @@ jobs:
44
44
  url: https://pypi.org/p/argus-alm # Replace <package-name> with your PyPI project name
45
45
  permissions:
46
46
  id-token: write # IMPORTANT: mandatory for trusted publishing
47
+ contents: write
47
48
 
48
49
  steps:
49
50
  - name: Download all the dists
@@ -56,6 +57,7 @@ jobs:
56
57
  uses: pypa/gh-action-pypi-publish@release/v1
57
58
 
58
59
  - name: Create GitHub release
59
- uses: softprops/action-gh-release@v1
60
+ uses: softprops/action-gh-release@v2
60
61
  with:
61
62
  generate_release_notes: true
63
+ files: dist/*
@@ -137,3 +137,4 @@ argus_web.yaml
137
137
  .vscode
138
138
  /profile/*
139
139
  !/profile/.gitkeep
140
+ argus/_version.py
@@ -0,0 +1,2 @@
1
+ prune **/tests
2
+ prune **/backend
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-alm
3
- Version: 0.15.2
3
+ Version: 0.15.5
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"
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.15.2'
21
- __version_tuple__ = version_tuple = (0, 15, 2)
20
+ __version__ = version = '0.15.5'
21
+ __version_tuple__ = version_tuple = (0, 15, 5)
@@ -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
 
@@ -155,7 +155,7 @@ class StaticGenericResultTable(GenericResultTable):
155
155
  """Results class for static results metainformation, defined in Meta class."""
156
156
 
157
157
  def __init__(
158
- self, name=None, description=None, columns=None, sut_package_name=None, validation_rules=None
158
+ self, name=None, description=None, columns=None, sut_package_name=None, validation_rules=None, results=None, sut_timestamp=0
159
159
  ):
160
160
  meta = getattr(self.__class__, "Meta")
161
161
  super().__init__(
@@ -165,4 +165,9 @@ class StaticGenericResultTable(GenericResultTable):
165
165
  sut_package_name=sut_package_name or getattr(meta, "sut_package_name", ""),
166
166
  validation_rules=validation_rules or getattr(
167
167
  meta, "ValidationRules", getattr(meta, "validation_rules", {})),
168
+ results=results or [],
169
+ sut_timestamp=sut_timestamp
168
170
  )
171
+
172
+ class Meta:
173
+ pass
@@ -152,7 +152,7 @@ class ArgusSCTClient(ArgusClient):
152
152
  )
153
153
  self.check_response(response)
154
154
 
155
- def create_resource(self, name: str, resource_type: str, public_ip: str, private_ip: str,
155
+ def create_resource(self, name: str, resource_type: str, public_ip: str, private_ip: str, instance_type: str,
156
156
  region: str, provider: str, dc_name: str, rack_name: str, shards_amount: int, state=ResourceState.RUNNING) -> None:
157
157
  """
158
158
  Creates a cloud resource record in argus.
@@ -167,6 +167,7 @@ class ArgusSCTClient(ArgusClient):
167
167
  "state": state,
168
168
  "resource_type": resource_type,
169
169
  "instance_details": {
170
+ "instance_type": instance_type,
170
171
  "provider": provider,
171
172
  "region": region,
172
173
  "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"
@@ -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
+ )