From ea0902d22f9ca93c6363d31ea9c403066873b24c Mon Sep 17 00:00:00 2001 From: austin Date: Thu, 22 Aug 2024 19:09:21 -0400 Subject: [PATCH] entity-scene testing tools --- .../game/data/item/type/model/ItemTypeMap.java | 4 ++++ .../java/electrosphere/net/client/ClientNetworking.java | 4 +++- .../electrosphere/net/server/ServerConnectionHandler.java | 8 +++++++- .../entity/state/equip/ServerEquipStateTests.java | 4 +--- .../electrosphere/renderer/ui/elements/WindowTest.java | 1 - src/test/java/template/EntityTestTemplate.java | 7 +++++++ src/test/java/testutils/EngineInit.java | 3 +-- 7 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/main/java/electrosphere/game/data/item/type/model/ItemTypeMap.java b/src/main/java/electrosphere/game/data/item/type/model/ItemTypeMap.java index 10d90a4b..150828b3 100644 --- a/src/main/java/electrosphere/game/data/item/type/model/ItemTypeMap.java +++ b/src/main/java/electrosphere/game/data/item/type/model/ItemTypeMap.java @@ -1,6 +1,8 @@ package electrosphere.game.data.item.type.model; import electrosphere.game.data.item.type.Item; +import electrosphere.logger.LoggerInterface; + import java.util.List; public class ItemTypeMap { @@ -16,6 +18,8 @@ public class ItemTypeMap { if(item.getItemId().equals(name)){ rVal = item; break; + } else if(item.getItemId().equalsIgnoreCase(name)){ + LoggerInterface.loggerEngine.WARNING("Failed to fetch item type data; however, item with different-capitalized name exists! May be a capitalization error!"); } } return rVal; diff --git a/src/main/java/electrosphere/net/client/ClientNetworking.java b/src/main/java/electrosphere/net/client/ClientNetworking.java index 6262b980..0474d5ba 100644 --- a/src/main/java/electrosphere/net/client/ClientNetworking.java +++ b/src/main/java/electrosphere/net/client/ClientNetworking.java @@ -8,6 +8,8 @@ import electrosphere.net.parser.net.message.ServerMessage; import electrosphere.net.parser.net.message.NetworkMessage.MessageType; import electrosphere.net.parser.net.message.ServerMessage.ServerMessageType; import electrosphere.net.parser.net.raw.NetworkParser; +import electrosphere.net.server.ServerConnectionHandler; + import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -168,7 +170,7 @@ public class ClientNetworking implements Runnable { //start parsing messages initialized = true; - while(Main.isRunning()){ + while((Main.isRunning() || !ServerConnectionHandler.AUTO_CLOSE_THREAD)){ //attempt poll incoming messages parser.readMessagesIn(); //outgoing messages diff --git a/src/main/java/electrosphere/net/server/ServerConnectionHandler.java b/src/main/java/electrosphere/net/server/ServerConnectionHandler.java index 382c4a25..8ec2dbb8 100644 --- a/src/main/java/electrosphere/net/server/ServerConnectionHandler.java +++ b/src/main/java/electrosphere/net/server/ServerConnectionHandler.java @@ -25,6 +25,12 @@ import java.util.concurrent.TimeUnit; * A connection to the server */ public class ServerConnectionHandler implements Runnable { + + /** + * Automatically close threads if the main thread ends. + * Used to make sure threads don't close while running test suite. + */ + public static boolean AUTO_CLOSE_THREAD = true; //the player id associated with this connection static int playerIdIncrementer = 0; @@ -193,7 +199,7 @@ public class ServerConnectionHandler implements Runnable { initialized = true; - while(Main.isRunning() && this.isConnected == true){ + while((Main.isRunning() || !ServerConnectionHandler.AUTO_CLOSE_THREAD) && this.isConnected == true){ // // Main Loop diff --git a/src/test/java/electrosphere/entity/state/equip/ServerEquipStateTests.java b/src/test/java/electrosphere/entity/state/equip/ServerEquipStateTests.java index 2f64c9e6..8776320b 100644 --- a/src/test/java/electrosphere/entity/state/equip/ServerEquipStateTests.java +++ b/src/test/java/electrosphere/entity/state/equip/ServerEquipStateTests.java @@ -3,7 +3,6 @@ package electrosphere.entity.state.equip; import static org.junit.jupiter.api.Assertions.assertNotNull; import org.joml.Vector3d; -import org.junit.jupiter.api.Disabled; import annotations.IntegrationTest; import electrosphere.engine.Globals; @@ -20,14 +19,13 @@ import testutils.TestEngineUtils; */ public class ServerEquipStateTests extends EntityTestTemplate { - @Disabled @IntegrationTest public void spawningWithEquippedItem(){ TestEngineUtils.simulateFrames(1); //spawn entities CreatureTemplate creatureTemplate = CreatureTemplate.createDefault("human"); Entity creature = CreatureUtils.serverSpawnBasicCreature(Globals.realmManager.first(), new Vector3d(0,0,0), "human", creatureTemplate); - Entity katana = ItemUtils.serverSpawnBasicItem(Globals.realmManager.first(), new Vector3d(0,0,0), "katana2H"); + Entity katana = ItemUtils.serverSpawnBasicItem(Globals.realmManager.first(), new Vector3d(0,0,0), "Katana2H"); //equip Entity inInventoryItem = InventoryUtils.serverAttemptStoreItem(creature, katana); diff --git a/src/test/java/electrosphere/renderer/ui/elements/WindowTest.java b/src/test/java/electrosphere/renderer/ui/elements/WindowTest.java index 313ae569..2e548d12 100644 --- a/src/test/java/electrosphere/renderer/ui/elements/WindowTest.java +++ b/src/test/java/electrosphere/renderer/ui/elements/WindowTest.java @@ -5,7 +5,6 @@ import electrosphere.menu.WindowUtils; import electrosphere.menu.mainmenu.MenuGeneratorsUITesting; import template.RenderingTestTemplate; import testutils.TestEngineUtils; -import testutils.TestRenderingUtils; /** * Tests for the window class diff --git a/src/test/java/template/EntityTestTemplate.java b/src/test/java/template/EntityTestTemplate.java index a50832fe..f3ec928e 100644 --- a/src/test/java/template/EntityTestTemplate.java +++ b/src/test/java/template/EntityTestTemplate.java @@ -1,6 +1,7 @@ package template; import annotations.IntegrationSetup; +import electrosphere.net.server.ServerConnectionHandler; import testutils.EngineInit; import testutils.TestEngineUtils; @@ -12,7 +13,13 @@ public abstract class EntityTestTemplate extends RenderingTestTemplate { @IntegrationSetup @Override public void initEngine(){ + //init engine TestEngineUtils.initGraphicalEngine(); + + //make sure the server network threads continue to execute even if the main thread dies + ServerConnectionHandler.AUTO_CLOSE_THREAD = false; + + //load scene EngineInit.setupConnectedTestScene(); } diff --git a/src/test/java/testutils/EngineInit.java b/src/test/java/testutils/EngineInit.java index 670ed7bd..aaff802f 100644 --- a/src/test/java/testutils/EngineInit.java +++ b/src/test/java/testutils/EngineInit.java @@ -18,6 +18,7 @@ public class EngineInit { public static void setupConnectedTestScene(){ LoadingThread loadingThread = null; + LoggerInterface.loggerNetworking.setLevel(LogLevel.LOOP_DEBUG); // @@ -25,8 +26,6 @@ public class EngineInit { loadingThread = new LoadingThread(LoadingThreadType.LEVEL,"testscene1"); loadingThread.start(); - LoggerInterface.loggerNetworking.setLevel(LogLevel.LOOP_DEBUG); - // //wait for client to be fully init'd while(((Window)Globals.elementManager.getWindow(WindowStrings.WINDOW_LOADING)).getVisible() || Globals.playerEntity == null){