blob: b2f5746e57e36462937468c6a22811500760ffbd [file] [log] [blame]
package org.testng.util;
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import java.util.concurrent.atomic.AtomicInteger;
/**
* An implementation of IRetryAnalyzer that allows you to specify
* the maximum number of times you want your test to be retried.
*
* @author tocman@gmail.com (Jeremie Lenfant-Engelmann)
*/
public abstract class RetryAnalyzerCount implements IRetryAnalyzer {
// Default retry once.
AtomicInteger count = new AtomicInteger(1);
/**
* Set the max number of time the method needs to be retried.
* @param count
*/
protected void setCount(int count) {
this.count.set(count);
}
/**
* Retries the test if count is not 0.
* @param result The result of the test.
*/
public boolean retry(ITestResult result) {
boolean retry = false;
if (count.intValue() > 0) {
retry = retryMethod(result);
count.decrementAndGet();
}
return retry;
}
/**
* The method implemented by the class that test if the test
* must be retried or not.
* @param result The result of the test.
* @return true if the test must be retried, false otherwise.
*/
public abstract boolean retryMethod(ITestResult result);
}