From: <bsc...@us...> - 2012-12-19 19:55:35
|
Revision: 15363 http://unicore.svn.sourceforge.net/unicore/?rev=15363&view=rev Author: bschuller Date: 2012-12-19 19:55:27 +0000 (Wed, 19 Dec 2012) Log Message: ----------- Modified Paths: -------------- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/actions/Run.java ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/actions/TestJobRelatedActions.java Modified: ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/actions/Run.java =================================================================== --- ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/actions/Run.java 2012-12-19 18:09:07 UTC (rev 15362) +++ ucc/trunk/ucc-core/src/main/java/de/fzj/unicore/ucc/actions/Run.java 2012-12-19 19:55:27 UTC (rev 15363) @@ -52,7 +52,7 @@ * scheduled for a certain time */ protected String scheduled=null; - + @Override @SuppressWarnings("all") protected void createOptions() { @@ -62,7 +62,7 @@ .withDescription("Run asynchronous, writing a job ID file for use with other ucc commands") .isRequired(false) .create(OPT_MODE) - ); + ); getOptions().addOption(OptionBuilder.withLongOpt(OPT_SITENAME_LONG) .withDescription("Site Name") @@ -70,13 +70,13 @@ .hasArg() .isRequired(false) .create(OPT_SITENAME) - ); + ); getOptions().addOption(OptionBuilder.withLongOpt(OPT_NOPREFIX_LONG) .withDescription("Short output file names") .isRequired(false) .create(OPT_NOPREFIX) - ); + ); getOptions().addOption(OptionBuilder.withLongOpt(OPT_STDOUT_LONG) .withDescription("Name name for storing the standard output") @@ -84,7 +84,7 @@ .hasArg() .isRequired(false) .create(OPT_STDOUT) - ); + ); getOptions().addOption(OptionBuilder.withLongOpt(OPT_STDERR_LONG) .withDescription("Name name for storing the standard error") @@ -92,18 +92,18 @@ .hasArg() .isRequired(false) .create(OPT_STDERR) - ); + ); getOptions().addOption(OptionBuilder.withLongOpt(OPT_JSDL_LONG) .withDescription("Treat job file as JSDL document") .isRequired(false) .create(OPT_JSDL) - ); + ); getOptions().addOption(OptionBuilder.withLongOpt(OPT_SAMPLE_LONG) .withDescription("Print an example job and quit") .isRequired(false) .create(OPT_SAMPLE) - ); + ); getOptions().addOption(OptionBuilder.withLongOpt(OPT_SCHEDULED_LONG) .withDescription("Schedule the job for a specific time (in ISO8601 format)") @@ -127,11 +127,11 @@ @Override public String getSynopsis(){ return "Runs a job through UNICORE 6. " + - "The job definition is read from <jobfile> or stdin. " + - "Run 'ucc run -"+OPT_SAMPLE+"' to see an example job."+ - "A job can be executed in two modes. In the default synchronous mode, " + - "UCC will wait for the job to finish. In asynchonous mode, initiated by the '"+OPT_MODE+"' option, " + - "a descriptor file will be written that can be used later with other UCC commands."; + "The job definition is read from <jobfile> or stdin. " + + "Run 'ucc run -"+OPT_SAMPLE+"' to see an example job."+ + "A job can be executed in two modes. In the default synchronous mode, " + + "UCC will wait for the job to finish. In asynchonous mode, initiated by the '"+OPT_MODE+"' option, " + + "a descriptor file will be written that can be used later with other UCC commands."; } @Override @@ -170,8 +170,6 @@ verbose("Will schedule job submission for "+scheduled); } - //loop over cmdline args - if(getCommandLine().getArgs().length>1){ for(int i=1; i<getCommandLine().getArgs().length;i++){ initBuilder(getCommandLine().getArgs()[i]); @@ -182,57 +180,38 @@ initBuilderFromStdin(); run(); } - + } /** * - * @param arg + * @param jobFile - job file name */ - protected void initBuilder(String arg){ - String jobFile=null; - if(getCommandLine().getArgs().length>1){ - jobFile=getCommandLine().getArgs()[1]; - if(isJSDL){ - try{ - verbose("Loading JSDL file."); - builder=new Builder(); - builder.setMessageWriter(this); - builder.setRegistry(registry); - builder.setSecurityProperties(securityProperties); - JobDefinitionDocument jdd=JobDefinitionDocument.Factory.parse(new File(jobFile)); - if(validateJSDL)doValidate(jdd); - builder.setJob(jdd); - }catch(Exception e){ - error("Can't parse jsdl file <"+jobFile+">",e); - endProcessing(ERROR_CLIENT); - } + protected void initBuilder(String jobFile){ + if(isJSDL){ + try{ + verbose("Loading JSDL file."); + builder=new Builder(); + builder.setMessageWriter(this); + builder.setRegistry(registry); + builder.setSecurityProperties(securityProperties); + JobDefinitionDocument jdd=JobDefinitionDocument.Factory.parse(new File(jobFile)); + if(validateJSDL)doValidate(jdd); + builder.setJob(jdd); + }catch(Exception e){ + error("Can't parse jsdl file <"+jobFile+">",e); + endProcessing(ERROR_CLIENT); } - else { - try{ - builder=new Builder(new File(jobFile)); - builder.setMessageWriter(this); - builder.setRegistry(registry); - builder.setSecurityProperties(securityProperties); - verbose("Read job from <"+jobFile+">"); - }catch(Exception e){ - error("Can't parse job file <"+jobFile+">",e); - endProcessing(ERROR_CLIENT); - } - } } - else{ + else { try{ - message("Reading job from stdin:"); - message(""); - ByteArrayOutputStream bos=new ByteArrayOutputStream(); - int b=0; - while((b=System.in.read())!=-1){ - bos.write(b); - } - builder=new Builder(bos.toString()); + builder=new Builder(new File(jobFile)); + builder.setMessageWriter(this); + builder.setRegistry(registry); + builder.setSecurityProperties(securityProperties); + verbose("Read job from <"+jobFile+">"); }catch(Exception e){ - error("Can't read job from stdin.",e); + error("Can't parse job file <"+jobFile+">",e); endProcessing(ERROR_CLIENT); } } @@ -280,7 +259,7 @@ boolean isValid=Builder.isValidJSDL(jdd, this); if(!isValid && Boolean.parseBoolean(properties.getProperty(PROP_FAIL_ON_VALIDATION_ERRORS))){ String message="Stopping due to validation errors (set property '" - +PROP_FAIL_ON_VALIDATION_ERRORS+"=false' to ignore them)"; + +PROP_FAIL_ON_VALIDATION_ERRORS+"=false' to ignore them)"; throw new EndProcessingException(ERROR_JSDL_INVALID,message); } } @@ -300,13 +279,13 @@ } private static String lastJobFile; - + public static String getLastJobFile() { return lastJobFile; } private static String lastJobPropertiesFile; - + public static String getLastJobPropertiesFile() { return lastJobPropertiesFile; } Modified: ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/actions/TestJobRelatedActions.java =================================================================== --- ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/actions/TestJobRelatedActions.java 2012-12-19 18:09:07 UTC (rev 15362) +++ ucc/trunk/ucc-core/src/test/java/de/fzj/unicore/ucc/actions/TestJobRelatedActions.java 2012-12-19 19:55:27 UTC (rev 15363) @@ -5,7 +5,9 @@ import static org.junit.Assert.fail; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import org.apache.commons.io.FileUtils; import org.junit.Test; @@ -46,6 +48,22 @@ assertEquals(Integer.valueOf(0),UCC.exitCode); } + @FunctionalTest(id="http://testRunJobFromStdin", description="Reads a job from stdin and runs in") + @Test + public void test_Run_JobFromStdin()throws IOException{ + connect(); + InputStream in=System.in; + FileInputStream fis=new FileInputStream("src/test/resources/jobs/date.u"); + System.setIn(fis); + String[] args=new String[]{"run","-v", + "-c", "src/test/resources/conf/userprefs.embedded", + }; + UCC.main(args); + assertEquals(Integer.valueOf(0),UCC.exitCode); + System.setIn(in); + fis.close(); + } + @FunctionalTest(id="http://testRunJobWithUploads", description="Runs a job with file uploads") @Test public void test_Run_JobWithUploads(){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |