diff --git a/haas-imagej-client/pom.xml b/haas-imagej-client/pom.xml index e941ae61120f9fd8f3989e18cd29ac6b0920e406..ff4bd828ba6c0f3c66e013ddc707ccd7abe0d198 100644 --- a/haas-imagej-client/pom.xml +++ b/haas-imagej-client/pom.xml @@ -74,7 +74,7 @@ <dependency> <groupId>cz.it4i.fiji</groupId> <artifactId>haas-java-client</artifactId> - <version>0.0.5-SNAPSHOT</version> + <version>0.0.6-SNAPSHOT</version> </dependency> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java index 1c4bd03428ad11d3a65be3c4924bd6d3a923b3a1..be2e402207a2bc1e75f961dad4f275ee0f9f580b 100644 --- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java +++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java @@ -27,6 +27,7 @@ import cz.it4i.fiji.haas.data_transfer.Synchronization; import cz.it4i.fiji.haas_java_client.HaaSClient; import cz.it4i.fiji.haas_java_client.HaaSFileTransfer; import cz.it4i.fiji.haas_java_client.JobInfo; +import cz.it4i.fiji.haas_java_client.JobSettings; import cz.it4i.fiji.haas_java_client.JobState; import cz.it4i.fiji.haas_java_client.ProgressNotifier; import cz.it4i.fiji.haas_java_client.TransferFileProgressForHaaSClient; @@ -94,17 +95,17 @@ public class Job { - public Job(JobManager4Job jobManager, String name, Path basePath, Supplier<HaaSClient> haasClientSupplier, + public Job(JobManager4Job jobManager, JobSettings jobSettings, Path basePath, Supplier<HaaSClient> haasClientSupplier, Function<Path, Path> inputDirectoryProvider, Function<Path, Path> outputDirectoryProvider) throws IOException { this(jobManager, haasClientSupplier); HaaSClient client = getHaaSClient(); - long id = client.createJob(name, Collections.emptyList()); + long id = client.createJob(jobSettings, Collections.emptyList()); setJobDirectory(basePath.resolve("" + id), inputDirectoryProvider, outputDirectoryProvider); propertyHolder = new PropertyHolder(jobDir.resolve(JOB_INFO_FILENAME)); Files.createDirectory(this.jobDir); storeInputOutputDirectory(); - setName(name); + setName(jobSettings.getJobName()); } diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java index 902780ceb5812c3d3f42d58cf3140c662ae47357..510863d9f78c40a8f59b3e92a196c41eca887fb0 100644 --- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java +++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java @@ -14,7 +14,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import cz.it4i.fiji.haas_java_client.HaaSClient; -import cz.it4i.fiji.haas_java_client.Settings; +import cz.it4i.fiji.haas_java_client.HaaSClientSettings; +import cz.it4i.fiji.haas_java_client.JobSettings; import cz.it4i.fiji.haas_java_client.SynchronizableFileType; public class JobManager implements Closeable { @@ -35,7 +36,7 @@ public class JobManager implements Closeable { private HaaSClient haasClient; - private final Settings settings; + private final HaaSClientSettings settings; private BiPredicate<Job, Path> uploadFilter = DUMMY_UPLOAD_FILTER; @@ -53,16 +54,16 @@ public class JobManager implements Closeable { } }; - public JobManager(Path workDirectory, Settings settings) { + public JobManager(Path workDirectory, HaaSClientSettings settings) { this.workDirectory = workDirectory; this.settings = settings; } - public Job createJob(Function<Path, Path> inputDirectoryProvider, Function<Path, Path> outputDirectoryProvider) + public Job createJob(JobSettings jobSettings ,Function<Path, Path> inputDirectoryProvider, Function<Path, Path> outputDirectoryProvider) throws IOException { Job result; initJobsIfNecessary(); - jobs.add(result = new Job(remover, settings.getJobName(), workDirectory, this::getHaasClient, + jobs.add(result = new Job(remover, jobSettings, workDirectory, this::getHaasClient, inputDirectoryProvider, outputDirectoryProvider)); return result; } diff --git a/haas-java-client/.classpath b/haas-java-client/.classpath index 955c606a0989fb4e90f9328fb8acce451cb97dff..1f60731f5242e289ee11185b478d5d412200497e 100644 --- a/haas-java-client/.classpath +++ b/haas-java-client/.classpath @@ -10,6 +10,7 @@ <attributes> <attribute name="optional" value="true"/> <attribute name="maven.pomderived" value="true"/> + <attribute name="test" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> @@ -25,6 +26,7 @@ <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"> <attributes> <attribute name="maven.pomderived" value="true"/> + <attribute name="test" value="true"/> </attributes> </classpathentry> <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> diff --git a/haas-java-client/.project b/haas-java-client/.project index b0574ede93f66b4c88e9776b78ee53b5aa561e2a..aec024726f3ed82cc5a15d8d25c36916b16f8e29 100644 --- a/haas-java-client/.project +++ b/haas-java-client/.project @@ -17,7 +17,6 @@ </buildCommand> </buildSpec> <natures> - <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> <nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.m2e.core.maven2Nature</nature> </natures> diff --git a/haas-java-client/.settings/org.eclipse.jdt.core.prefs b/haas-java-client/.settings/org.eclipse.jdt.core.prefs index 714351aec195a9a572640e6844dcafd51565a2a5..b8947ec6fc0a929c7ba04e493e77a2663a75b64e 100644 --- a/haas-java-client/.settings/org.eclipse.jdt.core.prefs +++ b/haas-java-client/.settings/org.eclipse.jdt.core.prefs @@ -2,4 +2,5 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.source=1.8 diff --git a/haas-java-client/pom.xml b/haas-java-client/pom.xml index 6a008745cb00c2964913994cf91004ea4e625d2b..26f9896cbba6a02a7a887a900eb4d4e86bd45b60 100644 --- a/haas-java-client/pom.xml +++ b/haas-java-client/pom.xml @@ -4,7 +4,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>cz.it4i.fiji</groupId> <artifactId>haas-java-client</artifactId> - <version>0.0.5-SNAPSHOT</version> + <version>0.0.6-SNAPSHOT</version> <name>HaaS library for Java</name> <packaging>jar</packaging> <properties> diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClient.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClient.java index 1ba4e3b25c370a829cad91bcda07305ec2ed3636..f7b060405bb6adde5cfdfcfae8ea16868fd7a789 100644 --- a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClient.java +++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClient.java @@ -188,41 +188,27 @@ public class HaaSClient { private FileTransferWsSoap fileTransfer; - private final Integer timeOut; - - private final Long templateId; - - private final Long clusterNodeType; - private final String projectId; private final Map<Long, P_FileTransferPool> filetransferPoolMap = new HashMap<>(); - private final Settings settings; + private final HaaSClientSettings settings; - private final int numberOfCoresPerNodes; + - public HaaSClient(Settings settings) { + public HaaSClient(HaaSClientSettings settings) { this.settings = settings; - this.templateId = settings.getTemplateId(); - this.timeOut = settings.getTimeout(); - this.clusterNodeType = settings.getClusterNodeType(); this.projectId = settings.getProjectId(); - this.numberOfCoresPerNodes = settings.getNumberOfCoresPerNode(); } - public long createJob(String name, int numberOfNodes, Collection<Entry<String, String>> templateParameters) { + public long createJob(JobSettings settings, Collection<Entry<String, String>> templateParameters) { try { - return doCreateJob(name, numberOfNodes, templateParameters); + return doCreateJob(settings, templateParameters); } catch (RemoteException | ServiceException e) { throw new RuntimeException(e); } } - public long createJob(String name, Collection<Entry<String, String>> templateParameters) { - return createJob(name, 1, templateParameters); - } - public HaaSFileTransfer startFileTransfer(long jobId, TransferFileProgress notifier) { try { return getFileTransferMethod(jobId, notifier); @@ -234,7 +220,7 @@ public class HaaSClient { public HaaSFileTransfer startFileTransfer(long jobId) { return startFileTransfer(jobId, DUMMY_TRANSFER_FILE_PROGRESS); } - + public TunnelToNode openTunnel(long jobId, String nodeIP, int localPort, int remotePort) { MidlewareTunnel tunnel; try { @@ -273,11 +259,12 @@ public class HaaSClient { public JobInfo obtainJobInfo(long jobId) { try { final SubmittedJobInfoExt info = getJobManagement().getCurrentInfoForJob(jobId, getSessionID()); - + final Collection<Long> tasksId = info.getTasks().getSubmittedTaskInfoExt().stream().map(ti -> ti.getId()) .collect(Collectors.toList()); return new JobInfo() { private List<String> ips; + @Override public Collection<Long> getTasks() { return tasksId; @@ -302,12 +289,13 @@ public class HaaSClient { public Calendar getCreationTime() { return toGregorian(info.getCreationTime()); }; - + @Override public List<String> getNodesIPs() { - if(ips == null) { + if (ips == null) { try { - ips = getJobManagement().getAllocatedNodesIPs(jobId, getSessionID()).getString().stream().collect(Collectors.toList()); + ips = getJobManagement().getAllocatedNodesIPs(jobId, getSessionID()).getString().stream() + .collect(Collectors.toList()); } catch (RemoteException | ServiceException e) { log.error(e.getMessage(), e); } @@ -382,11 +370,11 @@ public class HaaSClient { getJobManagement().submitJob(jobId, getSessionID()); } - private long doCreateJob(String name, int numberOfNodes, Collection<Entry<String, String>> templateParameters) + private long doCreateJob(JobSettings jobSettings, Collection<Entry<String, String>> templateParameters) throws RemoteException, ServiceException { Collection<TaskSpecificationExt> taskSpec = Arrays - .asList(createTaskSpecification(name + "-task", templateId, numberOfNodes, templateParameters)); - JobSpecificationExt jobSpecification = createJobSpecification(name, numberOfNodes, taskSpec); + .asList(createTaskSpecification(jobSettings, templateParameters)); + JobSpecificationExt jobSpecification = createJobSpecification(jobSettings, taskSpec); SubmittedJobInfoExt job = getJobManagement().createJob(jobSpecification, getSessionID()); return job.getId(); } @@ -397,35 +385,35 @@ public class HaaSClient { return new ScpClient(fileTransfer.getServerHostname(), fileTransfer.getCredentials().getUsername(), pvtKey); } - private JobSpecificationExt createJobSpecification(String name, int numberOfNodes, + private JobSpecificationExt createJobSpecification(JobSettings jobSettings, Collection<TaskSpecificationExt> tasks) { JobSpecificationExt testJob = new JobSpecificationExt(); - testJob.setName(name); - testJob.setMinCores(numberOfCoresPerNodes * numberOfNodes); - testJob.setMaxCores(numberOfCoresPerNodes * numberOfNodes); + testJob.setName(jobSettings.getJobName()); + testJob.setMinCores(jobSettings.getNumberOfCoresPerNode() * jobSettings.getNumberOfNodes()); + testJob.setMaxCores(jobSettings.getNumberOfCoresPerNode() * jobSettings.getNumberOfNodes()); testJob.setPriority(JobPriorityExt.AVERAGE); testJob.setProject(projectId); testJob.setWaitingLimit(null); - testJob.setWalltimeLimit(timeOut); + testJob.setWalltimeLimit(jobSettings.getWalltimeLimit()); testJob.setNotificationEmail(settings.getEmail()); testJob.setPhoneNumber(settings.getPhone()); testJob.setNotifyOnAbort(false); testJob.setNotifyOnFinish(false); testJob.setNotifyOnStart(false); - testJob.setClusterNodeTypeId(clusterNodeType); - testJob.setEnvironmentVariables( new ArrayOfEnvironmentVariableExt()); + testJob.setClusterNodeTypeId(jobSettings.getClusterNodeType()); + testJob.setEnvironmentVariables(new ArrayOfEnvironmentVariableExt()); testJob.setTasks(getAndFill(new ArrayOfTaskSpecificationExt(), a -> a.getTaskSpecificationExt().addAll(tasks))); return testJob; } - private TaskSpecificationExt createTaskSpecification(String name, long templateId, int numberOfNodes, + private TaskSpecificationExt createTaskSpecification(JobSettings jobSettings, Collection<Entry<String, String>> templateParameters) { TaskSpecificationExt testTask = new TaskSpecificationExt(); - testTask.setName(name); - testTask.setMinCores(numberOfCoresPerNodes * numberOfNodes); - testTask.setMaxCores(numberOfCoresPerNodes * numberOfNodes); - testTask.setWalltimeLimit(timeOut); + testTask.setName(jobSettings.getJobName() + "-task"); + testTask.setMinCores(jobSettings.getNumberOfCoresPerNode() * jobSettings.getNumberOfNodes()); + testTask.setMaxCores(jobSettings.getNumberOfCoresPerNode() * jobSettings.getNumberOfNodes()); + testTask.setWalltimeLimit(jobSettings.getWalltimeLimit()); testTask.setRequiredNodes(null); testTask.setIsExclusive(false); testTask.setIsRerunnable(false); @@ -435,7 +423,7 @@ public class HaaSClient { testTask.setProgressFile("console_Stdprog"); testTask.setLogFile("console_Stdlog"); testTask.setClusterTaskSubdirectory(null); - testTask.setCommandTemplateId(templateId); // commandTemplateID + testTask.setCommandTemplateId(jobSettings.getTemplateId()); testTask.setEnvironmentVariables(new ArrayOfEnvironmentVariableExt()); testTask.setDependsOn(null); testTask.setTemplateParameterValues(getAndFill(new ArrayOfCommandTemplateParameterValueExt(), diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Settings.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClientSettings.java similarity index 50% rename from haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Settings.java rename to haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClientSettings.java index 18c4b1a75fbada843e59041dcab225d1d49e4a96..0b4d7b0269e0e62f6646b1235939e02a40cccb1e 100644 --- a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Settings.java +++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClientSettings.java @@ -1,14 +1,9 @@ package cz.it4i.fiji.haas_java_client; -public interface Settings { +public interface HaaSClientSettings { String getUserName(); String getPassword(); String getEmail(); String getPhone(); - long getTemplateId(); - int getTimeout(); - long getClusterNodeType(); String getProjectId(); - String getJobName(); - int getNumberOfCoresPerNode(); } diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/JobSettings.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/JobSettings.java new file mode 100644 index 0000000000000000000000000000000000000000..ddafdbd7a55bfab1121965c20e9bd39167dc8d70 --- /dev/null +++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/JobSettings.java @@ -0,0 +1,10 @@ +package cz.it4i.fiji.haas_java_client; + +public interface JobSettings { + long getTemplateId(); + int getWalltimeLimit(); + long getClusterNodeType(); + String getJobName(); + int getNumberOfNodes(); + int getNumberOfCoresPerNode(); +} diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/JobSettingsBuilder.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/JobSettingsBuilder.java new file mode 100644 index 0000000000000000000000000000000000000000..869e74483784ffaa9f9f4a6aed560b5fd0514ba9 --- /dev/null +++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/JobSettingsBuilder.java @@ -0,0 +1,94 @@ +package cz.it4i.fiji.haas_java_client; + +public class JobSettingsBuilder { + + private static final long DEFAULT_TEMPLATE = 1l; + + + private static final int DEFAULT_WALLTIME = 600; + + + private static final long DEFAULT_CLUSTER_NODE_TYPE = 7L; + + + private static final String DEFAULT_JOB_NAME = "DefaultHEAppEJob"; + + + private static final int DEFAULT_NUMBER_OF_NODES = 1; + + + private static final int DEFAULT_NUMBER_OF_CORES_PER_NODE = 24; + + + private long templateId = DEFAULT_TEMPLATE; + private int walltimeLimit = DEFAULT_WALLTIME; + private long clusterNodeType = DEFAULT_CLUSTER_NODE_TYPE; + private String jobName = DEFAULT_JOB_NAME; + private int numberOfNodes = DEFAULT_NUMBER_OF_NODES; + private int numberOfCoresPerNode = DEFAULT_NUMBER_OF_CORES_PER_NODE; + + + public JobSettingsBuilder setTemplateId(long templateId) { + this.templateId = templateId; + return this; + } + + public JobSettingsBuilder setWalltimeLimit(int walltimeLimit) { + this.walltimeLimit = walltimeLimit; + return this; + } + + public JobSettingsBuilder setClusterNodeType(long clusterNodeType) { + this.clusterNodeType = clusterNodeType; + return this; + } + public JobSettingsBuilder setJobName(String jobName) { + this.jobName = jobName; + return this; + } + + public JobSettingsBuilder setNumberOfNodes(int numberOfNodes) { + this.numberOfNodes = numberOfNodes; + return this; + } + + public JobSettingsBuilder setNumberOfCoresPerNode(int numberOfCoresPerNode) { + this.numberOfCoresPerNode = numberOfCoresPerNode; + return this; + } + + public JobSettings build() { + return new JobSettings() { + + @Override + public int getWalltimeLimit() { + return walltimeLimit; + } + + @Override + public long getTemplateId() { + return templateId; + } + + @Override + public int getNumberOfNodes() { + return numberOfNodes; + } + + @Override + public String getJobName() { + return jobName; + } + + @Override + public long getClusterNodeType() { + return clusterNodeType; + } + + @Override + public int getNumberOfCoresPerNode() { + return numberOfCoresPerNode; + } + }; + } +} diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/SettingsProvider.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/SettingsProvider.java index 4871542561dd4caf9e687134b6cb95d22c079c7f..efd860ee1f947f27847d4cd821d6c134e5c58fbc 100644 --- a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/SettingsProvider.java +++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/SettingsProvider.java @@ -2,13 +2,10 @@ package cz.it4i.fiji.haas_java_client; public interface SettingsProvider { - static Settings getSettings(long templateId, int timeOut, long clusterNodeType, String projectId, String configFileName) { - return getSettings(templateId, timeOut, clusterNodeType, projectId, 1, configFileName); - } - static Settings getSettings(long templateId, int timeOut, long clusterNodeType, String projectId, int numberOfCores,String configFileName) { + static HaaSClientSettings getSettings(String projectId, String configFileName) { Constants constants = new Constants(configFileName); - return new Settings() { + return new HaaSClientSettings() { @Override public String getUserName() { @@ -30,35 +27,13 @@ public interface SettingsProvider { return constants.getEmail(); } - @Override - public long getTemplateId() { - return templateId; - } - - @Override - public int getTimeout() { - return timeOut; - } - - @Override - public long getClusterNodeType() { - return clusterNodeType; - } - + @Override public String getProjectId() { return projectId; } - @Override - public String getJobName() { - return "TestOutRedirect"; - } - - @Override - public int getNumberOfCoresPerNode() { - return numberOfCores; - } + }; } diff --git a/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/GetJobInfo.java b/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/GetJobInfo.java index 084b332bb94a5d59ea3623823bf2bf6d8c57da58..93ba8727af7637a38bb14cd68a1732671574c4bf 100644 --- a/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/GetJobInfo.java +++ b/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/GetJobInfo.java @@ -19,7 +19,7 @@ public class GetJobInfo { public static Logger log = LoggerFactory.getLogger(cz.it4i.fiji.haas_java_client.GetJobInfo.class); public static void main(String[] args) throws ServiceException, IOException { - Settings settings = SettingsProvider.getSettings(1l, 600, 7l, "OPEN-12-20", TestingConstants.CONFIGURATION_FILE_NAME); + HaaSClientSettings settings = SettingsProvider.getSettings("OPEN-12-20", TestingConstants.CONFIGURATION_FILE_NAME); HaaSClient client = new HaaSClient(settings); JobInfo ji = client.obtainJobInfo(334); System.out.println("created: " + ji.getCreationTime()); diff --git a/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestCommunicationWithNodes.java b/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestCommunicationWithNodes.java index dea3763225c21dc7a688c77d96fc15ed33d53366..9409bd33a8fae9aa38ade3bdba8170def8339d2d 100644 --- a/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestCommunicationWithNodes.java +++ b/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestCommunicationWithNodes.java @@ -30,7 +30,7 @@ public class TestCommunicationWithNodes { "Accept: */*\r\n" + // "\r\n"; - Settings settings = SettingsProvider.getSettings(6l, 3600, 7l, "OPEN-12-20", + HaaSClientSettings settings = SettingsProvider.getSettings("OPEN-12-20", TestingConstants.CONFIGURATION_FILE_NAME); HaaSClient client = new HaaSClient(settings); long id = 376;//client.createJob("New job", Collections.emptyList()); diff --git a/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestConcurentAccessToHaaSFileTransfer.java b/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestConcurentAccessToHaaSFileTransfer.java index 68546f9ae7f3540722a6dd7557c98f046e1adbd3..4eaafa5dd9e257a8d49780c0ad209c63245ef28b 100644 --- a/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestConcurentAccessToHaaSFileTransfer.java +++ b/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestConcurentAccessToHaaSFileTransfer.java @@ -13,7 +13,7 @@ public class TestConcurentAccessToHaaSFileTransfer { private static Logger log = LoggerFactory.getLogger(cz.it4i.fiji.haas_java_client.TestConcurentAccessToHaaSFileTransfer.class); public static void main(String[] args) throws ServiceException, IOException { - HaaSClient client = new HaaSClient(SettingsProvider.getSettings(1l, 600, 7l, "OPEN-12-20",TestingConstants.CONFIGURATION_FILE_NAME)); + HaaSClient client = new HaaSClient(SettingsProvider.getSettings("OPEN-12-20",TestingConstants.CONFIGURATION_FILE_NAME)); HaaSFileTransfer tr1 = client.startFileTransfer(250, HaaSClient.DUMMY_TRANSFER_FILE_PROGRESS); HaaSFileTransfer tr2 = client.startFileTransfer(249, HaaSClient.DUMMY_TRANSFER_FILE_PROGRESS); log.info("config.yaml - size:" + tr1.obtainSize(Arrays.asList("config.yaml"))); diff --git a/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestHaaSJavaClient.java b/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestHaaSJavaClient.java index d19be89ffd1cacd215bf4096042bb8b418caafeb..399893e97fc8d3a8101112da43fd4bc87c172567 100644 --- a/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestHaaSJavaClient.java +++ b/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestHaaSJavaClient.java @@ -25,11 +25,9 @@ public class TestHaaSJavaClient { Map<String, String> params = new HashMap<>(); params.put("inputParam", "someStringParam"); Path baseDir = Paths.get("/home/koz01/aaa"); - HaaSClient client = new HaaSClient(SettingsProvider.getSettings(1l, 600, 7l, "DD-17-31", TestingConstants.CONFIGURATION_FILE_NAME)); - long jobId = client.createJob("TestOutRedirect", params.entrySet()); - try (HaaSFileTransfer tr = client.startFileTransfer(jobId, HaaSClient.DUMMY_TRANSFER_FILE_PROGRESS)) { - tr.upload(new UploadingFileImpl(Paths.get("/home/koz01/aaa/vecmath.jar"))); - } + HaaSClient client = new HaaSClient(SettingsProvider.getSettings( "DD-17-31", TestingConstants.CONFIGURATION_FILE_NAME)); + long jobId = client.createJob(new JobSettingsBuilder().setJobName("TestOutRedirect").setTemplateId(1l) + .setWalltimeLimit(600).setClusterNodeType(7l).build(), params.entrySet()); client.submitJob(jobId); Path workDir = baseDir.resolve("" + jobId); if (!Files.isDirectory(workDir)) { diff --git a/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestHaaSJavaClientWithSPIM.java b/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestHaaSJavaClientWithSPIM.java index 585d93ea852f986ec9d54f2978622424ed610eb6..675e32f6314b440675993ef1a103daf1a16a882b 100644 --- a/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestHaaSJavaClientWithSPIM.java +++ b/haas-java-client/src/test/java/cz/it4i/fiji/haas_java_client/TestHaaSJavaClientWithSPIM.java @@ -21,10 +21,11 @@ public class TestHaaSJavaClientWithSPIM { private static Logger log = LoggerFactory.getLogger(cz.it4i.fiji.haas_java_client.TestHaaSJavaClientWithSPIM.class); public static void main(String[] args) throws ServiceException, IOException { - HaaSClient client = new HaaSClient(SettingsProvider.getSettings(2, 9600, 6l, "DD-17-31", TestingConstants.CONFIGURATION_FILE_NAME)); + HaaSClient client = new HaaSClient(SettingsProvider.getSettings("DD-17-31", TestingConstants.CONFIGURATION_FILE_NAME)); Path baseDir = Paths.get("/home/koz01/Work/vyzkumnik/fiji/work/aaa"); - long jobId = client.createJob("TestOutRedirect", Collections.emptyList()); + long jobId = client.createJob(new JobSettingsBuilder().setJobName("TestOutRedirect").setTemplateId(2) + .setWalltimeLimit(9600).setClusterNodeType(6).build(), Collections.emptyList()); try (HaaSFileTransfer tr = client.startFileTransfer(jobId, HaaSClient.DUMMY_TRANSFER_FILE_PROGRESS)) { StreamSupport.stream(getAllFiles(baseDir.resolve("spim-data")).spliterator(), false) diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/BenchmarkJobManager.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/BenchmarkJobManager.java index 26c2f77126cdf4fc248dfc3b937ef27bd13c20cd..42ce325bf816eeefe44eb68cac5d2f2df15e9d9c 100644 --- a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/BenchmarkJobManager.java +++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/BenchmarkJobManager.java @@ -55,7 +55,9 @@ import cz.it4i.fiji.haas.Job; import cz.it4i.fiji.haas.JobManager; import cz.it4i.fiji.haas_java_client.JobState; import cz.it4i.fiji.haas_java_client.ProgressNotifier; -import cz.it4i.fiji.haas_java_client.Settings; +import cz.it4i.fiji.haas_java_client.HaaSClientSettings; +import cz.it4i.fiji.haas_java_client.JobSettings; +import cz.it4i.fiji.haas_java_client.JobSettingsBuilder; import cz.it4i.fiji.haas_java_client.SynchronizableFileType; import cz.it4i.fiji.haas_java_client.UploadingFile; import net.imagej.updater.util.Progress; @@ -102,7 +104,7 @@ public class BenchmarkJobManager implements Closeable { public synchronized void startJob(Progress progress) throws IOException { job.uploadFile(Constants.CONFIG_YAML, new ProgressNotifierAdapter(progress)); LoadedYAML yaml = new LoadedYAML(job.openLocalFile(Constants.CONFIG_YAML)); - + verifiedState = null; verifiedStateProcessed = false; running = null; @@ -408,8 +410,9 @@ public class BenchmarkJobManager implements Closeable { private void startDownloadResults(CompletableFuture<?> result) throws IOException { String mainFile = job.getProperty(SPIM_OUTPUT_FILENAME_PATTERN) + ".xml"; - final ProgressNotifierTemporarySwitchOff notifierSwitch = new ProgressNotifierTemporarySwitchOff(downloadNotifier, job); - + final ProgressNotifierTemporarySwitchOff notifierSwitch = new ProgressNotifierTemporarySwitchOff( + downloadNotifier, job); + job.startDownload(downloadFileNameExtractDecorator(fileName -> fileName.equals(mainFile))) .whenComplete((X, E) -> { notifierSwitch.switchOn(); @@ -429,19 +432,20 @@ public class BenchmarkJobManager implements Closeable { result.complete(null); }); } - + private Set<String> extractNames(Path resolve) { Set<String> result = new HashSet<>(); - try(InputStream fileIS = Files.newInputStream(resolve)) { + try (InputStream fileIS = Files.newInputStream(resolve)) { DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = builderFactory.newDocumentBuilder(); Document xmlDocument = builder.parse(fileIS); XPath xPath = XPathFactory.newInstance().newXPath(); - Node imageLoader = ((NodeList) xPath.evaluate("/SpimData/SequenceDescription/ImageLoader", xmlDocument, XPathConstants.NODESET)).item(0); + Node imageLoader = ((NodeList) xPath.evaluate("/SpimData/SequenceDescription/ImageLoader", xmlDocument, + XPathConstants.NODESET)).item(0); Node hdf5 = ((NodeList) xPath.evaluate("hdf5", imageLoader, XPathConstants.NODESET)).item(0); result.add(hdf5.getTextContent()); NodeList nl = (NodeList) xPath.evaluate("partition/path", imageLoader, XPathConstants.NODESET); - for(int i = 0; i < nl.getLength(); i++) { + for (int i = 0; i < nl.getLength(); i++) { result.add(nl.item(i).getTextContent()); } } catch (IOException | ParserConfigurationException | SAXException | XPathExpressionException e) { @@ -531,7 +535,7 @@ public class BenchmarkJobManager implements Closeable { public BenchmarkJob createJob(Function<Path, Path> inputDirectoryProvider, Function<Path, Path> outputDirectoryProvider) throws IOException { - Job job = jobManager.createJob(inputDirectoryProvider, outputDirectoryProvider); + Job job = jobManager.createJob( getJobSettings(),inputDirectoryProvider, outputDirectoryProvider); return convertJob(job); } @@ -653,6 +657,12 @@ public class BenchmarkJobManager implements Closeable { return new BenchmarkJob(job); } + private static JobSettings getJobSettings() { + return new JobSettingsBuilder().setJobName(Constants.HAAS_JOB_NAME) + .setClusterNodeType(Constants.HAAS_CLUSTER_NODE_TYPE).setTemplateId(Constants.HAAS_TEMPLATE_ID) + .setWalltimeLimit(Constants.HAAS_TIMEOUT).setNumberOfCoresPerNode(Constants.CORES_PER_NODE).build(); + } + private static Predicate<String> downloadFileNameExtractDecorator(Predicate<String> decorated) { return name -> { Path path = getPathSafely(name); @@ -683,24 +693,14 @@ public class BenchmarkJobManager implements Closeable { } } - private static Settings constructSettingsFromParams(BenchmarkSPIMParameters params) { - return new Settings() { + private static HaaSClientSettings constructSettingsFromParams(BenchmarkSPIMParameters params) { + return new HaaSClientSettings() { @Override public String getUserName() { return params.username(); } - @Override - public int getTimeout() { - return Constants.HAAS_TIMEOUT; - } - - @Override - public long getTemplateId() { - return Constants.HAAS_TEMPLATE_ID; - } - @Override public String getProjectId() { return Constants.HAAS_PROJECT_ID; @@ -716,25 +716,11 @@ public class BenchmarkJobManager implements Closeable { return params.password(); } - @Override - public String getJobName() { - return Constants.HAAS_JOB_NAME; - } - @Override public String getEmail() { return params.email(); } - @Override - public long getClusterNodeType() { - return Constants.HAAS_CLUSTER_NODE_TYPE; - } - - @Override - public int getNumberOfCoresPerNode() { - return Constants.CORES_PER_NODE; - } }; } diff --git a/java-scpclient/.classpath b/java-scpclient/.classpath index af1430be15836d78425a795565a49fcd23d562b4..5e8a55fefbd916a028d5a67f0b8db3fcb3262258 100644 --- a/java-scpclient/.classpath +++ b/java-scpclient/.classpath @@ -10,6 +10,7 @@ <attributes> <attribute name="optional" value="true"/> <attribute name="maven.pomderived" value="true"/> + <attribute name="test" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> diff --git a/java-scpclient/.settings/org.eclipse.jdt.core.prefs b/java-scpclient/.settings/org.eclipse.jdt.core.prefs index 714351aec195a9a572640e6844dcafd51565a2a5..b8947ec6fc0a929c7ba04e493e77a2663a75b64e 100644 --- a/java-scpclient/.settings/org.eclipse.jdt.core.prefs +++ b/java-scpclient/.settings/org.eclipse.jdt.core.prefs @@ -2,4 +2,5 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.source=1.8