def test_create_and_check_for_transform_collection_content_orm(self): """ Transform/Collection/Content (ORM): Test the creation, query, and cancel of a Transform/Collection/Content """ trans_properties = get_transform_properties() coll_properties = get_collection_properties() content_properties = get_content_properties() trans_id = add_transform(**trans_properties) coll_properties['transform_id'] = trans_id coll_id = add_collection(**coll_properties) coll_id_1 = get_collection_id( transform_id=trans_id, relation_type=coll_properties['relation_type']) assert_equal(coll_id, coll_id_1) coll = get_collection(coll_id=coll_id) for key in coll_properties: assert_equal(coll[key], coll_properties[key]) update_collection(coll_id, {'status': CollectionStatus.Closed}) coll = get_collection(coll_id=coll_id) assert_equal(coll['status'], CollectionStatus.Closed) content_properties['coll_id'] = coll_id content_id = add_content(returning_id=True, **content_properties) content_id_1 = get_content_id(coll_id=coll_id, scope=content_properties['scope'], name=content_properties['name'], content_type=ContentType.File) assert_equal(content_id, content_id_1) content = get_content(content_id=content_id) update_content(content_id=content_id, parameters={'status': ContentStatus.Lost}) content = get_content(content_id=content_id) assert_equal(content['status'], ContentStatus.Lost) delete_content(content_id=content_id) with assert_raises(exceptions.NoObject): get_content(content_id=content_id) delete_collection(coll_id=coll_id) with assert_raises(exceptions.NoObject): get_collection(coll_id=coll_id) delete_transform(transform_id=trans_id) with assert_raises(exceptions.NoObject): get_transform(transform_id=trans_id)
def test_create_and_check_for_transform_orm(self): """ Transform (ORM): Test the creation, query, and cancel of a Transform """ trans_properties = get_transform_properties() trans_id = add_transform(**trans_properties) transform = get_transform(transform_id=trans_id) for key in trans_properties: assert_equal(transform[key], trans_properties[key]) update_transform(trans_id, {'status': TransformStatus.Failed}) transform = get_transform(transform_id=trans_id) assert_equal(transform['status'], TransformStatus.Failed) delete_transform(trans_id) t = get_transform(transform_id=trans_id) assert_equal(t, None)
def test_create_and_check_for_request_transform_orm(self): """ Transform (ORM): Test to create and delete a Transform """ req_properties = get_request_properties() req_properties['workload_id'] = int(time.time()) + random.randint( 1, 1000000) trans_properties = get_transform_properties() request_id = add_request(**req_properties) trans_properties['request_id'] = request_id trans_id = add_transform(**trans_properties) transform = get_transform(transform_id=trans_id) for key in trans_properties: if key in ['request_id']: continue assert_equal(transform[key], trans_properties[key]) trans_ids1 = get_transform_ids(request_id=request_id) trans_ids2 = get_transform_ids( workload_id=req_properties['workload_id']) trans_ids3 = get_transform_ids(transform_id=trans_id) trans_ids4 = get_transform_ids( request_id=request_id, workload_id=req_properties['workload_id']) trans_ids5 = get_transform_ids( request_id=request_id, workload_id=req_properties['workload_id'], transform_id=trans_id) trans_ids6 = get_transform_ids(request_id=request_id, transform_id=trans_id) trans_ids7 = get_transform_ids( workload_id=req_properties['workload_id'], transform_id=trans_id) assert_equal(trans_ids1, trans_ids2) assert_equal(trans_ids2, trans_ids3) assert_equal(trans_ids3, trans_ids4) assert_equal(trans_ids4, trans_ids5) assert_equal(trans_ids5, trans_ids6) assert_equal(trans_ids6, trans_ids7) delete_transform(trans_id) delete_requests(request_id=request_id) req = get_request(request_id=request_id) assert_equal(req, None) trans = get_transform(transform_id=trans_id) assert_equal(trans, None)
def get_transform(transform_id, session=None): """ Get transform or raise a NoObject exception. :param transform_id: Transform id. :param session: The database session in use. :raises NoObject: If no transform is founded. :returns: Transform. """ return orm_transforms.get_transform(transform_id=transform_id, session=session)
def trigger_update_transform_status(transform_id, input_collection_changed=False, output_collection_changed=False, session=None): """ update transform status based on input/output collection changes. :param transform_id: the transform id. :param input_collection_changed: Whether input collection is changed. :param output_collection_changed: Whether output collection is changed. :param session: The database session in use. :raises NoObject: If no content is founded. :raises DatabaseException: If there is a database error. """ if not input_collection_changed and not output_collection_changed: return transform = orm_transforms.get_transform(transform_id, session=session) status = transform['status'] transform_metadata = transform['transform_metadata'] if 'input_collection_changed' not in transform_metadata: transform_metadata[ 'input_collection_changed'] = input_collection_changed else: transform_metadata['input_collection_changed'] = transform_metadata[ 'input_collection_changed'] or input_collection_changed if 'output_collection_changed' not in transform_metadata: transform_metadata[ 'output_collection_changed'] = output_collection_changed else: transform_metadata['output_collection_changed'] = transform_metadata[ 'output_collection_changed'] or output_collection_changed if isinstance(status, TransformStatus): status = status.value new_status = status if input_collection_changed: if status in [ TransformStatus.ToCancel.value, TransformStatus.Cancelling.value, TransformStatus.Failed.value, TransformStatus.Cancelled.value ]: new_status = status elif status in [ TransformStatus.New.value, TransformStatus.Extend.value ]: new_status = TransformStatus.Ready.value elif status in [TransformStatus.Transforming.value]: new_status = TransformStatus.Transforming.value elif status in [ TransformStatus.Finished.value, TransformStatus.SubFinished.value ]: new_status = TransformStatus.Transforming.value elif input_collection_changed or output_collection_changed: if status in [ TransformStatus.ToCancel.value, TransformStatus.Cancelling.value, TransformStatus.Failed.value, TransformStatus.Cancelled.value ]: new_status = status else: new_status = TransformStatus.Transforming.value parameters = { 'status': new_status, 'transform_metadata': transform_metadata } orm_transforms.update_transform(transform_id=transform_id, parameters=parameters, session=session)