From: <bsc...@us...> - 2007-03-01 20:17:16
|
Revision: 328 http://svn.sourceforge.net/unicore/?rev=328&view=rev Author: bschuller Date: 2007-03-01 12:17:07 -0800 (Thu, 01 Mar 2007) Log Message: ----------- cleanup the testsuite; add sms functional tests; remove slashes on listDirectory responses Modified Paths: -------------- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/StorageClient.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/FixedStorageImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/HomeStorageImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/SMSBaseImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/xnjs/XNJSFacade.java unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/AbstractJobRun.java unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/RegressionTest.java unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/RunDate.java unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/ServiceDiscoveryTest.java unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/TestSuite.java Added Paths: ----------- unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/RunSMSTest.java Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/StorageClient.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/StorageClient.java 2007-03-01 15:05:59 UTC (rev 327) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/StorageClient.java 2007-03-01 20:17:07 UTC (rev 328) @@ -43,6 +43,8 @@ import org.unigrids.services.atomic.types.GridFileType; import org.unigrids.services.atomic.types.ProtocolDocument; import org.unigrids.services.atomic.types.ProtocolType; +import org.unigrids.x2006.x04.services.sms.CreateDirectoryDocument; +import org.unigrids.x2006.x04.services.sms.CreateDirectoryResponseDocument; import org.unigrids.x2006.x04.services.sms.ExportFileDocument; import org.unigrids.x2006.x04.services.sms.ExportFileResponseDocument; import org.unigrids.x2006.x04.services.sms.ImportFileDocument; @@ -171,6 +173,24 @@ } /** + * create a directory (relative to storage root) + * @param p + * @throws BaseFault + */ + public void createDirectory(String p) + throws BaseFault{ + CreateDirectoryDocument in=CreateDirectoryDocument.Factory.newInstance(); + in.addNewCreateDirectory().setPath(p); + logger.fine("Calling service at wsaTo: "+epr.getAddress().getStringValue()); + try{ + StorageManagement service=(StorageManagement)makeProxy(StorageManagement.class); + service.CreateDirectory(in); + }catch(Exception e){ + logger.log(Level.SEVERE,"Could not create directory.", e); + throw BaseFault.createFault(e.getMessage()); + } + } + /** * create a rbyteio client for exporting from the given path * @param path * @return Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/FixedStorageImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/FixedStorageImpl.java 2007-03-01 15:05:59 UTC (rev 327) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/FixedStorageImpl.java 2007-03-01 20:17:07 UTC (rev 328) @@ -25,6 +25,7 @@ super.initialise(name, initobjs); workdir=(String)initobjs.get(SMSBaseImpl.INIT_DIRECTORY); if(workdir==null)throw new IllegalArgumentException("Work directory cannot be null."); + if(!workdir.endsWith(getSeparator()))workdir+=sep; logger.info("SMS init in <"+workdir+">"); } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/HomeStorageImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/HomeStorageImpl.java 2007-03-01 15:05:59 UTC (rev 327) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/HomeStorageImpl.java 2007-03-01 20:17:07 UTC (rev 328) @@ -37,10 +37,18 @@ }catch(Exception e){ logger.log(Level.SEVERE,"Could not retrieve HOME directory.",e); } + if(!home.endsWith(getSeparator()))home=home+sep; } return home; } + @Override + public void postActivate() { + super.postActivate(); + home=null; + } + + } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/SMSBaseImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/SMSBaseImpl.java 2007-03-01 15:05:59 UTC (rev 327) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/SMSBaseImpl.java 2007-03-01 20:17:07 UTC (rev 328) @@ -93,9 +93,12 @@ * @version $Id$ */ public abstract class SMSBaseImpl extends UASWSResourceImpl implements StorageManagement{ - static String sep=null; + private static final long serialVersionUID = 2093066580447240468L; + //file separator + public static String sep=null; + //initparam keys public static final String INIT_DIRECTORY=SMSBaseImpl.class.getName()+"_workdir"; public static final String INIT_STORAGENAME=SMSBaseImpl.class.getName()+"_storagename"; @@ -146,7 +149,9 @@ } /** - * retrieve the base dir of this storage + * retrieve the base dir of this storage</br> + * It is assumed to end with the file separator + * * @return */ protected abstract String getStorageRoot(); @@ -166,8 +171,8 @@ tsi.commit(); }catch(Exception e){ - logger.log(Level.SEVERE,"Could not list directory",e); - throw new BaseFault("Could not list directory."); + logger.log(Level.SEVERE,"Could not create directory",e); + throw new BaseFault("Could not create directory."); } CreateDirectoryResponseDocument res=CreateDirectoryResponseDocument.Factory.newInstance(); res.addNewCreateDirectoryResponse(); @@ -261,9 +266,9 @@ //get list from tsi try{ - String p=convertPath(in.getListDirectory().getPath()); + String p=in.getListDirectory().getPath(); TSI tsi=getTSI(); - tsi.begin();tsi.cd(getStorageRoot()+"/"+p);tsi.commit(); + tsi.begin();tsi.cd(getStorageRoot()+p);tsi.commit(); XnjsFile[] tsifiles=tsi.ls(); for(XnjsFile f: tsifiles){ GridFileType gf=res.addNewGridFile(); @@ -280,13 +285,17 @@ return resd; } - //remove leading reference to base directory... + /** + * remove leading reference to base directory, making paths + * relative to the storage root + */ private String convertPath(String p){ logger.finer("Got path:"+p+" workdir="+getStorageRoot()); String res=p; if(p.startsWith(getStorageRoot())){ res=p.substring(getStorageRoot().length()); logger.finer("converted to "+res); + while(p.startsWith(getSeparator()))p=p.substring(1); } return res; } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/xnjs/XNJSFacade.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/xnjs/XNJSFacade.java 2007-03-01 15:05:59 UTC (rev 327) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/xnjs/XNJSFacade.java 2007-03-01 20:17:07 UTC (rev 328) @@ -65,7 +65,7 @@ * initialise the backend. This may be called more than once. * @return XNJS instance */ - public static XNJS initXNJS(){ + public static synchronized XNJS initXNJS(){ String singleXNJS=UAS.getProperty(UAS.SINGLE_XNJS); Boolean b=Boolean.parseBoolean(singleXNJS); Modified: unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/AbstractJobRun.java =================================================================== --- unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/AbstractJobRun.java 2007-03-01 15:05:59 UTC (rev 327) +++ unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/AbstractJobRun.java 2007-03-01 20:17:07 UTC (rev 328) @@ -20,18 +20,18 @@ EndpointReferenceType tssepr; @Override - public void run() { + public void doTest() { try{ url=Kernel.getKernel().getProperty(Kernel.WSRF_BASEURL); tssepr=EndpointReferenceType.Factory.newInstance(); tssepr.addNewAddress().setStringValue(url+"/"+UAS.TSS+"?res=default_targetsystem"); TSSClient tss=new TSSClient(tssepr); Calendar c=tss.getCurrentTime(); - assert(c!=null); + assertTrue(c!=null); JobClient job=submitJob(tss); beforeStart(job); job.start(); - System.out.println(job.waitUntilDone(60*1000)); + System.out.println(job.waitUntilDone(180*1000)); onFinish(job); }catch(Exception e){ throw new RuntimeException(e); @@ -90,5 +90,4 @@ * @return */ protected abstract JobDefinitionDocument getJob(); - } Modified: unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/RegressionTest.java =================================================================== --- unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/RegressionTest.java 2007-03-01 15:05:59 UTC (rev 327) +++ unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/RegressionTest.java 2007-03-01 20:17:07 UTC (rev 328) @@ -1,9 +1,17 @@ package de.fzj.unicore.uas; -public abstract class RegressionTest implements Runnable { +import junit.framework.TestCase; + +public abstract class RegressionTest extends TestCase{ + protected boolean success=true; + public abstract String getDescription(); - public abstract void run(); + public abstract void doTest(); + public boolean success(){ + return success; + } + } Modified: unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/RunDate.java =================================================================== --- unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/RunDate.java 2007-03-01 15:05:59 UTC (rev 327) +++ unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/RunDate.java 2007-03-01 20:17:07 UTC (rev 328) @@ -1,14 +1,10 @@ package de.fzj.unicore.uas; -import java.util.Calendar; - import org.ggf.schemas.jsdl.x2005.x11.jsdl.ApplicationType; import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionDocument; import org.w3.x2005.x08.addressing.EndpointReferenceType; import de.fzj.unicore.uas.client.JobClient; -import de.fzj.unicore.uas.client.TSSClient; -import de.fzj.unicore.wsrflite.Kernel; public class RunDate extends AbstractJobRun{ @@ -16,23 +12,6 @@ EndpointReferenceType tssepr; @Override - public void run() { - try{ - url=Kernel.getKernel().getProperty(Kernel.WSRF_BASEURL); - tssepr=EndpointReferenceType.Factory.newInstance(); - tssepr.addNewAddress().setStringValue(url+"/"+UAS.TSS+"?res=default_targetsystem"); - TSSClient tss=new TSSClient(tssepr); - Calendar c=tss.getCurrentTime(); - assert(c!=null); - JobClient job=submitJob(tss); - job.start(); - System.out.println("Job was: "+job.waitUntilDone(60*1000)); - - }catch(Exception e){ - throw new RuntimeException(e); - } - } - @Override public String getDescription() { return "Run 'Date' application on default Targetsystem."; } Added: unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/RunSMSTest.java =================================================================== --- unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/RunSMSTest.java (rev 0) +++ unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/RunSMSTest.java 2007-03-01 20:17:07 UTC (rev 328) @@ -0,0 +1,91 @@ +package de.fzj.unicore.uas; + +import java.util.Calendar; + +import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionDocument; +import org.unigrids.services.atomic.types.GridFileType; +import org.w3.x2005.x08.addressing.EndpointReferenceType; + +import de.fzj.unicore.uas.client.JobClient; +import de.fzj.unicore.uas.client.StorageClient; +import de.fzj.unicore.uas.client.TSSClient; +import de.fzj.unicore.wsrflite.Kernel; + +/** + * runs sms tests on a newly created USspace + * @author schuller + */ +public class RunSMSTest extends AbstractJobRun{ + + String url; + EndpointReferenceType tssepr; + + + @Override + public String getDescription() { + return "Storage tests"; + } + + @Override + public void doTest() { + try{ + url=Kernel.getKernel().getProperty(Kernel.WSRF_BASEURL); + tssepr=EndpointReferenceType.Factory.newInstance(); + tssepr.addNewAddress().setStringValue(url+"/"+UAS.TSS+"?res=default_targetsystem"); + TSSClient tss=new TSSClient(tssepr); + Calendar c=tss.getCurrentTime(); + assertTrue(c!=null); + JobClient job=submitJob(tss); + StorageClient sms=job.getUspaceClient(); + //stage in a file and test listdirectory + String in = "this is a test"; + stageIn(job,"foo", in.getBytes()); + GridFileType[] dir=sms.listDirectory("."); + assertTrue(dir.length==1); + String name=dir[0].getPath(); + String out=new String(stageOut(job,name)); + assertTrue(out.equals(in)); + //test create directory + sms.createDirectory("bar"); + dir=sms.listDirectory("."); + assertTrue(dir.length==2); + for(GridFileType f: dir){ + if(f.getPath().equals("./bar")){ + assertTrue(f.getIsDirectory()); + } + } + //stage in stuff to new directory + in = "this is a second test"; + stageIn(job,"./bar/foo2", in.getBytes()); + dir=sms.listDirectory("./bar"); + assertTrue(dir.length==1); + name=dir[0].getPath(); + out=new String(stageOut(job,name)); + assertTrue(out.equals(in)); + + }catch(Exception e){ + e.printStackTrace(); + success=false; + } + } + + + @Override + protected void beforeStart(JobClient jms) throws Exception { + // TODO Auto-generated method stub + + } + + @Override + protected JobDefinitionDocument getJob() { + JobDefinitionDocument jdd=JobDefinitionDocument.Factory.newInstance(); + jdd.addNewJobDefinition().setId("EmptyJob"); + return jdd; + } + + @Override + protected void onFinish(JobClient jms) throws Exception { + } + + +} Modified: unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/ServiceDiscoveryTest.java =================================================================== --- unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/ServiceDiscoveryTest.java 2007-03-01 15:05:59 UTC (rev 327) +++ unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/ServiceDiscoveryTest.java 2007-03-01 20:17:07 UTC (rev 328) @@ -20,9 +20,9 @@ } String url; EndpointReferenceType registryEpr; - int errors=0; + @Override - public void run() { + public void doTest() { try{ url=Kernel.getKernel().getProperty(Kernel.WSRF_BASEURL); registryEpr=EndpointReferenceType.Factory.newInstance(); @@ -35,7 +35,6 @@ } catch(Exception e){ e.printStackTrace(); - errors++; } } @@ -46,7 +45,6 @@ } catch(Exception e){ e.printStackTrace(); - errors++; } } @@ -57,14 +55,13 @@ } catch(Exception e){ e.printStackTrace(); - errors++; } } }catch(Exception e){ - throw new RuntimeException(e); + success=false; } - if(errors>0)throw new RuntimeException("Errors occured"); + } Modified: unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/TestSuite.java =================================================================== --- unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/TestSuite.java 2007-03-01 15:05:59 UTC (rev 327) +++ unicorex/uas-core/trunk/src/test/java/de/fzj/unicore/uas/TestSuite.java 2007-03-01 20:17:07 UTC (rev 328) @@ -39,9 +39,10 @@ } protected void addTests(){ - tests.add(new RunDate()); - tests.add(new RunCat()); - tests.add(new ServiceDiscoveryTest()); +// tests.add(new RunDate()); +// tests.add(new RunCat()); +// tests.add(new ServiceDiscoveryTest()); + tests.add(new RunSMSTest()); } public void testAll()throws Exception{ @@ -52,8 +53,9 @@ for(RegressionTest r: tests){ sw.snapShot("Start: \n"+r.getDescription()); try{ - r.run(); + r.doTest(); sw.snapShot("OK."); + if(!r.success())errors++; }catch(Exception e){ e.printStackTrace(); sw.snapShot("Error: "+e.getMessage()); @@ -62,6 +64,7 @@ } System.out.println("***\n*** Results:\n***\n"); System.out.println(sw.toString()); + System.out.println(errors+" errors occurred."); if(errors>0)fail(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |