Skip to content
Snippets Groups Projects
Commit 1dddfa09 authored by Greg DiCristofaro's avatar Greg DiCristofaro
Browse files

removed collections dependency

parent 7a8a3e68
No related branches found
No related tags found
No related merge requests found
Showing with 91 additions and 23 deletions
...@@ -17,7 +17,6 @@ file.reference.c3p0-0.9.5.jar=release\\modules\\ext\\c3p0-0.9.5.jar ...@@ -17,7 +17,6 @@ file.reference.c3p0-0.9.5.jar=release\\modules\\ext\\c3p0-0.9.5.jar
file.reference.checker-compat-qual-2.5.3.jar=release\\modules\\ext\\checker-compat-qual-2.5.3.jar file.reference.checker-compat-qual-2.5.3.jar=release\\modules\\ext\\checker-compat-qual-2.5.3.jar
file.reference.commons-beanutils-1.9.2.jar=release\\modules\\ext\\commons-beanutils-1.9.2.jar file.reference.commons-beanutils-1.9.2.jar=release\\modules\\ext\\commons-beanutils-1.9.2.jar
file.reference.commons-codec-1.11.jar=release\\modules\\ext\\commons-codec-1.11.jar file.reference.commons-codec-1.11.jar=release\\modules\\ext\\commons-codec-1.11.jar
file.reference.commons-collections-3.2.2.jar=release\\modules\\ext\\commons-collections-3.2.2.jar
file.reference.commons-dbcp2-2.1.1.jar=release\\modules\\ext\\commons-dbcp2-2.1.1.jar file.reference.commons-dbcp2-2.1.1.jar=release\\modules\\ext\\commons-dbcp2-2.1.1.jar
file.reference.commons-digester-1.8.1.jar=release\\modules\\ext\\commons-digester-1.8.1.jar file.reference.commons-digester-1.8.1.jar=release\\modules\\ext\\commons-digester-1.8.1.jar
file.reference.commons-logging-1.2.jar=release\\modules\\ext\\commons-logging-1.2.jar file.reference.commons-logging-1.2.jar=release\\modules\\ext\\commons-logging-1.2.jar
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
import org.apache.cxf.common.util.CollectionUtils; import org.apache.cxf.common.util.CollectionUtils;
import org.openide.util.Pair; import org.openide.util.Pair;
import org.sleuthkit.autopsy.ingest.IngestJobSettings; import org.sleuthkit.autopsy.ingest.IngestJobSettings;
import org.sleuthkit.autopsy.ingest.IngestModuleFactoryService;
import org.sleuthkit.autopsy.ingest.IngestModuleTemplate; import org.sleuthkit.autopsy.ingest.IngestModuleTemplate;
import org.sleuthkit.autopsy.integrationtesting.config.ConfigDeserializer; import org.sleuthkit.autopsy.integrationtesting.config.ConfigDeserializer;
import org.sleuthkit.autopsy.integrationtesting.config.ParameterizedResourceConfig; import org.sleuthkit.autopsy.integrationtesting.config.ParameterizedResourceConfig;
...@@ -100,7 +99,7 @@ private Pair<IngestJobSettings, ConfigurationModule<?>> runConfigurationModule(I ...@@ -100,7 +99,7 @@ private Pair<IngestJobSettings, ConfigurationModule<?>> runConfigurationModule(I
} }
Type configurationModuleType = Stream.of(clazz.getGenericInterfaces()) Type configurationModuleType = Stream.of(clazz.getGenericInterfaces())
.filter(type -> type.getClass().equals(ConfigurationModule.class) && type instanceof ParameterizedType && type instanceof Class) .filter(type -> type instanceof ParameterizedType && ((ParameterizedType) type).getRawType().equals(ConfigurationModule.class))
.map(type -> ((ParameterizedType) type).getActualTypeArguments()[0]) .map(type -> ((ParameterizedType) type).getActualTypeArguments()[0])
.findFirst() .findFirst()
.orElse(null); .orElse(null);
...@@ -121,7 +120,7 @@ private Pair<IngestJobSettings, ConfigurationModule<?>> runConfigurationModule(I ...@@ -121,7 +120,7 @@ private Pair<IngestJobSettings, ConfigurationModule<?>> runConfigurationModule(I
} }
if (result instanceof IngestJobSettings) { if (result instanceof IngestJobSettings) {
return Pair.of(curConfig, configModuleObj); return Pair.of((IngestJobSettings) result, configModuleObj);
} else { } else {
logger.log(Level.SEVERE, String.format("Could not retrieve IngestJobSettings from %s", configModule.getResource())); logger.log(Level.SEVERE, String.format("Could not retrieve IngestJobSettings from %s", configModule.getResource()));
return null; return null;
......
...@@ -3,9 +3,12 @@ ...@@ -3,9 +3,12 @@
* To change this template file, choose Tools | Templates * To change this template file, choose Tools | Templates
* and open the template in the editor. * and open the template in the editor.
*/ */
package org.sleuthkit.autopsy.ingest; package org.sleuthkit.autopsy.integrationtesting;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.openide.util.Lookup;
import org.sleuthkit.autopsy.ingest.IngestModuleFactory;
/** /**
* *
...@@ -13,6 +16,6 @@ ...@@ -13,6 +16,6 @@
*/ */
public class IngestModuleFactoryService { public class IngestModuleFactoryService {
public List<IngestModuleFactory> getFactories() { public List<IngestModuleFactory> getFactories() {
return IngestModuleFactoryLoader.getIngestModuleFactories(); return new ArrayList<>(Lookup.getDefault().lookupAll(IngestModuleFactory.class));
} }
} }
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.sleuthkit.autopsy.ingest.IngestJobSettings; import org.sleuthkit.autopsy.ingest.IngestJobSettings;
import org.sleuthkit.autopsy.ingest.IngestModuleFactory; import org.sleuthkit.autopsy.ingest.IngestModuleFactory;
import org.sleuthkit.autopsy.ingest.IngestModuleFactoryService;
import org.sleuthkit.autopsy.ingest.IngestModuleTemplate; import org.sleuthkit.autopsy.ingest.IngestModuleTemplate;
/** /**
...@@ -65,7 +64,7 @@ public IngestJobSettings configure(IngestJobSettings curSettings, IngestModuleSe ...@@ -65,7 +64,7 @@ public IngestJobSettings configure(IngestJobSettings curSettings, IngestModuleSe
List<IngestModuleTemplate> newTemplates = new ArrayList<>(curTemplates.values()); List<IngestModuleTemplate> newTemplates = new ArrayList<>(curTemplates.values());
if (parameters != null && CollectionUtils.isEmpty(parameters.getModules())) { if (parameters != null && !CollectionUtils.isEmpty(parameters.getModules())) {
List<IngestModuleTemplate> templatesToAdd = parameters.getModules().stream() List<IngestModuleTemplate> templatesToAdd = parameters.getModules().stream()
.filter((className) -> !curTemplates.containsKey(className)) .filter((className) -> !curTemplates.containsKey(className))
.map((className) -> allFactories.get(className)) .map((className) -> allFactories.get(className))
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package org.sleuthkit.autopsy.integrationtesting; package org.sleuthkit.autopsy.integrationtesting;
import java.io.File;
import org.sleuthkit.autopsy.integrationtesting.config.TestSuiteConfig; import org.sleuthkit.autopsy.integrationtesting.config.TestSuiteConfig;
import org.sleuthkit.autopsy.integrationtesting.config.IntegrationTestConfig; import org.sleuthkit.autopsy.integrationtesting.config.IntegrationTestConfig;
import org.sleuthkit.autopsy.integrationtesting.config.IntegrationCaseType; import org.sleuthkit.autopsy.integrationtesting.config.IntegrationCaseType;
...@@ -36,7 +37,6 @@ ...@@ -36,7 +37,6 @@
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.cxf.common.util.CollectionUtils; import org.apache.cxf.common.util.CollectionUtils;
import org.netbeans.junit.NbModuleSuite; import org.netbeans.junit.NbModuleSuite;
import org.openide.util.Exceptions;
import org.openide.util.Lookup; import org.openide.util.Lookup;
import org.openide.util.Pair; import org.openide.util.Pair;
import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.Case;
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
import org.sleuthkit.autopsy.integrationtesting.config.TestingConfig; import org.sleuthkit.autopsy.integrationtesting.config.TestingConfig;
import org.sleuthkit.autopsy.testutils.IngestUtils; import org.sleuthkit.autopsy.testutils.IngestUtils;
import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.datamodel.TskCoreException;
import static ucar.unidata.util.Format.i;
/** /**
* Main entry point for running integration tests. Handles processing * Main entry point for running integration tests. Handles processing
...@@ -159,6 +160,10 @@ private Case createCaseWithDataSources(EnvConfig envConfig, String caseName, Cas ...@@ -159,6 +160,10 @@ private Case createCaseWithDataSources(EnvConfig envConfig, String caseName, Cas
String uniqueCaseName = String.format("%s_%s", caseName, TimeStampUtils.createTimeStamp()); String uniqueCaseName = String.format("%s_%s", caseName, TimeStampUtils.createTimeStamp());
String outputFolder = PathUtil.getAbsolutePath(envConfig.getWorkingDirectory(), envConfig.getRootCaseOutputPath()); String outputFolder = PathUtil.getAbsolutePath(envConfig.getWorkingDirectory(), envConfig.getRootCaseOutputPath());
String caseOutputFolder = Paths.get(outputFolder, uniqueCaseName).toString(); String caseOutputFolder = Paths.get(outputFolder, uniqueCaseName).toString();
File caseOutputFolderFile = new File(caseOutputFolder);
if (!caseOutputFolderFile.exists()) {
caseOutputFolderFile.mkdirs();
}
switch (caseType) { switch (caseType) {
case SINGLE_USER_CASE: { case SINGLE_USER_CASE: {
......
...@@ -101,12 +101,12 @@ private static <K, V> V getOrCreate(Map<K, V> map, K key, Supplier<V> onNotPrese ...@@ -101,12 +101,12 @@ private static <K, V> V getOrCreate(Map<K, V> map, K key, Supplier<V> onNotPrese
} }
return curValue; return curValue;
} }
/** /**
* A mapping of package -> test suite -> test -> output data * A mapping of package -> test suite -> test -> output data
*/ */
private final Map<String, Map<String, Map<String, Object>>> data = new HashMap<>(); private final Map<String, Map<String, Map<String, Object>>> data = new HashMap<>();
/** /**
* Adds a result for a particular test in a test suite. * Adds a result for a particular test in a test suite.
* *
...@@ -193,20 +193,27 @@ protected MappingNode representJavaBean(Set<Property> properties, Object javaBea ...@@ -193,20 +193,27 @@ protected MappingNode representJavaBean(Set<Property> properties, Object javaBea
public void serializeToFile(String outputFolder, String caseName, Case.CaseType caseType) { public void serializeToFile(String outputFolder, String caseName, Case.CaseType caseType) {
serializeToFile(getSerializationPath(outputFolder, caseName, caseType)); serializeToFile(getSerializationPath(outputFolder, caseName, caseType));
} }
private String getSerializationPath(String outputFolder, String caseName, Case.CaseType caseType) { private String getSerializationPath(String outputFolder, String caseName, Case.CaseType caseType) {
String outputExtension = ".yml"; String outputExtension = ".yml";
Path outputPath = Paths.get(outputFolder, String.format("%s-%s%s", caseName, getCaseTypeId(caseType), outputExtension)); Path outputPath = Paths.get(outputFolder, String.format("%s-%s%s", caseName, getCaseTypeId(caseType), outputExtension));
return outputPath.toString(); return outputPath.toString();
} }
/** /**
* Serializes results of a test to a yaml file. * Serializes results of a test to a yaml file.
*
* @param outputPath The output path. * @param outputPath The output path.
*/ */
public void serializeToFile(String outputPath) { public void serializeToFile(String outputPath) {
File outputFile = new File(outputPath);
if (!outputFile.getParentFile().exists()) {
outputFile.getParentFile().mkdirs();
}
try { try {
FileWriter writer = new FileWriter(new File(outputPath)); FileWriter writer = new FileWriter(outputFile);
YAML_SERIALIZER.dump(getSerializableData(), writer); YAML_SERIALIZER.dump(getSerializableData(), writer);
} catch (IOException ex) { } catch (IOException ex) {
logger.log(Level.WARNING, "There was an error writing results to outputPath: " + outputPath, ex); logger.log(Level.WARNING, "There was an error writing results to outputPath: " + outputPath, ex);
......
...@@ -25,10 +25,17 @@ ...@@ -25,10 +25,17 @@
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer; import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.TextNode; import com.fasterxml.jackson.databind.node.TextNode;
import com.fasterxml.jackson.databind.node.ValueNode;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import org.sleuthkit.autopsy.integrationtesting.config.ParameterizedResourceConfig.ParameterizedResourceConfigDeserializer; import org.sleuthkit.autopsy.integrationtesting.config.ParameterizedResourceConfig.ParameterizedResourceConfigDeserializer;
...@@ -61,14 +68,68 @@ public ParameterizedResourceConfig deserialize(JsonParser jp, DeserializationCon ...@@ -61,14 +68,68 @@ public ParameterizedResourceConfig deserialize(JsonParser jp, DeserializationCon
} else if (node instanceof TextNode) { } else if (node instanceof TextNode) {
return new ParameterizedResourceConfig(((TextNode) node).textValue()); return new ParameterizedResourceConfig(((TextNode) node).textValue());
} else { } else {
String resource = (node.get("resource") != null) ? node.get("resource").asText() : null; JsonNode resourceNode = node.get("resource");
Map<String, Object> parameters = (node.get("parameters") != null) ? String resource = (resourceNode != null) ? resourceNode.asText() : null;
node.get("parameters").traverse().readValueAs(Map.class) :
null; Map<String, Object> parameters = null;
JsonNode parametersNode = node.get("parameters");
if (parametersNode != null && parametersNode.isObject()) {
parameters = readMap((ObjectNode) parametersNode);
}
return new ParameterizedResourceConfig(resource, parameters); return new ParameterizedResourceConfig(resource, parameters);
} }
} }
Map<String, Object> readMap(ObjectNode node) {
Map<String, Object> jsonObject = new LinkedHashMap<>();
Iterator<Map.Entry<String, JsonNode>> keyValIter = node.fields();
while (keyValIter.hasNext()) {
Map.Entry<String, JsonNode> keyVal = keyValIter.next();
jsonObject.put(keyVal.getKey(), readItem(keyVal.getValue()));
}
return jsonObject;
}
List<Object> readList(ArrayNode node) {
List<Object> objArr = new ArrayList<>();
for (JsonNode childNode : node) {
objArr.add(readItem(childNode));
}
return objArr;
}
Object readJsonPrimitive(ValueNode vNode) {
if (vNode.isTextual()) {
return vNode.asText();
} else if (vNode.isBoolean()) {
return vNode.asBoolean();
} else if (vNode.isLong()) {
return vNode.asLong();
} else if (vNode.isInt()) {
return vNode.asInt();
} else if (vNode.isDouble()) {
return vNode.asDouble();
}
return null;
}
Object readItem(JsonNode node) {
if (node == null) {
return null;
}
if (node.isObject()) {
return readMap((ObjectNode) node);
} else if (node.isArray()) {
return readList((ArrayNode) node);
} else if (node.isValueNode()) {
return readJsonPrimitive((ValueNode) node);
}
return null;
}
} }
private final String resource; private final String resource;
......
file.reference.annotations-12.0.jar=release\\modules\\ext\\annotations-12.0.jar file.reference.annotations-12.0.jar=release\\modules\\ext\\annotations-12.0.jar
file.reference.commons-beanutils-1.9.2.jar=release\\modules\\ext\\commons-beanutils-1.9.2.jar file.reference.commons-beanutils-1.9.2.jar=release\\modules\\ext\\commons-beanutils-1.9.2.jar
file.reference.commons-collections-3.2.2.jar=release\\modules\\ext\\commons-collections-3.2.2.jar
file.reference.commons-digester-1.8.1.jar=release\\modules\\ext\\commons-digester-1.8.1.jar file.reference.commons-digester-1.8.1.jar=release\\modules\\ext\\commons-digester-1.8.1.jar
file.reference.commons-logging-1.2.jar=release\\modules\\ext\\commons-logging-1.2.jar file.reference.commons-logging-1.2.jar=release\\modules\\ext\\commons-logging-1.2.jar
file.reference.commons-validator-1.5.1.jar=release\\modules\\ext\\commons-validator-1.5.1.jar file.reference.commons-validator-1.5.1.jar=release\\modules\\ext\\commons-validator-1.5.1.jar
......
...@@ -290,10 +290,6 @@ ...@@ -290,10 +290,6 @@
<runtime-relative-path>ext/annotations-12.0.jar</runtime-relative-path> <runtime-relative-path>ext/annotations-12.0.jar</runtime-relative-path>
<binary-origin>release\modules\ext\annotations-12.0.jar</binary-origin> <binary-origin>release\modules\ext\annotations-12.0.jar</binary-origin>
</class-path-extension> </class-path-extension>
<class-path-extension>
<runtime-relative-path>ext/commons-collections-3.2.2.jar</runtime-relative-path>
<binary-origin>release\modules\ext\commons-collections-3.2.2.jar</binary-origin>
</class-path-extension>
<class-path-extension> <class-path-extension>
<runtime-relative-path>ext/noggit-0.5.jar</runtime-relative-path> <runtime-relative-path>ext/noggit-0.5.jar</runtime-relative-path>
<binary-origin>release\modules\ext\noggit-0.5.jar</binary-origin> <binary-origin>release\modules\ext\noggit-0.5.jar</binary-origin>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment