/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package test.endtoend; import java.io.FileOutputStream; import java.io.File; import java.net.URL; import java.util.LinkedHashMap; import java.util.Map; import java.util.Arrays; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeModel; import org.das2.client.DasServer; import org.das2.datum.DatumRange; import org.das2.datum.DatumRangeUtil; import org.das2.stream.StreamDescriptor; import org.das2.qds.MutablePropertyDataSet; import org.das2.qds.QDataSet; import org.das2.qds.ops.Ops; import static org.autoplot.ScriptContext.*; /** * Plasma Wave Group at Iowa, test Das2Server entries with "exampleRange". * @author jbf */ public class Test501 { private static final int READ_SIZE_LIMIT_DAYS = 400; // chris has /voyager2/pws/SpecAnalyzer-Distogram.dsdf which is about a year, intentionally. private static final int testid=501; static void flatten( TreeModel tm, String root, Object node, Listresult ) { for ( int i=0; i failures= new LinkedHashMap(); String[] serverSkip= new String[] { "http://www-pw.physics.uiowa.edu/das/das2Server 003,005,006,007,008,009" }; for ( int idsss= 0; idsss ids= new ArrayList(); flatten( tm, "", tm.getRoot(), ids ); List skip; if ( dss==dsss[0] ) { skip= new ArrayList( Arrays.asList( 3, 4, 5, 6, 7, 18 ) ); } else { skip= new ArrayList( ); } for ( String server: serverSkip ) { String[] ss= server.split(" ",2); String host= ss[0]; if ( dsss[idsss].toString().contains(host) ) { String[] sskip= ss[1].split(","); for ( String ssi : sskip ) { skip.add( Integer.parseInt(ssi) ); } } } int count=0; for ( String id: ids ) { if ( id.contains("/testing/") ) { System.err.println("skipping /testing/: "+id); continue; } if ( id.contains("/test/") ) { // Dan's server System.err.println("skipping /test/: "+id); continue; } //if ( id.contains("juno/waves") && id.contains("housekeeping.dsdf") && !id.contains("/juno/waves/flight/housekeeping.dsdf") ) { // skip.add(count); // count++; } System.err.println( "Skipping the tests: " + skip ); int iis= 0; // index of element from this server. // iid index within the test for ( String id: ids ) { int ipipe= id.indexOf('|'); if ( ipipe>-1 ) { id= id.substring(0,ipipe).trim(); } System.err.println( String.format( "==== test %03d of %d (%03d) ========================================================", iis, count, iid ) ); if ( id.contains("/testing/") ) { System.err.println( "ids containing /testing/ are automatically skipped: " + id ); iis++; continue; } if ( id.contains("/test/") ) { System.err.println( "ids containing /test/ are automatically skipped: " + id ); iis++; continue; } // if ( id.contains("juno/waves") && id.contains("housekeeping.dsdf") && !id.contains("/juno/waves/flight/housekeeping.dsdf") ) { // System.err.println( "Kludge for skipping Chris' Juno stuff: " + id ); // iis++; // continue; // } // if ( id.contains("juno/waves/em/svt") ) { // System.err.println( "Kludge for skipping Chris' Juno stuff (juno/waves/em/svt): " + id ); // iis++; // continue; // } // if ( id.contains("/van_allen_probes/") ) { // System.err.println( "Kludge for skipping Chris' Van Allen stuff " + id ); // iis++; // continue; // } if ( id.contains("freq/f_") ) { System.err.println( "Kludge for skipping Jeremy's FCE freq stuff, which is redundant and slow " + id ); iis++; continue; } if ( skip.contains(iis) ) { iis++; System.err.println( "test marked for skipping in Test501.java: " + id ); continue; } String uri= ""; try { System.err.println( String.format( "uri: vap+das2server:%s?dataset=%s", dss.getURL(), id ) ); StreamDescriptor dsdf= dss.getStreamDescriptor( dss.getURL(id) ); String exampleRange= (String) dsdf.getProperty("exampleRange"); // discovery properties have this, just make sure something comes back. if ( exampleRange==null ) { iis++; System.err.println( "test that should have had exampleRange did not: " + id ); continue; } int ic= exampleRange.indexOf('|'); if ( ic>-1 ) { exampleRange= exampleRange.substring(0,ic); } DatumRange tr= DatumRangeUtil.parseTimeRangeValid(exampleRange); if ( tr.width().gt( org.das2.datum.Units.days.createDatum(READ_SIZE_LIMIT_DAYS) ) ) { throw new IllegalArgumentException("exampleRange parameter is too large, limit is "+READ_SIZE_LIMIT_DAYS+" days"); } uri= "vap+das2server:"+dss.getURL() + "?dataset="+id + "&start_time="+tr.min() + "&end_time=" + tr.max(); System.err.println("uri: "+uri); do1( uri, iid, false ); String testRange= (String) dsdf.getProperty("testRange"); // this is a more thorough test, and should not change if ( testRange!=null ) { System.err.println("testRange parameter found: "+testRange); ic= testRange.indexOf('|'); if ( ic>-1 ) { testRange= testRange.substring(0,ic); } tr= DatumRangeUtil.parseTimeRangeValid(testRange); uri= "vap+das2server:"+dss.getURL() + "?dataset="+id + "&start_time="+tr.min() + "&end_time=" + tr.max(); System.err.println("id: "+id ); System.err.println("uri: "+uri); String result= do1( uri, iid, true ); // write a file that shows the mapping from hashcode to id. File f= new File( "map_"+result+"__"+iid ); FileOutputStream fi= new FileOutputStream(f); fi.write( uri.getBytes() ); fi.close(); } } catch ( Exception ex ) { ex.printStackTrace(); failures.put(iid,uri); } iis++; iid++; } } System.err.println("DONE..."); System.err.println("======= Report Summary ======="); if ( failures.size()>0 ) { System.err.println( String.format( "found %d failures:", failures.size() ) ); for ( int i: failures.keySet() ) { System.err.println( String.format( "(%03d): %s", i, failures.get(i) ) ); } System.exit(1); } else { System.err.println( "no failures, happy day."); System.exit(0); } } }