Introduce delay in SessionTimeoutsTest to allow xsite replication to finish
Fixes #20983
This commit is contained in:
parent
cd732ae44f
commit
67b20dfd9b
1 changed files with 21 additions and 0 deletions
|
@ -22,6 +22,7 @@ import org.junit.FixMethodOrder;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runners.MethodSorters;
|
import org.junit.runners.MethodSorters;
|
||||||
import org.keycloak.common.util.Time;
|
import org.keycloak.common.util.Time;
|
||||||
|
import org.keycloak.connections.infinispan.InfinispanConnectionProvider;
|
||||||
import org.keycloak.models.AuthenticatedClientSessionModel;
|
import org.keycloak.models.AuthenticatedClientSessionModel;
|
||||||
import org.keycloak.models.ClientModel;
|
import org.keycloak.models.ClientModel;
|
||||||
import org.keycloak.models.Constants;
|
import org.keycloak.models.Constants;
|
||||||
|
@ -34,6 +35,7 @@ import org.keycloak.models.UserProvider;
|
||||||
import org.keycloak.models.UserSessionProvider;
|
import org.keycloak.models.UserSessionProvider;
|
||||||
import org.keycloak.protocol.oidc.OIDCConfigAttributes;
|
import org.keycloak.protocol.oidc.OIDCConfigAttributes;
|
||||||
import org.keycloak.protocol.oidc.OIDCLoginProtocol;
|
import org.keycloak.protocol.oidc.OIDCLoginProtocol;
|
||||||
|
import org.keycloak.testsuite.model.HotRodServerRule;
|
||||||
import org.keycloak.testsuite.model.KeycloakModelTest;
|
import org.keycloak.testsuite.model.KeycloakModelTest;
|
||||||
import org.keycloak.testsuite.model.RequireProvider;
|
import org.keycloak.testsuite.model.RequireProvider;
|
||||||
import org.keycloak.testsuite.model.infinispan.InfinispanTestUtil;
|
import org.keycloak.testsuite.model.infinispan.InfinispanTestUtil;
|
||||||
|
@ -255,6 +257,8 @@ public class SessionTimeoutsTest extends KeycloakModelTest {
|
||||||
return new String[]{userSession.getId(), clientSession.getId()};
|
return new String[]{userSession.getId(), clientSession.getId()};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
allowXSiteReplication(offline);
|
||||||
|
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
for (int i = 0; i < refreshTimes; i++) {
|
for (int i = 0; i < refreshTimes; i++) {
|
||||||
offset += 1500;
|
offset += 1500;
|
||||||
|
@ -357,4 +361,21 @@ public class SessionTimeoutsTest extends KeycloakModelTest {
|
||||||
public void testOnlineUserClientIdleTimeoutSmallerThanSessionOneRefresh() {
|
public void testOnlineUserClientIdleTimeoutSmallerThanSessionOneRefresh() {
|
||||||
testUserClientIdleTimeoutSmallerThanSession(1, false, false);
|
testUserClientIdleTimeoutSmallerThanSession(1, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method introduces a delay to allow replication of clientSession cache on site 1 and site 2.
|
||||||
|
* Without the delay these test fails from time to time. This has no effect when tests run without cross-dc
|
||||||
|
* @param offline boolean Indicates where we work with offline sessions
|
||||||
|
*/
|
||||||
|
private void allowXSiteReplication(boolean offline) {
|
||||||
|
HotRodServerRule hotRodServer = getParameters(HotRodServerRule.class).findFirst().orElse(null);
|
||||||
|
if (hotRodServer != null) {
|
||||||
|
String cacheName = offline ? InfinispanConnectionProvider.OFFLINE_CLIENT_SESSION_CACHE_NAME : InfinispanConnectionProvider.CLIENT_SESSION_CACHE_NAME;
|
||||||
|
while (hotRodServer.getHotRodCacheManager().getCache(cacheName).size() != hotRodServer.getHotRodCacheManager2().getCache(cacheName).size()) {
|
||||||
|
try {
|
||||||
|
Thread.sleep(5);
|
||||||
|
} catch (InterruptedException e) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue