Search in sources :

Example 16 with ToolExecution

use of ca.corefacility.bioinformatics.irida.model.workflow.analysis.ToolExecution in project irida by phac-nml.

the class AnalysisProvenanceServiceGalaxyTest method testBuildSingleStepToolExecutionOneParameterOnePredecessor.

@Test
public void testBuildSingleStepToolExecutionOneParameterOnePredecessor() throws ExecutionManagerException {
    final HistoryContents hc = new HistoryContents();
    hc.setName(FILENAME);
    hc.setId("historyContentsId");
    final HistoryContentsProvenance hcpWithPredecessor = new HistoryContentsProvenance();
    hcpWithPredecessor.setParameters(ImmutableMap.of("akey", (Object) ImmutableMap.of("id", "previousKey")));
    final HistoryContentsProvenance hcpWithoutPredecessor = new HistoryContentsProvenance();
    hcpWithoutPredecessor.setParameters(ImmutableMap.of("akey", (Object) "value"));
    when(galaxyHistoriesService.showHistoryContents(any(String.class))).thenReturn(Lists.newArrayList(hc));
    when(galaxyHistoriesService.showProvenance(any(String.class), eq("historyContentsId"))).thenReturn(hcpWithPredecessor);
    when(galaxyHistoriesService.showProvenance(any(String.class), eq("previousKey"))).thenReturn(hcpWithoutPredecessor);
    when(jobsClient.showJob(any(String.class))).thenReturn(new JobDetails());
    when(toolsClient.showTool(any(String.class))).thenReturn(new Tool());
    final ToolExecution toolExecution = provenanceService.buildToolExecutionForOutputFile(analysisSubmission(), analysisOutputFile());
    assertFalse("tool execution should not have an ID parameter.", toolExecution.getExecutionTimeParameters().containsKey("akey"));
    assertFalse("tool execution should not have an ID parameter.", toolExecution.getExecutionTimeParameters().containsKey("akey.id"));
    assertFalse("Tool execution has one predecessor, not input step.", toolExecution.isInputTool());
    final ToolExecution predecessor = toolExecution.getPreviousSteps().iterator().next();
    assertTrue("predecessor step is input step.", predecessor.isInputTool());
}
Also used : ToolExecution(ca.corefacility.bioinformatics.irida.model.workflow.analysis.ToolExecution) HistoryContents(com.github.jmchilton.blend4j.galaxy.beans.HistoryContents) HistoryContentsProvenance(com.github.jmchilton.blend4j.galaxy.beans.HistoryContentsProvenance) JobDetails(com.github.jmchilton.blend4j.galaxy.beans.JobDetails) Tool(com.github.jmchilton.blend4j.galaxy.beans.Tool) Test(org.junit.Test)

Example 17 with ToolExecution

use of ca.corefacility.bioinformatics.irida.model.workflow.analysis.ToolExecution in project irida by phac-nml.

the class AnalysisProvenanceServiceGalaxyTest method testBuildSingleStepToolExecutionComplexParameters.

@Test
public void testBuildSingleStepToolExecutionComplexParameters() throws ExecutionManagerException {
    final HistoryContents hc = new HistoryContents();
    hc.setName(FILENAME);
    final HistoryContentsProvenance hcp = new HistoryContentsProvenance();
    final Map<String, Object> mapWithNullValue = new HashMap<>();
    mapWithNullValue.put("key", null);
    final ImmutableMap.Builder<String, Object> builder = ImmutableMap.builder();
    builder.put("akey", (Object) "avalue").put("anotherKey", (Object) "{\"key\": \"value\"}").put("thirdKey", (Object) ImmutableMap.of("key", "{\"key\":\"value\"}")).put("fourthKey", (Object) "[{\"key\":\"value\"}]").put("fifthKey", (Object) mapWithNullValue).put("abadkey", (Object) "[{\"key\":\"value\"]").put("listKey", (Object) ImmutableList.of(ImmutableMap.of("key", "value"))).put("k", (Object) "value-lower").put("K", (Object) "value-upper").put("\\\\keyWithBackslash", (Object) "value-backslash-lower").put("\\\\KeyWithBackslash", (Object) "value-backslash-upper").put("MULTIPLE_UPPER_case", (Object) "upper-case-values!");
    hcp.setParameters(builder.build());
    when(galaxyHistoriesService.showHistoryContents(any(String.class))).thenReturn(Lists.newArrayList(hc));
    when(galaxyHistoriesService.showProvenance(any(String.class), any(String.class))).thenReturn(hcp);
    when(toolsClient.showTool(any(String.class))).thenReturn(new Tool());
    when(jobsClient.showJob(any(String.class))).thenReturn(new JobDetails());
    final ToolExecution toolExecution = provenanceService.buildToolExecutionForOutputFile(analysisSubmission(), analysisOutputFile());
    final Map<String, String> params = toolExecution.getExecutionTimeParameters();
    assertTrue("tool execution should have the specified parameter.", params.containsKey("akey"));
    assertEquals("tool execution parameter should be specified value.", "avalue", params.get("akey"));
    assertTrue("tool execution should have the specified parameter.", params.containsKey("anotherKey.key"));
    assertEquals("tool execution parameter should be specified value.", "value", params.get("anotherKey.key"));
    assertTrue("tool execution should have the specified parameter.", params.containsKey("thirdKey.key.key"));
    assertEquals("tool execution parameter should be specified value.", "value", params.get("thirdKey.key.key"));
    assertTrue("tool execution should have the specified parameter.", params.containsKey("fourthKey.key"));
    assertEquals("tool execution parameter should be specified value.", "value", params.get("fourthKey.key"));
    assertTrue("tool execution should have the specified parameter.", params.containsKey("fifthKey.key"));
    assertEquals("tool execution parameter should be specified value.", AnalysisProvenanceServiceGalaxy.emptyValuePlaceholder(), params.get("fifthKey.key"));
    assertTrue("tool execution should have the specified parameter.", params.containsKey("abadkey"));
    assertEquals("tool execution parameter should be specified value.", "[{\"key\":\"value\"]", params.get("abadkey"));
    assertTrue("tool execution should have the specified parameter.", params.containsKey("listKey.key"));
    assertEquals("tool execution parameter should be specified value.", "value", params.get("listKey.key"));
    assertTrue("tool execution should have the specified parameter.", params.containsKey("k"));
    assertEquals("tool execution parameter should be specified value.", "value-lower", params.get("k"));
    assertTrue("tool execution should have the specified parameter.", params.containsKey("K"));
    assertEquals("tool execution parameter should be specified value.", "value-upper", params.get("K"));
    assertTrue("tool execution should have the specified parameter.", params.containsKey("\\\\keyWithBackslash"));
    assertEquals("tool execution parameter should be specified value.", "value-backslash-lower", params.get("\\\\keyWithBackslash"));
    assertTrue("tool execution should have the specified parameter.", params.containsKey("\\\\KeyWithBackslash"));
    assertEquals("tool execution parameter should be specified value.", "value-backslash-upper", params.get("\\\\KeyWithBackslash"));
    assertTrue("tool execution should have the specified parameter.", params.containsKey("MULTIPLE_UPPER_case"));
    assertEquals("tool execution parameter should be specified value.", "upper-case-values!", params.get("MULTIPLE_UPPER_case"));
    assertTrue("Tool execution should be considered input step, no predecessors.", toolExecution.isInputTool());
}
Also used : HashMap(java.util.HashMap) ToolExecution(ca.corefacility.bioinformatics.irida.model.workflow.analysis.ToolExecution) HistoryContents(com.github.jmchilton.blend4j.galaxy.beans.HistoryContents) HistoryContentsProvenance(com.github.jmchilton.blend4j.galaxy.beans.HistoryContentsProvenance) ImmutableMap(com.google.common.collect.ImmutableMap) JobDetails(com.github.jmchilton.blend4j.galaxy.beans.JobDetails) Tool(com.github.jmchilton.blend4j.galaxy.beans.Tool) Test(org.junit.Test)

Example 18 with ToolExecution

use of ca.corefacility.bioinformatics.irida.model.workflow.analysis.ToolExecution in project irida by phac-nml.

the class AnalysisProvenanceServiceGalaxyTest method testBuildSingleStepToolExecutionOneParameter.

