Skip to content

Commit

Permalink
Reverted merge 7e8a50d by huybrechts
Browse files Browse the repository at this point in the history
because of [JENKINS-16766]
  • Loading branch information
ki82 committed Feb 12, 2013
1 parent 7825803 commit a2f12da
Show file tree
Hide file tree
Showing 10 changed files with 51 additions and 281 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -5,3 +5,4 @@
*.ipr
*.ipr
/bin
=======
50 changes: 4 additions & 46 deletions src/main/java/hudson/plugins/claim/AbstractClaimBuildAction.java
@@ -1,13 +1,10 @@
package hudson.plugins.claim;

import hudson.MarkupText;
import hudson.model.AbstractBuild;
import hudson.model.BuildBadgeAction;
import hudson.model.Hudson;
import hudson.model.ProminentProjectAction;
import hudson.model.Saveable;
import hudson.model.User;
import hudson.scm.ChangeLogAnnotator;
import hudson.tasks.junit.TestAction;

import java.io.IOException;
Expand All @@ -22,7 +19,7 @@
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;

@ExportedBean(defaultVisibility = 5)
@ExportedBean(defaultVisibility = 2)
public abstract class AbstractClaimBuildAction<T extends Saveable> extends TestAction implements BuildBadgeAction,
ProminentProjectAction {

Expand All @@ -49,12 +46,6 @@ public String getUrlName() {
return "claim";
}

public T getOwner() {
return owner;
}

public abstract AbstractBuild<?,?> getBuild();

public void doClaim(StaplerRequest req, StaplerResponse resp)
throws ServletException, IOException {
Authentication authentication = Hudson.getAuthentication();
Expand All @@ -64,7 +55,6 @@ public void doClaim(StaplerRequest req, StaplerResponse resp)
if (StringUtils.isEmpty(reason)) reason = null;
claim(name, reason, sticky);
owner.save();

resp.forwardToPreviousPage(req);
}

Expand All @@ -80,8 +70,7 @@ public String getClaimedBy() {
return claimedBy;
}

@Exported
public String getClaimedByName() {
public String getClaimedByName() {
User user = User.get(claimedBy, false);
if (user != null) {
return user.getDisplayName();
Expand All @@ -104,15 +93,6 @@ public void claim(String claimedBy, String reason, boolean sticky) {
this.claimedBy = claimedBy;
this.reason = reason;
this.transientClaim = !sticky;

for (ClaimListener listener: ClaimListener.all()) {
try {
listener.claimed(this);
} catch (Throwable t) {
t.printStackTrace();
}
}

this.claimDate = new Date();
}

Expand All @@ -129,15 +109,6 @@ public void unclaim() {
this.transientClaim = false;
this.claimDate = null;
// we remember the reason to show it if someone reclaims this build.

for (ClaimListener listener: ClaimListener.all()) {
try {
listener.unclaimed(this);
} catch (Throwable t) {
t.printStackTrace();
}
}

}

public boolean isClaimedByMe() {
Expand All @@ -162,18 +133,6 @@ public String getReason() {
return reason;
}

public String getReasonAnnotated() {
MarkupText text = new MarkupText(reason);
for (ChangeLogAnnotator ann: ChangeLogAnnotator.all()) {
try {
ann.annotate(getBuild(), null, text);
} catch (Exception e) {
}
}
return text.toString(false);
}


public void setReason(String reason) {
this.reason = reason;
}
Expand All @@ -189,9 +148,8 @@ public boolean isTransient() {
public void setTransient(boolean transientClaim) {
this.transientClaim = transientClaim;
}

@Exported
public boolean isSticky() {

public boolean isSticky() {
return !transientClaim;
}

Expand Down
22 changes: 5 additions & 17 deletions src/main/java/hudson/plugins/claim/ClaimBuildAction.java
Expand Up @@ -2,27 +2,19 @@

import java.io.ObjectStreamException;

import hudson.model.AbstractBuild;
import hudson.model.Api;
import org.kohsuke.stapler.export.ExportedBean;
import hudson.model.Run;

@ExportedBean(defaultVisibility=2)
public class ClaimBuildAction extends AbstractClaimBuildAction<AbstractBuild> {
public class ClaimBuildAction extends AbstractClaimBuildAction<Run> {

private static final long serialVersionUID = 1L;

private transient AbstractBuild run;
private transient Run run;

public ClaimBuildAction(AbstractBuild run) {
public ClaimBuildAction(Run run) {
super(run);
}

@Override
public AbstractBuild<?, ?> getBuild() {
return run;
}

public String getDisplayName() {
public String getDisplayName() {
return "Claim Build";
}

Expand All @@ -38,8 +30,4 @@ public Object readResolve() throws ObjectStreamException {
return this;
}

public Api getApi() {
return new Api(new ClaimedBuildsReport.ClaimReportEntry(owner));
}

}
18 changes: 0 additions & 18 deletions src/main/java/hudson/plugins/claim/ClaimListener.java

This file was deleted.

23 changes: 2 additions & 21 deletions src/main/java/hudson/plugins/claim/ClaimTestAction.java
@@ -1,8 +1,6 @@
package hudson.plugins.claim;

import hudson.model.AbstractBuild;
import hudson.plugins.claim.ClaimTestDataPublisher.Data;
import hudson.tasks.junit.CaseResult;

public class ClaimTestAction extends AbstractClaimBuildAction<Data> {

Expand All @@ -16,13 +14,8 @@ public class ClaimTestAction extends AbstractClaimBuildAction<Data> {
public String getDisplayName() {
return "Claim Test";
}

@Override
public AbstractBuild<?, ?> getBuild() {
return getOwner().getBuild();
}

@Override

@Override
public void claim(String claimedBy, String reason, boolean sticky) {
super.claim(claimedBy, reason, sticky);
owner.addClaim(testObjectId, this);
Expand All @@ -33,16 +26,4 @@ public String getNoun() {
return "test";
}

public String getTestObjectId() {
return testObjectId;
}

public CaseResult getCaseResult() {
return (CaseResult) getOwner().
getBuild().
getAction(hudson.tasks.junit.TestResultAction.class).
getResult().
findCorrespondingResult(testObjectId);
}

}
69 changes: 21 additions & 48 deletions src/main/java/hudson/plugins/claim/ClaimTestDataPublisher.java
Expand Up @@ -6,71 +6,47 @@
import hudson.model.BuildListener;
import hudson.model.Descriptor;
import hudson.model.Saveable;
import hudson.tasks.junit.*;
import hudson.tasks.junit.CaseResult;
import hudson.tasks.junit.TestAction;
import hudson.tasks.junit.TestDataPublisher;
import hudson.tasks.junit.TestObject;
import hudson.tasks.junit.TestResult;
import hudson.tasks.junit.TestResultAction;

import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import hudson.util.EditDistance;
import org.kohsuke.stapler.DataBoundConstructor;

public class ClaimTestDataPublisher extends TestDataPublisher {

private final boolean onlyCopyClaimOnSimilarError;


@DataBoundConstructor
public ClaimTestDataPublisher(boolean onlyCopySimilarClaims) {
this.onlyCopyClaimOnSimilarError = onlyCopySimilarClaims;
}


public boolean isOnlyCopyClaimOnSimilarError() {
return onlyCopyClaimOnSimilarError;
}

@Override
public ClaimTestDataPublisher() {}

@Override
public Data getTestData(AbstractBuild<?, ?> build, Launcher launcher,
BuildListener listener, TestResult testResult) {

Data data = new Data(build);

for (SuiteResult suite: testResult.getSuites()) {
for (CaseResult result: suite.getCases()) {
CaseResult previous = result.getPreviousResult();
if (previous != null) {
ClaimTestAction previousAction = previous.getTestAction(ClaimTestAction.class);
if (previousAction != null && previousAction.isClaimed()) {
if (result.getFailCount() > 0 && previousAction.isSticky()) {
if (!onlyCopyClaimOnSimilarError || isSimilar(previous, result)) {
ClaimTestAction action = new ClaimTestAction(data, result.getId());
previousAction.copyTo(action);
data.addClaim(result.getId(), action);
}
}
if (result.getFailCount() == 0) {
new ClaimTestAction(data, result.getId()).unclaim();
}
}
for (CaseResult result: testResult.getFailedTests()) {
CaseResult previous = result.getPreviousResult();
if (previous != null) {
ClaimTestAction previousAction = previous.getTestAction(ClaimTestAction.class);
if (previousAction != null && previousAction.isClaimed() && previousAction.isSticky()) {
ClaimTestAction action = new ClaimTestAction(data, result.getId());
previousAction.copyTo(action);
data.addClaim(result.getId(), action);
}
}
}

return data;

}

public boolean isSimilar(CaseResult a, CaseResult b) {
int similarity = Integer.getInteger(getClass().getName() + ".similarity", 7);

String errorA = a.getErrorDetails();
String errorB = b.getErrorDetails();

int margin = Math.max(errorA.length(), errorB.length()) / similarity;

return EditDistance.editDistance(errorA, errorB) < margin;
}

public static class Data extends TestResultAction.Data implements Saveable {

Expand Down Expand Up @@ -115,10 +91,7 @@ public void addClaim(String testObjectId,
ClaimTestAction claim) {
claims.put(testObjectId, claim);
}

public AbstractBuild<?, ?> getBuild() {
return build;
}

}

@Extension
Expand Down

0 comments on commit a2f12da

Please sign in to comment.