From 3df3beafba426ab061b4b05b773b0970b06b65e1 Mon Sep 17 00:00:00 2001 From: austin Date: Sun, 11 May 2025 14:12:10 -0400 Subject: [PATCH] fix testing --- docs/src/progress/renderertodo.md | 4 +++ saves/testscene1/central.db | Bin 81920 -> 0 bytes saves/testscene1/central.sqlite | Bin 0 -> 28672 bytes .../loadingthreads/ViewportLoading.java | 12 ++++++- .../server/db/DatabaseController.java | 31 +++++++++++++++--- .../test/testutils/TestEngineUtils.java | 5 +-- 6 files changed, 45 insertions(+), 7 deletions(-) delete mode 100644 saves/testscene1/central.db create mode 100644 saves/testscene1/central.sqlite diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 74b9fa62..9c978d71 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1723,6 +1723,10 @@ Player characters not simulated at macro level Macro simulation inventory utilities Build structure goal properly working from macro sim Repairability check when repairing structure +Fix viewport loading +Database warning handling +In memory database support +Fix test utils creating characters diff --git a/saves/testscene1/central.db b/saves/testscene1/central.db deleted file mode 100644 index 5034033f799226d70be8848c6e3119b299ebcdff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81920 zcmeI)T~FIq7{GCxmzV${&~&pj31L)CB7(gz1ltYT0%Rj94G_Xhx)){=w`2_oBo5F{ z)8sGF`+b&aSG(Ppn0DEVZg)FQVkd_rrM+rp{VhVAbA0UQ`JIOt*C~6uTSeP49#yJm zrfn=KlZvV;Um1p?C^7N4D<0l5C02&K7vfp%SnszQQ$F7NF%tb(iD@w<`d##oiQgwK zB7a5p$NwBZ8Xp+@Y4o2_EBrG2TUZ^r(*D+JVlx&55I_I{1m1?g53!K`$*lTwv0SjO zYj(Asw>M1NOl_p(hP&&TWFnh1Qt6H4kiqaZ>)FiXZkBD21k z$i$toDNRo%-tw-dZVje2xPL7EY&g?VO%59T9rbynxn0x)n za%I|6=L&hR;@OFiK0mEi8cufQs@zeF-pi=u;k9-ccumHfyC!O|6w&nQY1Nr;B<*#3 z&l6H|UTgn^nmhGE?ooS#mWRGnEr3)yO?ReA1?ViE zipxr8C!l_w1mD?ln$7=IuV7d|4 znOQ7n-7~(wG9X3fHw)-$R>E-X;l|T zMP6$3KSg}8AbUI{r~4m^m)({Bp(D2KmY** z5I_I{1Q0*~0R-N4fm3x@x#z5wtV^q86^eGH`n3A+(%StzWgR^_C|*`;m9KN9dMUeR ze_FNk`}5D9JU-mdWj2$WiO-fxg+gjGcYShJ%oocmhhOAM`IFuH%8r#-dsZ%AS61#n z+`2fw-djtot~Rg#UntQR@45-`A%Fk^2q1s}0tg_000IagfWR9FjH!duVejuCxYz&U zkN&YBfB*srAbn!82q1s}0tg_000IagfB*sr1Ydy9{|A4L$q)eq p5I_I{1Q0*~0R#|000Hj*Qv(PffB*srAb`~zVtHE^%R8H!;^T_8RjBNXkJNp!u%mBlW!8L4E$ebF z+i6qRCJid;>K+U4H(?dcW1~*m_2Kf|tUj8Vd~cdRGHrvN)at|~MdA^ys0|%w`u)?& zMRiZS9wu&=2W8@nY0N$z$xP18@%zDG+bxT|D?Mn_R)^X(dhKv@Xz14}XZ)eatmW*B z^w{L|G=I4jq>OqH?TieiiHiN+M1X(qCN?c{N?k3Al|_Rw>=H}dEmYPv3YFPIzSn`N zpaTtJ+PXiJ(N1cp15vR!({!C?*`JYqrug*9qF>8S(}}8Ql~iU@o#wez{}fB*y_009U<00Izz00ba#*90=@`&sq_fZ+H4<5%4HRrc$gEqzN(}~xqDado=c`7t<1|(cynoR;NMp&t(;%TQq85r>$p^>4Hn^1 zRyrsyGOwtU=emrIelT z!8|+Ble*Kf4C+2H&w`WmE0v&fgA(JZX?XQszMxsJ<{>#&Pdv9{#2fW8vZ~}Zy5qK; z4Qd|Ny;#0pqo6LS8SA2Hcd6|;?x}zGvER~j9IHxP&7+Opm{}0Jf!J&gmDoNYvHY^O zwDS2gIcjGNw`x*D8x)1j!jcP?yy>tE=h8`lCQGON=d&K-#Y>4F<+9(GdXuWeCzTxx zPwF>aKlVH4HnCU$Y!&|Z3qY3I9=inB9Lu6L&vfi)_4@1TT&mJK>6(tKyOjD@+p;V@ zH>t%Im9(NP46e5e`LD4GTOfnr#T$a-ne$6gu#%XWB^zXBEyK(H#^5}AS-O2N8$cNB zzh)#1k##icNdAT)=9yO%yb#NslsO*zQPhovn?je90^;*9n6t&3LO+O3n>-1z(In=I z+xTlCeECg0Z+yJUVEX4Tp55X_%76c#5`N}{U)VQn5P$##AOHafKmY;|fB*y_009WR zu>!eNdYX?u-yk*4r>C;v2S)Vn|9{O1uZ3UV*a4#B5P$##AOHafKmY;|fB*y_009Uj z2#ltAK9x$Rv)SI~|GnabR|#P#f&c^{009U<00Izz00bZa0SG|g-xZ+j4}zvHSHpkK zutS=~mUdJ+`EYOBJn`n1mRpC*$7G|r*2?cZ+F92s#pS*I((c*z;!;sLZD{L<^x?d^ jepX)09~a9dx3#gZEfp3^YhRicdB3{<89AyQuCD$G#~&n4 literal 0 HcmV?d00001 diff --git a/src/main/java/electrosphere/engine/loadingthreads/ViewportLoading.java b/src/main/java/electrosphere/engine/loadingthreads/ViewportLoading.java index a9b6a056..cd013fc1 100644 --- a/src/main/java/electrosphere/engine/loadingthreads/ViewportLoading.java +++ b/src/main/java/electrosphere/engine/loadingthreads/ViewportLoading.java @@ -15,6 +15,7 @@ import electrosphere.net.parser.net.message.TerrainMessage; import electrosphere.net.server.player.Player; import electrosphere.renderer.ui.elements.Window; import electrosphere.server.db.DatabaseController; +import electrosphere.server.db.DatabaseUtils; /** * Loads the viewport @@ -41,7 +42,7 @@ public class ViewportLoading { // //connect client to server LoggerInterface.loggerEngine.INFO("run server: " + Globals.RUN_SERVER + " run client: " + Globals.RUN_CLIENT); - Globals.dbController = new DatabaseController(); + ViewportLoading.initInMemoryDB(); LoadingUtils.initAuthenticationManager(true); Globals.clientUsername = "leveleditor"; Globals.clientPassword = AuthenticationManager.getHashedString("leveleditor"); @@ -79,4 +80,13 @@ public class ViewportLoading { ClientLoading.loadViewport(params); } + /** + * Initializes an in-memory db + */ + private static void initInMemoryDB(){ + Globals.dbController = new DatabaseController(); + Globals.dbController.connect(DatabaseController.IN_MEMORY_PATH); + DatabaseUtils.runScript(Globals.dbController,"createTables.sql"); + } + } diff --git a/src/main/java/electrosphere/server/db/DatabaseController.java b/src/main/java/electrosphere/server/db/DatabaseController.java index 6b614d50..1dd93efb 100644 --- a/src/main/java/electrosphere/server/db/DatabaseController.java +++ b/src/main/java/electrosphere/server/db/DatabaseController.java @@ -6,6 +6,7 @@ import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.SQLWarning; import java.util.Properties; /** @@ -17,6 +18,11 @@ public class DatabaseController { * file extension for allowed database files to open */ public static final String FILE_EXT = ".sqlite"; + + /** + * The in-memory path for database connections + */ + public static final String IN_MEMORY_PATH = ":memory:"; /** * The database connection @@ -39,8 +45,11 @@ public class DatabaseController { try { conn = DriverManager.getConnection(fullAddress, connectionProps); } catch (SQLException ex) { - LoggerInterface.loggerFileIO.ERROR("Failure to connect to db", ex); - ex.printStackTrace(); + String message = "" + + "Failure to connect to db\n" + + ex.getMessage() + + ""; + throw new Error(message); } } @@ -51,6 +60,9 @@ public class DatabaseController { * @return true if there is a result set, false if there is an update count or no result */ public boolean executePreparedStatement(String statementRaw, Object...arguments){ + if(conn == null){ + throw new Error("Connection not initialized!"); + } try { PreparedStatement statement = conn.prepareStatement(statementRaw); //Set arguments for prepared statements @@ -73,6 +85,10 @@ public class DatabaseController { } //actually execute boolean result = statement.execute(); + SQLWarning warning = statement.getWarnings(); + if(warning != null){ + LoggerInterface.loggerDB.WARNING(warning.toString()); + } statement.close(); return result; } catch (SQLException ex) { @@ -90,8 +106,7 @@ public class DatabaseController { public DatabaseResult executePreparedQuery(String statementRaw, Object...arguments){ DatabaseResult rVal = DatabaseResult.createQuery(statementRaw); if(conn == null){ - rVal.succeeded = false; - return rVal; + throw new Error("Connection not initialized!"); } try { PreparedStatement statement = conn.prepareStatement(statementRaw); @@ -116,6 +131,14 @@ public class DatabaseController { } //actually execute ResultSet results = statement.executeQuery(); + SQLWarning warning = results.getWarnings(); + if(warning != null){ + LoggerInterface.loggerDB.WARNING(warning.toString()); + } + warning = statement.getWarnings(); + if(warning != null){ + LoggerInterface.loggerDB.WARNING(warning.toString()); + } if(results != null){ rVal.addResultSet(results); } diff --git a/src/test/java/electrosphere/test/testutils/TestEngineUtils.java b/src/test/java/electrosphere/test/testutils/TestEngineUtils.java index 9034cd43..ae37feb7 100644 --- a/src/test/java/electrosphere/test/testutils/TestEngineUtils.java +++ b/src/test/java/electrosphere/test/testutils/TestEngineUtils.java @@ -14,9 +14,9 @@ import electrosphere.engine.loadingthreads.LoadingThread; import electrosphere.entity.Entity; import electrosphere.entity.types.creature.CreatureTemplate; import electrosphere.net.server.ServerConnectionHandler; -import electrosphere.net.server.protocol.CharacterProtocol; import electrosphere.server.datacell.utils.EntityLookupUtils; import electrosphere.server.macro.character.PlayerCharacterCreation; +import electrosphere.server.macro.character.Character; /** * Utils for testing the engine @@ -164,7 +164,8 @@ public class TestEngineUtils { CreatureTemplate creatureTemplate = CreatureTemplate.createDefault("human"); ServerConnectionHandler serverConnection = Globals.server.getFirstConnection(); serverConnection.setCreatureTemplate(creatureTemplate); - serverConnection.setCharacterId(CharacterProtocol.SPAWN_EXISTING_TEMPLATE); + Character chara = Globals.characterService.createCharacter(creatureTemplate, serverConnection.getPlayerId()); + serverConnection.setCharacterId(chara.getId()); PlayerCharacterCreation.spawnPlayerCharacter(serverConnection); }