示例#1
0
    def test_add_to_validation_sqs__adds_correct_event_to_queue(self):
        uploaded_file = UploadedFile.create(
            upload_area=self.upload_area,
            name="file2",
            content_type="application/octet-stream; dcp-type=data",
            data="file2_content")
        validation_scheduler = ValidationScheduler(self.upload_area_id,
                                                   [uploaded_file])

        validation_uuid = validation_scheduler.add_to_validation_sqs(
            ["filename123"], "test_docker_image", {"variable": "variable"},
            "123456")

        message = self.sqs.meta.client.receive_message(
            QueueUrl='test_validation_q_url')
        message_body = json.loads(message['Messages'][0]['Body'])
        record = UploadDB().get_pg_record("validation",
                                          validation_uuid,
                                          column='id')
        self.assertEqual(message_body["filenames"], ["filename123"])
        self.assertEqual(message_body["validation_id"], validation_uuid)
        self.assertEqual(message_body["validator_docker_image"],
                         "test_docker_image")
        self.assertEqual(message_body["environment"], {"variable": "variable"})
        self.assertEqual(message_body["orig_validation_id"], "123456")
        self.assertEqual(message_body["upload_area_uuid"],
                         uploaded_file.upload_area.uuid)
        self.assertEqual(record["status"], "SCHEDULING_QUEUED")
示例#2
0
    def test_check_files_can_be_validated__if_file_is_too_large__returns_true(
            self):
        uploaded_file = UploadedFile.create(
            upload_area=self.upload_area,
            name="file2",
            content_type="application/octet-stream; dcp-type=data",
            data="file2_content")
        scheduler = ValidationScheduler(self.upload_area_id, [uploaded_file])

        file_validatable = scheduler.check_files_can_be_validated()

        self.assertEqual(True, file_validatable)
示例#3
0
    def test__create_validation_event__creates_event_with_correct_status(self):
        uploaded_file = UploadedFile.create(
            upload_area=self.upload_area,
            name="file2#",
            content_type="application/octet-stream; dcp-type=data",
            data="file2_content")
        scheduler = ValidationScheduler(self.upload_area_id, [uploaded_file])
        validation_id = str(uuid.uuid4())

        validation_event = scheduler._create_validation_event(
            "test_docker_image", validation_id, None)

        self.assertEqual(validation_event.docker_image, "test_docker_image")
        self.assertEqual(validation_event.status, "SCHEDULING_QUEUED")
示例#4
0
    def test__update_validation_event__updates_event_status(self):
        uploaded_file = UploadedFile.create(
            upload_area=self.upload_area,
            name="file2#",
            content_type="application/octet-stream; dcp-type=data",
            data="file2_content")
        scheduler = ValidationScheduler(self.upload_area_id, [uploaded_file])
        scheduler.batch_job_id = "123456"
        validation_id = str(uuid.uuid4())
        validation_event = scheduler._create_validation_event(
            "test_docker_image", validation_id, None)

        self.assertEqual(validation_event.job_id, None)
        validation_event = scheduler._update_validation_event(
            "test_docker_image", validation_id, None)

        self.assertEqual(validation_event.job_id, "123456")
        self.assertEqual(validation_event.status, "SCHEDULED")
示例#5
0
def schedule_file_validation(event, context):
    logger.info(f"initiated schedule_file_validation with {event}")
    unwrapped_event = json.loads(event["Records"][0]["body"])
    upload_area_uuid = unwrapped_event["upload_area_uuid"]
    filenames = unwrapped_event["filenames"]
    validation_id = unwrapped_event["validation_id"]
    image = unwrapped_event["validator_docker_image"]
    env = unwrapped_event["environment"]
    orig_validation_id = unwrapped_event["orig_validation_id"]
    upload_area = UploadArea(upload_area_uuid)
    files = []
    for filename in filenames:
        file = upload_area.uploaded_file(filename)
        files.append(file)
    validation_scheduler = ValidationScheduler(upload_area_uuid, files)
    validation_id = validation_scheduler.schedule_batch_validation(
        validation_id, image, env, orig_validation_id)
    logger.info(f"scheduled batch job with {event}")