From: <mwl...@us...> - 2007-08-15 23:04:23
|
Revision: 474 http://cishell.svn.sourceforge.net/cishell/?rev=474&view=rev Author: mwlinnem Date: 2007-08-15 16:04:17 -0700 (Wed, 15 Aug 2007) Log Message: ----------- Reports no longer dumped into users home directory. Removed platform specific file separators. (Once again). Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/TestFileKeeper.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/AllConvsReportGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/AllTestsReportGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/readme/ReadMeReportGenerator.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java 2007-08-15 22:44:39 UTC (rev 473) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java 2007-08-15 23:04:17 UTC (rev 474) @@ -38,6 +38,10 @@ private TestRunner testRunner; public ConverterTester2(LogService log) { + + //TODO: Make this not a huge hack + new File(ReportGenerator.TEMP_DIR).mkdir(); + this.log = log; this.testFileKeeper = new TestFileKeeper(TestFileKeeper.DEFAULT_ROOT_DIR, log); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/TestFileKeeper.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/TestFileKeeper.java 2007-08-15 22:44:39 UTC (rev 473) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/TestFileKeeper.java 2007-08-15 23:04:17 UTC (rev 474) @@ -52,7 +52,7 @@ try { //open config file that maps formats to test file directories - String filePath = System.getProperty("user.home") + "/" + rootDir + String filePath = System.getProperty("user.home") + File.separator + rootDir + CONF_FILE_NAME; reader = new BufferedReader(new FileReader(filePath)); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/AllConvsReportGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/AllConvsReportGenerator.java 2007-08-15 22:44:39 UTC (rev 473) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/AllConvsReportGenerator.java 2007-08-15 23:04:17 UTC (rev 474) @@ -36,7 +36,6 @@ FileOutputStream reportOutStream = null; try { - new File(TEMP_DIR); File reportFile = new File(TEMP_DIR + TEMP_FILE_PATH); reportOutStream = new FileOutputStream(reportFile); PrintStream report = new PrintStream(reportOutStream); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/AllTestsReportGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/AllTestsReportGenerator.java 2007-08-15 22:44:39 UTC (rev 473) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/AllTestsReportGenerator.java 2007-08-15 23:04:17 UTC (rev 474) @@ -27,9 +27,6 @@ public AllTestsReportGenerator(LogService log) { this.log = log; this.testResultSubGen = new TestReportSubGenerator(); - - //TODO: Make this not a huge hack - new File(TEMP_DIR).mkdir(); } public void generateReport(AllTestsResult atr) { Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/readme/ReadMeReportGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/readme/ReadMeReportGenerator.java 2007-08-15 22:44:39 UTC (rev 473) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/readme/ReadMeReportGenerator.java 2007-08-15 23:04:17 UTC (rev 474) @@ -14,7 +14,7 @@ public void generateReport(AllTestsResult atr) { //TODO: TOTAL HACK, CHANCE AS SOON AS POSSIBLE - String readmePath = (System.getProperty("user.home") + "/" + + String readmePath = (System.getProperty("user.home") + File.separator + TestFileKeeper.DEFAULT_ROOT_DIR + "ReportREADME.txt"); System.out.println("ReadMe path is: " + readmePath); File readmeFile = new File(readmePath); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2007-08-16 22:13:39
|
Revision: 480 http://cishell.svn.sourceforge.net/cishell/?rev=480&view=rev Author: mwlinnem Date: 2007-08-16 15:13:37 -0700 (Thu, 16 Aug 2007) Log Message: ----------- Revised how Test Reports are named. Converter Reports now contain names of tests they are involved in. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/ConvReportSubGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/AllTestsReportGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java 2007-08-16 22:10:02 UTC (rev 479) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java 2007-08-16 22:13:37 UTC (rev 480) @@ -94,6 +94,8 @@ * and comparison converter path. */ + int numTestsSoFar = 0; + Iterator iter = fileFormats.iterator(); while(iter.hasNext()) { String fileFormat = (String) iter.next(); @@ -113,10 +115,12 @@ */ for (int kk = 0; kk < testConvs.length; kk++) { + numTestsSoFar++; ConverterPath testConv = testConvs[kk]; TestResult testResult = - runATest(testConv, compareConv, cContext, bContext); + runATest(testConv, compareConv, cContext, bContext, + numTestsSoFar); if (testResult != null) { testResults.add(testResult); @@ -130,7 +134,7 @@ private TestResult runATest(ConverterPath testConvs, ConverterPath compareConvs, CIShellContext cContext, - BundleContext bContext) { + BundleContext bContext, int numTestsSoFar) { //get test file data corresponding to the format these converters accept. @@ -154,7 +158,8 @@ FilePassResult[] results = this.testRunner.runTest(testBasicData); //return the results of the test - return new TestResult(results, testConvs, compareConvs); + String testName = "Test " + numTestsSoFar; + return new TestResult(results, testConvs, compareConvs, testName); } private Data[][] wrapInData(String[] testFilePaths, String format) { Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/ConvReportSubGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/ConvReportSubGenerator.java 2007-08-16 22:10:02 UTC (rev 479) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/ConvReportSubGenerator.java 2007-08-16 22:13:37 UTC (rev 480) @@ -11,6 +11,7 @@ import org.cishell.testing.convertertester.core.tester2.reportgen.reports.ConvReport; import org.cishell.testing.convertertester.core.tester2.reportgen.reports.TestReport; import org.cishell.testing.convertertester.core.tester2.reportgen.results.ConvResult; +import org.cishell.testing.convertertester.core.tester2.reportgen.results.TestResult; import org.osgi.framework.ServiceReference; public class ConvReportSubGenerator { @@ -52,6 +53,14 @@ report.println(""); + report.println("Involved in the following tests..."); + TestResult[] involvedTests = cr.getTests(); + for (int ii = 0; ii < involvedTests.length; ii++) { + TestResult tr = involvedTests[ii]; + report.println(" " + tr.getFullName()); + } + report.println(""); + String[] failureExps = cr.getUniqueFailureExplanations(); if (failureExps.length > 0) { report.println("Unique Failure Explanations..."); @@ -81,7 +90,6 @@ .getName(), summary); report.println(""); report.flush(); - reportOutStream.close(); } catch (IOException e) { System.out.println("Unable to generate a converter report."); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/AllTestsReportGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/AllTestsReportGenerator.java 2007-08-16 22:10:02 UTC (rev 479) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/AllTestsReportGenerator.java 2007-08-16 22:13:37 UTC (rev 480) @@ -50,21 +50,14 @@ atr.getNumTests()); report.println(""); - float percentCompletelyPassed = atr.getNumTestsPassed() / (atr.getNumTests()); + float percentCompletelyPassed = + atr.getNumTestsPassed() / (atr.getNumTests()); - TestResult[] allTRs = atr.getAllTestResults(); - for (int ii = 0; ii < allTRs.length; ii++) { - TestResult tr = allTRs[ii]; - tr.setName("Test"); - } - TestResult[] passedTRs = atr.getPassedTestResults(); report.println("Completely Passed Tests..."); for (int ii = 0; ii < passedTRs.length; ii++) { TestResult passedTR = passedTRs[ii]; - passedTR.setName("Successful " + passedTR.getName() + - " " + ii); - report.println(" " + passedTR.getName()); + report.println(" " + passedTR.getFullName()); } report.println(""); @@ -72,9 +65,7 @@ report.println("Partially Passed Tests..."); for (int ii = 0; ii < pPassedTRs.length; ii++) { TestResult pPassedTR = pPassedTRs[ii]; - pPassedTR.setName("Partially Successful " + - pPassedTR.getName() + " " + ii); - report.println(" " + pPassedTR.getName()); + report.println(" " + pPassedTR.getFullName()); } report.println(""); @@ -83,10 +74,7 @@ TestResult[] failedTRs = atr.getFailedTestResults(); for (int ii = 0; ii < failedTRs.length; ii++) { TestResult failedTR = failedTRs[ii]; - - failedTR.setName("Failed " + failedTR.getName() - + " " + ii); - report.println(" " + failedTR.getName()); + report.println(" " + failedTR.getFullName()); } report.println(""); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java 2007-08-16 22:10:02 UTC (rev 479) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java 2007-08-16 22:13:37 UTC (rev 480) @@ -110,8 +110,18 @@ } // String summary = "%" + percentSuccessful + " Successful"; + String reportNamePrefix = ""; + if (tr.allSucceeded()) { + reportNamePrefix = "Successful"; + } else if (tr.someSucceeded()) { + reportNamePrefix = "Partially Successful"; + } else { + reportNamePrefix = "Failed"; + } + + String summary = ""; - this.testReport = new TestReport(reportFile, tr.getName(), + this.testReport = new TestReport(reportFile, tr.getFullName(), new FilePassReport[0], new FilePassReport[0], // (FilePassReport[]) successfulFPReports.toArray(new FilePassReport[0]), Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java 2007-08-16 22:10:02 UTC (rev 479) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java 2007-08-16 22:13:37 UTC (rev 480) @@ -24,10 +24,12 @@ private boolean cachedSuccesses = false; private boolean[] successes; - public TestResult(FilePassResult[] fprs, ConverterPath testConvs, ConverterPath compareConvs) { + public TestResult(FilePassResult[] fprs, ConverterPath testConvs, + ConverterPath compareConvs, String name) { this.fprs = fprs; this.testConvs = testConvs; this.compareConvs = compareConvs; + this.name = name; this.successes = new boolean[fprs.length]; @@ -60,13 +62,13 @@ return fprs; } - public String getShortSummary() { + public String getSummary() { if (allSucceeded()) { - return "Success"; + return "Successful"; } else if (someSucceeded()) { - return "Partial Success"; + return "Partially Successful"; } else { - return "Failure"; + return "Failed"; } } @@ -90,14 +92,14 @@ return this.fprs.length; } - public void setName(String name) { - this.name = name; - } - public String getName() { return this.name; } + public String getFullName() { + return getSummary() + " " + getName(); + } + public String getFormat() { return this.format; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2007-08-17 19:47:15
|
Revision: 484 http://cishell.svn.sourceforge.net/cishell/?rev=484&view=rev Author: mwlinnem Date: 2007-08-17 12:47:06 -0700 (Fri, 17 Aug 2007) Log Message: ----------- Cleaned up slightly. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/TestFileKeeper.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/TestFileKeeper.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/TestFileKeeper.java 2007-08-16 22:33:30 UTC (rev 483) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/TestFileKeeper.java 2007-08-17 19:47:06 UTC (rev 484) @@ -15,7 +15,6 @@ public class TestFileKeeper { - //TODO: How should we expose this to the user? static { String fs = File.separator; DEFAULT_ROOT_DIR = Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java 2007-08-16 22:33:30 UTC (rev 483) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java 2007-08-17 19:47:06 UTC (rev 484) @@ -110,16 +110,6 @@ } // String summary = "%" + percentSuccessful + " Successful"; - String reportNamePrefix = ""; - if (tr.allSucceeded()) { - reportNamePrefix = "Successful"; - } else if (tr.someSucceeded()) { - reportNamePrefix = "Partially Successful"; - } else { - reportNamePrefix = "Failed"; - } - - String summary = ""; this.testReport = new TestReport(reportFile, tr.getFullName(), new FilePassReport[0], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2007-08-17 20:14:20
|
Revision: 487 http://cishell.svn.sourceforge.net/cishell/?rev=487&view=rev Author: mwlinnem Date: 2007-08-17 13:14:18 -0700 (Fri, 17 Aug 2007) Log Message: ----------- Cleaned up report presentation. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/FilePassSubGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java 2007-08-17 19:52:31 UTC (rev 486) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java 2007-08-17 20:14:18 UTC (rev 487) @@ -151,8 +151,7 @@ } } } catch (Throwable t) { - ConvFailureInfo failInfo = new ConvFailureInfo(t.toString() - + getStackTrace(t), + ConvFailureInfo failInfo = new ConvFailureInfo(getStackTrace(t), currentConverterAlg.getClass().toString()); ConvertResult result = new ConvertResult(failInfo); return result; Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/FilePassSubGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/FilePassSubGenerator.java 2007-08-17 19:52:31 UTC (rev 486) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/FilePassSubGenerator.java 2007-08-17 20:14:18 UTC (rev 487) @@ -62,7 +62,7 @@ report.println("File used : " + fpr.getOriginalFileLabel()); if (! fpr.getExplanation().trim().equals("")) { - report.println("Explanation :" + fpr.getExplanation()); + report.println("Explanation... \n" + fpr.getExplanation()); } report.println(""); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java 2007-08-17 19:52:31 UTC (rev 486) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java 2007-08-17 20:14:18 UTC (rev 487) @@ -69,21 +69,24 @@ report.println(""); FilePassResult[] successfulFPs = tr.getFilePassSuccesses(); report.println("Successful File Passes..."); + report.println(""); for (int ii = 0; ii < successfulFPs.length; ii++) { FilePassResult successfulFP = successfulFPs[ii]; namePass("Successful", successfulFP, tr, ii); - report.println(successfulFP.getName() + successfulFP.getShortSummary()); + report.println(successfulFP.getName() + + " - " + successfulFP.getShortSummary()); filePassSubGen.writeReport(report, successfulFP); } report.println(""); FilePassResult[] failedFPs = tr.getFilePassFailures(); report.println("Failed File Passes..."); + report.println(""); for (int ii = 0; ii < failedFPs.length; ii++) { FilePassResult failedFP = failedFPs[ii]; namePass("Failed", failedFP, tr, ii); - report.println("--------"); - report.println(failedFP.getName() + failedFP.getShortSummary()); + report.println(failedFP.getName() + + " - " + failedFP.getShortSummary()); filePassSubGen.writeReport(report, failedFP); report.println(""); } @@ -144,6 +147,7 @@ private void namePass(String prefix, FilePassResult fp, TestResult parent, int index) { - fp.setName(prefix + " Pass " + index + " of " + parent.getName() + " . "); + fp.setName("Pass " + index); +// fp.setName(prefix + " Pass " + index + " of " + parent.getName() + " . "); } } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java 2007-08-17 19:52:31 UTC (rev 486) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java 2007-08-17 20:14:18 UTC (rev 487) @@ -97,7 +97,7 @@ } public String getFullName() { - return getSummary() + " " + getName(); + return getName() + " - " + getSummary(); } public String getFormat() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2007-08-20 17:23:38
|
Revision: 490 http://cishell.svn.sourceforge.net/cishell/?rev=490&view=rev Author: mwlinnem Date: 2007-08-20 10:23:33 -0700 (Mon, 20 Aug 2007) Log Message: ----------- We now redirect log errors into the reports. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java Added Paths: ----------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/FakeLogCIShellContext.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/FakeLogService.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/LogEntry.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java 2007-08-20 17:13:04 UTC (rev 489) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java 2007-08-20 17:23:33 UTC (rev 490) @@ -15,6 +15,8 @@ import org.cishell.framework.data.Data; import org.cishell.testing.convertertester.core.converter.graph.ConverterPath; import org.cishell.testing.convertertester.core.tester.graphcomparison.ComparisonResult; +import org.cishell.testing.convertertester.core.tester2.fakelogger.LogEntry; +import org.cishell.testing.convertertester.core.tester2.fakelogger.FakeLogCIShellContext; import org.cishell.testing.convertertester.core.tester2.graphcomparison.NewGraphComparer; import org.cishell.testing.convertertester.core.tester2.reportgen.results.FilePassResult; import org.cishell.testing.convertertester.core.tester2.reportgen.results.converter.ConvFailureInfo; @@ -120,35 +122,50 @@ Data[] currentData = getFilePathData(startData); AlgorithmFactory[] converterAlgs = converters.getPathAsAlgorithms(); + /* + * rig up fake CISHellContext so we can get ahold of + * errors sent to logger. + */ + FakeLogCIShellContext fakeCContext = + new FakeLogCIShellContext(testData.getContext()); + AlgorithmFactory currentConverterAlg = converterAlgs[0]; try { for (int ii = 0; ii < converterAlgs.length; ii++) { currentConverterAlg = converterAlgs[ii]; + Algorithm currentAlgorithm = currentConverterAlg.createAlgorithm(currentData, - new Hashtable(), testData.getContext()); + new Hashtable(), fakeCContext); currentData = currentAlgorithm.execute(); - if (currentData == null) { + /* + * There are two ways that converters generally fail. + * 1) They throw an exception that propagates out into + * this method, where we catch it. + * 2) They catch their own exception, send it to the logger, + * and return null. + */ + if (currentData == null || currentData[0].getData() == null) { String converterName = converters.getConverterName(ii); + + String explanation = "Result data is null. \n"; + + + if (fakeCContext.hasLogEntries()) { + String logText = extractLogText(fakeCContext); + explanation += "Error log contains the following: \n" + + logText; + } else { + explanation += "No errors logged. Cause unknown. \n"; + } + ConvFailureInfo failInfo = new ConvFailureInfo( - "Result data is null. " + - "Check NWB GUI Console for specific error.", - converterName); + explanation, converterName); + ConvertResult result = new ConvertResult(failInfo); return result; } - - Data currentDataImpl = (Data) currentData[0]; - if (currentDataImpl.getData() == null) { - String converterName = converters.getConverterName(ii); - ConvFailureInfo failInfo = new ConvFailureInfo( - "Contents of result data is null. " + - "Check NWB GUI Console for specific error.", - converterName); - ConvertResult result = new ConvertResult(failInfo); - return result; - } } } catch (Throwable t) { ConvFailureInfo failInfo = new ConvFailureInfo(getStackTrace(t), @@ -218,4 +235,23 @@ } } -} + + private String extractLogText(FakeLogCIShellContext fakeLogContext) { + LogEntry[] entries = fakeLogContext.getLogEntries(); + + String logText = ""; + + for (int ii = 0; ii < entries.length; ii++) { + LogEntry entry = entries[ii]; + + Throwable e = entry.getThrowable(); + String message = entry.getMessage(); + + logText += message + "\n"; + logText += getStackTrace(e) + "\n"; + logText += "\n"; + } + + return logText; + } +} Added: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/FakeLogCIShellContext.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/FakeLogCIShellContext.java (rev 0) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/FakeLogCIShellContext.java 2007-08-20 17:23:33 UTC (rev 490) @@ -0,0 +1,41 @@ +package org.cishell.testing.convertertester.core.tester2.fakelogger; + +import org.cishell.framework.CIShellContext; +import org.osgi.service.log.LogService; + +public class FakeLogCIShellContext implements CIShellContext { + + private CIShellContext realCContext; + + private FakeLogService fakeLogger; + + public FakeLogCIShellContext(CIShellContext realCContext) { + this.realCContext = realCContext; + this.fakeLogger = new FakeLogService((LogService) realCContext + .getService(LogService.class.getName())); + + + } + + public Object getService(String service) { + if (service.equals(LogService.class.getName())) { + return this.fakeLogger; + } else { + return this.realCContext.getService(service); + } + } + + + + public LogEntry[] getLogEntries() { + return this.fakeLogger.getLogEntries(); + } + + public void clearLogEntires() { + this.fakeLogger.clearLogEntries(); + } + + public boolean hasLogEntries() { + return this.fakeLogger.hasLogEntries(); + } +} Added: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/FakeLogService.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/FakeLogService.java (rev 0) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/FakeLogService.java 2007-08-20 17:23:33 UTC (rev 490) @@ -0,0 +1,69 @@ +package org.cishell.testing.convertertester.core.tester2.fakelogger; + +import java.util.ArrayList; + +import org.osgi.framework.ServiceReference; +import org.osgi.service.log.LogService; + +import java.util.List; + +public class FakeLogService implements LogService { + + + private List logMessages; + private LogService realLog; + + public FakeLogService(LogService realLogService) { + this.realLog = realLogService; + + this.logMessages = new ArrayList(); + } + + public void log(int level, String message) { + if (level == LOG_ERROR) { + this.logMessages.add(new LogEntry(message)); + } else { + this.realLog.log(level, message); + } + } + + public void log(int level, String message, Throwable exception) { + if (level == LOG_ERROR) { + this.logMessages.add(new LogEntry(message, exception)); + } else { + this.realLog.log(level, message, exception); + } + } + + public void log(ServiceReference sr, int level, String message) { + if (level == LOG_ERROR) { + this.logMessages.add(new LogEntry(message)); + } else { + this.realLog.log(sr, level, message); + } + } + + public void log(ServiceReference sr, int level, String message, + Throwable exception) { + if (level == LOG_ERROR) { + this.logMessages.add(new LogEntry(message, exception)); + } else { + this.realLog.log(sr, level, message, exception); + } + } + + public LogEntry[] getLogEntries() { + return (LogEntry[]) + this.logMessages.toArray(new LogEntry[0]); + } + + public void clearLogEntries() { + this.logMessages = new ArrayList(); + } + + public boolean hasLogEntries() { + return this.logMessages.size() > 0; + } + + +} Added: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/LogEntry.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/LogEntry.java (rev 0) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/fakelogger/LogEntry.java 2007-08-20 17:23:33 UTC (rev 490) @@ -0,0 +1,30 @@ +package org.cishell.testing.convertertester.core.tester2.fakelogger; + +/** + * Too much unnecessary stuff in real official OSGi LogEntry. + * This should do. + * @author mwlinnem + * + */ +public class LogEntry { + + private String message; + private Throwable exception; + + public LogEntry(String message) { + this(message, null); + } + + public LogEntry(String message, Throwable exception) { + this.message = message; + this.exception = exception; + } + + public String getMessage() { + return this.message; + } + + public Throwable getThrowable() { + return this.exception; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2007-08-22 18:20:42
|
Revision: 494 http://cishell.svn.sourceforge.net/cishell/?rev=494&view=rev Author: mwlinnem Date: 2007-08-22 11:20:40 -0700 (Wed, 22 Aug 2007) Log Message: ----------- Tests listed in converter reports are now sorted by success then test number. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/AllConvsReportGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/ConvReportSubGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/ConvResult.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java 2007-08-22 17:26:12 UTC (rev 493) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java 2007-08-22 18:20:40 UTC (rev 494) @@ -158,8 +158,7 @@ FilePassResult[] results = this.testRunner.runTest(testBasicData); //return the results of the test - String testName = "Test " + numTestsSoFar; - return new TestResult(results, testConvs, compareConvs, testName); + return new TestResult(results, testConvs, compareConvs, numTestsSoFar); } private Data[][] wrapInData(String[] testFilePaths, String format) { Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/AllConvsReportGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/AllConvsReportGenerator.java 2007-08-22 17:26:12 UTC (rev 493) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/AllConvsReportGenerator.java 2007-08-22 18:20:40 UTC (rev 494) @@ -94,23 +94,38 @@ report.println("Trusted Converters..."); for (int ii = 0; ii < trustedConvs.size(); ii++) { ConvResult cr = (ConvResult) trustedConvs.get(ii); + + //add this converters name to all convs report report.println(" " + cr.getNameNoPackage()); + + //generate corresponding sub-report + this.convSubGen.generate(cr); + ConvReport convReport = this.convSubGen.getConvReport(); + convReportsList.add(convReport); } report.println(""); report.println("Non-Trusted Converters..."); for (int ii = 0; ii < nonTrustedConvs.size(); ii++) { ConvResult cr = (ConvResult) nonTrustedConvs.get(ii); + + //add this converters name to all convs report report.println(" " + cr.getNameNoPackage()); - } - report.println(""); - - for (int ii = 0; ii < convResults.length; ii++) { - this.convSubGen.generate(convResults[ii]); + + //generate corresponding sub-report + this.convSubGen.generate(cr); ConvReport convReport = this.convSubGen.getConvReport(); convReportsList.add(convReport); + } + report.println(""); +// for (int ii = 0; ii < convResults.length; ii++) { +// this.convSubGen.generate(convResults[ii]); +// ConvReport convReport = this.convSubGen.getConvReport(); +// convReportsList.add(convReport); +// } + // String summary = "%" + avgChanceCorrect * 100 + " Correct"; String summary = ""; ConvReport[] convReports = Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/ConvReportSubGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/ConvReportSubGenerator.java 2007-08-22 17:26:12 UTC (rev 493) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/ConvReportSubGenerator.java 2007-08-22 18:20:40 UTC (rev 494) @@ -61,7 +61,7 @@ report.println(""); report.println("Involved in the following tests..."); - TestResult[] involvedTests = cr.getTests(); + TestResult[] involvedTests = cr.getTestsBySuccess(); for (int ii = 0; ii < involvedTests.length; ii++) { TestResult tr = involvedTests[ii]; report.println(" " + tr.getNameWithSuccess()); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/ConvResult.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/ConvResult.java 2007-08-22 17:26:12 UTC (rev 493) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/ConvResult.java 2007-08-22 18:20:40 UTC (rev 494) @@ -1,10 +1,9 @@ package org.cishell.testing.convertertester.core.tester2.reportgen.results; import java.util.ArrayList; -import java.util.HashSet; +import java.util.Collections; import java.util.Iterator; import java.util.List; -import java.util.Set; import org.cishell.testing.convertertester.core.tester2.reportgen.results.filepass.FilePassFailure; import org.cishell.testing.convertertester.core.tester2.reportgen.results.filepass.FilePassSuccess; @@ -18,7 +17,7 @@ private List failFilePasses = new ArrayList(); private List successFilePasses = new ArrayList(); private List uniqueFailureExplanations = new ArrayList(); - private Set tests = new HashSet(); + private List tests = new ArrayList(); private boolean isTrusted; @@ -56,7 +55,9 @@ } public void addTest(TestResult tr) { - this.tests.add(tr); + if (! tests.contains(tr)) { + this.tests.add(tr); + } } /** @@ -95,9 +96,15 @@ } public TestResult[] getTests() { + Collections.sort(this.tests); return (TestResult[]) this.tests.toArray(new TestResult[0]); } + public TestResult[] getTestsBySuccess() { + Collections.sort(this.tests, TestResult.getCompareBySuccess()); + return (TestResult[]) this.tests.toArray(new TestResult[0]); + } + public void addPass(FilePassSuccess fp) { this.successFilePasses.add(fp); } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java 2007-08-22 17:26:12 UTC (rev 493) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java 2007-08-22 18:20:40 UTC (rev 494) @@ -1,13 +1,14 @@ package org.cishell.testing.convertertester.core.tester2.reportgen.results; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import org.cishell.testing.convertertester.core.converter.graph.ConverterPath; -public class TestResult { +public class TestResult implements Comparable { public static final String DEFAULT_NAME = "Default Test Result Name"; @@ -15,6 +16,8 @@ private List passedFPRs; private List failedFPRs; + private int testNum; + private String format; private String name = DEFAULT_NAME; @@ -25,11 +28,12 @@ private boolean[] successes; public TestResult(FilePassResult[] fprs, ConverterPath testConvs, - ConverterPath compareConvs, String name) { + ConverterPath compareConvs, int testNum) { this.fprs = fprs; this.testConvs = testConvs; this.compareConvs = compareConvs; - this.name = name; + this.testNum = testNum; + this.name = "Test " + testNum; this.successes = new boolean[fprs.length]; @@ -96,6 +100,10 @@ return this.name; } + public int getTestNum() { + return this.testNum; + } + public String getNameWithSuccess() { return getName() + " - " + getSummary(); } @@ -166,8 +174,62 @@ this.cachedSuccesses = true; } + + public int compareTo(Object arg0) { + if ((arg0 instanceof TestResult)) { + TestResult otherTR = (TestResult) arg0; + return getTestNum() - otherTR.getTestNum(); + } else { + throw new IllegalArgumentException("Must compare to another " + + "TestResult"); + } + } + public static Comparator getCompareBySuccess() { + return new CompareBySuccess(); + } + private static class CompareBySuccess implements Comparator { + + /** + * Compare first by success, where + * completely successful > partially successful > complet failure, + * and then alphabetize (the natural order of test results) + * for cases where they both have the same success type. + */ + public int compare(Object o1, Object o2) { + if (o1 instanceof TestResult && o2 instanceof TestResult) { + TestResult tr1 = (TestResult) o1; + TestResult tr2 = (TestResult) o2; + + int success1 = getSuccessRating(tr1); + int success2 = getSuccessRating(tr2); + + if (success1 != success2) { + return success2 - success1; + } else { + return tr1.compareTo(tr2); + } + + } else { + throw new IllegalArgumentException("Can only " + + "compare test results"); + } + + } + + private int getSuccessRating(TestResult tr) { + if (tr.allSucceeded()) { + return 2; + } else if (tr.someSucceeded()) { + return 1; + } else { + return 0; + } + } + } + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2007-08-30 22:36:36
|
Revision: 508 http://cishell.svn.sourceforge.net/cishell/?rev=508&view=rev Author: mwlinnem Date: 2007-08-30 15:30:46 -0700 (Thu, 30 Aug 2007) Log Message: ----------- Error explanations in Converter Reports are now sorted so the errors that particular converter is most likely to be responsible for come before the errors that converter is less likely to be responsible for. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/ConvReportSubGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/convgraph/AnnotatedGraphReportGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/ChanceAtFault.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/ConvResult.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/FilePassResult.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java Added Paths: ----------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConvResultMaker.java Removed Paths: ------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/ConvResultMaker.java Copied: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConvResultMaker.java (from rev 498, trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/ConvResultMaker.java) =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConvResultMaker.java (rev 0) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConvResultMaker.java 2007-08-30 22:30:46 UTC (rev 508) @@ -0,0 +1,334 @@ +package org.cishell.testing.convertertester.core.tester2; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.cishell.testing.convertertester.core.converter.graph.Converter; +import org.cishell.testing.convertertester.core.converter.graph.ConverterPath; +import org.cishell.testing.convertertester.core.tester2.reportgen.faultanalysis.ChanceAtFault; +import org.cishell.testing.convertertester.core.tester2.reportgen.faultanalysis.ChanceAtFaultHeuristic; +import org.cishell.testing.convertertester.core.tester2.reportgen.results.AllConvsResult; +import org.cishell.testing.convertertester.core.tester2.reportgen.results.AllTestsResult; +import org.cishell.testing.convertertester.core.tester2.reportgen.results.ConvResult; +import org.cishell.testing.convertertester.core.tester2.reportgen.results.FilePassResult; +import org.cishell.testing.convertertester.core.tester2.reportgen.results.TestResult; + +public class ConvResultMaker { + + public static AllConvsResult generate(AllTestsResult atr, + Converter[] allConvs, ChanceAtFaultHeuristic faultHeuristic) { + + Converter[] trustedConvs = determineWhichAreTrusted(atr); + + System.out.println("*** # Trusted Convs: " + trustedConvs.length); + + Map convToTestsToPasses = associateConvsWithTestsAndPasses(atr, + allConvs, trustedConvs, + faultHeuristic); + ConvResult[] convResults = generateConvResults(convToTestsToPasses, + allConvs, trustedConvs); + +// addFaultInfo(convResults, trustedConvs, faultHeuristic); + + return new AllConvsResult(convResults); + + } + + /** + * Looks for tests where each file pass succeeded. We will assume that + * each converter involved in a test where all file passes succeeded is + * very likely to be correct. If one of these converters is involved + * in a file pass that fails at some later point, we will assume + * that that converter was not at fault, but was fed erroneous data + * by previous converters. + * @param atr the test results, which contain info on failure + * or success of each test. + * @return an array of the converters that are trusted + */ + private static Converter[] determineWhichAreTrusted(AllTestsResult atr) { + TestResult[] trs = atr.getTestResults(); + + Set trustedConverters = new HashSet(); + for (int ii = 0; ii < trs.length; ii++) { + TestResult tr = trs[ii]; + FilePassResult[] fprs = tr.getFilePassResults(); + + //check if all file passes were successes + + boolean trusted = true; + for (int jj = 0; jj < fprs.length; jj++) { + FilePassResult fpr = fprs[jj]; + if (! fpr.succeeded()) { + //not all were successes + trusted = false; + break; + } + } + + if (trusted && fprs.length > 0) { + //mark all converters involved as trusted. + + ConverterPath testConvs = tr.getTestConverters(); + for (int kk = 0; kk < testConvs.size(); kk++) { + Converter conv = testConvs.get(kk); + trustedConverters.add(conv); + } + } + } + + return (Converter[]) trustedConverters.toArray(new Converter[0]); + } + + + private static Map associateConvsWithTestsAndPasses(AllTestsResult atr, + Converter[] allConvs, Converter[] trustedConvs, + ChanceAtFaultHeuristic faultHeuristic) { + TestResult[] trs = atr.getTestResults(); + + //Map<Converter, Map<TestResult, List<FilePassResult>>> + Map convToTestsToPasses = new HashMap(); + initialize(convToTestsToPasses, allConvs); + + //for each test... + for (int ii = 0; ii < trs.length; ii++) { + TestResult tr = trs[ii]; + + FilePassResult[] fps = tr.getFilePassResults(); + //for each file pass... + for (int jj = 0; jj < fps.length; jj++) { + FilePassResult fp = fps[jj]; + + Converter[] convsInvolved = fp.getConvertersInvolved(); + + /* + * associate the file pass with the chance that each converter + * involved is at fault. + */ + + if (! fp.succeeded()) { + ChanceAtFault[] chanceAtFaults = faultHeuristic.determine(fp, + convsInvolved, trustedConvs); + for (int kk = 0; kk < chanceAtFaults.length; kk++) { + ChanceAtFault caf = chanceAtFaults[kk]; + fp.addChanceAtFault(caf); + } + } + + //for each converter involved... + for (int kk = 0; kk < convsInvolved.length; kk++) { + Converter conv = convsInvolved[kk]; + + /* + * associate the converter with the tests and + * file passes that involve it. + * + * (side-effects convToTestsToPasses) + */ + addPassResult(convToTestsToPasses, conv, + fp); + + } + } + } + + return convToTestsToPasses; + } + + private static ConvResult[] generateConvResults(Map convToTestsToPasses, + Converter[] allConvs, Converter[] trustedConvs) { + + ConvResult[] convResults = makeAndFillWithAssociatedTestsAndPasses( + convToTestsToPasses, allConvs, trustedConvs); + +// addFaultInfo(convResults, convToTestsToPasses, allConvs, trustedConvs, +// faultHeuristic); + + return convResults; + } + + private static ConvResult[] makeAndFillWithAssociatedTestsAndPasses( + Map convToTestsToPasses, Converter[] allConvs, + Converter[] trustedConvs) { + List convResults = new ArrayList(); + + List trustedConvList = Arrays.asList(trustedConvs); + // for every converter we know of... + for (int ii = 0; ii < allConvs.length; ii++) { + Converter conv = allConvs[ii]; + // get the associated test to passes map + Map testToPasses = (Map) convToTestsToPasses.get(conv); + + /* + * create converter result objects which contain information about + * which tests and file passes it is involved with, and whether it + * is trusted. + */ + + boolean isTrusted = trustedConvList.contains(conv); + + ConvResult convResult = new ConvResult(conv, isTrusted, + testToPasses); + + convResults.add(convResult); + } + // return the converter result objects + return (ConvResult[]) convResults.toArray(new ConvResult[0]); + } + + private static void addPassResult(Map convToTestsToPasses, Converter conv, + FilePassResult pass) { + + TestResult test = pass.getParent(); + + Map testToPasses = (Map) convToTestsToPasses.get(conv); + List passes; + + //if we already associated this test with the converter... + if (testToPasses != null) { + passes = (List) testToPasses.get(test); + if (passes == null) { + passes = new ArrayList(); + } + } else { //otherwise... + testToPasses = new HashMap(); + passes = new ArrayList(); + } + + passes.add(pass); + testToPasses.put(test, passes); + convToTestsToPasses.put(conv, testToPasses); + } + + /** + * Ensures that each converter is represented in the map, whether or not + * there are any test associated with it. + * @param convToTestsToPasses The map we side-effect + * @param allConvs an array of all the converters we know of + */ + private static void initialize(Map convToTestsToPasses, Converter[] allConvs) { + for (int ii = 0; ii < allConvs.length; ii++) { + Converter conv = allConvs[ii]; + + convToTestsToPasses.put(conv, new HashMap()); + } + } + +// private static addFaultInfo(AllTestsResult atr, ConvResult[] crs, +// Converter[] trustedConvs, ChanceAtFaultHeuristic faultHeuristic) { +// +// Map convToChanceAtFaults = new HashMap(); +// +// FilePassResult[] failFPRs = atr.getFailedFilePasses(); +// for (int ii = 0; ii < failFPRs.length; ii++) { +// FilePassResult failFPR = failFPRs[ii]; +// +// ChanceAtFault[] chanceAtFaultsForEachConv = getFaultInfo(failFPR, +// trustedConvs, trustedConvs); +// +// for (int jj = 0; jj < chanceAtFaultsForEachConv.length; jj++) { +// ChanceAtFault chanceAtFaultForAConv = +// chanceAtFaultsForEachConv[jj]; +// +// Converter conv = chanceAtFaultForAConv.getConverter(); +// +// addEntryToList(convToChanceAtFaults, conv, +// chanceAtFaultForAConv); +// +// } +// } +// +// for (int ii = 0; ii < crs.length; ii++) { +// ConvResult cr = crs[ii]; +// +// Converter c = cr.getConverter(); +// List chanceAtFaults = convToChanceAtFaults.get(c); +// +// if (chanceAtFaults != null) { +// +// Iterator faultIter = chanceAtFaults.iterator(); +// while (faultIter.hasNext()) { +// ChanceAtFault caf = (ChanceAtFault) faultIter.next(); +// +// cr. +// } +// } +// } +// +// +//// List convResults = new ArrayList(); +//// +//// List trustedConvList = Arrays.asList(trustedConvs); +//// //for every converter we know of... +//// for (int ii = 0; ii < allConvs.length; ii++) { +//// Converter conv = allConvs[ii]; +//// //get the associated test to passes map +//// Map testToPasses = (Map) convToTestsToPasses.get(conv); +//// +//// /* +//// * create converter result objects which contain +//// * information about which tests and file passes +//// * it is involved with, and whether it is trusted. +//// */ +//// +//// boolean isTrusted = trustedConvList.contains(conv); +//// +//// ConvResult convResult = new ConvResult(conv, isTrusted, +//// testToPasses); +//// +//// convResults.add(convResult); +//// +//// Set tests = testToPasses.keySet(); +//// Iterator testIter = tests.iterator(); +//// //for each test... +//// while (testIter.hasNext()) { +//// TestResult tr = (TestResult) testIter.next(); +//// List passes = (List) testToPasses.get(tr); +//// Iterator passIter = passes.iterator(); +//// //for each involved pass... +//// while (passIter.hasNext()) { +//// FilePassResult fpr = (FilePassResult) passIter.next(); +//// +//// if (! fpr.succeeded()) { +//// addFailInfo(fpr, trustedConvs, faultHeuristic); +//// } +//// } +//// } +//// } +// } + +// private static ChanceAtFault[] getFaultInfo(FilePassResult failFP, Converter[] trustedConverters, +// ChanceAtFaultHeuristic faultHeuristic) { +// Converter[] convsInvolvedInFailure = failFP.getConvertersInvolved(); +// ChanceAtFault[] chanceAtFaults = faultHeuristic.determine(failFP, +// convsInvolvedInFailure, trustedConverters); +// return chanceAtFaults; +// } + + /** + * For maps that associate an object to a list of objects, + * add the given value to the list associated with the key. + * + * Side-effects the map + * + * @param map + * @param key + * @param value + */ + private static void addEntryToList(Map map, Object key, Object value) { + List oldEntries = (List) map.get(key); + + if (oldEntries == null) { + //no entries so far + oldEntries = new ArrayList(); + } + + oldEntries.add(value); + + map.put(key, value); + } +} Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java 2007-08-30 21:26:38 UTC (rev 507) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java 2007-08-30 22:30:46 UTC (rev 508) @@ -20,7 +20,6 @@ import org.cishell.testing.convertertester.core.tester2.graphcomparison.IdsPreservedComparer; import org.cishell.testing.convertertester.core.tester2.graphcomparison.LossyComparer; import org.cishell.testing.convertertester.core.tester2.graphcomparison.NewGraphComparer; -import org.cishell.testing.convertertester.core.tester2.reportgen.ConvResultMaker; import org.cishell.testing.convertertester.core.tester2.reportgen.ReportGenerator; import org.cishell.testing.convertertester.core.tester2.reportgen.faultanalysis.ChanceAtFaultHeuristic; import org.cishell.testing.convertertester.core.tester2.reportgen.faultanalysis.FullTrustHeuristic; Deleted: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/ConvResultMaker.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/ConvResultMaker.java 2007-08-30 21:26:38 UTC (rev 507) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/ConvResultMaker.java 2007-08-30 22:30:46 UTC (rev 508) @@ -1,335 +0,0 @@ -package org.cishell.testing.convertertester.core.tester2.reportgen; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.cishell.testing.convertertester.core.converter.graph.Converter; -import org.cishell.testing.convertertester.core.converter.graph.ConverterPath; -import org.cishell.testing.convertertester.core.tester2.reportgen.faultanalysis.ChanceAtFault; -import org.cishell.testing.convertertester.core.tester2.reportgen.faultanalysis.ChanceAtFaultHeuristic; -import org.cishell.testing.convertertester.core.tester2.reportgen.results.AllConvsResult; -import org.cishell.testing.convertertester.core.tester2.reportgen.results.AllTestsResult; -import org.cishell.testing.convertertester.core.tester2.reportgen.results.ConvResult; -import org.cishell.testing.convertertester.core.tester2.reportgen.results.FilePassResult; -import org.cishell.testing.convertertester.core.tester2.reportgen.results.TestResult; -import org.cishell.testing.convertertester.core.tester2.reportgen.results.filepass.FilePassSuccess; - -public class ConvResultMaker { - - public static AllConvsResult generate(AllTestsResult atr, - Converter[] allConvs, ChanceAtFaultHeuristic faultHeuristic) { - - Converter[] trustedConvs = determineWhichAreTrusted(atr); - - System.out.println("*** # Trusted Convs: " + trustedConvs.length); - - Map convToTestsToPasses = associateConvsWithTestsAndPasses(atr, - allConvs, trustedConvs, - faultHeuristic); - ConvResult[] convResults = generateConvResults(convToTestsToPasses, - allConvs, trustedConvs); - -// addFaultInfo(convResults, trustedConvs, faultHeuristic); - - return new AllConvsResult(convResults); - - } - - /** - * Looks for tests where each file pass succeeded. We will assume that - * each converter involved in a test where all file passes succeeded is - * very likely to be correct. If one of these converters is involved - * in a file pass that fails at some later point, we will assume - * that that converter was not at fault, but was fed erroneous data - * by previous converters. - * @param atr the test results, which contain info on failure - * or success of each test. - * @return an array of the converters that are trusted - */ - private static Converter[] determineWhichAreTrusted(AllTestsResult atr) { - TestResult[] trs = atr.getTestResults(); - - List trustedConverters = new ArrayList(); - for (int ii = 0; ii < trs.length; ii++) { - TestResult tr = trs[ii]; - FilePassResult[] fprs = tr.getFilePassResults(); - - //check if all file passes were successes - - boolean trusted = true; - for (int jj = 0; jj < fprs.length; jj++) { - FilePassResult fpr = fprs[jj]; - if (! fpr.succeeded()) { - //not all were successes - trusted = false; - break; - } - } - - if (trusted && fprs.length > 0) { - //mark all converters involved as trusted. - - ConverterPath testConvs = tr.getTestConverters(); - for (int kk = 0; kk < testConvs.size(); kk++) { - Converter conv = testConvs.get(kk); - trustedConverters.add(conv); - } - } - } - - return (Converter[]) trustedConverters.toArray(new Converter[0]); - } - - - private static Map associateConvsWithTestsAndPasses(AllTestsResult atr, - Converter[] allConvs, Converter[] trustedConvs, - ChanceAtFaultHeuristic faultHeuristic) { - TestResult[] trs = atr.getTestResults(); - - //Map<Converter, Map<TestResult, List<FilePassResult>>> - Map convToTestsToPasses = new HashMap(); - initialize(convToTestsToPasses, allConvs); - - //for each test... - for (int ii = 0; ii < trs.length; ii++) { - TestResult tr = trs[ii]; - - FilePassResult[] fps = tr.getFilePassResults(); - //for each file pass... - for (int jj = 0; jj < fps.length; jj++) { - FilePassResult fp = fps[jj]; - - Converter[] convsInvolved = fp.getConvertersInvolved(); - - /* - * associate the file pass with the chance that each converter - * involved is at fault. - */ - - if (! fp.succeeded()) { - ChanceAtFault[] chanceAtFaults = faultHeuristic.determine(fp, - convsInvolved, trustedConvs); - for (int kk = 0; kk < chanceAtFaults.length; kk++) { - ChanceAtFault caf = chanceAtFaults[kk]; - fp.addChanceAtFault(caf); - } - } - - //for each converter involved... - for (int kk = 0; kk < convsInvolved.length; kk++) { - Converter conv = convsInvolved[kk]; - - /* - * associate the converter with the tests and - * file passes that involve it. - * - * (side-effects convToTestsToPasses) - */ - addPassResult(convToTestsToPasses, conv, - fp); - - } - } - } - - return convToTestsToPasses; - } - - private static ConvResult[] generateConvResults(Map convToTestsToPasses, - Converter[] allConvs, Converter[] trustedConvs) { - - ConvResult[] convResults = makeAndFillWithAssociatedTestsAndPasses( - convToTestsToPasses, allConvs, trustedConvs); - -// addFaultInfo(convResults, convToTestsToPasses, allConvs, trustedConvs, -// faultHeuristic); - - return convResults; - } - - private static ConvResult[] makeAndFillWithAssociatedTestsAndPasses( - Map convToTestsToPasses, Converter[] allConvs, - Converter[] trustedConvs) { - List convResults = new ArrayList(); - - List trustedConvList = Arrays.asList(trustedConvs); - // for every converter we know of... - for (int ii = 0; ii < allConvs.length; ii++) { - Converter conv = allConvs[ii]; - // get the associated test to passes map - Map testToPasses = (Map) convToTestsToPasses.get(conv); - - /* - * create converter result objects which contain information about - * which tests and file passes it is involved with, and whether it - * is trusted. - */ - - boolean isTrusted = trustedConvList.contains(conv); - - ConvResult convResult = new ConvResult(conv, isTrusted, - testToPasses); - - convResults.add(convResult); - } - // return the converter result objects - return (ConvResult[]) convResults.toArray(new ConvResult[0]); - } - - private static void addPassResult(Map convToTestsToPasses, Converter conv, - FilePassResult pass) { - - TestResult test = pass.getParent(); - - Map testToPasses = (Map) convToTestsToPasses.get(conv); - List passes; - - //if we already associated this test with the converter... - if (testToPasses != null) { - passes = (List) testToPasses.get(test); - if (passes == null) { - passes = new ArrayList(); - } - } else { //otherwise... - testToPasses = new HashMap(); - passes = new ArrayList(); - } - - passes.add(pass); - testToPasses.put(test, passes); - convToTestsToPasses.put(conv, testToPasses); - } - - /** - * Ensures that each converter is represented in the map, whether or not - * there are any test associated with it. - * @param convToTestsToPasses The map we side-effect - * @param allConvs an array of all the converters we know of - */ - private static void initialize(Map convToTestsToPasses, Converter[] allConvs) { - for (int ii = 0; ii < allConvs.length; ii++) { - Converter conv = allConvs[ii]; - - convToTestsToPasses.put(conv, new HashMap()); - } - } - -// private static addFaultInfo(AllTestsResult atr, ConvResult[] crs, -// Converter[] trustedConvs, ChanceAtFaultHeuristic faultHeuristic) { -// -// Map convToChanceAtFaults = new HashMap(); -// -// FilePassResult[] failFPRs = atr.getFailedFilePasses(); -// for (int ii = 0; ii < failFPRs.length; ii++) { -// FilePassResult failFPR = failFPRs[ii]; -// -// ChanceAtFault[] chanceAtFaultsForEachConv = getFaultInfo(failFPR, -// trustedConvs, trustedConvs); -// -// for (int jj = 0; jj < chanceAtFaultsForEachConv.length; jj++) { -// ChanceAtFault chanceAtFaultForAConv = -// chanceAtFaultsForEachConv[jj]; -// -// Converter conv = chanceAtFaultForAConv.getConverter(); -// -// addEntryToList(convToChanceAtFaults, conv, -// chanceAtFaultForAConv); -// -// } -// } -// -// for (int ii = 0; ii < crs.length; ii++) { -// ConvResult cr = crs[ii]; -// -// Converter c = cr.getConverter(); -// List chanceAtFaults = convToChanceAtFaults.get(c); -// -// if (chanceAtFaults != null) { -// -// Iterator faultIter = chanceAtFaults.iterator(); -// while (faultIter.hasNext()) { -// ChanceAtFault caf = (ChanceAtFault) faultIter.next(); -// -// cr. -// } -// } -// } -// -// -//// List convResults = new ArrayList(); -//// -//// List trustedConvList = Arrays.asList(trustedConvs); -//// //for every converter we know of... -//// for (int ii = 0; ii < allConvs.length; ii++) { -//// Converter conv = allConvs[ii]; -//// //get the associated test to passes map -//// Map testToPasses = (Map) convToTestsToPasses.get(conv); -//// -//// /* -//// * create converter result objects which contain -//// * information about which tests and file passes -//// * it is involved with, and whether it is trusted. -//// */ -//// -//// boolean isTrusted = trustedConvList.contains(conv); -//// -//// ConvResult convResult = new ConvResult(conv, isTrusted, -//// testToPasses); -//// -//// convResults.add(convResult); -//// -//// Set tests = testToPasses.keySet(); -//// Iterator testIter = tests.iterator(); -//// //for each test... -//// while (testIter.hasNext()) { -//// TestResult tr = (TestResult) testIter.next(); -//// List passes = (List) testToPasses.get(tr); -//// Iterator passIter = passes.iterator(); -//// //for each involved pass... -//// while (passIter.hasNext()) { -//// FilePassResult fpr = (FilePassResult) passIter.next(); -//// -//// if (! fpr.succeeded()) { -//// addFailInfo(fpr, trustedConvs, faultHeuristic); -//// } -//// } -//// } -//// } -// } - -// private static ChanceAtFault[] getFaultInfo(FilePassResult failFP, Converter[] trustedConverters, -// ChanceAtFaultHeuristic faultHeuristic) { -// Converter[] convsInvolvedInFailure = failFP.getConvertersInvolved(); -// ChanceAtFault[] chanceAtFaults = faultHeuristic.determine(failFP, -// convsInvolvedInFailure, trustedConverters); -// return chanceAtFaults; -// } - - /** - * For maps that associate an object to a list of objects, - * add the given value to the list associated with the key. - * - * Side-effects the map - * - * @param map - * @param key - * @param value - */ - private static void addEntryToList(Map map, Object key, Object value) { - List oldEntries = (List) map.get(key); - - if (oldEntries == null) { - //no entries so far - oldEntries = new ArrayList(); - } - - oldEntries.add(value); - - map.put(key, value); - } -} Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/ConvReportSubGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/ConvReportSubGenerator.java 2007-08-30 21:26:38 UTC (rev 507) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/ConvReportSubGenerator.java 2007-08-30 22:30:46 UTC (rev 508) @@ -4,8 +4,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; -import java.util.ArrayList; -import java.util.List; +import java.util.Arrays; import org.cishell.testing.convertertester.core.converter.graph.Converter; import org.cishell.testing.convertertester.core.tester2.reportgen.ReportGenerator; @@ -72,8 +71,11 @@ ChanceAtFault[] failureExplns = cr .getUniqueExplnChanceAtFaults(); + Arrays.sort(failureExplns, cr.getCompareFaultsByLikelihood()); + if (failureExplns.length > 0) { - report.println("Unique Failure Explanations..."); + report.println("Unique Failure Explanations " + + "(sorted by likelihood)..."); for (int ii = 0; ii < failureExplns.length; ii++) { ChanceAtFault failureExp = failureExplns[ii]; @@ -107,18 +109,21 @@ report.println("may not be testable."); } - this.convReport = new ConvReport(reportFile, new TestReport[0], cr - .getShortNameWithTrust()); + this.convReport = new ConvReport(reportFile, new TestReport[0], + cr.getShortNameWithTrust()); + report.println(""); report.flush(); reportOutStream.close(); } catch (IOException e) { - this.log.log(LogService.LOG_ERROR, "Unable to generate a converter report.", e); + this.log.log(LogService.LOG_ERROR, + "Unable to generate a converter report.", e); try { if (reportOutStream != null) reportOutStream.close(); } catch (IOException e2) { - this.log.log(LogService.LOG_ERROR, "Unable to close a converter report", e); + this.log.log(LogService.LOG_ERROR, + "Unable to close a converter report", e); } } } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/convgraph/AnnotatedGraphReportGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/convgraph/AnnotatedGraphReportGenerator.java 2007-08-30 21:26:38 UTC (rev 507) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/convgraph/AnnotatedGraphReportGenerator.java 2007-08-30 22:30:46 UTC (rev 508) @@ -7,7 +7,7 @@ import java.io.FileWriter; import java.io.IOException; -import org.cishell.testing.convertertester.core.tester2.reportgen.ConvResultMaker; +import org.cishell.testing.convertertester.core.tester2.ConvResultMaker; import org.cishell.testing.convertertester.core.tester2.reportgen.ReportGenerator; import org.cishell.testing.convertertester.core.tester2.reportgen.results.AllConvsResult; import org.cishell.testing.convertertester.core.tester2.reportgen.results.AllTestsResult; Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/ChanceAtFault.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/ChanceAtFault.java 2007-08-30 21:26:38 UTC (rev 507) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/ChanceAtFault.java 2007-08-30 22:30:46 UTC (rev 508) @@ -1,10 +1,15 @@ package org.cishell.testing.convertertester.core.tester2.reportgen.faultanalysis; +import java.util.Comparator; + import org.cishell.testing.convertertester.core.converter.graph.Converter; import org.cishell.testing.convertertester.core.tester2.reportgen.results.filepass.FilePassFailure; public class ChanceAtFault { + public static final Comparator COMPARE_BY_LIKELIHOOD = + new CompareByLikelihood(); + private FilePassFailure failedFP; private Converter c; private float chanceAtFault; @@ -38,4 +43,33 @@ public String toString() { return String.valueOf(chanceAtFault); } + + private static class CompareByLikelihood implements Comparator { + + public int compare(Object arg0, Object arg1) { + if (arg0 instanceof ChanceAtFault && + arg1 instanceof ChanceAtFault) { + ChanceAtFault caf0 = (ChanceAtFault) arg0; + ChanceAtFault caf1 = (ChanceAtFault) arg1; + + float difference = caf1.getChanceAtFault() - + caf0.getChanceAtFault(); + + if (difference > 0.0f) { + return 1; + } else if (difference == 0.0f) { + return 0; + } else if (difference < 0.0f) { + return -1; + } + + } else { + throw new IllegalArgumentException("Must compare two " + + "ChanceAtFaults"); + } + + return 0; + } + + } } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/ConvResult.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/ConvResult.java 2007-08-30 21:26:38 UTC (rev 507) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/ConvResult.java 2007-08-30 22:30:46 UTC (rev 508) @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -241,6 +242,10 @@ return 1.0f - this.chanceCorrect; } + public Comparator getCompareFaultsByLikelihood() { + return ChanceAtFault.COMPARE_BY_LIKELIHOOD; + } + private boolean containsChanceAtFaultWithExpln(List chanceAtFaultList, String explanation) { Iterator iter = chanceAtFaultList.iterator(); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/FilePassResult.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/FilePassResult.java 2007-08-30 21:26:38 UTC (rev 507) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/FilePassResult.java 2007-08-30 22:30:46 UTC (rev 508) @@ -1,6 +1,7 @@ package org.cishell.testing.convertertester.core.tester2.reportgen.results; import java.util.ArrayList; +import java.util.Comparator; import java.util.Iterator; import java.util.List; @@ -13,6 +14,8 @@ public abstract class FilePassResult { + public static final Comparator COMPARE_BY_SUCCESS = new CompareBySuccess(); + public static final String DEFAULT_NAME = "Default File Pass Name"; private Data[] originalData; @@ -186,4 +189,45 @@ public void addChanceAtFault(ChanceAtFault chanceAtFault) { this.chanceAtFaults.add(chanceAtFault); } + + +private static class CompareBySuccess implements Comparator { + + /** + * Compare first by success, where + * completely successful > partially successful > complet failure, + * and then alphabetize (the natural order of test results) + * for cases where they both have the same success type. + */ + public int compare(Object o1, Object o2) { + if (o1 instanceof TestResult && o2 instanceof TestResult) { + TestResult tr1 = (TestResult) o1; + TestResult tr2 = (TestResult) o2; + + int success1 = getSuccessRating(tr1); + int success2 = getSuccessRating(tr2); + + if (success1 != success2) { + return success2 - success1; + } else { + return tr1.compareTo(tr2); + } + + } else { + throw new IllegalArgumentException("Can only " + + "compare test results"); + } + + } + + private int getSuccessRating(TestResult tr) { + if (tr.allSucceeded()) { + return 2; + } else if (tr.someSucceeded()) { + return 1; + } else { + return 0; + } + } + } } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java 2007-08-30 21:26:38 UTC (rev 507) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/TestResult.java 2007-08-30 22:30:46 UTC (rev 508) @@ -266,51 +266,6 @@ } public static Comparator getCompareBySuccess() { - return new CompareBySuccess(); - } - - private static class CompareBySuccess implements Comparator { - - /** - * Compare first by success, where - * completely successful > partially successful > complet failure, - * and then alphabetize (the natural order of test results) - * for cases where they both have the same success type. - */ - public int compare(Object o1, Object o2) { - if (o1 instanceof TestResult && o2 instanceof TestResult) { - TestResult tr1 = (TestResult) o1; - TestResult tr2 = (TestResult) o2; - - int success1 = getSuccessRating(tr1); - int success2 = getSuccessRating(tr2); - - if (success1 != success2) { - return success2 - success1; - } else { - return tr1.compareTo(tr2); - } - - } else { - throw new IllegalArgumentException("Can only " + - "compare test results"); - } - - } - - private int getSuccessRating(TestResult tr) { - if (tr.allSucceeded()) { - return 2; - } else if (tr.someSucceeded()) { - return 1; - } else { - return 0; - } - } - } - - - - - + return FilePassResult.COMPARE_BY_SUCCESS; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2007-09-13 19:43:28
|
Revision: 522 http://cishell.svn.sourceforge.net/cishell/?rev=522&view=rev Author: mwlinnem Date: 2007-09-13 12:43:23 -0700 (Thu, 13 Sep 2007) Log Message: ----------- Added new fault analysis heuristic that gives converters that crash a higher chance of being at fault than the converters that precede them. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/ChanceAtFault.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/FullTrustHeuristic.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/ConvResult.java Added Paths: ----------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/WeightedFullTrustHeuristic.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java 2007-09-13 18:47:33 UTC (rev 521) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java 2007-09-13 19:43:23 UTC (rev 522) @@ -22,7 +22,7 @@ import org.cishell.testing.convertertester.core.tester2.graphcomparison.NewGraphComparer; import org.cishell.testing.convertertester.core.tester2.reportgen.ReportGenerator; import org.cishell.testing.convertertester.core.tester2.reportgen.faultanalysis.ChanceAtFaultHeuristic; -import org.cishell.testing.convertertester.core.tester2.reportgen.faultanalysis.FullTrustHeuristic; +import org.cishell.testing.convertertester.core.tester2.reportgen.faultanalysis.WeightedFullTrustHeuristic; import org.cishell.testing.convertertester.core.tester2.reportgen.results.AllConvsResult; import org.cishell.testing.convertertester.core.tester2.reportgen.results.AllTestsResult; import org.cishell.testing.convertertester.core.tester2.reportgen.results.FilePassResult; @@ -84,7 +84,8 @@ Converter[] allConverters = converterGraph.getAllConverters(); - ChanceAtFaultHeuristic faultHeuristic = new FullTrustHeuristic(); + ChanceAtFaultHeuristic faultHeuristic = + new WeightedFullTrustHeuristic(); AllConvsResult allConvertersResult = ConvResultMaker.generate(allTestsResult, allConverters, faultHeuristic); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/ChanceAtFault.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/ChanceAtFault.java 2007-09-13 18:47:33 UTC (rev 521) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/ChanceAtFault.java 2007-09-13 19:43:23 UTC (rev 522) @@ -3,6 +3,7 @@ import java.util.Comparator; import org.cishell.testing.convertertester.core.converter.graph.Converter; +import org.cishell.testing.convertertester.core.tester2.reportgen.results.FilePassResult; import org.cishell.testing.convertertester.core.tester2.reportgen.results.filepass.FilePassFailure; public class ChanceAtFault { @@ -10,11 +11,11 @@ public static final Comparator COMPARE_BY_LIKELIHOOD = new CompareByLikelihood(); - private FilePassFailure failedFP; + private FilePassResult failedFP; private Converter c; private float chanceAtFault; - public ChanceAtFault(FilePassFailure failedFP, Converter c, float chanceAtFault) { + public ChanceAtFault(FilePassResult failedFP, Converter c, float chanceAtFault) { this.failedFP = failedFP; this.c = c; this.chanceAtFault = chanceAtFault; @@ -32,7 +33,7 @@ return this.c; } - public FilePassFailure getFailedFilePass() { + public FilePassResult getFailedFilePass() { return this.failedFP; } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/FullTrustHeuristic.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/FullTrustHeuristic.java 2007-09-13 18:47:33 UTC (rev 521) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/FullTrustHeuristic.java 2007-09-13 19:43:23 UTC (rev 522) @@ -33,7 +33,7 @@ for (int ii = 0; ii < involvedCs.length; ii++) { uniqueInvolvedCs.add(involvedCs[ii]); } - //eliminate converters that are not trusted + //eliminate converters that are trusted List uniqueUntrustedCs = new ArrayList(); Iterator iter = uniqueInvolvedCs.iterator(); @@ -58,10 +58,10 @@ ChanceAtFault chanceAtFault = null; if (uniqueUntrustedCs.contains(c)) { chanceAtFault = - new ChanceAtFault((FilePassFailure) failFP, c, chanceEachAtFault); + new ChanceAtFault(failFP, c, chanceEachAtFault); } else { chanceAtFault = - new ChanceAtFault((FilePassFailure) failFP, c, 0.0f); + new ChanceAtFault(failFP, c, 0.0f); } chanceAtFaultList.add(chanceAtFault); Added: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/WeightedFullTrustHeuristic.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/WeightedFullTrustHeuristic.java (rev 0) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/faultanalysis/WeightedFullTrustHeuristic.java 2007-09-13 19:43:23 UTC (rev 522) @@ -0,0 +1,161 @@ +package org.cishell.testing.convertertester.core.tester2.reportgen.faultanalysis; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.cishell.testing.convertertester.core.converter.graph.Converter; +import org.cishell.testing.convertertester.core.tester2.reportgen.results.FilePassResult; + +/** + * + * @author mwlinnem + * + * A less naive approach to assessing likelihood of fault, + * that gives higher weight to the converter that caused the error for + * failures in conversion, and increases chance at fault for converters + * involved more than once in the conversion path + */ +public class WeightedFullTrustHeuristic implements ChanceAtFaultHeuristic{ + + public static final Float TRUSTED_FAULT_SCORE = new Float(0); + public static final Float DEFAULT_FAULT_SCORE = new Float(1); + public static final Float FAILED_CONV_FAULT_SCORE = new Float(2); + + public ChanceAtFault[] determine(FilePassResult failFP, + Converter[] involvedCs, + Converter[] trustedCs) { + + List trustedCList = Arrays.asList(trustedCs); + + //eliminate converters that are trusted + + List unTrustedCs = new ArrayList(); + for (int ii = 0; ii < involvedCs.length; ii++) { + Converter c = involvedCs[ii]; + + if (! trustedCList.contains(c)) { + unTrustedCs.add(c); + } + } + + //assign fault scores to each untrusted converter + + Map convToFaultScore = new HashMap(); + + float totalFaultScore = 0.0f; + for (int ii = 0; ii < unTrustedCs.size(); ii++) { + Converter untrustedC = (Converter) unTrustedCs.get(ii); + + Float oldFaultScore = (Float) convToFaultScore.get(untrustedC); + Float newFaultScore; + if (oldFaultScore == null) { + //first occurrence of this converter + + if (! isConvThatFailed(untrustedC, failFP)) { + newFaultScore = DEFAULT_FAULT_SCORE; + } else { + newFaultScore = FAILED_CONV_FAULT_SCORE; + } + + } else { + //converter has occurred before + + newFaultScore = new Float(oldFaultScore.floatValue() + + DEFAULT_FAULT_SCORE.floatValue()); + } + + convToFaultScore.put(untrustedC, newFaultScore); + totalFaultScore += newFaultScore.floatValue(); + } + + //return chance each converter is at fault, based on fault scores. + + + List resultCAFList = new ArrayList(); + + + + + for (int ii = 0; ii < involvedCs.length; ii++) { + Converter involvedC = involvedCs[ii]; + + Float faultScore = (Float) convToFaultScore.get(involvedC); + //if there is no associated score... + if (faultScore == null) { + //this converter must have been removed because it was + //trusted, so give it the fault score for trusted converters. + faultScore = TRUSTED_FAULT_SCORE; + } + + float normalizedFaultScore = + faultScore.floatValue() / totalFaultScore; + + ChanceAtFault resultCAF = new ChanceAtFault(failFP, involvedC, + normalizedFaultScore); + + resultCAFList.add(resultCAF); + } + + return (ChanceAtFault[]) resultCAFList.toArray(new ChanceAtFault[0]); + + + + +// +// //easier to deal with as a list +// List trustedCList = Arrays.asList(trustedCs); +// +// //eliminate converters involved twice in the file pass +// +// Set uniqueInvolvedCs = new HashSet(); +// for (int ii = 0; ii < involvedCs.length; ii++) { +// uniqueInvolvedCs.add(involvedCs[ii]); +// } +// //eliminate converters that are trusted +// +// List uniqueUntrustedCs = new ArrayList(); +// Iterator iter = uniqueInvolvedCs.iterator(); +// while (iter.hasNext()) { +// Converter c = (Converter) iter.next(); +// if (! trustedCList.contains(c)) { +// //converter isn't trusted +// //add it to the list +// uniqueUntrustedCs.add(c); +// } else { +// //converter is trusted +// //do nothing +// } +// } +// +// float chanceEachAtFault = 1.0f / uniqueUntrustedCs.size(); +// +// List chanceAtFaultList = new ArrayList(); +// for (int ii = 0; ii < involvedCs.length; ii++) { +// Converter c = involvedCs[ii]; +// +// ChanceAtFault chanceAtFault = null; +// if (uniqueUntrustedCs.contains(c)) { +// chanceAtFault = +// new ChanceAtFault((FilePassFailure) failFP, c, chanceEachAtFault); +// } else { +// chanceAtFault = +// new ChanceAtFault((FilePassFailure) failFP, c, 0.0f); +// } +// +// chanceAtFaultList.add(chanceAtFault); +// } +// +// return (ChanceAtFault[]) +// chanceAtFaultList.toArray(new ChanceAtFault[0]); + } + + private boolean isConvThatFailed(Converter c, FilePassResult failFP) { + return failFP.failedWhileConverting() && + failFP.getFailedConverter() == c; + } +} Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/ConvResult.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/ConvResult.java 2007-09-13 18:47:33 UTC (rev 521) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/ConvResult.java 2007-09-13 19:43:23 UTC (rev 522) @@ -88,11 +88,6 @@ this.failedInvolvedPasses.add(fpr); } } - - System.out.println(conv.getUniqueName() + - " is involved in " + succeededInvolvedPasses.size() + " successful passes"); - System.out.println(conv.getUniqueName() + - " is involved in " + failedInvolvedPasses.size() + " failed passes"); } private void initializePercentPassed() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |