package hudson.plugins.testng.results;
import hudson.model.AbstractBuild;
import hudson.model.ModelObject;
import java.util.*;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
public class PackageResult extends BaseResult implements ModelObject {
private List<ClassResult> classList = new ArrayList<ClassResult>();
private long duration;
private int fail;
private int skip;
private int total;
private List<MethodResult> sortedMethodsByStartTime = new ArrayList<MethodResult>();
public String getUrl() {
return getName();
}
public void setOwner(AbstractBuild<?, ?> owner) {
super.setOwner(owner);
for (ClassResult _class : classList) {
_class.setOwner(owner);
}
}
public List<ClassResult> getClassList() {
return classList;
}
public void setClassList(List<ClassResult> classList) {
this.classList = classList;
}
public long getDuration() {
return duration;
}
public void setDuration(long duration) {
this.duration = duration;
}
public int getFail() {
return fail;
}
public void setFail(int fail) {
this.fail = fail;
}
public int getSkip() {
return skip;
}
public void setSkip(int skip) {
this.skip = skip;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List<MethodResult> getSortedMethodsByStartTime() {
sortTestMethods();
return sortedMethodsByStartTime;
}
public void tally() {
duration = 0;
fail = 0;
skip = 0;
total = 0;
for (ClassResult _c : classList) {
duration += _c.getDuration();
fail += _c.getFail();
skip += _c.getSkip();
total += _c.getTotal();
_c.setParent(this);
_c.tally();
}
}
public Object getDynamic(String token, StaplerRequest req, StaplerResponse rsp) {
// if (token.equals(getId())) {
// return this;
// }
if (token.equals("/" + getName())) {
return this;
}
ClassResult result = null;
for (ClassResult _c : classList) {
if (_c.getName().equals(token)) {
result = _c;
break;
}
}
return result;
}
public String getDisplayName() {
return getName();
}
public void sortTestMethods() {
//for each class
Map<Date, List<MethodResult>> map = new HashMap<Date, List<MethodResult>>();
for (ClassResult aClass : classList) {
if (aClass.getTestMethodList() != null) {
for (MethodResult aMethod : aClass.getTestMethodList()) {
if (!aMethod.getStatus().equals("SKIP")) {
if (aMethod.getStartedAt() != null) {
if (map.containsKey(aMethod.getStartedAt())) {
map.get(aMethod.getStartedAt()).add(aMethod);
} else {
List<MethodResult> list = new ArrayList<MethodResult>();
list.add(aMethod);
map.put(aMethod.getStartedAt(), list);
}
}
}
}
}
}
List<Date> keys = new ArrayList<Date>(map.keySet());
Collections.sort(keys);
//now create the list with the order
for (Date key : keys) {
if (map.containsKey(key)) {
this.sortedMethodsByStartTime.addAll(map.get(key));
}
}
}
public long
getFailedTestsCount() {
int failedTests = 0;
for (ClassResult aClass : classList) {
if (aClass.getTestMethodList() != null) {
for (MethodResult aMethod : aClass.getTestMethodList()) {
if (aMethod.getStatus().equals("FAIL")) {
failedTests++;
}
}
}
}
return failedTests;
}
public long
getSkippedTestsCount() {
int skippedTests = 0;
for (ClassResult aClass : classList) {
if (aClass.getTestMethodList() != null) {
for (MethodResult aMethod : aClass.getTestMethodList()) {
if (!aMethod.isConfig() && aMethod.getStatus().equals("SKIP")) {
skippedTests++;
}
}
}
}
return skippedTests;
}
public long
getPassedTestsCount() {
int passTests = 0;
for (ClassResult aClass : classList) {
if (aClass.getTestMethodList() != null) {
for (MethodResult aMethod : aClass.getTestMethodList()) {
if (!aMethod.isConfig() && aMethod.getStatus().equals("PASS")) {
passTests++;
}
}
}
}
return passTests;
}
public long
getTotalTestsCount() {
int totalTests = 0;
for (ClassResult aClass : classList) {
if (aClass.getTestMethodList() != null) {
for (MethodResult aMethod : aClass.getTestMethodList()) {
if (!aMethod.isConfig()) {
totalTests++;
}
}
}
}
return totalTests;
}
}