package com.vip.saturn.it.utils;
import com.vip.saturn.it.SaturnAutoBasic;
import com.vip.saturn.job.executor.Main;
import com.vip.saturn.job.internal.config.JobConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Canned {@link ExpectedCondition}s which are generally useful within saturn test.
* Created by gilbert.guo on 2016/9/26.
*/
public class ExpectedConditions extends SaturnAutoBasic {
private static final Logger log = LoggerFactory.getLogger(ExpectedConditions.class);
private ExpectedConditions() {
// Utility class
}
public static ExpectedCondition executorHasSuccessCount(final JobConfiguration jobConfiguration, final Main executor) {
return new ExpectedCondition() {
@Override
public boolean apply(Object input) {
String successCount = getSuccessCountOfExecutor(jobConfiguration, executor);
//is null when begin
return successCount != null && Integer.parseInt(successCount) >= 1;
}
};
}
public static ExpectedCondition executorProcessCountChanged(final JobConfiguration jobConfiguration, final Main executor) {
return new ExpectedCondition() {
final String successCountBefore = getSuccessCountOfExecutor(jobConfiguration, executor);
final String failureCountBefore = getFailureCountOfExecutor(jobConfiguration, executor);
@Override
public boolean apply(Object input) {
String successCount = getSuccessCountOfExecutor(jobConfiguration, executor);
String failureCount = getFailureCountOfExecutor(jobConfiguration, executor);
if ((successCount == null) || (failureCount == null)) {
return false;
} else return !(successCount.equals(successCountBefore) && failureCount.equals(failureCountBefore));
}
};
}
/**
* all shards having completed znode and wait some time
*/
public static ExpectedCondition jobFinish(final String jobName, final int shardCount) {
return new ExpectedCondition() {
@Override
public boolean apply(Object input) {
return hasCompletedZnodeForAllShards(jobName, shardCount);
}
};
}
}