diff --git a/haas-imagej-client/pom.xml b/haas-imagej-client/pom.xml index 21819a78d58ca4ba71a750b09a7979e4cdc3cc80..66e3de879b6adca653082dc4641d44ebdaf82100 100644 --- a/haas-imagej-client/pom.xml +++ b/haas-imagej-client/pom.xml @@ -101,5 +101,12 @@ <artifactId>slf4j-simple</artifactId> </dependency> + <!-- https://mvnrepository.com/artifact/org.yaml/snakeyaml --> + <dependency> + <groupId>org.yaml</groupId> + <artifactId>snakeyaml</artifactId> + <version>1.19</version> + </dependency> + </dependencies> </project> diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java index 0e0f2ee91fd2f81429df711a1898a95b12d4b239..e0c7df7830d87b149fd8248cfa506e74ecf7cfee 100644 --- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java +++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java @@ -4,8 +4,13 @@ import java.io.IOException; import java.nio.file.Path; import java.util.Arrays; import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import cz.it4i.fiji.haas.JobManager.JobInfo; +import cz.it4i.fiji.haas.JobManager.JobSynchronizableFile; import cz.it4i.fiji.haas_java_client.HaaSClient; import cz.it4i.fiji.haas_java_client.JobState; import net.imagej.updater.util.Progress; @@ -14,34 +19,57 @@ public class BenchmarkJobManager { private static final String CONFIG_YAML = "config.yaml"; private JobManager jobManager; private Progress progress; - + private Map<Long,JobInfo> jobs = new HashMap<>(); public BenchmarkJobManager(Path workDirectory, Progress progress) throws IOException { jobManager = new JobManager(workDirectory, TestingConstants.getSettings(2, 6)); this.progress = progress; } - public JobInfo createJob() throws IOException { + public long createJob() throws IOException { JobInfo jobInfo = jobManager.createJob(progress); jobInfo.storeDataInWorkdirectory(getUploadingFile()); - return jobInfo; + return indexJob(jobInfo); } - public void startJob(JobInfo jobInfo) { + public void startJob(long jobId) { + JobInfo jobInfo = jobs.get(jobId); jobInfo.uploadFilesByName(() -> Arrays.asList(CONFIG_YAML).stream()); jobInfo.submit(); } + + public Collection<Long> getJobs() throws IOException { + return jobManager.getJobs(progress).stream().map(this::indexJob).collect(Collectors.toList()); + } + public JobState getState(long jobId) { - return jobManager.getState(jobId); + return jobs.get(jobId).getState(); } + public void downloadData(long jobId) { + // TODO Auto-generated method stub + + + + } + public Iterable<String> getOutput(long jobId, List<JobSynchronizableFile> files) { + return jobs.get(jobId).getOutput(files); + } + private HaaSClient.UploadingFile getUploadingFile() { return new UploadingFileFromResource("", CONFIG_YAML); } - public Collection<JobInfo> getJobs() throws IOException { - return jobManager.getJobs(progress); + private long indexJob(JobInfo jobInfo) { + jobs.put(jobInfo.getId(), jobInfo); + return jobInfo.getId(); } + + + + + + } diff --git a/haas-imagej-client/src/test/java/cz/it4i/fiji/haas/RunBenchmark.java b/haas-imagej-client/src/test/java/cz/it4i/fiji/haas/RunBenchmark.java index 64c189ae81a874da130ca767c37e7e29ccdc50ec..eb50cc28d4e1de6ba81117339ae827d2c6cb319b 100644 --- a/haas-imagej-client/src/test/java/cz/it4i/fiji/haas/RunBenchmark.java +++ b/haas-imagej-client/src/test/java/cz/it4i/fiji/haas/RunBenchmark.java @@ -9,7 +9,6 @@ import java.util.Arrays; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import cz.it4i.fiji.haas.JobManager.JobInfo; import cz.it4i.fiji.haas_java_client.JobState; import cz.it4i.fiji.haas_java_client.SynchronizableFileType; import net.imagej.updater.util.Progress; @@ -24,7 +23,7 @@ public class RunBenchmark { Files.createDirectory(p); } BenchmarkJobManager benchmarkJobManager = new BenchmarkJobManager(p, new P_Progress()); - JobInfo ji = benchmarkJobManager.createJob(); + long ji = benchmarkJobManager.createJob(); log.info("job: " + ji + " created."); } } @@ -36,14 +35,15 @@ public class RunBenchmark { Files.createDirectory(p); } BenchmarkJobManager benchmarkJobManager = new BenchmarkJobManager(p, new P_Progress()); - for (JobInfo ji : benchmarkJobManager.getJobs()) { - log.info("job: " + ji.getId() + " hasStatus " + ji.getState()); - if (ji.getState() == JobState.Configuring) { - benchmarkJobManager.startJob(ji); - } else if (ji.getState() != JobState.Running && ji.getState() != JobState.Queued) { - ji.downloadData(new P_Progress()); - } else if (ji.getState() == JobState.Running) { - log.info(ji.getOutput(Arrays.asList( + for (long jobId : benchmarkJobManager.getJobs()) { + JobState state; + log.info("job: " + jobId + " hasStatus " + (state = benchmarkJobManager.getState(jobId))); + if (state == JobState.Configuring) { + benchmarkJobManager.startJob(jobId); + } else if (state != JobState.Running && state != JobState.Queued) { + benchmarkJobManager.downloadData(jobId); + } else if (state == JobState.Running) { + log.info(benchmarkJobManager.getOutput(jobId,Arrays.asList( new JobManager.JobSynchronizableFile(SynchronizableFileType.StandardErrorFile, 0))).iterator().next()); } } diff --git a/haas-imagej-client/src/test/java/cz/it4i/fiji/haas/TestYaml.java b/haas-imagej-client/src/test/java/cz/it4i/fiji/haas/TestYaml.java new file mode 100644 index 0000000000000000000000000000000000000000..bfd5b70b3b4577b122f8f05f56f0162d197b32d5 --- /dev/null +++ b/haas-imagej-client/src/test/java/cz/it4i/fiji/haas/TestYaml.java @@ -0,0 +1,25 @@ +package cz.it4i.fiji.haas; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.yaml.snakeyaml.Yaml; + +public class TestYaml { + + private static Logger log = LoggerFactory.getLogger(cz.it4i.fiji.haas.TestYaml.class); + + public static void main(String[] args) throws IOException { + try(InputStream is = args.getClass().getResourceAsStream("config.yaml")){ + Yaml yaml = new Yaml(); + + Map map = yaml.load(is); + log.info("common.hdf5_xml_filename: " + ((Map)map.get("common")).get("hdf5_xml_filename")); + } + + } + +}