From e2bd32fd3db0575d5fb65ed4ee971e1dc642e849 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 4 May 2012 10:25:26 +0400 Subject: [PATCH] [load] Updated tests plus some fixes. --- .../mage/test/load/LoadCallbackClient.java | 15 +++++ .../java/org/mage/test/load/LoadTest.java | 63 +++++++++++++++++++ .../org/mage/test/load/SimpleMageClient.java | 7 ++- 3 files changed, 84 insertions(+), 1 deletion(-) 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 e5d8ce871ca..41f31bd3888 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 @@ -2,6 +2,9 @@ package org.mage.test.load; import mage.interfaces.callback.CallbackClient; import mage.interfaces.callback.ClientCallback; +import mage.remote.Session; +import mage.utils.CompressUtil; +import mage.view.TableClientMessage; import org.apache.log4j.Logger; /** @@ -11,9 +14,21 @@ public class LoadCallbackClient implements CallbackClient { private static final transient Logger log = Logger.getLogger(LoadCallbackClient.class); + private Session session; + @Override public void processCallback(ClientCallback callback) { //TODO log.info(callback.getMethod()); + callback.setData(CompressUtil.decompress(callback.getData())); + if (callback.getMethod().equals("startGame")) { + TableClientMessage message = (TableClientMessage) callback.getData(); + session.joinGame(message.getGameId()); + } + + } + + public void setSession(Session session) { + this.session = session; } } 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 539809f67b1..8e72dea2c30 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 @@ -69,6 +69,11 @@ public class LoadTest { */ private static final int EXECUTION_COUNT = 100; + /** + * Determines how many times test will be executed in a row. + */ + private static final int EXECUTION_COUNT_PLAY_GAME = 1; + /** * Tests connecting with two players, creating game and starting it. * @@ -123,6 +128,64 @@ public class LoadTest { } } + /** + * Test playing the whole game. + * Player use cheat to add lands, creatures and other cards. + * Then play only lands, one of them plays 1 damage targeting player. + * + * This results in 40 turns of the game. + */ + @Test + @Ignore + public void testPlayGame() throws Exception { + DeckCardLists deckList = createDeck(); + + for (int i = 0; i < EXECUTION_COUNT_PLAY_GAME; i++) { + Connection connection = createConnection(TEST_USER_NAME + i); + + SimpleMageClient mageClient = new SimpleMageClient(); + Session session = new SessionImpl(mageClient); + + session.connect(connection); + + mageClient.setSession(session); + UUID roomId = session.getMainRoomId(); + + GameTypeView gameTypeView = session.getGameTypes().get(0); + log.info("Game type view: " + gameTypeView.getName()); + MatchOptions options = createGameOptions(gameTypeView, session); + + TableView table = session.createTable(roomId, options); + + if (!session.joinTable(roomId, table.getTableId(), TEST_USER_NAME + i, "Human", 1, deckList)) { + log.error("Error while joining table"); + Assert.assertTrue("Error while joining table", false); + return; + } + + /*** Connect with a second player ***/ + Connection connection2 = createConnection(TEST_USER_NAME_2 + i); + SimpleMageClient mageClient2 = new SimpleMageClient(); + Session session2 = new SessionImpl(mageClient2); + session2.connect(connection2); + + mageClient2.setSession(session2); + UUID roomId2 = session2.getMainRoomId(); + + // connect to the table with the same deck + if (!session2.joinTable(roomId2, table.getTableId(), TEST_USER_NAME_2 + i, "Human", 1, deckList)) { + log.error("Error while joining table"); + Assert.assertTrue("Error while joining table", false); + return; + } + + /*** Start game ***/ + session.startGame(roomId, table.getTableId()); + + Thread.sleep(100); + } + } + /** * Creates connection to the server. * Server should run independently. 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 e665168c451..b46a2ed987f 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 @@ -3,6 +3,7 @@ package org.mage.test.load; import mage.interfaces.MageClient; import mage.interfaces.callback.CallbackClient; import mage.interfaces.callback.ClientCallback; +import mage.remote.Session; import mage.utils.MageVersion; import org.apache.log4j.Logger; @@ -20,7 +21,7 @@ public class SimpleMageClient implements MageClient { private static final transient Logger log = Logger.getLogger(SimpleMageClient.class); - private static CallbackClient callbackClient; + private CallbackClient callbackClient; public SimpleMageClient() { clientId = UUID.randomUUID(); @@ -61,4 +62,8 @@ public class SimpleMageClient implements MageClient { public void processCallback(ClientCallback callback) { callbackClient.processCallback(callback); } + + public void setSession(Session session) { + ((LoadCallbackClient)callbackClient).setSession(session); + } }