package org.keycloak.testsuite.performance;
/**
*
* @author tkyjovsk
*/
public class LoginLogoutTestParameters {
// Statistics
public static final String ACCESS_REQUEST_TIME = "ACCESS_REQUEST";
public static final String LOGIN_REQUEST_TIME = "LOGIN_REQUEST";
public static final String LOGIN_VERIFY_REQUEST_TIME = "LOGIN_VERIFY_REQUEST";
public static final String LOGOUT_REQUEST_TIME = "LOGOUT_REQUEST";
public static final String LOGOUT_VERIFY_REQUEST_TIME = "LOGOUT_VERIFY_REQUEST";
// Limits
public static final Integer MAX_LOGIN_TIME_AVERAGE = Integer.parseInt(System.getProperty("max.login.time.average", "500"));
public static final Integer MAX_LOGOUT_TIME_AVERAGE = Integer.parseInt(System.getProperty("max.logout.time.average", "500"));
public static final double MAX_TIMEOUT_PERCENTAGE = Double.parseDouble(System.getProperty("max.timeout.percentage", "0"));
// Other
public static final Integer PASSWORD_HASH_ITERATIONS = Integer.parseInt(System.getProperty("password.hash.iterations", "1"));
public static boolean isMeasurementWithinLimits(PerformanceMeasurement measurement) {
return isTimeoutPercentageWithinLimits(measurement)
&& measurement.getStatistics().get(LOGIN_REQUEST_TIME).getAverage() < MAX_LOGIN_TIME_AVERAGE
&& measurement.getStatistics().get(LOGOUT_REQUEST_TIME).getAverage() < MAX_LOGOUT_TIME_AVERAGE;
}
public static boolean isTimeoutPercentageWithinLimits(PerformanceMeasurement measurement) {
boolean withinLimits = true;
for (String statistic : measurement.getStatistics().keySet()) {
withinLimits = withinLimits && measurement.getTimeoutPercentage(statistic) <= MAX_TIMEOUT_PERCENTAGE;
}
return withinLimits;
}
}