Code Duplication    Length = 25-27 lines in 2 locations

web/opensubmit/tests/test_executor.py 2 locations

@@ 302-328 (lines=27) @@
299
            self.user, self.validated_assignment, sf)
300
        test_machine = self._register_executor()
301
        sub.assignment.test_machines.add(test_machine)
302
        return sub
303
304
    def test_register_executor_explicit(self):
305
        machine_count = TestMachine.objects.all().count()
306
        assert(self._register_executor().pk)
307
        self.assertEqual(machine_count + 1, TestMachine.objects.all().count())
308
309
    @override_settings(JOB_EXECUTOR_SECRET='foo')
310
    def test_invalid_secret(self):
311
        self.assertNotEqual(True, self._run_executor())
312
313
    def test_everything_already_tested(self):
314
        create_validated_submission(self.user, self.validated_assignment)
315
        assert(self._register_executor().pk)
316
        self.assertEqual(False, self._run_executor())
317
318
    def test_parallel_executors_test(self):
319
        NUM_PARALLEL = 3
320
        self.validated_assignment.test_machines.add(self._register_executor())
321
        subs = []
322
        for i in range(1, NUM_PARALLEL + 1):
323
            stud = create_user(get_student_dict(i))
324
            self.course.participants.add(stud.profile)
325
            self.course.save()
326
            sf = create_submission_file()
327
            subs.append(create_validatable_submission(
328
                stud, self.validated_assignment, sf))
329
330
        # Span a number of threads, each triggering the executor
331
        # This only creates a real test case if executor serialization
@@ 330-354 (lines=25) @@
327
            subs.append(create_validatable_submission(
328
                stud, self.validated_assignment, sf))
329
330
        # Span a number of threads, each triggering the executor
331
        # This only creates a real test case if executor serialization
332
        # is off (see tests/executor.cfg)
333
        return_codes = utils.run_parallel(len(subs), self._run_executor)
334
        self.assertEqual(
335
            len(list(filter((lambda x: x is True), return_codes))),
336
            len(subs))
337
338
        for sub in subs:
339
            results = SubmissionTestResult.objects.filter(
340
                kind=SubmissionTestResult.VALIDITY_TEST
341
            )
342
            self.assertEqual(NUM_PARALLEL, len(results))
343
            self.assertNotEqual(0, len(results[0].result))
344
345
    def test_too_long_validation(self):
346
        from django.core import mail
347
348
        grading = create_pass_fail_grading()
349
        assignment = create_validated_assignment(
350
            self.course, grading, "/submfiles/validation/d000fff/", "validator_run.py")
351
        assignment.attachment_test_timeout = 1
352
        assignment.save()
353
        sf = create_submission_file("/submfiles/validation/d000fff/helloworld.c")
354
        sub = create_validatable_submission(
355
            self.user, assignment, sf)
356
        test_machine = self._register_executor()
357
        sub.assignment.test_machines.add(test_machine)