1234c85874acc0cd3360639949fbd566255ab31edCédric Beustpackage org.testng.reporters.jq; 2234c85874acc0cd3360639949fbd566255ab31edCédric Beust 3234c85874acc0cd3360639949fbd566255ab31edCédric Beustimport org.testng.IInvokedMethod; 4234c85874acc0cd3360639949fbd566255ab31edCédric Beustimport org.testng.ISuite; 5234c85874acc0cd3360639949fbd566255ab31edCédric Beustimport org.testng.ITestNGMethod; 6234c85874acc0cd3360639949fbd566255ab31edCédric Beustimport org.testng.ITestResult; 7234c85874acc0cd3360639949fbd566255ab31edCédric Beustimport org.testng.reporters.XMLStringBuffer; 8234c85874acc0cd3360639949fbd566255ab31edCédric Beust 9234c85874acc0cd3360639949fbd566255ab31edCédric Beustimport java.util.Collections; 10234c85874acc0cd3360639949fbd566255ab31edCédric Beustimport java.util.Comparator; 11234c85874acc0cd3360639949fbd566255ab31edCédric Beustimport java.util.List; 12234c85874acc0cd3360639949fbd566255ab31edCédric Beust 13234c85874acc0cd3360639949fbd566255ab31edCédric Beustpublic class ChronologicalPanel extends BaseMultiSuitePanel { 14234c85874acc0cd3360639949fbd566255ab31edCédric Beust 15234c85874acc0cd3360639949fbd566255ab31edCédric Beust public ChronologicalPanel(Model model) { 16234c85874acc0cd3360639949fbd566255ab31edCédric Beust super(model); 17234c85874acc0cd3360639949fbd566255ab31edCédric Beust } 18234c85874acc0cd3360639949fbd566255ab31edCédric Beust 19aa5fe9ce987968d97b2cc613d21487eb87e45cf4Cédric Beust @Override 20aa5fe9ce987968d97b2cc613d21487eb87e45cf4Cédric Beust public String getPrefix() { 21aa5fe9ce987968d97b2cc613d21487eb87e45cf4Cédric Beust return "chronological-"; 22234c85874acc0cd3360639949fbd566255ab31edCédric Beust } 23234c85874acc0cd3360639949fbd566255ab31edCédric Beust 24234c85874acc0cd3360639949fbd566255ab31edCédric Beust @Override 25234c85874acc0cd3360639949fbd566255ab31edCédric Beust public String getHeader(ISuite suite) { 26234c85874acc0cd3360639949fbd566255ab31edCédric Beust return "Methods in chronological order"; 27234c85874acc0cd3360639949fbd566255ab31edCédric Beust } 28234c85874acc0cd3360639949fbd566255ab31edCédric Beust 29234c85874acc0cd3360639949fbd566255ab31edCédric Beust @Override 30234c85874acc0cd3360639949fbd566255ab31edCédric Beust public String getContent(ISuite suite, XMLStringBuffer main) { 310710b19b8aa1faf47bc34bd2557948dccc59fd3dCédric Beust XMLStringBuffer xsb = new XMLStringBuffer(main.getCurrentIndent()); 320710b19b8aa1faf47bc34bd2557948dccc59fd3dCédric Beust List<IInvokedMethod> invokedMethods = suite.getAllInvokedMethods(); 33234c85874acc0cd3360639949fbd566255ab31edCédric Beust 340710b19b8aa1faf47bc34bd2557948dccc59fd3dCédric Beust Collections.sort(invokedMethods, new Comparator<IInvokedMethod>() { 35234c85874acc0cd3360639949fbd566255ab31edCédric Beust @Override 360710b19b8aa1faf47bc34bd2557948dccc59fd3dCédric Beust public int compare(IInvokedMethod arg0, IInvokedMethod arg1) { 370710b19b8aa1faf47bc34bd2557948dccc59fd3dCédric Beust return (int) 380710b19b8aa1faf47bc34bd2557948dccc59fd3dCédric Beust (arg0.getTestResult().getStartMillis() - arg1.getTestResult().getStartMillis()); 39234c85874acc0cd3360639949fbd566255ab31edCédric Beust } 40234c85874acc0cd3360639949fbd566255ab31edCédric Beust }); 41234c85874acc0cd3360639949fbd566255ab31edCédric Beust 42234c85874acc0cd3360639949fbd566255ab31edCédric Beust String currentClass = ""; 43234c85874acc0cd3360639949fbd566255ab31edCédric Beust long start = 0; 44234c85874acc0cd3360639949fbd566255ab31edCédric Beust for (IInvokedMethod im : invokedMethods) { 45234c85874acc0cd3360639949fbd566255ab31edCédric Beust ITestNGMethod m = im.getTestMethod(); 46234c85874acc0cd3360639949fbd566255ab31edCédric Beust// for (ITestResult tr : results) { 47234c85874acc0cd3360639949fbd566255ab31edCédric Beust// ITestNGMethod m = tr.getMethod(); 48234c85874acc0cd3360639949fbd566255ab31edCédric Beust String cls = "test-method"; 49234c85874acc0cd3360639949fbd566255ab31edCédric Beust if (m.isBeforeSuiteConfiguration()) { 50234c85874acc0cd3360639949fbd566255ab31edCédric Beust cls = "configuration-suite before"; 51234c85874acc0cd3360639949fbd566255ab31edCédric Beust } else if (m.isAfterSuiteConfiguration()) { 52234c85874acc0cd3360639949fbd566255ab31edCédric Beust cls = "configuration-suite after"; 53234c85874acc0cd3360639949fbd566255ab31edCédric Beust } else if (m.isBeforeTestConfiguration()) { 54234c85874acc0cd3360639949fbd566255ab31edCédric Beust cls = "configuration-test before"; 55234c85874acc0cd3360639949fbd566255ab31edCédric Beust } else if (m.isAfterTestConfiguration()) { 56234c85874acc0cd3360639949fbd566255ab31edCédric Beust cls = "configuration-test after"; 57234c85874acc0cd3360639949fbd566255ab31edCédric Beust } else if (m.isBeforeClassConfiguration()) { 58234c85874acc0cd3360639949fbd566255ab31edCédric Beust cls = "configuration-class before"; 59234c85874acc0cd3360639949fbd566255ab31edCédric Beust } else if (m.isAfterClassConfiguration()) { 60234c85874acc0cd3360639949fbd566255ab31edCédric Beust cls = "configuration-class after"; 61234c85874acc0cd3360639949fbd566255ab31edCédric Beust } else if (m.isBeforeMethodConfiguration()) { 62234c85874acc0cd3360639949fbd566255ab31edCédric Beust cls = "configuration-method before"; 63234c85874acc0cd3360639949fbd566255ab31edCédric Beust } else if (m.isAfterMethodConfiguration()) { 64234c85874acc0cd3360639949fbd566255ab31edCédric Beust cls = "configuration-method after"; 65234c85874acc0cd3360639949fbd566255ab31edCédric Beust } 66234c85874acc0cd3360639949fbd566255ab31edCédric Beust ITestResult tr = im.getTestResult(); 67234c85874acc0cd3360639949fbd566255ab31edCédric Beust String methodName = Model.getTestResultName(tr); 68234c85874acc0cd3360639949fbd566255ab31edCédric Beust 69234c85874acc0cd3360639949fbd566255ab31edCédric Beust if (!m.getTestClass().getName().equals(currentClass)) { 70234c85874acc0cd3360639949fbd566255ab31edCédric Beust if (!"".equals(currentClass)) { 71234c85874acc0cd3360639949fbd566255ab31edCédric Beust xsb.pop(D); 72234c85874acc0cd3360639949fbd566255ab31edCédric Beust } 73234c85874acc0cd3360639949fbd566255ab31edCédric Beust xsb.push(D, C, "chronological-class"); 74234c85874acc0cd3360639949fbd566255ab31edCédric Beust xsb.addRequired(D, m.getTestClass().getName(), C, "chronological-class-name"); 75234c85874acc0cd3360639949fbd566255ab31edCédric Beust currentClass = m.getTestClass().getName(); 76234c85874acc0cd3360639949fbd566255ab31edCédric Beust } 77234c85874acc0cd3360639949fbd566255ab31edCédric Beust xsb.push(D, C, cls); 7837119809ca0c6f9c63cc5c64e8acfc3097e2856bCédric Beust if (tr.getStatus() == ITestResult.FAILURE) { 7937119809ca0c6f9c63cc5c64e8acfc3097e2856bCédric Beust xsb.push("img", "src", Model.getImage("failed")); 8037119809ca0c6f9c63cc5c64e8acfc3097e2856bCédric Beust xsb.pop("img"); 8137119809ca0c6f9c63cc5c64e8acfc3097e2856bCédric Beust } 8237119809ca0c6f9c63cc5c64e8acfc3097e2856bCédric Beust 8337119809ca0c6f9c63cc5c64e8acfc3097e2856bCédric Beust // No need to check for skipped methods since by definition, they were never 8437119809ca0c6f9c63cc5c64e8acfc3097e2856bCédric Beust // invoked. 8537119809ca0c6f9c63cc5c64e8acfc3097e2856bCédric Beust 86234c85874acc0cd3360639949fbd566255ab31edCédric Beust xsb.addRequired(S, methodName, C, "method-name"); 87234c85874acc0cd3360639949fbd566255ab31edCédric Beust if (start == 0) { 88234c85874acc0cd3360639949fbd566255ab31edCédric Beust start = tr.getStartMillis(); 89234c85874acc0cd3360639949fbd566255ab31edCédric Beust } 90234c85874acc0cd3360639949fbd566255ab31edCédric Beust xsb.addRequired(S, Long.toString(tr.getStartMillis() - start) + " ms", C, "method-start"); 91234c85874acc0cd3360639949fbd566255ab31edCédric Beust xsb.pop(D); 92234c85874acc0cd3360639949fbd566255ab31edCédric Beust } 93234c85874acc0cd3360639949fbd566255ab31edCédric Beust return xsb.toXML(); 94234c85874acc0cd3360639949fbd566255ab31edCédric Beust } 95234c85874acc0cd3360639949fbd566255ab31edCédric Beust 96c92c41936d66dda27d28929671ccd7d304d02781Cédric Beust @Override 97c92c41936d66dda27d28929671ccd7d304d02781Cédric Beust public String getNavigatorLink(ISuite suite) { 98c92c41936d66dda27d28929671ccd7d304d02781Cédric Beust return "Chronological view"; 99c92c41936d66dda27d28929671ccd7d304d02781Cédric Beust } 100c92c41936d66dda27d28929671ccd7d304d02781Cédric Beust 101234c85874acc0cd3360639949fbd566255ab31edCédric Beust} 102