Author: [log in to unmask] Date: Thu Jan 1 23:06:31 2015 New Revision: 1819 Log: Add test of ECAL bad channel info. Added: java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtBadChannelsTest.java Added: java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtBadChannelsTest.java ============================================================================= --- java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtBadChannelsTest.java (added) +++ java/trunk/conditions/src/test/java/org/hps/conditions/svt/TestRunSvtBadChannelsTest.java Thu Jan 1 23:06:31 2015 @@ -0,0 +1,96 @@ +package org.hps.conditions.svt; + +import java.util.logging.Level; + +import junit.framework.TestCase; + +import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.ConditionsSeries; +import org.hps.conditions.database.DatabaseConditionsManager; +import org.hps.conditions.svt.SvtBadChannel.SvtBadChannelCollection; +import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException; + +/** + * This test reads Test Run bad channel collections from the database + * using a conditions series and checks that the correct number + * of channels are flagged using several different runs. + * + * @author Jeremy McCormick <[log in to unmask]> + */ +public class TestRunSvtBadChannelsTest extends TestCase { + + static String detectorName = "HPS-TestRun-v5"; + + /* + mysql> select run_start, run_end, name from conditions where table_name like 'test_run_svt_bad_channels'; + +-----------+---------+---------------------------+ + | run_start | run_end | name | + +-----------+---------+---------------------------+ + | 0 | 1365 | test_run_svt_bad_channels | + | 1351 | 1351 | test_run_svt_bad_channels | + | 1353 | 1353 | test_run_svt_bad_channels | + | 1354 | 1354 | test_run_svt_bad_channels | + | 1358 | 1358 | test_run_svt_bad_channels | + | 1359 | 1359 | test_run_svt_bad_channels | + | 1360 | 1360 | test_run_svt_bad_channels | + +-----------+---------+---------------------------+ + */ + static int[] runNumbers = new int[] {0, 1351, 1353, 1354, 1358, 1359, 1360}; + + /* + mysql> select collection_id, count(*) from test_run_svt_bad_channels group by collection_id; + +---------------+----------+ + | collection_id | count(*) | + +---------------+----------+ + | 1 | 50 | + | 2 | 392 | + | 3 | 427 | + | 4 | 457 | + | 5 | 298 | + | 6 | 424 | + | 7 | 424 | + +---------------+----------+ + */ + static int[] badChannelCount = {50, 392, 427, 457, 298, 424, 424}; + + public void testSvtBadChannels() throws ConditionsNotFoundException { + + DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance(); + conditionsManager.setXmlConfig("/org/hps/conditions/config/conditions_database_testrun_2012.xml"); + conditionsManager.setLogLevel(Level.WARNING); + + for (int i = 0; i < runNumbers.length; i++) { + + int runNumber = runNumbers[i]; + + System.out.println("-------------"); + System.out.println("Run #" + runNumber); + System.out.println("-------------"); + System.out.println(); + + conditionsManager.setDetector(detectorName, runNumber); + + ConditionsSeries<SvtBadChannel, SvtBadChannelCollection> series = + conditionsManager.getConditionsSeries(SvtBadChannelCollection.class, "test_run_svt_bad_channels"); + + int totalBadChannels = 0; + for (ConditionsObjectCollection<SvtBadChannel> collection : series) { + //System.out.println(collection.getConditionsRecord()); + totalBadChannels += collection.size(); + } + System.out.println("found " + totalBadChannels + " total bad chanenls"); + + // The run 0 channels are for all runs. + int expectedBadChannels = badChannelCount[0]; + if (runNumber != 0) { + // Add bad channels from individual runs. + expectedBadChannels += badChannelCount[i]; + } + System.out.println("expected " + expectedBadChannels + " bad channels"); + + assertEquals("Wrong number of bad channels for run #" + runNumber, expectedBadChannels, totalBadChannels); + + System.out.println(); + } + } +}