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)
Beispiel #4
0
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)
Beispiel #5
0
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)