Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions queue_job/controllers/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ def create_test_job(
description="Test job",
size=1,
failure_rate=0,
job_duration=0,
):
if not http.request.env.user.has_group("base.group_erp_manager"):
raise Forbidden(_("Access Denied"))
Expand All @@ -187,6 +188,12 @@ def create_test_job(
except (ValueError, TypeError):
failure_rate = 0

if job_duration is not None:
try:
job_duration = float(job_duration)
except (ValueError, TypeError):
job_duration = 0

if not (0 <= failure_rate <= 1):
raise BadRequest("failure_rate must be between 0 and 1")

Expand Down Expand Up @@ -215,6 +222,7 @@ def create_test_job(
channel=channel,
description=description,
failure_rate=failure_rate,
job_duration=job_duration,
)

if size > 1:
Expand All @@ -225,6 +233,7 @@ def create_test_job(
channel=channel,
description=description,
failure_rate=failure_rate,
job_duration=job_duration,
)
return ""

Expand All @@ -236,6 +245,7 @@ def _create_single_test_job(
description="Test job",
size=1,
failure_rate=0,
job_duration=0,
):
delayed = (
http.request.env["queue.job"]
Expand All @@ -245,7 +255,7 @@ def _create_single_test_job(
channel=channel,
description=description,
)
._test_job(failure_rate=failure_rate)
._test_job(failure_rate=failure_rate, job_duration=job_duration)
)
return f"job uuid: {delayed.db_record().uuid}"

Expand All @@ -259,6 +269,7 @@ def _create_graph_test_jobs(
channel=None,
description="Test job",
failure_rate=0,
job_duration=0,
):
model = http.request.env["queue.job"]
current_count = 0
Expand All @@ -281,7 +292,7 @@ def _create_graph_test_jobs(
max_retries=max_retries,
channel=channel,
description="%s #%d" % (description, current_count),
)._test_job(failure_rate=failure_rate)
)._test_job(failure_rate=failure_rate, job_duration=job_duration)
)

grouping = random.choice(possible_grouping_methods)
Expand Down
5 changes: 4 additions & 1 deletion queue_job/models/queue_job.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import logging
import random
import time
from datetime import datetime, timedelta

from odoo import _, api, exceptions, fields, models
Expand Down Expand Up @@ -442,7 +443,9 @@ def related_action_open_record(self):
)
return action

def _test_job(self, failure_rate=0):
def _test_job(self, failure_rate=0, job_duration=0):
_logger.info("Running test job.")
if random.random() <= failure_rate:
raise JobError("Job failed")
if job_duration:
time.sleep(job_duration)