org.testng.reporters.jq.TimesPanel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of testng Show documentation
Show all versions of testng Show documentation
Testing framework for Java
package org.testng.reporters.jq;
import org.testng.ISuite;
import org.testng.ITestNGMethod;
import org.testng.ITestResult;
import org.testng.collections.Maps;
import org.testng.reporters.XMLStringBuffer;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
public class TimesPanel extends BaseMultiSuitePanel {
private Map m_totalTime = Maps.newHashMap();
public TimesPanel(Model model) {
super(model);
}
@Override
public String getPrefix() {
return "times-";
}
@Override
public String getHeader(ISuite suite) {
return "Times for " + suite.getName();
}
private String js(ISuite suite) {
String functionName = "tableData_" + suiteToTag(suite);
StringBuilder result = new StringBuilder(
"suiteTableInitFunctions.push('" + functionName + "');\n"
+ "function " + functionName + "() {\n"
+ "var data = new google.visualization.DataTable();\n"
+ "data.addColumn('number', 'Number');\n"
+ "data.addColumn('string', 'Method');\n"
+ "data.addColumn('string', 'Class');\n"
+ "data.addColumn('number', 'Time (ms)');\n");
List allTestResults = getModel().getAllTestResults(suite);
result.append(
"data.addRows(" + allTestResults.size() + ");\n");
Collections.sort(allTestResults, new Comparator() {
@Override
public int compare(ITestResult o1, ITestResult o2) {
long t1 = o1.getEndMillis() - o1.getStartMillis();
long t2 = o2.getEndMillis() - o2.getStartMillis();
return (int) (t2 - t1);
}
});
int index = 0;
for (ITestResult tr : allTestResults) {
ITestNGMethod m = tr.getMethod();
long time = tr.getEndMillis() - tr.getStartMillis();
result
.append("data.setCell(" + index + ", "
+ "0, " + index + ")\n")
.append("data.setCell(" + index + ", "
+ "1, '" + m.getMethodName() + "')\n")
.append("data.setCell(" + index + ", "
+ "2, '" + m.getTestClass().getName() + "')\n")
.append("data.setCell(" + index + ", "
+ "3, " + time + ");\n");
Long total = m_totalTime.get(suite.getName());
if (total == null) {
total = 0L;
}
m_totalTime.put(suite.getName(), total + time);
index++;
}
result.append(
"window.suiteTableData['" + suiteToTag(suite) + "']" +
"= { tableData: data, tableDiv: 'times-div-" + suiteToTag(suite) + "'}\n"
+ "return data;\n" +
"}\n");
return result.toString();
}
@Override
public String getContent(ISuite suite, XMLStringBuffer main) {
XMLStringBuffer xsb = new XMLStringBuffer(main.getCurrentIndent());
xsb.push(D, C, "times-div");
xsb.push("script", "type", "text/javascript");
xsb.addString(js(suite));
xsb.pop("script");
Long time = m_totalTime.get(suite.getName());
if (time != null) {
xsb.addRequired(S, String.format("Total running time: %s", prettyDuration(time)),
C, "suite-total-time");
}
xsb.push(D, "id", "times-div-" + suiteToTag(suite));
xsb.pop(D);
xsb.pop(D);
return xsb.toXML();
}
private String prettyDuration(long totalTime) {
String result;
if (totalTime < 1000) {
result = totalTime + " ms";
} else if (totalTime < 1000 * 60) {
result = (totalTime / 1000) + " seconds";
} else if (totalTime < 1000 * 60 * 60) {
result = (totalTime / 1000 / 60) + " minutes";
} else {
result = (totalTime / 1000 / 60 / 60) + " hours";
}
return result;
}
@Override
public String getNavigatorLink(ISuite suite) {
return "Times";
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy