package test.retryAnalyzer.dataprovider;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
public class DataProviderRetryAnalyzer implements IRetryAnalyzer {
private static final int MAX_RETRY_COUNT = 3;
private final Map<Integer, AtomicInteger> counts = new HashMap<>();
private AtomicInteger getCount(ITestResult result) {
int id = Arrays.hashCode(result.getParameters());
AtomicInteger count = counts.get(id);
if (count == null) {
count = new AtomicInteger(MAX_RETRY_COUNT);
counts.put(id, count);
}
return count;
}
@Override
public boolean retry(ITestResult result) {
int retriesRemaining = getCount(result).getAndDecrement();
return retriesRemaining > 0;
}
}