From 637230c744427234b1f22068fb2456cba1194d05 Mon Sep 17 00:00:00 2001 From: austin Date: Thu, 29 Aug 2024 14:53:51 -0400 Subject: [PATCH] hard kill test on timeout during setup --- .../engine/threads/ThreadManager.java | 10 ++++++++++ src/test/java/testutils/EngineInit.java | 14 ++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/main/java/electrosphere/engine/threads/ThreadManager.java b/src/main/java/electrosphere/engine/threads/ThreadManager.java index c48300a5..a6c4f6e8 100644 --- a/src/main/java/electrosphere/engine/threads/ThreadManager.java +++ b/src/main/java/electrosphere/engine/threads/ThreadManager.java @@ -1,5 +1,7 @@ package electrosphere.engine.threads; +import java.util.Collection; +import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.concurrent.Semaphore; @@ -82,6 +84,14 @@ public class ThreadManager { return loadingThreads.size() > 0; } + /** + * Gets the list of loading threads + * @return The list of loading threads + */ + public List getLoadingThreads(){ + return Collections.unmodifiableList(loadingThreads); + } + /** * Tries to close all threads */ diff --git a/src/test/java/testutils/EngineInit.java b/src/test/java/testutils/EngineInit.java index ea99fd31..20273419 100644 --- a/src/test/java/testutils/EngineInit.java +++ b/src/test/java/testutils/EngineInit.java @@ -7,6 +7,9 @@ import electrosphere.engine.loadingthreads.LoadingThread; import electrosphere.engine.loadingthreads.LoadingThread.LoadingThreadType; public class EngineInit { + + //The maximum number of frames to wait before failing the startup routine + public static final int MAX_FRAMES_TO_WAIT = 1000; /** * Setups up a locally-connected client and server that have loaded a test scene @@ -19,6 +22,7 @@ public class EngineInit { // //wait for client to be fully init'd + int frames = 0; while(Globals.threadManager.isLoading()){ TestEngineUtils.simulateFrames(1); try { @@ -26,6 +30,16 @@ public class EngineInit { } catch (InterruptedException e) { e.printStackTrace(); } + frames++; + if(frames > MAX_FRAMES_TO_WAIT){ + String errorMessage = "Failed to setup connected test scene!\n" + + "Still running threads are:\n" + ; + for(LoadingThread thread : Globals.threadManager.getLoadingThreads()){ + errorMessage = errorMessage + thread.getType() + "\n"; + } + throw new IllegalStateException(errorMessage); + } } }