package de.zib.gndms.infra.tests; /* * Copyright 2008-2011 Zuse Institute Berlin (ZIB) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import de.zib.gndms.infra.system.SysTestBase; import de.zib.gndms.kit.network.test.LittleTransferData; import de.zib.gndms.kit.network.test.TransferTestMetaData; import de.zib.gndms.logic.model.gorfx.FileTransferActionFactory; import de.zib.gndms.logic.model.gorfx.FileTransferORQCalculator; import de.zib.gndms.logic.model.gorfx.FileTransferORQFactory; import de.zib.gndms.logic.model.gorfx.FileTransferTaskAction; import de.zib.gndms.model.common.PersistentContract; import de.zib.gndms.model.common.types.TransientContract; import de.zib.gndms.model.gorfx.AbstractTask; import de.zib.gndms.model.gorfx.OfferType; import de.zib.gndms.model.gorfx.Task; import de.zib.gndms.model.gorfx.types.FileTransferORQ; import de.zib.gndms.model.gorfx.types.FileTransferResult; import de.zib.gndms.model.gorfx.types.TaskState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.log4j.PropertyConfigurator; import org.globus.ftp.exception.ClientException; import org.globus.ftp.exception.ServerException; import org.globus.wsrf.ResourceException; import org.joda.time.DateTime; import org.testng.annotations.*; import javax.persistence.EntityManager; import java.io.IOException; import java.util.Arrays; import java.util.Calendar; import java.util.HashMap; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; /** * @author try ma ik jo rr a zib * @version $Id$ * <p/> * User: mjorra, Date: 14.10.2008, Time: 17:30:57 */ public class FileTransferActionTest extends SysTestBase { Logger log = LoggerFactory.getLogger(FileTransferActionTest.class); TransferTestMetaData transferData; String logFileConfig; Task task; @Parameters( { "srcURI", "destURI", "logFileCfg", "gridName" } ) public FileTransferActionTest( String srcURI, String destURI, String logFileCfg, @Optional( "c3grid" )String gridName ) { super( gridName ); //transferData = new TransferTestThreeFiles( srcURI, destURI ); transferData = new LittleTransferData( srcURI, destURI ); logFileConfig = logFileCfg; } @BeforeClass( groups={ "net", "db", "sys", "action", "task" } ) public void beforeClass ( ) throws ServerException, IOException, ClientException { PropertyConfigurator.configure( logFileConfig ); runDatabase(); transferData.initialize(); // create orq FileTransferORQ orq = new FileTransferORQ( ); orq.setSourceURI( transferData.getSourceURI() ); orq.setTargetURI( transferData.getDestinationURI() ); orq.setFileMap( transferData.getFileMap() ); // create orq-calc FileTransferORQCalculator calc = new FileTransferORQCalculator(); calc.setORQArguments( orq ); // calc.setNetAux( getSys().getNetAux() ); TransientContract con = calc.createOffer(); PersistentContract pcon = con.acceptAt( new DateTime() ); // creating offertype OfferType ot; EntityManager em = null; try{ em = getSys().getEntityManagerFactory().createEntityManager(); ot = em.find( OfferType.class, "http://gndms.zib.de/ORQTypes/FileTransfer" ); if( ot == null ) { ot = createFTOfferType(); em.getTransaction().begin( ); em.persist( ot ); em.getTransaction().commit( ); } } finally { if( em != null && em.isOpen( ) ) em.close( ); ot = createFTOfferType(); } // create task task = new Task( ); task.setId( getSys().nextUUID() ); task.setDescription( orq.getDescription() ); task.setTerminationTime( pcon.getCurrentTerminationTime() ); task.setOfferType( ot ); task.setOrq( orq ); task.setContract( pcon ); Calendar tt = pcon.getDeadline(); tt.add( Calendar.YEAR, 10 ); task.setTerminationTime( tt ); } @Test(groups = { "net", "db", "sys", "action", "task"}) public void testIt( ) throws ResourceException, ExecutionException, InterruptedException { EntityManager em = null; try{ em = getSys().getEntityManagerFactory().createEntityManager(); em.getTransaction( ).begin( ); em.persist( task ); em.getTransaction( ).commit( ); FileTransferTaskAction action = new FileTransferTaskAction( em, task ); Future<AbstractTask> serializableFuture = getSys().submitAction(action, log); assert serializableFuture.get().getState().equals( TaskState.FINISHED ); FileTransferResult ftr = ( FileTransferResult ) task.getData( ); for( String s: Arrays.asList( ftr.getFiles( ) ) ) System.out.println( s ); } finally { if( em != null && em.isOpen( ) ) em.close( ); } } public static OfferType createFTOfferType( ) { OfferType ot = new OfferType( ); ot.setOfferTypeKey( "http://gndms.zib.de/ORQTypes/FileTransfer" ); ot.setCalculatorFactoryClassName( FileTransferORQFactory.class.getName() ); ot.setTaskActionFactoryClassName( FileTransferActionFactory.class.getName( ) ); ot.setConfigMap( new HashMap<String,String>( ) ); return ot; } @AfterClass(groups = { "net", "db", "sys", "action", "task"}) public void afterClass( ) { shutdownDatabase(); } }