@Test
public void testBuildSingleStepToolExecutionOneParameter() throws ExecutionManagerException {
    final HistoryContents hc = new HistoryContents();
    hc.setName(FILENAME);
    final HistoryContentsProvenance hcp = new HistoryContentsProvenance();
    hcp.setParameters(ImmutableMap.of("akey", (Object) "avalue"));
    final JobDetails jd = new JobDetails();
    jd.setCommandLine("");
    when(galaxyHistoriesService.showHistoryContents(any(String.class))).thenReturn(Lists.newArrayList(hc));
    when(galaxyHistoriesService.showProvenance(any(String.class), any(String.class))).thenReturn(hcp);
    when(toolsClient.showTool(any(String.class))).thenReturn(new Tool());
    when(jobsClient.showJob(any(String.class))).thenReturn(jd);
    final ToolExecution toolExecution = provenanceService.buildToolExecutionForOutputFile(analysisSubmission(), analysisOutputFile());
    assertTrue("tool execution should have the specified parameter.", toolExecution.getExecutionTimeParameters().containsKey("akey"));
    assertEquals("tool execution parameter should be specified value.", "avalue", toolExecution.getExecutionTimeParameters().get("akey"));
    assertTrue("Tool execution should be considered input step, no predecessors.", toolExecution.isInputTool());
}
Also used : ToolExecution(ca.corefacility.bioinformatics.irida.model.workflow.analysis.ToolExecution) HistoryContents(com.github.jmchilton.blend4j.galaxy.beans.HistoryContents) HistoryContentsProvenance(com.github.jmchilton.blend4j.galaxy.beans.HistoryContentsProvenance) JobDetails(com.github.jmchilton.blend4j.galaxy.beans.JobDetails) Tool(com.github.jmchilton.blend4j.galaxy.beans.Tool) Test(org.junit.Test)

Example 19 with ToolExecution

use of ca.corefacility.bioinformatics.irida.model.workflow.analysis.ToolExecution in project irida by phac-nml.

the class AnalysisWorkspaceServiceGalaxy method buildOutputFile.

/**
 * Builds a new AnalysisOutputFile from the given file in Galaxy.
 *
 * @param analysisId
 *            The id of the analysis performed in Galaxy.
 * @param labelPrefix
 *            The prefix to add to the label of this file.
 * @param dataset
 *            The dataset containing the data for the AnalysisOutputFile.
 * @param outputDirectory
 *            A directory to download the resulting output files.
 * @return An AnalysisOutputFile storing a local copy of the Galaxy file.
 * @throws IOException
 *             If there was an issue creating a local file.
 * @throws ExecutionManagerDownloadException
 *             If there was an issue downloading the data from Galaxy.
 * @throws ExecutionManagerException
 *             If there was an issue extracting tool execution provenance
 *             from Galaxy.
 */
private AnalysisOutputFile buildOutputFile(String analysisId, String labelPrefix, Dataset dataset, Path outputDirectory) throws IOException, ExecutionManagerDownloadException, ExecutionManagerException {
    String datasetId = dataset.getId();
    String fileName = dataset.getName();
    Path outputFile = outputDirectory.resolve(fileName);
    galaxyHistoriesService.downloadDatasetTo(analysisId, datasetId, outputFile);
    final ToolExecution toolExecution = analysisProvenanceServiceGalaxy.buildToolExecutionForOutputFile(analysisId, fileName);
    AnalysisOutputFile analysisOutputFile = new AnalysisOutputFile(outputFile, labelPrefix, datasetId, toolExecution);
    return analysisOutputFile;
}
Also used : Path(java.nio.file.Path) ToolExecution(ca.corefacility.bioinformatics.irida.model.workflow.analysis.ToolExecution) AnalysisOutputFile(ca.corefacility.bioinformatics.irida.model.workflow.analysis.AnalysisOutputFile)

Aggregations

ToolExecution (ca.corefacility.bioinformatics.irida.model.workflow.analysis.ToolExecution)19 Test (org.junit.Test)14 Analysis (ca.corefacility.bioinformatics.irida.model.workflow.analysis.Analysis)10 AnalysisOutputFile (ca.corefacility.bioinformatics.irida.model.workflow.analysis.AnalysisOutputFile)10 AnalysisSubmission (ca.corefacility.bioinformatics.irida.model.workflow.submission.AnalysisSubmission)9 WithMockUser (org.springframework.security.test.context.support.WithMockUser)9 Scanner (java.util.Scanner)7 HistoryContents (com.github.jmchilton.blend4j.galaxy.beans.HistoryContents)6 HistoryContentsProvenance (com.github.jmchilton.blend4j.galaxy.beans.HistoryContentsProvenance)6 JobDetails (com.github.jmchilton.blend4j.galaxy.beans.JobDetails)6 Tool (com.github.jmchilton.blend4j.galaxy.beans.Tool)6 SequenceFilePair (ca.corefacility.bioinformatics.irida.model.sequenceFile.SequenceFilePair)4 Path (java.nio.file.Path)3 HashMap (java.util.HashMap)3 ExecutionManagerException (ca.corefacility.bioinformatics.irida.exceptions.ExecutionManagerException)2 AnalysisOutputFileInfo (ca.corefacility.bioinformatics.irida.ria.web.analysis.dto.AnalysisOutputFileInfo)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)2 Collectors (java.util.stream.Collectors)2 Logger (org.slf4j.Logger)2 LoggerFactory (org.slf4j.LoggerFactory)2