package net.codjo.segmentation.server.participant.context;
import java.util.concurrent.TimeUnit;
import net.codjo.segmentation.server.blackboard.DefaultErrorLogLimiter;
import net.codjo.segmentation.server.blackboard.ErrorLogLimiter;
import net.codjo.segmentation.server.blackboard.message.Todo;
import org.junit.Assert;
import org.junit.Test;
import org.junit.experimental.theories.DataPoint;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;
/**
*
*/
@RunWith(Theories.class)
public class SessionContextTest {
@DataPoint
public static long TIME_WINDOW_MINUS_2 = -2L;
@DataPoint
public static long TIME_WINDOW_MINUS_1 = -1L;
@DataPoint
public static long TIME_WINDOW_ZERO = 0L;
@DataPoint
public static long TIME_WINDOW_1 = 1L;
@DataPoint
public static long TIME_WINDOW_2 = 2L;
private final SessionContext sessionContext = new SessionContext(null, 0, TimeUnit.SECONDS);
@Test
public void test_getFamilyContext() throws Exception {
FamilyContext context = new FamilyContext(null, null);
sessionContext.put("family-id", context);
Assert.assertSame(context, sessionContext.get("family-id"));
Assert.assertSame(context, sessionContext.getFamilyContext(toTodo("family-id")));
sessionContext.remove("family-id");
Assert.assertNull(sessionContext.get("family-id"));
}
@Theory
public void test_getErrorLogLimiter(long timeWindowValue) {
SessionContext sessionContext = new SessionContext(null, timeWindowValue, TimeUnit.SECONDS);
Class<? extends ErrorLogLimiter> expectedClass = (timeWindowValue <= 0) ?
ErrorLogLimiter.NONE.getClass() :
DefaultErrorLogLimiter.class;
Assert.assertNotNull(sessionContext.getErrorLogLimiter());
Assert.assertEquals(expectedClass, sessionContext.getErrorLogLimiter().getClass());
}
private Todo<TodoContent> toTodo(String familyId) {
return new Todo<TodoContent>(new TodoContent(null, familyId));
}
}