def createSubmission(self, user, assignment): sub = Submission(assignment=assignment, submitter=user.user, notes="This is a submission.", state=Submission.SUBMITTED) sub.save() return sub
def createValidatableSubmission(self, user): ''' Create a submission that can be validated by executor. ''' sf = self.createSubmissionFile() sub = Submission(assignment=self.validatedAssignment, submitter=user.user, notes="This is a validatable submission.", state=Submission.TEST_COMPILE_PENDING, file_upload=sf) sub.save() return sub
def createValidatedSubmission(self, user, test_host='127.0.0.1'): ''' Create a submission that already has test results in the database. ''' machine = self.createTestMachine(test_host) sf = self.createTestedSubmissionFile(machine) sub = Submission(assignment=self.validatedAssignment, submitter=user.user, notes="This is an already validated submission.", state=Submission.SUBMITTED_TESTED, file_upload=sf) sub.save() return sub
def createSubmission(self, user, assignment, authors=[]): sub = Submission( assignment=assignment, submitter=user.user, notes="This is a submission.", ) sub.save() if authors: [sub.authors.add(author) for author in authors] sub.save() return sub
def createSingleFileValidatorSubmission(self, user): ''' Create a submission that can be validated by executor, where the validator is a single file and not an archive. ''' sf = self.createSubmissionFile() sub = Submission(assignment=self.singleFileValidatorAssignment, submitter=user.user, notes=uccrap + "This is a validatable submission.", state=Submission.TEST_COMPILE_PENDING, file_upload=sf) sub.save() return sub
def createSubmission(self, user, assignment, authors=[]): sub = Submission( assignment=assignment, submitter=user.user, notes="This is a submission.", ) sub.save() if authors: [sub.authors.add(author) for author in authors] sub.save() return sub
def createValidatableSubmission(self, user): ''' Create a submission that can be validated by executor. ''' sf = self.createSubmissionFile() sub = Submission( assignment=self.validatedAssignment, submitter=user.user, notes="This is a validatable submission.", state=Submission.TEST_COMPILE_PENDING, file_upload=sf ) sub.save() return sub
def createValidatableWithSupportFilesSubmission(self, user): ''' Create a submission that can be validated by executor, which as support files in the assignment. ''' sf = self.createSubmissionFile() sub = Submission( assignment=self.validatedWithSupportFilesAssignment, submitter=user.user, notes=uccrap + "This is a validatable submission for an assignment with support files.", state=Submission.TEST_COMPILE_PENDING, file_upload=sf) sub.save() return sub
def createValidatedSubmission(self, user, test_host='127.0.0.1'): ''' Create a submission that already has test results in the database. ''' machine = self.createTestMachine(test_host) sf = self.createTestedSubmissionFile(machine) sub = Submission( assignment=self.validatedAssignment, submitter=user.user, notes="This is an already validated submission.", state=Submission.SUBMITTED_TESTED, file_upload=sf ) sub.save() return sub
def createValidatableNoArchiveSubmission(self, user): ''' Create a submission that can be validated by executor. It is not an archive and cant be compiled. This tests special executor cases, e.g. PDF report submission. ''' sf = self.createNoArchiveSubmissionFile() sub = Submission( assignment=self.validatedAssignment, submitter=user.user, notes=uccrap + "This is a validatable submission with a non-archive.", state=Submission.TEST_VALIDITY_PENDING, file_upload=sf) sub.save() return sub
def createCompileBrokenSubmission(self, user): ''' Create a submission that cannot be compiled. ''' sf = self.createCompileBrokenSubmissionFile() sub = Submission(assignment=self.validatedAssignment, submitter=user.user, notes=uccrap + "This is a non-compilable submission.", state=Submission.TEST_COMPILE_PENDING, file_upload=sf) fname = "reverse_support_files.zip" shutil.copyfile(rootdir + '/opensubmit/tests/submfiles/' + fname, settings.MEDIA_ROOT + fname) sub.assignment.attachment_test_support = DjangoFile( open(settings.MEDIA_ROOT + fname)) sub.assignment.save() sub.save() return sub
def testAssignmentSpecificTestMachine(self): # Register two test machines T1 and T2 real_machine = self._registerExecutor() fake_machine = TestMachine(host="127.0.0.2") fake_machine.save() # Assign each of them to a different assignment self.openAssignment.test_machines.add(real_machine) self.validatedAssignment.test_machines.add(fake_machine) # Produce submission for the assignment linked to fake_machine sub1 = Submission(assignment=self.validatedAssignment, submitter=self.current_user.user, state=Submission.TEST_COMPILE_PENDING, file_upload=self.createSubmissionFile()) sub1.save() # Run real_machine executor, should not react on this submission old_sub1_state = sub1.state self.assertEquals(False, self._runExecutor()) # Make sure that submission object was not touched, whatever the executor says sub1 = Submission.objects.get(pk=sub1.pk) self.assertEquals(old_sub1_state, sub1.state)
def testAssignmentSpecificTestMachine(self): # Register two test machines T1 and T2 real_machine = self._registerExecutor() fake_machine = TestMachine(host="127.0.0.2") fake_machine.save() # Assign each of them to a different assignment self.openAssignment.test_machines.add(real_machine) self.validatedAssignment.test_machines.add(fake_machine) # Produce submission for the assignment linked to fake_machine sub1 = Submission( assignment=self.validatedAssignment, submitter=self.current_user.user, state=Submission.TEST_COMPILE_PENDING, file_upload=self.createSubmissionFile() ) sub1.save() # Run real_machine executor, should not react on this submission old_sub1_state = sub1.state self.assertEquals(False, self._runExecutor()) # Make sure that submission object was not touched, whatever the executor says sub1 = Submission.objects.get(pk=sub1.pk) self.assertEquals(old_sub1_state, sub1.state)
def prepareSubmission(self, fname1, fname2): ''' Prepare two submissions with the given file uploads. ''' f1 = self.createSubmissionFile(fname1); f2 = self.createSubmissionFile(fname2); sub1 = Submission( assignment=self.validatedAssignment, submitter=self.current_user.user, notes="This is a validatable submission.", state=Submission.TEST_COMPILE_PENDING, file_upload=f1 ) sub1.save() sub2 = Submission( assignment=self.validatedAssignment, submitter=self.current_user.user, notes="This is a validatable submission.", state=Submission.TEST_COMPILE_PENDING, file_upload=f2 ) sub2.save() return sub1, sub2