Print

Print


Author: [log in to unmask]
Date: Mon Nov  2 05:55:03 2015
New Revision: 3916

Log:
Use test data jar instead of file cache in integration tests.

Added:
    java/trunk/integration-tests/src/test/java/org/hps/test/it/MCReconNoReadoutTest.java
    java/trunk/integration-tests/src/test/java/org/hps/test/it/MCReconSteeringTest.java
    java/trunk/integration-tests/src/test/java/org/hps/test/it/ReconSteeringTest.java
Modified:
    java/trunk/integration-tests/   (props changed)
    java/trunk/integration-tests/pom.xml
    java/trunk/integration-tests/src/test/java/org/hps/test/it/EngRun2015ReconTest.java
    java/trunk/integration-tests/src/test/java/org/hps/test/it/EvioToLcioTest.java
    java/trunk/integration-tests/src/test/java/org/hps/test/it/ReadoutNoPileupTest.java
    java/trunk/integration-tests/src/test/java/org/hps/test/it/ReadoutToLcioTest.java
    java/trunk/integration-tests/src/test/java/org/hps/test/it/SimpleSvtReadoutTest.java

Modified: java/trunk/integration-tests/pom.xml
 =============================================================================
--- java/trunk/integration-tests/pom.xml	(original)
+++ java/trunk/integration-tests/pom.xml	Mon Nov  2 05:55:03 2015
@@ -20,6 +20,21 @@
             <artifactId>hps-distribution</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.hps</groupId>
+            <artifactId>hps-test-data</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+            <scope>test</scope>
+            <classifier>archive</classifier>
+            <type>jar</type>
+        </dependency>
+        <dependency>
+            <groupId>org.hps</groupId>
+            <artifactId>hps-test-data</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+            <scope>test</scope>
+            <type>jar</type>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
@@ -27,13 +42,28 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>                                 
                 <configuration>
-                    <forkCount>1</forkCount>
-                    <reuseForks>false</reuseForks>
-                    <trimStackTrace>false</trimStackTrace>
-                    <excludes>
-                        <exclude>org/hps/test/it/DataQualityMonitorTest.java</exclude>
-                    </excludes>
+                    <skipTests>true</skipTests>
                 </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <version>2.19</version>
+                <configuration>
+                    <argLine>-server -Xmx2g -XX:MaxPermSize=512m -Djava.util.logging.config.class=org.hps.logging.config.TestLoggingConfig</argLine>
+                    <forkMode>always</forkMode>
+                    <includes>
+                        <include>org/hps/test/it/*Test.java</include>
+                    </includes>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
             </plugin>
         </plugins>
     </build>

Modified: java/trunk/integration-tests/src/test/java/org/hps/test/it/EngRun2015ReconTest.java
 =============================================================================
--- java/trunk/integration-tests/src/test/java/org/hps/test/it/EngRun2015ReconTest.java	(original)
+++ java/trunk/integration-tests/src/test/java/org/hps/test/it/EngRun2015ReconTest.java	Mon Nov  2 05:55:03 2015
@@ -2,44 +2,33 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.net.URL;
 import java.util.List;
 
 import junit.framework.TestCase;
-import static junit.framework.TestCase.assertEquals;
-import static junit.framework.TestCase.assertTrue;
 
+import org.hps.data.test.TestDataUtility;
 import org.hps.evio.EvioToLcio;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.ReconstructedParticle;
 import org.lcsim.util.Driver;
-import org.lcsim.util.cache.FileCache;
 import org.lcsim.util.loop.LCSimLoop;
 import org.lcsim.util.test.TestUtil.TestOutputFile;
 
 /**
- * Test to run the standard reconstruction on Engineering Run 2015 EVIO data.
- * Full energy electron candidate events were selected from pass1 output. The
- * current test runs the default reconstruction over the evio file then analyzes
- * the output lcio file. The current checks are minimal and need to be improved.
+ * Test to run the standard reconstruction on Engineering Run 2015 EVIO data. Full energy electron candidate events were
+ * selected from pass1 output. The current test runs the default reconstruction over the evio file then analyzes the
+ * output lcio file. The current checks are minimal and need to be improved.
  *
  * @author Norman A Graf
  */
-public class EngRun2015ReconTest extends TestCase
-{
-
-    final static String fileLocation = "http://www.lcsim.org/test/hps-java/run5772_integrationTest.evio";
-//final static String fileLocation = "http://www.lcsim.org/test/hps-java/run5772_pass1_stripOneFee_5000Events.evio";
-
-    public void testEngRun2015Recon() throws Exception
-    {
-        System.out.println("Caching file...");
-        FileCache cache = new FileCache();
-        File inputFile = cache.getCachedFile(new URL(fileLocation));
+public class EngRun2015ReconTest extends TestCase {
+  
+    public void testEngRun2015Recon() throws Exception {
+        File inputFile = new TestDataUtility().getTestData("run5772_integrationTest.evio");        
         File outputFile = new TestOutputFile("EngRun2015ReconTest");
         String args[] = {"-r", "-x", "/org/hps/steering/recon/EngineeringRun2015FullRecon_Pass2.lcsim", "-d",
-            "HPS-EngRun2015-Nominal-v2", "-D", "outputFile=" + outputFile.getPath(), inputFile.getPath(), "-n",
-            "1000"};
+                "HPS-EngRun2015-Nominal-v2", "-D", "outputFile=" + outputFile.getPath(), "-n", "1000",
+                inputFile.getPath()};
         System.out.println("Running EngRun2015ReconTest.main ...");
         System.out.println("writing to: " + outputFile.getPath());
         long startTime = System.currentTimeMillis();
@@ -60,14 +49,12 @@
         System.out.println("Done!");
     }
 
-    static class ReconCheckDriver extends Driver
-    {
+    static class ReconCheckDriver extends Driver {
 
         int nFail;
         int nProcessed;
 
-        public void process(EventHeader event)
-        {
+        public void process(EventHeader event) {
             boolean fail = false;
             List<ReconstructedParticle> rps = event.get(ReconstructedParticle.class, "FinalStateParticles");
             int nrp = rps.size();
@@ -108,8 +95,7 @@
             // TODO add checks on quality of output (chi2, p, E, E/p matching, position matching, etc.)
         }
 
-        public void endOfData()
-        {
+        public void endOfData() {
             System.out.println(nFail + " of " + nProcessed + " events failed");
             assertEquals("Expected no events to fail", nFail, 0);
         }

Modified: java/trunk/integration-tests/src/test/java/org/hps/test/it/EvioToLcioTest.java
 =============================================================================
--- java/trunk/integration-tests/src/test/java/org/hps/test/it/EvioToLcioTest.java	(original)
+++ java/trunk/integration-tests/src/test/java/org/hps/test/it/EvioToLcioTest.java	Mon Nov  2 05:55:03 2015
@@ -152,7 +152,7 @@
     /**
      * The default input file (large file at SLAC so the pom.xml file excludes this test on non-SLAC hosts).
      */
-    private static final String INPUT_FILE = "/nfs/slac/g/hps3/data/engrun/evio/hps_005772.evio.0";
+    private static final String INPUT_FILE = "/nfs/slac/g/hps3/data/engrun2015/evio/hps_005772.evio.0";
 
     /**
      * The number of events that should be processed.
@@ -175,8 +175,8 @@
         final TestOutputFile outputFile = new TestOutputFile(EvioToLcioTest.class, "hps_005772.slcio");
 
         // Run the command line utility.
-        final String[] args = new String[] {"-l", outputFile.getPath(), "-d", "HPS-EngRun2015-Nominal-v1", INPUT_FILE,
-                "-r", "-x", "/org/hps/steering/EventMarker.lcsim"};
+        final String[] args = new String[] {"-l", outputFile.getPath(), "-d", "HPS-EngRun2015-Nominal-v1", "-r", "-x", 
+                "/org/hps/steering/EventMarker.lcsim", INPUT_FILE};
         System.out.println("Running EvioToLcio on " + INPUT_FILE);
         Logger.getLogger("org.hps.evio").setLevel(Level.WARNING);
         System.out.println("org.hps.evio logging level is " + Logger.getLogger("org.hps.evio").getLevel());

Added: java/trunk/integration-tests/src/test/java/org/hps/test/it/MCReconNoReadoutTest.java
 =============================================================================
--- java/trunk/integration-tests/src/test/java/org/hps/test/it/MCReconNoReadoutTest.java	(added)
+++ java/trunk/integration-tests/src/test/java/org/hps/test/it/MCReconNoReadoutTest.java	Mon Nov  2 05:55:03 2015
@@ -0,0 +1,43 @@
+package org.hps.test.it;
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+import org.hps.data.test.TestDataUtility;
+import org.hps.job.JobManager;
+import org.lcsim.util.test.TestUtil.TestOutputFile;
+
+/**
+ * Test MC recon steering file without readout simulation.
+ * 
+ * @author Jeremy McCormick, SLAC
+ */
+public class MCReconNoReadoutTest extends TestCase {
+    
+    /**
+     * List of steering files to run.
+     */
+    static String[] STEERING_FILES = {
+        "/org/hps/steering/readout/HPSReconNoReadout.lcsim"
+    };
+    
+    /**
+     * Test recon steering files.
+     * @throws Exception if any error occurs running the recon job
+     */
+    public void testSteeringFiles() throws Exception {
+        
+        File inputFile = new TestDataUtility().getTestData("e-_1.056GeV_SLIC-v05-00-00_Geant4-v10-01-02_QGSP_BERT_HPS-EngRun2015-Nominal-v3.slcio");
+        
+        for (String steeringFile : STEERING_FILES) {
+            System.out.println("running steering file " + steeringFile);            
+            File outputFile = new TestOutputFile(new File(steeringFile).getName().replace(".lcsim", ""));
+            JobManager job = new JobManager();
+            job.addVariableDefinition("outputFile", outputFile.getPath());
+            job.addInputFile(inputFile);
+            job.setup(steeringFile);
+            job.run();
+        }
+    }        
+}

Added: java/trunk/integration-tests/src/test/java/org/hps/test/it/MCReconSteeringTest.java
 =============================================================================
--- java/trunk/integration-tests/src/test/java/org/hps/test/it/MCReconSteeringTest.java	(added)
+++ java/trunk/integration-tests/src/test/java/org/hps/test/it/MCReconSteeringTest.java	Mon Nov  2 05:55:03 2015
@@ -0,0 +1,61 @@
+package org.hps.test.it;
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+import org.hps.data.test.TestDataUtility;
+import org.hps.job.JobManager;
+import org.lcsim.util.test.TestUtil.TestOutputFile;
+
+/**
+ * Test that production MC recon steering files are not broken.
+ * 
+ * @author Jeremy McCormick, SLAC
+ */
+public class MCReconSteeringTest extends TestCase {
+    
+    /**
+     * List of steering files to run.
+     */
+    static String[] STEERING_FILES = {        
+        "EngineeringRun2015FullReconMC_Pass2.lcsim",
+        "EngineeringRun2015FullReconMC.lcsim"
+    };
+            
+    /**
+     * Test recon steering files.
+     * @throws Exception if any error occurs running the recon job
+     */
+    public void testSteeringFiles() {
+        
+        File inputFile = new TestDataUtility().getTestData("tritrigv1-egsv3-triv2-g4v1_s2d6_HPS-EngRun2015-Nominal-v3_3.4.0_pairs1_1.slcio");
+        
+        for (String steeringFile : STEERING_FILES) {
+            System.out.println("Running steering file " + steeringFile + " ...");
+            boolean failed = false;
+            try {                
+                testSteering("/org/hps/steering/recon/" + steeringFile, inputFile);
+                System.out.println("Job with steering " + steeringFile + " ran okay!");
+            } catch (Exception e) { 
+                System.out.println("caught exception: " + e.getMessage());
+                e.printStackTrace();
+                System.out.println("Job with steering " + steeringFile + " failed!");
+                failed = true;
+            }
+            System.out.println(steeringFile + " failed: " + failed);
+        }
+    }
+    
+    private void testSteering(String steeringFile, File inputFile) {
+        File outputFile = new TestOutputFile(new File(steeringFile).getName().replace(".lcsim", ""));
+        JobManager job = new JobManager();
+        job.addVariableDefinition("outputFile", outputFile.getPath());
+        job.addVariableDefinition("detector", "HPS-EngRun2015-Nominal-v3");
+        job.addVariableDefinition("run", "5772");
+        job.addInputFile(inputFile);
+        job.setup(steeringFile);
+        job.run();
+        System.out.println("Job " + steeringFile + " processed " + job.getLCSimLoop().getTotalCountableConsumed() + " events.");
+    }
+}

Modified: java/trunk/integration-tests/src/test/java/org/hps/test/it/ReadoutNoPileupTest.java
 =============================================================================
--- java/trunk/integration-tests/src/test/java/org/hps/test/it/ReadoutNoPileupTest.java	(original)
+++ java/trunk/integration-tests/src/test/java/org/hps/test/it/ReadoutNoPileupTest.java	Mon Nov  2 05:55:03 2015
@@ -5,6 +5,7 @@
 
 import junit.framework.TestCase;
 
+import org.hps.data.test.TestDataUtility;
 import org.hps.job.JobManager;
 import org.lcsim.util.cache.FileCache;
 import org.lcsim.util.test.TestUtil.TestOutputFile;
@@ -29,11 +30,8 @@
     static final int nEvents = 100;
     
     public void testReadoutNoPileup() throws Exception {
-        new TestOutputFile(this.getClass().getSimpleName()).mkdir();
-        
-        FileCache cache = new FileCache();
-        File inputFile = cache.getCachedFile(new URL("http://www.lcsim.org/test/hps-java/ReadoutNoPileupTest.slcio"));
-        
+        new TestOutputFile(this.getClass().getSimpleName()).mkdir();        
+        File inputFile = new TestDataUtility().getTestData("ReadoutNoPileupTest.slcio");
         JobManager job = new JobManager();
         job.addInputFile(inputFile);
         job.addVariableDefinition("detector", "HPS-Proposal2014-v8-2pt2");

Modified: java/trunk/integration-tests/src/test/java/org/hps/test/it/ReadoutToLcioTest.java
 =============================================================================
--- java/trunk/integration-tests/src/test/java/org/hps/test/it/ReadoutToLcioTest.java	(original)
+++ java/trunk/integration-tests/src/test/java/org/hps/test/it/ReadoutToLcioTest.java	Mon Nov  2 05:55:03 2015
@@ -1,12 +1,11 @@
 package org.hps.test.it;
 
 import java.io.File;
-import java.net.URL;
 
 import junit.framework.TestCase;
 
+import org.hps.data.test.TestDataUtility;
 import org.hps.job.JobManager;
-import org.lcsim.util.cache.FileCache;
 import org.lcsim.util.test.TestUtil.TestOutputFile;
 
 /**
@@ -27,11 +26,9 @@
     
     public void testReadoutToLcio() throws Exception {
         
-        new TestOutputFile(this.getClass().getSimpleName()).mkdir();
-        
-        FileCache cache = new FileCache();
-        File inputFile = cache.getCachedFile(new URL("http://www.lcsim.org/test/hps-java/ReadoutToLcioTest.slcio"));
-        
+        new TestOutputFile(this.getClass().getSimpleName()).mkdir();        
+        File inputFile = new TestDataUtility().getTestData("ReadoutToLcioTest.slcio");
+                
         JobManager job = new JobManager();
         job.addVariableDefinition("detector", "HPS-Proposal2014-v8-2pt2");
         job.addVariableDefinition("run", "0");

Added: java/trunk/integration-tests/src/test/java/org/hps/test/it/ReconSteeringTest.java
 =============================================================================
--- java/trunk/integration-tests/src/test/java/org/hps/test/it/ReconSteeringTest.java	(added)
+++ java/trunk/integration-tests/src/test/java/org/hps/test/it/ReconSteeringTest.java	Mon Nov  2 05:55:03 2015
@@ -0,0 +1,100 @@
+package org.hps.test.it;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.hps.data.test.TestDataUtility;
+import org.hps.job.JobManager;
+import org.lcsim.util.cache.FileCache;
+import org.lcsim.util.test.TestUtil.TestOutputFile;
+
+/**
+ * Test that production MC recon steering files are not broken by running an LCSim job on them
+ * using an LCIO file.
+ * 
+ * @author Jeremy McCormick, SLAC
+ */
+public class ReconSteeringTest extends TestCase {
+    
+    /**
+     * List of steering files to run.
+     */
+    final static String[] STEERING_FILES = {
+        "EngineeringRun2014EcalRecon_Pass1.lcsim",
+        "EngineeringRun2014EcalRecon.lcsim",
+        "EngineeringRun2015EcalRecon.lcsim",
+        "EngineeringRun2015FullRecon.lcsim",
+        "EngineeringRun2015FullRecon_Pass2.lcsim",
+        "EngineeringRun2015HitRecon.lcsim",
+        "HPSTrackingDefaultsRecon.lcsim"
+    };
+            
+    /**
+     * Test recon steering files.
+     * @throws Exception if any error occurs running the recon job
+     */
+    public void testSteeringFiles() {
+        
+        File inputFile = new TestDataUtility().getTestData("tritrigv1-egsv3-triv2-g4v1_s2d6_HPS-EngRun2015-Nominal-v3_3.4.0_pairs1_1.slcio");
+        
+        for (String steeringFile : STEERING_FILES) {
+            
+            // Run the reconstruction steering file.
+            File outputFile = null;
+            try {
+                outputFile = new TestOutputFile(new File(steeringFile).getName().replace(".lcsim", ""));
+                runSteering("/org/hps/steering/recon/" + steeringFile, inputFile, outputFile);
+            } catch (Throwable e) {
+                System.err.println("Job with steering " + steeringFile + " failed!");
+                throw new RuntimeException("Recon job failed.", e);
+            }
+            
+            Runtime runtime = Runtime.getRuntime();
+            
+            int mb = 1024 * 1024;
+            
+            System.out.println("total memory: " + runtime.totalMemory() / mb);
+            System.out.println("free memory: " + runtime.freeMemory() / mb);
+            System.out.println("max memory: " + runtime.maxMemory() / mb);
+            System.out.println("used memory: " + (runtime.totalMemory() - runtime.freeMemory()) / mb);
+            
+            System.gc();
+            
+            // Create DQM output for QA.
+            try {
+                runDQM(outputFile);
+            } catch (Throwable e) {
+                throw new RuntimeException("The DQM job failed.", e);
+            }
+        }
+    }
+       
+    private void runSteering(String steeringFile, File inputFile, File outputFile) {
+        System.out.println("Testing steering file " + steeringFile + " ...");
+        JobManager job = new JobManager();
+        job.addVariableDefinition("outputFile", outputFile.getPath());
+        job.addVariableDefinition("detector", "HPS-EngRun2015-Nominal-v3");
+        job.addVariableDefinition("run", "5772");
+        job.addVariableDefinition("isMC", "true");
+        job.addInputFile(inputFile);
+        job.setup(steeringFile);
+        job.run();
+        System.out.println("Job with steering " + steeringFile + " successfully processed " + job.getLCSimLoop().getTotalCountableConsumed() + " events.");
+    }
+    
+    private void runDQM(File outputFile) {
+        System.out.println("Running DQM on " + outputFile.getPath() + " ...");
+        JobManager job = new JobManager();
+        File inputFile = new File(outputFile.getPath() + ".slcio");
+        job.addInputFile(inputFile);
+        job.addVariableDefinition("outputFile", outputFile.getPath().replace(".slcio", ""));
+        job.setup("/org/hps/steering/production/DataQualityRecon.lcsim");
+        job.run();
+        System.out.println("DQM processed " + job.getLCSimLoop().getTotalCountableConsumed() + " events from " + outputFile + ".");
+    }
+}
+
+

Modified: java/trunk/integration-tests/src/test/java/org/hps/test/it/SimpleSvtReadoutTest.java
 =============================================================================
--- java/trunk/integration-tests/src/test/java/org/hps/test/it/SimpleSvtReadoutTest.java	(original)
+++ java/trunk/integration-tests/src/test/java/org/hps/test/it/SimpleSvtReadoutTest.java	Mon Nov  2 05:55:03 2015
@@ -6,6 +6,7 @@
 
 import junit.framework.TestCase;
 
+import org.hps.data.test.TestDataUtility;
 import org.hps.job.JobManager;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
@@ -20,8 +21,7 @@
  *
  */
 public class SimpleSvtReadoutTest extends TestCase {
-
-    static final String fileUrl = "http://www.lcsim.org/test/hps-java/ReadoutToLcioTest.slcio";
+   
     static final File outputDir = new File("./target/test-output/" + SimpleSvtReadoutTest.class.getSimpleName());    
     static final File outputFile = new File(outputDir + File.separator + SimpleSvtReadoutTest.class.getSimpleName());
     
@@ -29,12 +29,9 @@
     static final String rawTrackerHitCollectionName = "SVTRawTrackerHits";
     
 	public void testSimpleSvtReadout() throws Exception { 
-		
-		this.printDebug("Retrieving test file from " + fileUrl);
-	
-        FileCache cache = new FileCache();
-        File inputFile = cache.getCachedFile(new URL(fileUrl));
-	        
+				
+		File inputFile = new TestDataUtility().getTestData("ReadoutToLcioTest.slcio");
+			        
         outputDir.mkdirs();
         if(!outputDir.exists()){ 
         	this.printDebug("Failed to create directory " + outputDir.getPath());