Author: [log in to unmask] Date: Wed Oct 21 17:03:42 2015 New Revision: 3870 Log: [HPSJAVA-624] Import currently used test data into SVN and provide a simple utility for accessing it as a classpath resource. Added: data/trunk/test-data/ data/trunk/test-data/pom.xml data/trunk/test-data/src/ data/trunk/test-data/src/assembly/ data/trunk/test-data/src/assembly/archive.xml data/trunk/test-data/src/main/ data/trunk/test-data/src/main/java/ data/trunk/test-data/src/main/java/org/ data/trunk/test-data/src/main/java/org/hps/ data/trunk/test-data/src/main/java/org/hps/data/ data/trunk/test-data/src/main/java/org/hps/data/test/ data/trunk/test-data/src/main/java/org/hps/data/test/TestDataUtility.java data/trunk/test-data/src/main/resources/ data/trunk/test-data/src/main/resources/org/ data/trunk/test-data/src/main/resources/org/hps/ data/trunk/test-data/src/main/resources/org/hps/data/ data/trunk/test-data/src/main/resources/org/hps/data/test/ data/trunk/test-data/src/main/resources/org/hps/data/test/ConditionsTest.slcio (with props) data/trunk/test-data/src/main/resources/org/hps/data/test/DataQualityMonitorTest.slcio (with props) data/trunk/test-data/src/main/resources/org/hps/data/test/MockDataReconTest.slcio (with props) data/trunk/test-data/src/main/resources/org/hps/data/test/ReadoutNoPileupTest.slcio (with props) data/trunk/test-data/src/main/resources/org/hps/data/test/ReadoutToLcioTest.slcio (with props) data/trunk/test-data/src/main/resources/org/hps/data/test/e-_1.056GeV_SLIC-v05-00-00_Geant4-v10-01-02_QGSP_BERT_HPS-EngRun2015-Nominal-v3.slcio (with props) data/trunk/test-data/src/main/resources/org/hps/data/test/hps1351_test.evio (with props) data/trunk/test-data/src/main/resources/org/hps/data/test/run5772_integrationTest.evio (with props) data/trunk/test-data/src/main/resources/org/hps/data/test/run5772_pass1_stripOneFee_5000Events.evio (with props) data/trunk/test-data/src/main/resources/org/hps/data/test/svt_evio_reader_test.evio (with props) data/trunk/test-data/src/main/resources/org/hps/data/test/tritrigv1-egsv3-triv2-g4v1_s2d6_HPS-EngRun2015-Nominal-v3_3.4.0_pairs1_1.slcio (with props) Added: data/trunk/test-data/pom.xml ============================================================================= --- data/trunk/test-data/pom.xml (added) +++ data/trunk/test-data/pom.xml Wed Oct 21 17:03:42 2015 @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <artifactId>hps-test-data</artifactId> + <version>1.0.0-SNAPSHOT</version> + <name>test-data</name> + <description>test data</description> + <parent> + <groupId>org.hps</groupId> + <artifactId>hps-parent</artifactId> + <version>3.4.1</version> + </parent> + <scm> + <url>http://java.freehep.org/svn/repos/hps/list/data/test-data/</url> + <connection>scm:svn:svn://svn.freehep.org/hps/data/test-data/</connection> + <developerConnection>scm:svn:svn://svn.freehep.org/hps/data/test-data/</developerConnection> + </scm> + <build> + <resources> + <resource> + <directory>src/main/resources</directory> + <excludes> + <exclude>**/*.slcio</exclude> + <exclude>**/*.evio</exclude> + </excludes> + </resource> + </resources> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <version>2.5.3</version> + <configuration> + <descriptor>src/assembly/archive.xml</descriptor> + </configuration> + <executions> + <execution> + <id>create-archive</id> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> Added: data/trunk/test-data/src/assembly/archive.xml ============================================================================= --- data/trunk/test-data/src/assembly/archive.xml (added) +++ data/trunk/test-data/src/assembly/archive.xml Wed Oct 21 17:03:42 2015 @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> + <id>archive</id> + <formats> + <format>jar</format> + </formats> + <includeBaseDirectory>false</includeBaseDirectory> + <fileSets> + <fileSet> + <directory>${project.basedir}/src/main/resources/org/hps/data/test</directory> + <outputDirectory>org/hps/data/test</outputDirectory> + <includes> + <include>*.slcio</include> + <include>*.evio</include> + </includes> + </fileSet> + </fileSets> +</assembly> Added: data/trunk/test-data/src/main/java/org/hps/data/test/TestDataUtility.java ============================================================================= --- data/trunk/test-data/src/main/java/org/hps/data/test/TestDataUtility.java (added) +++ data/trunk/test-data/src/main/java/org/hps/data/test/TestDataUtility.java Wed Oct 21 17:03:42 2015 @@ -0,0 +1,108 @@ +package org.hps.data.test; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.logging.Logger; + +/** + * Extracts test data from a classpath resource to a specified cache directory. + * + * @author Jeremy McCormick, SLAC + */ +public final class TestDataUtility { + + /** + * The target directory where data files will be extracted. + */ + private File cacheDir = null; + + /** + * The resource directory where test data is available. + */ + private static String TEST_DATA_RESOURCE_DIR = "/" + TestDataUtility.class.getPackage().getName().replace(".", "/"); + + /** + * Default cache dir which is within the target directory of the current Maven project. + */ + private static String DEFAULT_CACHE_DIR = "target/test-data"; + + /** + * Package logger. + */ + private static final Logger LOGGER = Logger.getLogger(TestDataUtility.class.getPackage().getName()); + + /** + * Class constructor. + * @param cacheDir the directory where test data files will be extracted + */ + public TestDataUtility(String cacheDir) { + if (cacheDir != null) { + this.cacheDir = new File(cacheDir); + } else { + this.cacheDir = new File(DEFAULT_CACHE_DIR); + } + if (!this.cacheDir.exists()) { + if (!this.cacheDir.mkdirs()) { + throw new RuntimeException("Failed to create cache dir."); + } + } + LOGGER.config("initialized with cache dir " + this.cacheDir.getPath()); + } + + /** + * Class constructor using default cache dir location. + */ + public TestDataUtility() { + this(null); + } + + /** + * Get test data from a classpath resource and extract it to the local cache directory. + * @param fileName name of the resource relative to {@link TEST_DATA_RESOURCE_DIR} + * @return the test data file + */ + public File getTestData(String fileName) { + LOGGER.info("getting test data file " + fileName + " ..."); + InputStream inputStream = null; + OutputStream outputStream = null; + File testDataFile = null; + try { + testDataFile = new File(cacheDir.getCanonicalPath() + File.separator + fileName); + String resource = TEST_DATA_RESOURCE_DIR + "/" + fileName; + LOGGER.info("looking for resource at " + resource + " ..."); + inputStream = TestDataUtility.class.getResourceAsStream(TEST_DATA_RESOURCE_DIR + "/" + fileName); + if (inputStream == null) { + throw new IllegalArgumentException("The resource " + resource + " was not found."); + } + LOGGER.info("extracting file from archive ..."); + outputStream = new FileOutputStream(testDataFile); + int read = 0; + byte[] bytes = new byte[1024]; + while ((read = inputStream.read(bytes)) != -1) { + outputStream.write(bytes, 0, read); + } + } catch (IOException e) { + + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (outputStream != null) { + try { + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + LOGGER.info("extracted test data file to " + testDataFile.getPath()); + return testDataFile; + } +} Added: data/trunk/test-data/src/main/resources/org/hps/data/test/ConditionsTest.slcio ============================================================================= Binary file - no diff available. Added: data/trunk/test-data/src/main/resources/org/hps/data/test/DataQualityMonitorTest.slcio ============================================================================= Binary file - no diff available. Added: data/trunk/test-data/src/main/resources/org/hps/data/test/MockDataReconTest.slcio ============================================================================= Binary file - no diff available. Added: data/trunk/test-data/src/main/resources/org/hps/data/test/ReadoutNoPileupTest.slcio ============================================================================= Binary file - no diff available. Added: data/trunk/test-data/src/main/resources/org/hps/data/test/ReadoutToLcioTest.slcio ============================================================================= Binary file - no diff available. Added: data/trunk/test-data/src/main/resources/org/hps/data/test/e-_1.056GeV_SLIC-v05-00-00_Geant4-v10-01-02_QGSP_BERT_HPS-EngRun2015-Nominal-v3.slcio ============================================================================= Binary file - no diff available. Added: data/trunk/test-data/src/main/resources/org/hps/data/test/hps1351_test.evio ============================================================================= Binary file - no diff available. Added: data/trunk/test-data/src/main/resources/org/hps/data/test/run5772_integrationTest.evio ============================================================================= Binary file - no diff available. Added: data/trunk/test-data/src/main/resources/org/hps/data/test/run5772_pass1_stripOneFee_5000Events.evio ============================================================================= Binary file - no diff available. Added: data/trunk/test-data/src/main/resources/org/hps/data/test/svt_evio_reader_test.evio ============================================================================= Binary file - no diff available. Added: data/trunk/test-data/src/main/resources/org/hps/data/test/tritrigv1-egsv3-triv2-g4v1_s2d6_HPS-EngRun2015-Nominal-v3_3.4.0_pairs1_1.slcio ============================================================================= Binary file - no diff available.