From: <bsc...@us...> - 2012-12-19 15:39:53
|
Revision: 15361 http://unicore.svn.sourceforge.net/unicore/?rev=15361&view=rev Author: bschuller Date: 2012-12-19 15:39:43 +0000 (Wed, 19 Dec 2012) Log Message: ----------- better and more consistent handling of unresponsive / unavailable sites; more tests; generate help for authN methods Modified Paths: -------------- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/UCC.java ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/authn/Authentication.java ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/authn/KeystoreAuthN.java ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/Connector.java ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/TargetSystemFactoryLister.java ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/runner/TargetSystemFinder.java ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/TestUCC.java ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestConnector.java ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/util/EmbeddedTestBase.java ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/util/KeystoreAuthNWithPasswd.java Added Paths: ----------- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/GridTaskResult.java ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestRequirements.java ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestRunner.java ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestTargetSystemFinder.java ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestWeightedSelection.java Removed Paths: ------------- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/UCCProperties.java ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestRequirements.java ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestRunner.java ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestWeightedSelection.java Modified: ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/UCC.java =================================================================== --- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/UCC.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/UCC.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -106,8 +106,10 @@ System.err.printf(" %-20s - %s", entry.getName(), entry.getDescription()); System.err.println(); } - + + System.err.println("Enter 'ucc help-auth' for help on authentication options."); System.err.println("Enter 'ucc <command> -h' for help on a particular command."); + if (exit && !unitTesting){ System.exit(1); } @@ -117,6 +119,18 @@ printUsage(true); } + public static void printAuthNUsage() { + String version = getVersion(); + System.out.println("UCC " + version); + System.out.println("The following authentication methods are available:"); + for (Authentication entry : authNMethods.values()) { + System.out.println(); + System.out.printf(" %-20s - %s", entry.getName(), entry.getDescription()); + System.out.println(); + entry.printUsage(); + } + } + /** * loads additional commands from the extentions file specified by * <code>-Ducc.extensions=propertyfile</code> @@ -227,8 +241,13 @@ Command cmd = null; exitCode = null; try { - if (args.length < 1 || args[0].equalsIgnoreCase("help") || args[0].equalsIgnoreCase("-h")) { + boolean showHelp=args.length < 1 || args[0].equalsIgnoreCase("help") || args[0].equalsIgnoreCase("-h"); + boolean showAuthNHelp=args.length == 1 && args[0].equalsIgnoreCase("help-auth"); + if (showHelp) { printUsage(!unitTesting); + } + else if(showAuthNHelp){ + printAuthNUsage(); }else{ cmd = initCommand(args, !unitTesting); cmd.process(); Deleted: ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/UCCProperties.java =================================================================== --- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/UCCProperties.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/UCCProperties.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2012 ICM Uniwersytet Warszawski All rights reserved. - * See LICENCE file for licensing information. - */ -package de.fzj.unicore.ucc; - -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - -import eu.unicore.security.canl.CredentialProperties; -import eu.unicore.security.canl.PasswordCallback; -import eu.unicore.security.canl.TruststoreProperties; -import eu.unicore.util.configuration.ConfigurationException; -import eu.unicore.util.configuration.PropertyMD; -import eu.unicore.util.httpclient.ClientProperties; - -/** - * UCC properties handler - * @author K. Benedyczak - */ -public class UCCProperties extends ClientProperties { - public static final String DEFAULT_PREFIX = "client."; - public final static Map<String, PropertyMD> META = new HashMap<String, PropertyMD>(); - static { - META.putAll(ClientProperties.META); - } - - public UCCProperties(Properties p, PasswordCallback callback) - throws ConfigurationException { - super(p, callback, TruststoreProperties.DEFAULT_PREFIX, - CredentialProperties.DEFAULT_PREFIX, ClientProperties.DEFAULT_PREFIX); - } -} Modified: ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/authn/Authentication.java =================================================================== --- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/authn/Authentication.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/authn/Authentication.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -33,4 +33,9 @@ */ public IClientConfiguration initSecurityProperties(Properties uccPreferences)throws Exception; + /** + * print human-readable usage info (e.g. config properties and their description) + * @param out + */ + public void printUsage(); } Modified: ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/authn/KeystoreAuthN.java =================================================================== --- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/authn/KeystoreAuthN.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/authn/KeystoreAuthN.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -1,16 +1,16 @@ package de.fzj.unicore.ucc.authn; import java.io.IOException; +import java.util.Map.Entry; import java.util.Properties; import de.fzj.unicore.ucc.Constants; -import de.fzj.unicore.ucc.MessageWriter; -import de.fzj.unicore.ucc.helpers.DefaultMessageWriter; import eu.unicore.security.canl.CachingPasswordCallback; import eu.unicore.security.canl.CredentialProperties; import eu.unicore.security.canl.PasswordCallback; import eu.unicore.security.canl.TruststoreProperties; import eu.unicore.security.xfireutil.client.XFireClientFactory; +import eu.unicore.util.configuration.PropertyMD; import eu.unicore.util.httpclient.ClientProperties; import eu.unicore.util.httpclient.IClientConfiguration; @@ -26,12 +26,6 @@ public static final String X509="X509"; - private MessageWriter message=new DefaultMessageWriter(); - - public void setMessageWriter(MessageWriter message){ - this.message=message; - } - @Override public String getName() { return X509; @@ -58,6 +52,28 @@ return sp; } + @Override + public void printUsage(){ + System.out.println("The following properties can be used in the UCC preference file " + + "to configure the X509 authentication. Many of these are optional. Refer to the " + + "manual and/or the example files."); + System.out.println(); + System.out.println("For configuring your credential: "); + for(Entry<String, PropertyMD> entry: CredentialProperties.META.entrySet()){ + PropertyMD prop=entry.getValue(); + if(!prop.isHidden()){ + System.out.println(CredentialProperties.DEFAULT_PREFIX+entry.getKey()+" : "+prop.getDescription()); + } + } + System.out.println(); + System.out.println("For configuring your trusted CAs and certificates: "); + for(Entry<String, PropertyMD> entry: TruststoreProperties.META.entrySet()){ + PropertyMD prop=entry.getValue(); + if(!prop.isHidden()){ + System.out.println(TruststoreProperties.DEFAULT_PREFIX+entry.getKey()+" : "+prop.getDescription()); + } + } + } private PasswordCallback getPasswordCallback() { return new CachingPasswordCallback() { @@ -69,7 +85,7 @@ @Override public char[] getPasswordFromUser(String protectedArtifactType, String protectedArtifactDescription) { String r; - message.message("Please enter your " + protectedArtifactType + + System.out.println("Please enter your " + protectedArtifactType + " ("+protectedArtifactDescription + ") password: "); try { r = readFromStdin(); Modified: ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/Connector.java =================================================================== --- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/Connector.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/Connector.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -2,8 +2,6 @@ import java.util.Calendar; import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicInteger; import org.oasisOpen.docs.wsrf.rl2.TerminationTimeDocument.TerminationTime; @@ -13,7 +11,6 @@ import de.fzj.unicore.uas.client.TSFClient; import de.fzj.unicore.uas.client.TSSClient; import de.fzj.unicore.ucc.Command; -import de.fzj.unicore.ucc.InaccessibleServiceException; import de.fzj.unicore.ucc.MessageWriter; import de.fzj.unicore.wsrflite.xmlbeans.client.IRegistryQuery; import eu.unicore.util.httpclient.IClientConfiguration; @@ -45,6 +42,11 @@ private int initialLifeTime; /** + * the timeout interval (seconds) for waiting for slow or unresponsive sites + */ + private int timeout=10; + + /** * @param registry * @param properties * @param msg @@ -86,10 +88,8 @@ in.getCreateTSR().setTerminationTime(tt); } TSSClient tss= tsf.createTSS(in); - if(tss!=null){ - msg.verbose("Created TSS <"+tss.getTargetSystemName()+"> at address "+tss.getEPR().getAddress().getStringValue()); - tssAvailable.incrementAndGet(); - } + msg.verbose("Created TSS <"+tss.getTargetSystemName()+"> at address "+tss.getEPR().getAddress().getStringValue()); + tssAvailable.incrementAndGet(); }catch(Exception e){ if(Command.getDetailMessage(e).contains("Access denied")){ msg.verbose("Access denied on <"+tsf.getEPR().getAddress().getStringValue()+">"); @@ -106,20 +106,8 @@ } }; try{ - List<Future<Boolean>>results=lister.runOnEachTSF(task); - //synchronize - for(Future<Boolean> f: results){ - try{ - f.get(); - }catch(ExecutionException ee){ - if(! (ee.getCause() instanceof InaccessibleServiceException)){ - String message="Error accessing target system factory."; - msg.error(message,ee.getCause()); - } - }catch(Exception ex){ - msg.error("Error.", ex); - } - } + List<GridTaskResult<Boolean>>results=lister.runOnEachTSF(task); + GridTaskResult.completeAsyncTasks(results, timeout, msg); }catch(Exception ex){ msg.error("Error setting up connect tasks.", ex); } @@ -141,10 +129,23 @@ initialLifeTime=days; } + /** + * set the blacklist i.e. pattern of + * @param blackList + */ public void setBlacklist(String blackList){ this.blackList=blackList; } + /** + * set the timeout (in seconds) when waiting for slow or unresponsive sites + * @param timeout + */ + public void setTimeout(int timeout){ + if(timeout<0)throw new IllegalArgumentException(); + this.timeout=timeout; + } + public int getAvailableTSS(){ return tssAvailable.get(); } Added: ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/GridTaskResult.java =================================================================== --- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/GridTaskResult.java (rev 0) +++ ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/GridTaskResult.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -0,0 +1,94 @@ +package de.fzj.unicore.ucc.helpers; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import de.fzj.unicore.ucc.InaccessibleServiceException; +import de.fzj.unicore.ucc.MessageWriter; + +/** + * wraps a Future with some additional stuff to allow retrieving information about the + * original {@link GridTask} that was executed + * + * @author schuller + * + * @param <T> - the type of result + * + * @since 1.6.0 + */ +public class GridTaskResult<T> implements Future<T> { + + private final Future<T> future; + private final GridTaskTarget<T> target; + + public GridTaskResult(Future<T> future, GridTaskTarget<T> target){ + this.future=future; + this.target=target; + } + + public GridTaskTarget<T>getTarget(){ + return target; + } + + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + return future.cancel(mayInterruptIfRunning); + } + + @Override + public boolean isCancelled() { + return future.isCancelled(); + } + + @Override + public boolean isDone() { + return future.isDone(); + } + + @Override + public T get() throws InterruptedException, ExecutionException { + return future.get(); + } + + @Override + public T get(long timeout, TimeUnit unit) throws InterruptedException, + ExecutionException, TimeoutException { + return future.get(timeout, unit); + } + + + /** + * helper method to wait for some tasks to finish while imposing a timeout + * + * @param results - list of future results + * @param timeout - timeout in seconds + * @param msg - message writer to write errors to + * @return list of results + * @throws InterruptedException + */ + static public <T> List<T> completeAsyncTasks(List<GridTaskResult<T>> results, int timeout, MessageWriter msg) + throws InterruptedException{ + List<T>finalResults=new ArrayList<T>(); + for(GridTaskResult<T> f: results){ + try{ + T result=f.get(timeout, TimeUnit.SECONDS); + if(result!=null)finalResults.add(result); + }catch(ExecutionException ee){ + if(! (ee.getCause() instanceof InaccessibleServiceException)){ + String address=f.getTarget().getEpr().getAddress().getStringValue(); + String message="Error accessing "+address; + msg.error(message,ee.getCause()); + } + }catch(TimeoutException ex){ + String address=f.getTarget().getEpr().getAddress().getStringValue(); + msg.error("Timeout exceeded waiting for "+address, null); + } + } + return finalResults; + } + +} Property changes on: ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/GridTaskResult.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/TargetSystemFactoryLister.java =================================================================== --- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/TargetSystemFactoryLister.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/helpers/TargetSystemFactoryLister.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -3,16 +3,12 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; import org.w3.x2005.x08.addressing.EndpointReferenceType; import de.fzj.unicore.uas.TargetSystemFactory; import de.fzj.unicore.uas.client.TSFClient; -import de.fzj.unicore.ucc.InaccessibleServiceException; import de.fzj.unicore.ucc.MessageWriter; import de.fzj.unicore.wsrflite.xmlbeans.client.IRegistryQuery; import de.fzj.unicore.wsrflite.xmlbeans.client.RegistryClient; @@ -41,6 +37,9 @@ private int runningLimit=10; + //timeout in seconds when waiting for slow or unresponsive sites + private int timeout=10; + private final TSFFilter filter; private final MessageWriter msg; @@ -59,32 +58,21 @@ public void setBlacklist(String[] blacklist){ this.blacklistPatterns=blacklist; } + + public void setTimeout(int timeout){ + this.timeout=timeout; + } + /** * return a list of all accessible target system factories, * providing a pre-initialised TSFClient per target system factory. * A black list will be honored. */ public List<TSFClient> list(){ - List<TSFClient> tss=new ArrayList<TSFClient>(); + List<TSFClient> tss=null; try{ - List<Future<TSFClient>> tasks=runOnEachTSF(new GetTSFClientTask()); - while(tasks.size()>0){ - Future<TSFClient>task=tasks.get(0); - try{ - TSFClient res=task.get(500, TimeUnit.MILLISECONDS); - if(res!=null){ - tss.add(res); - tasks.remove(0); - } - }catch(TimeoutException te){/*no worries will retry*/} - catch(ExecutionException ee){ - if(! (ee.getCause() instanceof InaccessibleServiceException)){ - String message="Error accessing target system factory."; - msg.error(message,ee.getCause()); - } - tasks.remove(0); - } - } + List<GridTaskResult<TSFClient>> tasks=runOnEachTSF(new GetTSFClientTask()); + tss=GridTaskResult.completeAsyncTasks(tasks, timeout, msg); }catch(Exception e){ String message="Can't create list of target systems."; msg.error(message,e); @@ -110,8 +98,8 @@ * @see GridTaskTarget * @return a list of {@link Future} classes for getting the results of the tasks */ - public <T> List<Future<T>>runOnEachTSF(GridTask<T>task)throws Exception{ - List<Future<T>>result=new ArrayList<Future<T>>(); + public <T> List<GridTaskResult<T>>runOnEachTSF(GridTask<T>task)throws Exception{ + List<GridTaskResult<T>>result=new ArrayList<GridTaskResult<T>>(); final List<EndpointReferenceType> tsfs=registry.listServices(TargetSystemFactory.TSF_PORT); for(EndpointReferenceType epr: tsfs){ if(filter!=null && !filter.accept(epr)){ @@ -130,7 +118,9 @@ submittedTask=false; int running=GridTaskTarget.getRunningTasks(); if(running<runningLimit){ - result.add(Resources.getExecutorService().submit(worker)); + Future<T>future=Resources.getExecutorService().submit(worker); + GridTaskResult<T>gtr=new GridTaskResult<T>(future, worker); + result.add(gtr); submittedTask=true; }else{ Thread.sleep(500); @@ -141,6 +131,12 @@ return result; } + /** + * check whether an EPR matches the blacklist + * (i.e. whether the URL contains one of the blacklist tokens) + * @param epr - EPR to check + * @return <code>true</code> if EPR is blacklisted + */ protected boolean isBlacklisted(EndpointReferenceType epr){ boolean result=false; String url=epr.getAddress().getStringValue(); Modified: ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/runner/TargetSystemFinder.java =================================================================== --- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/runner/TargetSystemFinder.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/runner/TargetSystemFinder.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -3,12 +3,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.Iterator; import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; import org.unigrids.x2006.x04.services.tss.TargetSystemPropertiesDocument.TargetSystemProperties; import org.w3.x2005.x08.addressing.EndpointReferenceType; @@ -16,9 +11,9 @@ import de.fzj.unicore.uas.client.TSFClient; import de.fzj.unicore.uas.client.TSSClient; import de.fzj.unicore.ucc.Constants; -import de.fzj.unicore.ucc.InaccessibleServiceException; import de.fzj.unicore.ucc.MessageWriter; import de.fzj.unicore.ucc.helpers.GridTask; +import de.fzj.unicore.ucc.helpers.GridTaskResult; import de.fzj.unicore.ucc.helpers.GridTaskTarget; import de.fzj.unicore.ucc.helpers.TargetSystemFactoryLister; import de.fzj.unicore.wsrflite.xmlbeans.client.IRegistryQuery; @@ -44,6 +39,8 @@ private boolean checkResources=true; + private String blackList; + /** * @param registry * @param properties @@ -78,11 +75,25 @@ this.checkResources=checkResources; } + public void setBlackList(String blacklist){ + this.blackList=blacklist; + } + + /** + * finds a TSS matching all requirements + * @param requirements + * @return + * @throws RunnerException if no match could be found + */ public TSSClient find(final Collection<Requirement> requirements)throws RunnerException{ try{ final List<TSSClient>available=Collections.synchronizedList(new ArrayList<TSSClient>()); - TargetSystemFactoryLister tsfList=new TargetSystemFactoryLister(registry,securityProperties,msg); + if(blackList!=null){ + msg.verbose("Using blacklist <"+blackList+">"); + String[] blacklist=blackList.trim().split(" "); + tsfList.setBlacklist(blacklist); + } GridTask<Boolean>task=new GridTask<Boolean>(){ @@ -136,27 +147,12 @@ return Boolean.FALSE; } }; - List<Future<Boolean>> results=tsfList.runOnEachTSF(task); - //wait for tasks to finish - do{ - for(Iterator<Future<Boolean>>iter=results.iterator();iter.hasNext();){ - try{ - Boolean found=iter.next().get(500, TimeUnit.MILLISECONDS); - if(found!=null)iter.remove(); - }catch(TimeoutException te){ - //will retry - } - catch(ExecutionException ee){ - if(! (ee.getCause() instanceof InaccessibleServiceException)){ - //something went wrong computing the result - msg.error("Error getting target system", ee.getCause()); - } - iter.remove(); - } - } - }while(results.size()>0); + List<GridTaskResult<Boolean>> results=tsfList.runOnEachTSF(task); + //wait for tasks to finish + GridTaskResult.completeAsyncTasks(results, 10, msg); + TSSClient tss=null; if(available.size()==0){ throw new RunnerException(Runner.ERR_NO_SITE,"No matching target system available (try 'connect' or check job requirements)"); @@ -182,7 +178,6 @@ if(requirements==null || requirements.size()==0){ return true; } - TargetSystemProperties props=tssClient.getResourcePropertiesDocument().getTargetSystemProperties(); for(Requirement r: requirements){ msg.verbose("Check requirement: "+r.getDescription()); Modified: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/TestUCC.java =================================================================== --- ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/TestUCC.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/TestUCC.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -25,6 +25,8 @@ @Test public void test_PrintUsage(){ UCC.printUsage(false); + System.err.println("\n"); + UCC.printAuthNUsage(); } @Test @@ -41,6 +43,8 @@ ex.printStackTrace(); fail(); } + args=new String []{"help-auth"}; + UCC.main(args); UCC.mute=false; } Modified: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestConnector.java =================================================================== --- ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestConnector.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestConnector.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -1,11 +1,17 @@ package de.fzj.unicore.ucc.helpers; import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.fail; +import static org.junit.Assert.assertTrue; +import java.util.HashMap; +import java.util.Map; + import org.junit.Test; import org.w3.x2005.x08.addressing.EndpointReferenceType; import de.fzj.unicore.ucc.util.EmbeddedTestBase; +import de.fzj.unicore.wsrflite.admin.ResourceAvailability; import de.fzj.unicore.wsrflite.utils.WSServerUtilities; import de.fzj.unicore.wsrflite.xmlbeans.client.RegistryClient; import de.fzj.unicore.wsrflite.xmlbeans.registry.RegistryCreator; @@ -15,12 +21,59 @@ @Test public void testConnector()throws Exception{ - EndpointReferenceType regEPR=WSServerUtilities.makeEPR(Registry.REGISTRY_SERVICE, - RegistryCreator.DEFAULT_REGISTRY_ID, uas.getKernel()); - RegistryClient reg=new RegistryClient(regEPR,uas.getKernel().getClientConfiguration()); - Connector c=new Connector(reg,reg.getSecurityConfiguration(),this); + Connector c=makeConnector(); + try{ + c.setInitialLifetime(-1); + fail("Negative lifetime should be forbidden"); + }catch(IllegalArgumentException e){/*expected*/} + c.setInitialLifetime(1); + try{ + c.setTimeout(-1); + fail("Negative timeout should be forbidden"); + }catch(IllegalArgumentException e){/*expected*/} + c.setTimeout(10); c.run(); assertEquals(1,c.getAvailableTSS()); assertEquals(1,c.getAvailableTSF()); } + + @Test + public void test_SiteUnavailable()throws Exception{ + //switch TSF to unavailable + toggleAvailable("default_target_system_factory"); + + long start=System.currentTimeMillis(); + Connector c=makeConnector(); + c.run(); + assertEquals(0,c.getAvailableTSF()); + assertEquals(0,c.getAvailableTSS()); + + //this should not take much more than the default 10 secs + assertTrue(start-System.currentTimeMillis()<12*1000); + + //re-enable + toggleAvailable("default_target_system_factory"); + } + + @Test + public void test_SiteBlacklisted() throws Exception{ + Connector c=makeConnector(); + c.setBlacklist("localhost"); + c.run(); + assertEquals(0,c.getAvailableTSF()); + assertEquals(0,c.getAvailableTSS()); + } + + private Connector makeConnector()throws Exception{ + EndpointReferenceType regEPR=WSServerUtilities.makeEPR(Registry.REGISTRY_SERVICE, + RegistryCreator.DEFAULT_REGISTRY_ID, uas.getKernel()); + RegistryClient reg=new RegistryClient(regEPR,uas.getKernel().getClientConfiguration()); + return new Connector(reg,reg.getSecurityConfiguration(),this); + } + + private void toggleAvailable(String id){ + Map<String,String>p=new HashMap<String, String>(); + p.put("resources", id); + System.out.println(new ResourceAvailability().invoke(p, uas.getKernel()).getMessage()); + } } Deleted: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestRequirements.java =================================================================== --- ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestRequirements.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestRequirements.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -1,86 +0,0 @@ -package de.fzj.unicore.ucc.helpers; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import org.ggf.schemas.jsdl.x2005.x11.jsdl.OperatingSystemTypeEnumeration.Enum; -import org.junit.Test; -import org.unigrids.x2006.x04.services.tss.ApplicationResourceType; -import org.unigrids.x2006.x04.services.tss.TargetSystemPropertiesDocument; -import org.unigrids.x2006.x04.services.tss.TargetSystemPropertiesDocument.TargetSystemProperties; - -import de.fzj.unicore.ucc.runner.ApplicationRequirement; -import de.fzj.unicore.ucc.runner.ExecutionEnvironmentRequirement; -import de.fzj.unicore.ucc.runner.OSRequirement; -import eu.unicore.jsdl.extensions.ExecutionEnvironmentDescriptionDocument.ExecutionEnvironmentDescription; - -public class TestRequirements { - - @Test - public void testExecutionEnvironmentRequirement(){ - TargetSystemProperties tss=getTSSProps(); - ExecutionEnvironmentRequirement req=new ExecutionEnvironmentRequirement("Test",null); - assertTrue(req.isFulfilled(tss)); - assertFalse(req.getDescription().contains(" v")); - - req=new ExecutionEnvironmentRequirement("Test","2.0"); - assertTrue(req.getDescription().contains(" v2.0")); - - assertFalse(req.isFulfilled(tss)); - - req=new ExecutionEnvironmentRequirement("Test","3.2.1"); - assertTrue(req.isFulfilled(tss)); - - ExecutionEnvironmentRequirement req2=new ExecutionEnvironmentRequirement("Test","3.2.1"); - assertEquals(req,req2); - - } - - @Test - public void testOperatingSystemRequirement(){ - TargetSystemProperties tss=getTSSProps(); - OSRequirement req=new OSRequirement(Enum.forString("LINUX")); - assertTrue(req.getDescription().contains("LINUX")); - assertTrue(req.isFulfilled(tss)); - - OSRequirement req2=new OSRequirement(Enum.forString("LINUX")); - assertEquals(req2,req); - } - - @Test - public void testApplicationRequirement(){ - TargetSystemProperties tss=getTSSProps(); - ApplicationRequirement req=new ApplicationRequirement("Date",null); - assertTrue(req.isFulfilled(tss)); - assertFalse(req.getDescription().contains(" v")); - - req=new ApplicationRequirement("Date","1.0"); - assertFalse(req.isFulfilled(tss)); - assertTrue(req.getDescription().contains(" v")); - - req=new ApplicationRequirement("Date","2.0"); - assertTrue(req.isFulfilled(tss)); - - ApplicationRequirement req2=new ApplicationRequirement("Date","2.0"); - assertEquals(req,req2); - - } - - private TargetSystemProperties getTSSProps(){ - TargetSystemPropertiesDocument tssD=TargetSystemPropertiesDocument.Factory.newInstance(); - TargetSystemProperties tss=tssD.addNewTargetSystemProperties(); - - ExecutionEnvironmentDescription eed=tss.addNewExecutionEnvironmentDescription(); - eed.setName("Test"); - eed.setVersion("3.2.1"); - - tss.addNewOperatingSystem().addNewOperatingSystemType().setOperatingSystemName(Enum.forString("LINUX")); - - ApplicationResourceType app=tss.addNewApplicationResource(); - app.setApplicationName("Date"); - app.setApplicationVersion("2.0"); - - return tss; - } -} Deleted: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestRunner.java =================================================================== --- ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestRunner.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestRunner.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -1,120 +0,0 @@ -package de.fzj.unicore.ucc.helpers; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.util.List; -import java.util.Properties; - -import org.junit.Test; -import org.unigrids.services.atomic.types.ProtocolType; -import org.w3.x2005.x08.addressing.EndpointReferenceType; - -import de.fzj.unicore.uas.UAS; -import de.fzj.unicore.uas.client.TSFClient; -import de.fzj.unicore.ucc.runner.Runner; -import de.fzj.unicore.ucc.util.Builder; -import de.fzj.unicore.ucc.util.EmbeddedTestBase; -import de.fzj.unicore.wsrflite.utils.WSServerUtilities; -import de.fzj.unicore.wsrflite.xmlbeans.client.RegistryClient; -import de.fzj.unicore.wsrflite.xmlbeans.registry.RegistryCreator; -import de.fzj.unicore.wsrflite.xmlbeans.sg.Registry; - -public class TestRunner extends EmbeddedTestBase { - - @Test - public void testAsync(){ - try{ - EndpointReferenceType regEPR=WSServerUtilities.makeEPR(Registry.REGISTRY_SERVICE, - RegistryCreator.DEFAULT_REGISTRY_ID, uas.getKernel()); - EndpointReferenceType tsfEPR=WSServerUtilities.makeEPR(UAS.TSF, "default_target_system_factory", uas.getKernel()); - TSFClient tsf=new TSFClient(tsfEPR, uas.getKernel().getClientConfiguration()); - String address=tsf.createTSS().getEPR().getAddress().getStringValue(); - message("Created tss at "+address); - - RegistryClient reg=new RegistryClient(regEPR, uas.getKernel().getClientConfiguration()); - Builder b=new Builder(). - setApplication("Date", "1.0"). - writeOutputTo("target/testdata"); - String state=null; - Properties p=new Properties(); - p.put("protocols","UFTP BFT"); - Runner r=null; - do{ - r=new Runner(reg,reg.getSecurityConfiguration(),b,this); - r.setProperties(p); - r.setAsyncMode(true); - r.run(); - state=b.getProperty("state"); - Thread.sleep(500); - }while(!"FINISHED".equals(state)); - //check preferred protocols - List<ProtocolType.Enum> pp=r.getPreferredProtocols(); - assertNotNull(pp); - assertTrue(pp.contains(ProtocolType.UFTP)); - }catch(Exception e){ - e.printStackTrace(); - fail(); - } - } - - @Test - public void testAsyncWithRequestName(){ - try{ - EndpointReferenceType regEPR=WSServerUtilities.makeEPR(Registry.REGISTRY_SERVICE, - RegistryCreator.DEFAULT_REGISTRY_ID, uas.getKernel()); - EndpointReferenceType tsfEPR=WSServerUtilities.makeEPR(UAS.TSF, "default_target_system_factory", uas.getKernel()); - TSFClient tsf=new TSFClient(tsfEPR,uas.getKernel().getClientConfiguration()); - String address=tsf.createTSS().getEPR().getAddress().getStringValue(); - message("Created tss at "+address); - - RegistryClient reg=new RegistryClient(regEPR,uas.getKernel().getClientConfiguration()); - Builder b=new Builder(). - setApplication("Date", "1.0"). - writeOutputTo("target/testdata"); - b.setProperty("requestName", "mytestjob"); - String state=null; - do{ - Runner r=new Runner(reg,reg.getSecurityConfiguration(),b,this); - r.setAsyncMode(true); - r.run(); - state=b.getProperty("state"); - Thread.sleep(500); - }while(!"FINISHED".equals(state)); - - }catch(Exception e){ - e.printStackTrace(); - fail(); - } - } - - @Test - public void testSync(){ - try{ - EndpointReferenceType regEPR=WSServerUtilities.makeEPR(Registry.REGISTRY_SERVICE, - RegistryCreator.DEFAULT_REGISTRY_ID, uas.getKernel()); - EndpointReferenceType tsfEPR=WSServerUtilities.makeEPR(UAS.TSF, "default_target_system_factory", uas.getKernel()); - TSFClient tsf=new TSFClient(tsfEPR, uas.getKernel().getClientConfiguration()); - String address=tsf.createTSS().getEPR().getAddress().getStringValue(); - message("Created tss at "+address); - - RegistryClient reg=new RegistryClient(regEPR, uas.getKernel().getClientConfiguration()); - Builder b=new Builder(). - setApplication("Date", "1.0"). - writeOutputTo("target/testdata"); - String state=null; - Runner r=new Runner(reg,reg.getSecurityConfiguration(),b,this); - r.setAsyncMode(false); - r.run(); - state=b.getProperty("state"); - assertTrue(Runner.FINISHED.equals(state)); - - }catch(Exception e){ - e.printStackTrace(); - fail(); - } - } - - -} Deleted: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestWeightedSelection.java =================================================================== --- ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestWeightedSelection.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestWeightedSelection.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -1,64 +0,0 @@ -package de.fzj.unicore.ucc.helpers; - -import static org.junit.Assert.assertEquals; - -import java.io.File; -import java.util.HashSet; -import java.util.Set; - -import org.junit.Test; - -import de.fzj.unicore.ucc.runner.WeightedSelection; - -public class TestWeightedSelection { - - @Test - public void test1(){ - WeightedSelection ws=new WeightedSelection(new File("src/test/resources/conf/testweights.properties"),null); - Set<String> sites=new HashSet<String>(); - sites.add("SITE1"); - sites.add("SITE2"); - for(int i=0;i<110;i++){ - ws.select(sites); - } - - assertEquals(new Integer(100),ws.getSelectionStatistics().get("SITE2")); - assertEquals(new Integer(10),ws.getSelectionStatistics().get("SITE1")); - } - - @Test - //test setting weight to zero - public void test2(){ - WeightedSelection ws=new WeightedSelection(new File("src/test/resources/conf/testweights.properties"),null); - Set<String> sites=new HashSet<String>(); - sites.add("SITE1"); - sites.add("SITE2"); - sites.add("SITE3"); - for(int i=0;i<110;i++){ - ws.select(sites); - } - - assertEquals(Integer.valueOf(100),ws.getSelectionStatistics().get("SITE2")); - assertEquals(Integer.valueOf(10),ws.getSelectionStatistics().get("SITE1")); - assertEquals(Integer.valueOf(0),ws.getSelectionStatistics().get("SITE3")); - } - - @Test - //test setting default weight - public void test3(){ - WeightedSelection ws=new WeightedSelection(new File("src/test/resources/conf/testweights.properties"),null); - Set<String> sites=new HashSet<String>(); - sites.add("SITE1"); - sites.add("SITE2"); - sites.add("SITE3"); - sites.add("SITE4"); - for(int i=0;i<21;i++){ - ws.select(sites); - } - - assertEquals(Integer.valueOf(10),ws.getSelectionStatistics().get("SITE2")); - assertEquals(Integer.valueOf(1),ws.getSelectionStatistics().get("SITE1")); - assertEquals(Integer.valueOf(0),ws.getSelectionStatistics().get("SITE3")); - assertEquals(Integer.valueOf(10),ws.getSelectionStatistics().get("SITE4")); - } -} Copied: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestRequirements.java (from rev 15155, ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestRequirements.java) =================================================================== --- ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestRequirements.java (rev 0) +++ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestRequirements.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -0,0 +1,86 @@ +package de.fzj.unicore.ucc.runner; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.ggf.schemas.jsdl.x2005.x11.jsdl.OperatingSystemTypeEnumeration.Enum; +import org.junit.Test; +import org.unigrids.x2006.x04.services.tss.ApplicationResourceType; +import org.unigrids.x2006.x04.services.tss.TargetSystemPropertiesDocument; +import org.unigrids.x2006.x04.services.tss.TargetSystemPropertiesDocument.TargetSystemProperties; + +import de.fzj.unicore.ucc.runner.ApplicationRequirement; +import de.fzj.unicore.ucc.runner.ExecutionEnvironmentRequirement; +import de.fzj.unicore.ucc.runner.OSRequirement; +import eu.unicore.jsdl.extensions.ExecutionEnvironmentDescriptionDocument.ExecutionEnvironmentDescription; + +public class TestRequirements { + + @Test + public void testExecutionEnvironmentRequirement(){ + TargetSystemProperties tss=getTSSProps(); + ExecutionEnvironmentRequirement req=new ExecutionEnvironmentRequirement("Test",null); + assertTrue(req.isFulfilled(tss)); + assertFalse(req.getDescription().contains(" v")); + + req=new ExecutionEnvironmentRequirement("Test","2.0"); + assertTrue(req.getDescription().contains(" v2.0")); + + assertFalse(req.isFulfilled(tss)); + + req=new ExecutionEnvironmentRequirement("Test","3.2.1"); + assertTrue(req.isFulfilled(tss)); + + ExecutionEnvironmentRequirement req2=new ExecutionEnvironmentRequirement("Test","3.2.1"); + assertEquals(req,req2); + + } + + @Test + public void testOperatingSystemRequirement(){ + TargetSystemProperties tss=getTSSProps(); + OSRequirement req=new OSRequirement(Enum.forString("LINUX")); + assertTrue(req.getDescription().contains("LINUX")); + assertTrue(req.isFulfilled(tss)); + + OSRequirement req2=new OSRequirement(Enum.forString("LINUX")); + assertEquals(req2,req); + } + + @Test + public void testApplicationRequirement(){ + TargetSystemProperties tss=getTSSProps(); + ApplicationRequirement req=new ApplicationRequirement("Date",null); + assertTrue(req.isFulfilled(tss)); + assertFalse(req.getDescription().contains(" v")); + + req=new ApplicationRequirement("Date","1.0"); + assertFalse(req.isFulfilled(tss)); + assertTrue(req.getDescription().contains(" v")); + + req=new ApplicationRequirement("Date","2.0"); + assertTrue(req.isFulfilled(tss)); + + ApplicationRequirement req2=new ApplicationRequirement("Date","2.0"); + assertEquals(req,req2); + + } + + private TargetSystemProperties getTSSProps(){ + TargetSystemPropertiesDocument tssD=TargetSystemPropertiesDocument.Factory.newInstance(); + TargetSystemProperties tss=tssD.addNewTargetSystemProperties(); + + ExecutionEnvironmentDescription eed=tss.addNewExecutionEnvironmentDescription(); + eed.setName("Test"); + eed.setVersion("3.2.1"); + + tss.addNewOperatingSystem().addNewOperatingSystemType().setOperatingSystemName(Enum.forString("LINUX")); + + ApplicationResourceType app=tss.addNewApplicationResource(); + app.setApplicationName("Date"); + app.setApplicationVersion("2.0"); + + return tss; + } +} Property changes on: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestRequirements.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestRunner.java (from rev 15155, ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestRunner.java) =================================================================== --- ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestRunner.java (rev 0) +++ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestRunner.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -0,0 +1,120 @@ +package de.fzj.unicore.ucc.runner; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.util.List; +import java.util.Properties; + +import org.junit.Test; +import org.unigrids.services.atomic.types.ProtocolType; +import org.w3.x2005.x08.addressing.EndpointReferenceType; + +import de.fzj.unicore.uas.UAS; +import de.fzj.unicore.uas.client.TSFClient; +import de.fzj.unicore.ucc.runner.Runner; +import de.fzj.unicore.ucc.util.Builder; +import de.fzj.unicore.ucc.util.EmbeddedTestBase; +import de.fzj.unicore.wsrflite.utils.WSServerUtilities; +import de.fzj.unicore.wsrflite.xmlbeans.client.RegistryClient; +import de.fzj.unicore.wsrflite.xmlbeans.registry.RegistryCreator; +import de.fzj.unicore.wsrflite.xmlbeans.sg.Registry; + +public class TestRunner extends EmbeddedTestBase { + + @Test + public void testAsync(){ + try{ + EndpointReferenceType regEPR=WSServerUtilities.makeEPR(Registry.REGISTRY_SERVICE, + RegistryCreator.DEFAULT_REGISTRY_ID, uas.getKernel()); + EndpointReferenceType tsfEPR=WSServerUtilities.makeEPR(UAS.TSF, "default_target_system_factory", uas.getKernel()); + TSFClient tsf=new TSFClient(tsfEPR, uas.getKernel().getClientConfiguration()); + String address=tsf.createTSS().getEPR().getAddress().getStringValue(); + message("Created tss at "+address); + + RegistryClient reg=new RegistryClient(regEPR, uas.getKernel().getClientConfiguration()); + Builder b=new Builder(). + setApplication("Date", "1.0"). + writeOutputTo("target/testdata"); + String state=null; + Properties p=new Properties(); + p.put("protocols","UFTP BFT"); + Runner r=null; + do{ + r=new Runner(reg,reg.getSecurityConfiguration(),b,this); + r.setProperties(p); + r.setAsyncMode(true); + r.run(); + state=b.getProperty("state"); + Thread.sleep(500); + }while(!"FINISHED".equals(state)); + //check preferred protocols + List<ProtocolType.Enum> pp=r.getPreferredProtocols(); + assertNotNull(pp); + assertTrue(pp.contains(ProtocolType.UFTP)); + }catch(Exception e){ + e.printStackTrace(); + fail(); + } + } + + @Test + public void testAsyncWithRequestName(){ + try{ + EndpointReferenceType regEPR=WSServerUtilities.makeEPR(Registry.REGISTRY_SERVICE, + RegistryCreator.DEFAULT_REGISTRY_ID, uas.getKernel()); + EndpointReferenceType tsfEPR=WSServerUtilities.makeEPR(UAS.TSF, "default_target_system_factory", uas.getKernel()); + TSFClient tsf=new TSFClient(tsfEPR,uas.getKernel().getClientConfiguration()); + String address=tsf.createTSS().getEPR().getAddress().getStringValue(); + message("Created tss at "+address); + + RegistryClient reg=new RegistryClient(regEPR,uas.getKernel().getClientConfiguration()); + Builder b=new Builder(). + setApplication("Date", "1.0"). + writeOutputTo("target/testdata"); + b.setProperty("requestName", "mytestjob"); + String state=null; + do{ + Runner r=new Runner(reg,reg.getSecurityConfiguration(),b,this); + r.setAsyncMode(true); + r.run(); + state=b.getProperty("state"); + Thread.sleep(500); + }while(!"FINISHED".equals(state)); + + }catch(Exception e){ + e.printStackTrace(); + fail(); + } + } + + @Test + public void testSync(){ + try{ + EndpointReferenceType regEPR=WSServerUtilities.makeEPR(Registry.REGISTRY_SERVICE, + RegistryCreator.DEFAULT_REGISTRY_ID, uas.getKernel()); + EndpointReferenceType tsfEPR=WSServerUtilities.makeEPR(UAS.TSF, "default_target_system_factory", uas.getKernel()); + TSFClient tsf=new TSFClient(tsfEPR, uas.getKernel().getClientConfiguration()); + String address=tsf.createTSS().getEPR().getAddress().getStringValue(); + message("Created tss at "+address); + + RegistryClient reg=new RegistryClient(regEPR, uas.getKernel().getClientConfiguration()); + Builder b=new Builder(). + setApplication("Date", "1.0"). + writeOutputTo("target/testdata"); + String state=null; + Runner r=new Runner(reg,reg.getSecurityConfiguration(),b,this); + r.setAsyncMode(false); + r.run(); + state=b.getProperty("state"); + assertTrue(Runner.FINISHED.equals(state)); + + }catch(Exception e){ + e.printStackTrace(); + fail(); + } + } + + +} Added: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestTargetSystemFinder.java =================================================================== --- ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestTargetSystemFinder.java (rev 0) +++ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestTargetSystemFinder.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -0,0 +1,69 @@ +package de.fzj.unicore.ucc.runner; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import static junit.framework.Assert.*; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.w3.x2005.x08.addressing.EndpointReferenceType; + +import de.fzj.unicore.uas.client.TSSClient; +import de.fzj.unicore.ucc.util.EmbeddedTestBase; +import de.fzj.unicore.wsrflite.admin.ResourceAvailability; +import de.fzj.unicore.wsrflite.utils.WSServerUtilities; +import de.fzj.unicore.wsrflite.xmlbeans.client.RegistryClient; +import de.fzj.unicore.wsrflite.xmlbeans.registry.RegistryCreator; +import de.fzj.unicore.wsrflite.xmlbeans.sg.Registry; + +public class TestTargetSystemFinder extends EmbeddedTestBase{ + + @Test + public void testTSFinder()throws Exception{ + connect(); + TargetSystemFinder tsfinder=makeFinder(); + Set<Requirement>requirements=new HashSet<Requirement>(); + requirements.add(new ApplicationRequirement("Date", null)); + TSSClient tss=tsfinder.find(requirements); + tsfinder.setBlackList("localhost"); + try{ + tsfinder.find(requirements); + fail(); + }catch(RunnerException re){ + assertEquals(Runner.ERR_NO_SITE,re.getErrorCode()); + } + //check that empty requirements are accepted + assertTrue(tsfinder.matches(null, null, null)); + assertTrue(tsfinder.matches(null, new HashSet<Requirement>(), null)); + + //check handling of unavailable TSF + tss.destroy(); + toggleAvailable("default_target_system_factory"); + tsfinder.setBlackList(null); + long start=System.currentTimeMillis(); + try{ + tsfinder.find(requirements); + fail(); + }catch(RunnerException re){ + assertEquals(Runner.ERR_NO_SITE,re.getErrorCode()); + } + assertTrue(start-System.currentTimeMillis()<12*1000); + toggleAvailable("default_target_system_factory"); + } + + private TargetSystemFinder makeFinder()throws Exception{ + EndpointReferenceType regEPR=WSServerUtilities.makeEPR(Registry.REGISTRY_SERVICE, + RegistryCreator.DEFAULT_REGISTRY_ID, uas.getKernel()); + RegistryClient reg=new RegistryClient(regEPR,uas.getKernel().getClientConfiguration()); + return new TargetSystemFinder(reg,reg.getSecurityConfiguration(),this); + } + + private void toggleAvailable(String id){ + Map<String,String>p=new HashMap<String, String>(); + p.put("resources", id); + System.out.println(new ResourceAvailability().invoke(p, uas.getKernel()).getMessage()); + } +} Property changes on: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestTargetSystemFinder.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestWeightedSelection.java (from rev 15155, ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/helpers/TestWeightedSelection.java) =================================================================== --- ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestWeightedSelection.java (rev 0) +++ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/runner/TestWeightedSelection.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -0,0 +1,64 @@ +package de.fzj.unicore.ucc.runner; + +import static org.junit.Assert.assertEquals; + +import java.io.File; +import java.util.HashSet; +import java.util.Set; + +import org.junit.Test; + +import de.fzj.unicore.ucc.runner.WeightedSelection; + +public class TestWeightedSelection { + + @Test + public void test1(){ + WeightedSelection ws=new WeightedSelection(new File("src/test/resources/conf/testweights.properties"),null); + Set<String> sites=new HashSet<String>(); + sites.add("SITE1"); + sites.add("SITE2"); + for(int i=0;i<110;i++){ + ws.select(sites); + } + + assertEquals(new Integer(100),ws.getSelectionStatistics().get("SITE2")); + assertEquals(new Integer(10),ws.getSelectionStatistics().get("SITE1")); + } + + @Test + //test setting weight to zero + public void test2(){ + WeightedSelection ws=new WeightedSelection(new File("src/test/resources/conf/testweights.properties"),null); + Set<String> sites=new HashSet<String>(); + sites.add("SITE1"); + sites.add("SITE2"); + sites.add("SITE3"); + for(int i=0;i<110;i++){ + ws.select(sites); + } + + assertEquals(Integer.valueOf(100),ws.getSelectionStatistics().get("SITE2")); + assertEquals(Integer.valueOf(10),ws.getSelectionStatistics().get("SITE1")); + assertEquals(Integer.valueOf(0),ws.getSelectionStatistics().get("SITE3")); + } + + @Test + //test setting default weight + public void test3(){ + WeightedSelection ws=new WeightedSelection(new File("src/test/resources/conf/testweights.properties"),null); + Set<String> sites=new HashSet<String>(); + sites.add("SITE1"); + sites.add("SITE2"); + sites.add("SITE3"); + sites.add("SITE4"); + for(int i=0;i<21;i++){ + ws.select(sites); + } + + assertEquals(Integer.valueOf(10),ws.getSelectionStatistics().get("SITE2")); + assertEquals(Integer.valueOf(1),ws.getSelectionStatistics().get("SITE1")); + assertEquals(Integer.valueOf(0),ws.getSelectionStatistics().get("SITE3")); + assertEquals(Integer.valueOf(10),ws.getSelectionStatistics().get("SITE4")); + } +} Modified: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/util/EmbeddedTestBase.java =================================================================== --- ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/util/EmbeddedTestBase.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/util/EmbeddedTestBase.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -69,7 +69,7 @@ public void error(String message, Throwable cause){ System.err.println("[ucc testing] "+message); - cause.printStackTrace(); + if(cause!=null)cause.printStackTrace(); } protected void delete(File directory)throws IOException{ Modified: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/util/KeystoreAuthNWithPasswd.java =================================================================== --- ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/util/KeystoreAuthNWithPasswd.java 2012-12-19 14:56:19 UTC (rev 15360) +++ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/util/KeystoreAuthNWithPasswd.java 2012-12-19 15:39:43 UTC (rev 15361) @@ -27,8 +27,13 @@ public String getDescription() { return "Test authn provider with callback"; } - + @Override + public void printUsage(){ + System.out.println("unit testing only"); + } + + @Override public IClientConfiguration initSecurityProperties(Properties properties){ ClientProperties sp=new ClientProperties(properties, getPasswordCallback(), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |