def submit(self, request): worker_config = WorkerConfig() code = request.data.get("code") email = request.data.get("email") args = request.data.get("run_configuration", {}) task = submit_code.apply_async( [code, email, args, request.build_absolute_uri(reverse('jobs_notify'))], soft_time_limit=worker_config.timeout ) Task.objects.create(task_id=task.task_id, email_address=email, ip_address=get_client_ip(request), created_at=datetime.datetime.now()) return Response({'task_id': task.task_id})
def setUp(self): self.worker_config = WorkerConfig() self.worker_config.r = fakeredis.FakeStrictRedis()
class TestWorkerConfig(unittest.TestCase): def setUp(self): self.worker_config = WorkerConfig() self.worker_config.r = fakeredis.FakeStrictRedis() def test_redis_set(self): key, value = "key_set", "5" self.worker_config.set_config(key, value) self.assertEqual(int(value), self.worker_config.get_config(key)) def test_redis_get_nonexistent_key(self): self.assertEqual(None, self.worker_config.get_config("invalid_key")) def test_redis_correct_casting(self): key, value = "key_casting", 5 self.worker_config.set_config(key, value) self.assertEqual(value, self.worker_config.get_config(key)) def test_redis_doesnt_cast_strings(self): key, value = "key_string_casting", b"value" self.worker_config.set_config(key, value) self.assertEqual(value, self.worker_config.get_config(key)) def test_timeout_cpu_and_memory_defaults(self): timeout_val_defualt = 600 cpu_share_default = 100 memory_limit_default = 1024 self.assertEqual(timeout_val_defualt, self.worker_config.timeout) self.assertEqual(cpu_share_default, self.worker_config.cpu_share) self.assertEqual(memory_limit_default, self.worker_config.memory_limit) def test_timeout_cpu_and_memory_properties(self): timeout, timeout_val = "timeout", "10" cpu_share, cpu_share_val = "cpu_share", "20" memory_limit, memory_limit_val = "memory_limit", "30" self.worker_config.set_config(timeout, timeout_val) self.worker_config.set_config(cpu_share, cpu_share_val) self.worker_config.set_config(memory_limit, memory_limit_val) self.assertEqual(int(timeout_val), self.worker_config.timeout) self.assertEqual(int(cpu_share_val), self.worker_config.cpu_share) self.assertEqual(int(memory_limit_val), self.worker_config.memory_limit)
from worker.worker_config import WorkerConfig from worker.mailer.mailgun_mailer import MailgunMailer from worker.mailer.dummy_mailer import DummyMailer from worker.processor.failed_test import FailedTestProcessor from worker.processor.coverage import CoverageProcessor from worker.processor.upload import UploadProcessor from worker.processor.klee_run import KleeRunProcessor from worker.processor.stats import StatsProcessor ANSI_ESCAPE_PATTERN = re.compile(r'\x1b[^m]*m') LXC_MESSAGE_PATTERN = re.compile(r'lxc-start: .*') DEVELOPMENT = True if os.environ['DEVELOPMENT'] == "1" else False worker_config = WorkerConfig() class WorkerRunner(): CODE_FILE_NAME = 'code.c' OBJECT_FILE_NAME = 'code.o' DOCKER_MOUNT_DIR = '/tmp/code' DOCKER_CODE_FILE = os.path.join(DOCKER_MOUNT_DIR, CODE_FILE_NAME) DOCKER_OBJECT_FILE = os.path.join(DOCKER_MOUNT_DIR, OBJECT_FILE_NAME) DEFAULT_PROCESSOR_PIPELINE = [ KleeRunProcessor, UploadProcessor, FailedTestProcessor, StatsProcessor, CoverageProcessor ] def __init__(self, task_id,
class TestWorkerConfig(unittest.TestCase): def setUp(self): self.worker_config = WorkerConfig() self.worker_config.r = fakeredis.FakeStrictRedis() def test_redis_set(self): key, value = "key_set", "5" self.worker_config.set_config(key, value) self.assertEqual(int(value), self.worker_config.get_config(key)) def test_redis_get_nonexistent_key(self): self.assertEqual(None, self.worker_config.get_config("invalid_key")) def test_redis_correct_casting(self): key, value = "key_casting", 5 self.worker_config.set_config(key, value) self.assertEqual(value, self.worker_config.get_config(key)) def test_redis_doesnt_cast_strings(self): key, value = "key_string_casting", "value" self.worker_config.set_config(key, value) self.assertEqual(value, self.worker_config.get_config(key)) def test_timeout_cpu_and_memory_defaults(self): timeout_val_defualt = 30 cpu_share_default = 100 memory_limit_default = 1024 self.assertEqual(timeout_val_defualt, self.worker_config.timeout) self.assertEqual(cpu_share_default, self.worker_config.cpu_share) self.assertEqual(memory_limit_default, self.worker_config.memory_limit) def test_timeout_cpu_and_memory_properties(self): timeout, timeout_val = "timeout", "10" cpu_share, cpu_share_val = "cpu_share", "20" memory_limit, memory_limit_val = "memory_limit", "30" self.worker_config.set_config(timeout, timeout_val) self.worker_config.set_config(cpu_share, cpu_share_val) self.worker_config.set_config(memory_limit, memory_limit_val) self.assertEqual(int(timeout_val), self.worker_config.timeout) self.assertEqual(int(cpu_share_val), self.worker_config.cpu_share) self.assertEqual(int(memory_limit_val), self.worker_config.memory_limit)
from django.shortcuts import render from .decorators import group_required from .forms import AdminConfigForm from worker.worker import celery from worker.worker_config import WorkerConfig from . import usage_stats from . import klee_tasks HUMAN_READABLE_FIELD_NAMES = { "timeout": "Timeout", "cpu_share": "CPU Share", "memory_limit": "Memory Limit" } worker_configuration = WorkerConfig() @group_required("admin") def index(request): attrs = { 'total_done': len(klee_tasks.done_tasks()), 'avg_time': usage_stats.avg_job_duration(), 'jobs_per_day': usage_stats.avg_jobs_per_day(), 'today': datetime.datetime.now().strftime("%a %d/%m/%Y %H:%M") } return render(request, "control_panel/index.html", attrs) @group_required("admin") def get_job_history(request):