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
No related branches found
No related tags found
No related merge requests found
......@@ -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>
......@@ -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();
}
}
......@@ -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());
}
}
......
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