Skip to content
Snippets Groups Projects
Commit 8964d603 authored by Jan Kožusznik's avatar Jan Kožusznik
Browse files

Demeter law application

parent 3111460a
Branches
Tags
No related merge requests found
...@@ -101,5 +101,12 @@ ...@@ -101,5 +101,12 @@
<artifactId>slf4j-simple</artifactId> <artifactId>slf4j-simple</artifactId>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.yaml/snakeyaml -->
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.19</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
...@@ -4,8 +4,13 @@ import java.io.IOException; ...@@ -4,8 +4,13 @@ import java.io.IOException;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; 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.JobInfo;
import cz.it4i.fiji.haas.JobManager.JobSynchronizableFile;
import cz.it4i.fiji.haas_java_client.HaaSClient; import cz.it4i.fiji.haas_java_client.HaaSClient;
import cz.it4i.fiji.haas_java_client.JobState; import cz.it4i.fiji.haas_java_client.JobState;
import net.imagej.updater.util.Progress; import net.imagej.updater.util.Progress;
...@@ -14,34 +19,57 @@ public class BenchmarkJobManager { ...@@ -14,34 +19,57 @@ public class BenchmarkJobManager {
private static final String CONFIG_YAML = "config.yaml"; private static final String CONFIG_YAML = "config.yaml";
private JobManager jobManager; private JobManager jobManager;
private Progress progress; private Progress progress;
private Map<Long,JobInfo> jobs = new HashMap<>();
public BenchmarkJobManager(Path workDirectory, Progress progress) throws IOException { public BenchmarkJobManager(Path workDirectory, Progress progress) throws IOException {
jobManager = new JobManager(workDirectory, TestingConstants.getSettings(2, 6)); jobManager = new JobManager(workDirectory, TestingConstants.getSettings(2, 6));
this.progress = progress; this.progress = progress;
} }
public JobInfo createJob() throws IOException { public long createJob() throws IOException {
JobInfo jobInfo = jobManager.createJob(progress); JobInfo jobInfo = jobManager.createJob(progress);
jobInfo.storeDataInWorkdirectory(getUploadingFile()); 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.uploadFilesByName(() -> Arrays.asList(CONFIG_YAML).stream());
jobInfo.submit(); jobInfo.submit();
} }
public Collection<Long> getJobs() throws IOException {
return jobManager.getJobs(progress).stream().map(this::indexJob).collect(Collectors.toList());
}
public JobState getState(long jobId) { 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() { private HaaSClient.UploadingFile getUploadingFile() {
return new UploadingFileFromResource("", CONFIG_YAML); return new UploadingFileFromResource("", CONFIG_YAML);
} }
public Collection<JobInfo> getJobs() throws IOException { private long indexJob(JobInfo jobInfo) {
return jobManager.getJobs(progress); jobs.put(jobInfo.getId(), jobInfo);
return jobInfo.getId();
} }
} }
...@@ -9,7 +9,6 @@ import java.util.Arrays; ...@@ -9,7 +9,6 @@ import java.util.Arrays;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; 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.JobState;
import cz.it4i.fiji.haas_java_client.SynchronizableFileType; import cz.it4i.fiji.haas_java_client.SynchronizableFileType;
import net.imagej.updater.util.Progress; import net.imagej.updater.util.Progress;
...@@ -24,7 +23,7 @@ public class RunBenchmark { ...@@ -24,7 +23,7 @@ public class RunBenchmark {
Files.createDirectory(p); Files.createDirectory(p);
} }
BenchmarkJobManager benchmarkJobManager = new BenchmarkJobManager(p, new P_Progress()); BenchmarkJobManager benchmarkJobManager = new BenchmarkJobManager(p, new P_Progress());
JobInfo ji = benchmarkJobManager.createJob(); long ji = benchmarkJobManager.createJob();
log.info("job: " + ji + " created."); log.info("job: " + ji + " created.");
} }
} }
...@@ -36,14 +35,15 @@ public class RunBenchmark { ...@@ -36,14 +35,15 @@ public class RunBenchmark {
Files.createDirectory(p); Files.createDirectory(p);
} }
BenchmarkJobManager benchmarkJobManager = new BenchmarkJobManager(p, new P_Progress()); BenchmarkJobManager benchmarkJobManager = new BenchmarkJobManager(p, new P_Progress());
for (JobInfo ji : benchmarkJobManager.getJobs()) { for (long jobId : benchmarkJobManager.getJobs()) {
log.info("job: " + ji.getId() + " hasStatus " + ji.getState()); JobState state;
if (ji.getState() == JobState.Configuring) { log.info("job: " + jobId + " hasStatus " + (state = benchmarkJobManager.getState(jobId)));
benchmarkJobManager.startJob(ji); if (state == JobState.Configuring) {
} else if (ji.getState() != JobState.Running && ji.getState() != JobState.Queued) { benchmarkJobManager.startJob(jobId);
ji.downloadData(new P_Progress()); } else if (state != JobState.Running && state != JobState.Queued) {
} else if (ji.getState() == JobState.Running) { benchmarkJobManager.downloadData(jobId);
log.info(ji.getOutput(Arrays.asList( } else if (state == JobState.Running) {
log.info(benchmarkJobManager.getOutput(jobId,Arrays.asList(
new JobManager.JobSynchronizableFile(SynchronizableFileType.StandardErrorFile, 0))).iterator().next()); new JobManager.JobSynchronizableFile(SynchronizableFileType.StandardErrorFile, 0))).iterator().next());
} }
} }
......
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"));
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment