From f653fd4c34d94c66fb655cd11b231a623ee5475f Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Wed, 11 Oct 2023 15:00:33 +0400 Subject: [PATCH] tests: improved game/chat logs in load tests (now it shows in txt format instead html, example: test_TwoAIPlayGame_Multiple) --- Mage.Client/pom.xml | 10 ++++----- Mage.Tests/pom.xml | 4 ++++ .../mage/test/load/LoadCallbackClient.java | 22 +++++++++---------- .../java/org/mage/test/load/LoadTest.java | 3 ++- .../org/mage/test/load/SimpleMageClient.java | 4 ++-- pom.xml | 6 +++++ 6 files changed, 28 insertions(+), 21 deletions(-) diff --git a/Mage.Client/pom.xml b/Mage.Client/pom.xml index 03fb7a10c38..583f6fc6358 100644 --- a/Mage.Client/pom.xml +++ b/Mage.Client/pom.xml @@ -48,6 +48,10 @@ org.unbescape unbescape + + org.jsoup + jsoup + @@ -110,12 +114,6 @@ beansbinding 1.2.1 - - - org.jsoup - jsoup - 1.14.3 - diff --git a/Mage.Tests/pom.xml b/Mage.Tests/pom.xml index b67248f9d85..33eda6a3fb0 100644 --- a/Mage.Tests/pom.xml +++ b/Mage.Tests/pom.xml @@ -70,6 +70,10 @@ net.java.truevfs truevfs-profile-base + + org.jsoup + jsoup + diff --git a/Mage.Tests/src/test/java/org/mage/test/load/LoadCallbackClient.java b/Mage.Tests/src/test/java/org/mage/test/load/LoadCallbackClient.java index e5a6d99afaa..042dc09a513 100644 --- a/Mage.Tests/src/test/java/org/mage/test/load/LoadCallbackClient.java +++ b/Mage.Tests/src/test/java/org/mage/test/load/LoadCallbackClient.java @@ -6,6 +6,7 @@ import mage.interfaces.callback.ClientCallback; import mage.remote.Session; import mage.view.*; import org.apache.log4j.Logger; +import org.jsoup.Jsoup; import java.util.List; import java.util.UUID; @@ -31,10 +32,12 @@ public class LoadCallbackClient implements CallbackClient { private GameView gameView; private final String logsPrefix; + private final Boolean showLogsAsHtml; // original game logs in HTML, but it can be converted to txt for more readable console - public LoadCallbackClient(boolean joinGameChat, String logsPrefix) { + public LoadCallbackClient(boolean joinGameChat, String logsPrefix, Boolean showLogsAsHtml) { this.joinGameChat = joinGameChat; this.logsPrefix = logsPrefix; + this.showLogsAsHtml = showLogsAsHtml; } @Override @@ -42,7 +45,7 @@ public class LoadCallbackClient implements CallbackClient { callback.decompressData(); controlCount = 0; - // ignore bloaded logs + // ignore bloated logs switch (callback.getMethod()) { case CHATMESSAGE: case GAME_UPDATE_AND_INFORM: @@ -63,7 +66,8 @@ public class LoadCallbackClient implements CallbackClient { case CHATMESSAGE: { ChatMessage message = (ChatMessage) callback.getData(); - log.info(getLogStartInfo() + "chat message: " + message.getMessage()); + String mes = this.showLogsAsHtml ? message.getMessage() : Jsoup.parse(message.getMessage()).text(); + log.info(getLogStartInfo() + "chat message" + (message.getTurnInfo() == null ? "" : " at " + message.getTurnInfo()) + ": " + mes); break; } @@ -81,7 +85,7 @@ public class LoadCallbackClient implements CallbackClient { case GAME_INFORM_PERSONAL: { GameClientMessage message = (GameClientMessage) callback.getData(); gameView = message.getGameView(); - //log.info(getLogStartInfo() + "Inform: " + message.getMessage()); + // ignore play priority log break; } @@ -99,17 +103,15 @@ public class LoadCallbackClient implements CallbackClient { case "Select a starting player": session.sendPlayerUUID(gameId, playerId); return; - //break; case "Select a card to discard": log.info(getLogStartInfo() + "hand size: " + gameView.getHand().size()); SimpleCardView card = gameView.getHand().values().iterator().next(); session.sendPlayerUUID(gameId, card.getId()); return; - //break; default: log.error(getLogStartInfo() + "unknown GAME_TARGET message: " + message.toString()); + return; } - break; } case GAME_ASK: { @@ -170,8 +172,7 @@ public class LoadCallbackClient implements CallbackClient { default: log.error(getLogStartInfo() + "unknown callback: " + callback.getMethod() + ", " + callback.getData().toString()); session.sendPlayerBoolean(gameId, false); - return; - //break; + break; } } @@ -188,9 +189,6 @@ public class LoadCallbackClient implements CallbackClient { private String getLogStartInfo() { String mes = ""; - - //throw new IllegalArgumentException("test exception"); - PlayerView p = getPlayer(); if (this.gameView != null && p != null && this.gameView.getStep() != null) { // never calls for client side client, cause it used as game's watcher, not a player diff --git a/Mage.Tests/src/test/java/org/mage/test/load/LoadTest.java b/Mage.Tests/src/test/java/org/mage/test/load/LoadTest.java index 6e5f69f739d..39b8db82c7d 100644 --- a/Mage.Tests/src/test/java/org/mage/test/load/LoadTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/load/LoadTest.java @@ -44,6 +44,7 @@ public class LoadTest { private static final int TEST_PORT = 17171; private static final String TEST_PROXY_TYPE = "None"; private static final String TEST_USER_NAME_GLOBAL_PREFIX = "t_"; + private static final Boolean TEST_SHOW_GAME_LOGS_AS_HTML = false; // html is original format with full data, but can be too bloated private static final String TEST_AI_GAME_MODE = "Freeform Commander Free For All"; private static final String TEST_AI_DECK_TYPE = "Variant Magic - Freeform Commander"; private static final String TEST_AI_RANDOM_DECK_SETS = "NEO"; // set for random generated decks (empty for all sets usage) @@ -544,7 +545,7 @@ public class LoadTest { public LoadPlayer(String userPrefix, boolean joinGameChat, String logsPrefix) { this.userName = TEST_USER_NAME_GLOBAL_PREFIX + userPrefix + "_" + RandomUtil.nextInt(10000); this.connection = createSimpleConnection(this.userName); - this.client = new SimpleMageClient(joinGameChat, logsPrefix); + this.client = new SimpleMageClient(joinGameChat, logsPrefix, TEST_SHOW_GAME_LOGS_AS_HTML); this.session = new SessionImpl(this.client); this.session.connect(this.connection); diff --git a/Mage.Tests/src/test/java/org/mage/test/load/SimpleMageClient.java b/Mage.Tests/src/test/java/org/mage/test/load/SimpleMageClient.java index b52e32f9d73..869195d2bd0 100644 --- a/Mage.Tests/src/test/java/org/mage/test/load/SimpleMageClient.java +++ b/Mage.Tests/src/test/java/org/mage/test/load/SimpleMageClient.java @@ -23,9 +23,9 @@ public class SimpleMageClient implements MageClient { private final LoadCallbackClient callbackClient; - public SimpleMageClient(boolean joinGameChat, String logsPrefix) { + public SimpleMageClient(boolean joinGameChat, String logsPrefix, Boolean showLogsAsHtml) { clientId = UUID.randomUUID(); - callbackClient = new LoadCallbackClient(joinGameChat, logsPrefix); + callbackClient = new LoadCallbackClient(joinGameChat, logsPrefix, showLogsAsHtml); } @Override diff --git a/pom.xml b/pom.xml index 5364e329224..7c39ac8dc2e 100644 --- a/pom.xml +++ b/pom.xml @@ -313,6 +313,12 @@ commons-lang3 3.12.0 + + + org.jsoup + jsoup + 1.14.3 +