package com.griddynamics.jagger.test.jaas.validator; import com.griddynamics.jagger.coordinator.NodeContext; import com.griddynamics.jagger.engine.e1.collector.ResponseValidator; import com.griddynamics.jagger.engine.e1.collector.ResponseValidatorProvider; import com.griddynamics.jagger.invoker.v2.JHttpEndpoint; import com.griddynamics.jagger.invoker.v2.JHttpQuery; import com.griddynamics.jagger.invoker.v2.JHttpResponse; import junit.framework.AssertionFailedError; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import static junit.framework.Assert.assertTrue; public abstract class BaseHttpResponseValidator<T> implements ResponseValidatorProvider { private static final Logger LOGGER = LoggerFactory.getLogger(BaseHttpResponseValidator.class); @Override public ResponseValidator<?, ?, ?> provide(String sessionId, String taskId, NodeContext kernelContext) { String name = getName(); return new ResponseValidator<JHttpQuery<String>, JHttpEndpoint, JHttpResponse<T>>(sessionId, taskId, kernelContext) { @Override public String getName() { return name; } @Override public boolean validate(JHttpQuery<String> query, JHttpEndpoint endpoint, JHttpResponse<T> result, long duration) { boolean isValid; try { assertTrue("The response is not valid.", isValid(query, endpoint, result)); isValid = true; } catch (AssertionFailedError e) { isValid = false; LOGGER.warn("{}'s query response content is not valid, due to [{}].", query.toString(), e.getMessage()); LOGGER.warn(String.format ("------> Failed response:\n%s \n%s", endpoint.toString(), result.toString())); } return isValid; } }; } public abstract String getName(); protected abstract boolean isValid(JHttpQuery<String> query, JHttpEndpoint endpoint, JHttpResponse<T> result); }