def test_two_sources_one_destination(db_session, vo, file, source_rse, source2_rse, mock_request): add_replicas(rse_id=source2_rse['id'], files=[file], account=mock_request.account, session=db_session) try: src1_distance, src2_distance = (get_distances( src_rse_id=src_rse, dest_rse_id=mock_request.dest_rse_id, session=db_session) for src_rse in (source_rse['id'], source2_rse['id'])) assert src1_distance and len( src1_distance) == 1 and src1_distance[0]['ranking'] == 5 assert src2_distance and len( src2_distance) == 1 and src2_distance[0]['ranking'] == 2 preparer.run_once(session=db_session) db_session.commit() updated_mock_request = db_session.query(models.Request).filter_by( id=mock_request.id).one() # type: models.Request assert updated_mock_request.state == RequestState.QUEUED assert updated_mock_request.source_rse_id == source2_rse[ 'id'] # distance 2 < 5 finally: delete_replicas(rse_id=source2_rse['id'], files=[file], session=db_session) db_session.commit()
def test_two_sources_one_destination(db_session, vo, file, mock_request): def setup(rse): add_distance(rse.rse_id, mock_request.dest_rse_id, ranking=2, session=rse.db_session) add_replicas(rse_id=rse.rse_id, files=[file], account=mock_request.account, session=rse.db_session) with GeneratedRSE(vo=vo, db_session=db_session, setup_func=setup) as source2_rse: src1_distance, src2_distance = ( get_distances( src_rse_id=src_rse, dest_rse_id=mock_request.dest_rse_id, session=db_session, ) for src_rse in (mock_request.source_rse_id, source2_rse.rse_id) ) assert src1_distance and len(src1_distance) == 1 and src1_distance[0]['ranking'] == 5 assert src2_distance and len(src2_distance) == 1 and src2_distance[0]['ranking'] == 2 preparer.run_once(session=db_session, logger=print) db_session.commit() updated_mock_request = ( db_session.query(models.Request).filter_by(id=mock_request.id).one() ) # type: models.Request assert updated_mock_request.state == RequestState.QUEUED assert updated_mock_request.source_rse_id == source2_rse.rse_id # distance 2 < 5 delete_replicas(rse_id=source2_rse.rse_id, files=[file], session=db_session)
def test_preparer_setting_request_state_queued(db_session, mock_request): preparer.run_once(session=db_session, logger=print) db_session.commit() updated_mock_request = db_session.query(models.Request).filter_by(id=mock_request.id).one() # type: models.Request assert updated_mock_request.state == RequestState.QUEUED
def test_preparer_setting_request_state_waiting(db_session, mock_request): preparer.run_once(session=db_session) db_session.commit() updated_mock_request = db_session.query(models.Request).filter_by( id=mock_request.id).one() # type: models.Request assert updated_mock_request.state == RequestState.WAITING
def test_preparer_for_request_without_source(db_session, mock_request_no_source): preparer.run_once(session=db_session, logger=print) db_session.commit() updated_mock_request: "models.Request" = (db_session.query( models.Request).filter_by(id=mock_request_no_source.id).one()) assert updated_mock_request.state == RequestState.NO_SOURCES
def test_preparer_setting_request_source(db_session, vo, source_rse, mock_request): preparer.run_once(session=db_session) db_session.commit() updated_mock_request = db_session.query(models.Request).filter_by( id=mock_request.id).one() # type: models.Request assert updated_mock_request.state == RequestState.QUEUED assert updated_mock_request.source_rse_id == source_rse['id']
def test_preparer_for_request_without_matching_transfertool_source(db_session, source_rse, dest_rse, mock_request): add_rse_attribute(source_rse['id'], 'transfertool', 'fts3', session=db_session) add_rse_attribute(dest_rse['id'], 'transfertool', 'globus', session=db_session) db_session.commit() from rucio.core.rse import REGION REGION.invalidate() preparer.run_once(session=db_session, logger=print) db_session.commit() updated_mock_request = db_session.query(models.Request).filter_by(id=mock_request.id).one() # type: models.Request assert updated_mock_request.state == RequestState.NO_SOURCES