Skip to content

Commit

Permalink
execution of the tests is split up into batches
Browse files Browse the repository at this point in the history
  • Loading branch information
amyasnikov committed Nov 19, 2023
1 parent 7207a9d commit 0d23a99
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
1 change: 1 addition & 0 deletions validity/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class ValiditySettings(BaseModel):
store_reports: int = Field(default=5, gt=0, lt=1001)
git_folder: DirectoryPath = Path("/opt/git_repos")
sleep_between_tests: float = 0
result_batch_size: int = 500


settings = ValiditySettings.parse_obj(django_settings.PLUGINS_CONFIG.get("validity", {}))
9 changes: 4 additions & 5 deletions validity/scripts/validity_run_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
class RunTestsScript(SyncReposMixin, Script):

_sleep_between_tests = validity.settings.sleep_between_tests
_result_batch_size = validity.settings.result_batch_size

sync_repos = BooleanVar(
required=False,
Expand Down Expand Up @@ -142,8 +143,8 @@ def fire_report_webhook(self, report_id: int) -> None:
queue = webhooks_queue.get()
enqueue_object(queue, report, self.request.user, self.request.id, ObjectChangeActionChoices.ACTION_CREATE)

def save_to_db(self, results: list[ComplianceTestResult], report: ComplianceReport | None) -> None:
ComplianceTestResult.objects.bulk_create(results)
def save_to_db(self, results: Iterable[ComplianceTestResult], report: ComplianceReport | None) -> None:
ComplianceTestResult.objects.bulk_create(results, batch_size=self._result_batch_size)
ComplianceTestResult.objects.delete_old()
if report:
ComplianceReport.objects.delete_old()
Expand All @@ -157,9 +158,7 @@ def run(self, data, commit):
device_ids = data.get("devices", [])
if specific_selectors := data.get("selectors"):
selectors = selectors.filter(pk__in=specific_selectors)
results = [
*chain.from_iterable(self.run_tests_for_selector(selector, report, device_ids) for selector in selectors)
]
results = chain.from_iterable(self.run_tests_for_selector(selector, report, device_ids) for selector in selectors)
self.save_to_db(results, report)
output = {"results": {"all": self.results_count, "passed": self.results_passed}}
if report:
Expand Down

0 comments on commit 0d23a99

Please sign in to comment.