mirror of https://github.com/OpenVidu/openvidu.git
openvidu-test-e2e: move restart methods to parent OpenViduTestE2e
parent
6069095804
commit
0d03131217
|
@ -16,7 +16,9 @@ import java.util.HashSet;
|
|||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
@ -37,6 +39,7 @@ import org.testcontainers.containers.wait.strategy.WaitStrategy;
|
|||
import org.testcontainers.shaded.org.apache.commons.io.FileUtils;
|
||||
import org.testcontainers.utility.DockerImageName;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
|
@ -734,4 +737,82 @@ public class OpenViduTestE2e {
|
|||
return set.stream().skip((int) (set.size() * Math.random())).findFirst().get();
|
||||
}
|
||||
|
||||
protected JsonObject restartOpenViduServer(Map<String, Object> newConfig) {
|
||||
return this.restartOpenViduServer(newConfig, false, HttpStatus.SC_OK);
|
||||
}
|
||||
|
||||
protected JsonObject restartOpenViduServer(Map<String, Object> newConfig, boolean force, int status) {
|
||||
CustomHttpClient restClient = null;
|
||||
try {
|
||||
restClient = new CustomHttpClient(OPENVIDU_URL, "OPENVIDUAPP", OPENVIDU_SECRET);
|
||||
Gson gson = new Gson();
|
||||
String body = gson.toJson(newConfig);
|
||||
JsonObject currentConfig = restClient.rest(HttpMethod.GET, "/openvidu/api/config", 200);
|
||||
boolean mustRestart = false;
|
||||
|
||||
for (Entry<String, Object> newProp : newConfig.entrySet()) {
|
||||
mustRestart = !currentConfig.has(newProp.getKey())
|
||||
|| !currentConfig.get(newProp.getKey()).equals(gson.toJsonTree(newProp.getValue()));
|
||||
if (mustRestart) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (mustRestart || force) {
|
||||
final int currentRestartCounter = restClient
|
||||
.rest(HttpMethod.GET, "/openvidu/api/status", null, HttpStatus.SC_OK, true, false, true,
|
||||
"{'startTime': 0, 'restartCounter': 0, 'lastRestartTime': 0}")
|
||||
.get("restartCounter").getAsInt();
|
||||
JsonObject response = restClient.rest(HttpMethod.POST, "/openvidu/api/restart", body, status);
|
||||
if (HttpStatus.SC_OK == status) {
|
||||
waitUntilOpenViduRestarted(restClient, currentRestartCounter, 120);
|
||||
}
|
||||
return response;
|
||||
} else {
|
||||
log.info("Restarting OpenVidu Server is not necessary and is \"force\" is false");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
Assertions.fail("Error restarting OpenVidu Server");
|
||||
} finally {
|
||||
if (restClient != null) {
|
||||
try {
|
||||
restClient.shutdown();
|
||||
} catch (IOException e) {
|
||||
log.error("Error shutting down HTTP client: {}", e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected void waitUntilOpenViduRestarted(CustomHttpClient restClient, int previouesRestartCounter,
|
||||
int maxSecondsWait) throws Exception {
|
||||
boolean restarted = false;
|
||||
int msInterval = 500;
|
||||
int attempts = 0;
|
||||
final int maxAttempts = maxSecondsWait * 1000 / msInterval;
|
||||
while (!restarted && attempts < maxAttempts) {
|
||||
try {
|
||||
JsonObject response = restClient.rest(HttpMethod.GET, "/openvidu/api/status", HttpStatus.SC_OK);
|
||||
if (response.get("restartCounter").getAsInt() == (previouesRestartCounter + 1)) {
|
||||
restarted = true;
|
||||
} else {
|
||||
throw new Exception("Wrong restartCounter");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
log.error("Waiting for OpenVidu Server...");
|
||||
Thread.sleep(msInterval);
|
||||
} catch (InterruptedException e1) {
|
||||
log.error("Sleep interrupted");
|
||||
}
|
||||
attempts++;
|
||||
}
|
||||
}
|
||||
if (!restarted && attempts == maxAttempts) {
|
||||
throw new TimeoutException();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue