mirror of
https://github.com/magefree/mage.git
synced 2025-12-21 19:11:59 -08:00
Fixed memory leak
This commit is contained in:
parent
40fda24615
commit
9de37bea5a
5 changed files with 91 additions and 63 deletions
|
|
@ -97,6 +97,9 @@ public class TablesPanel extends javax.swing.JPanel {
|
||||||
|
|
||||||
initComponents();
|
initComponents();
|
||||||
|
|
||||||
|
// disable replays
|
||||||
|
chkShowCompleted.setVisible(false);
|
||||||
|
|
||||||
tableTables.createDefaultColumnsFromModel();
|
tableTables.createDefaultColumnsFromModel();
|
||||||
chatPanel.useExtendedView(ChatPanel.VIEW_MODE.NONE);
|
chatPanel.useExtendedView(ChatPanel.VIEW_MODE.NONE);
|
||||||
chatPanel.setBorder(null);
|
chatPanel.setBorder(null);
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,6 @@ import mage.server.challenge.ChallengeManager;
|
||||||
import mage.server.draft.DraftManager;
|
import mage.server.draft.DraftManager;
|
||||||
import mage.server.game.*;
|
import mage.server.game.*;
|
||||||
import mage.server.services.LogKeys;
|
import mage.server.services.LogKeys;
|
||||||
import mage.server.services.LogService;
|
|
||||||
import mage.server.services.impl.LogServiceImpl;
|
import mage.server.services.impl.LogServiceImpl;
|
||||||
import mage.server.tournament.TournamentFactory;
|
import mage.server.tournament.TournamentFactory;
|
||||||
import mage.server.tournament.TournamentManager;
|
import mage.server.tournament.TournamentManager;
|
||||||
|
|
@ -432,9 +431,12 @@ public class TableController {
|
||||||
cancelTimeout();
|
cancelTimeout();
|
||||||
startGame(choosingPlayerId);
|
startGame(choosingPlayerId);
|
||||||
}
|
}
|
||||||
// else {
|
else {
|
||||||
// GamesRoomManager.getInstance().removeTable(table.getId());
|
GamesRoomManager.getInstance().removeTable(table.getId());
|
||||||
// }
|
match.getGames().clear();
|
||||||
|
match = null;
|
||||||
|
table = null;
|
||||||
|
}
|
||||||
} catch (GameException ex) {
|
} catch (GameException ex) {
|
||||||
logger.fatal(null, ex);
|
logger.fatal(null, ex);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ public class LoadTest {
|
||||||
/**
|
/**
|
||||||
* Determines how many times test will be executed in a row.
|
* Determines how many times test will be executed in a row.
|
||||||
*/
|
*/
|
||||||
private static final int EXECUTION_COUNT_PLAY_GAME = 1;
|
private static final int EXECUTION_COUNT_PLAY_GAME = 100;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests connecting with two players, creating game and starting it.
|
* Tests connecting with two players, creating game and starting it.
|
||||||
|
|
@ -128,18 +128,38 @@ public class LoadTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests 10 simple games played one after another.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@Ignore
|
||||||
|
public void testSimpleGame() throws Exception {
|
||||||
|
final DeckCardLists deckList = createDeck();
|
||||||
|
|
||||||
|
for (int i = 0; i < EXECUTION_COUNT_PLAY_GAME; i++) {
|
||||||
|
final int j = i;
|
||||||
|
Thread t = new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
testSimpleGame0(deckList, j);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
t.start();
|
||||||
|
t.join();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests simple game till the end (game over).
|
* Tests simple game till the end (game over).
|
||||||
* Players do nothing but skip phases and discard cards at the end.
|
* Players do nothing but skip phases and discard cards at the end.
|
||||||
*
|
*
|
||||||
* This results in a game that lasts until there is no cards in library.
|
* This results in a game that lasts until there is no cards in library.
|
||||||
*/
|
*/
|
||||||
@Test
|
private boolean testSimpleGame0(DeckCardLists deckList, int i) throws InterruptedException {
|
||||||
@Ignore
|
|
||||||
public void testSimpleGame() throws Exception {
|
|
||||||
DeckCardLists deckList = createDeck();
|
|
||||||
|
|
||||||
for (int i = 0; i < EXECUTION_COUNT_PLAY_GAME; i++) {
|
|
||||||
Connection connection = createConnection(TEST_USER_NAME + i);
|
Connection connection = createConnection(TEST_USER_NAME + i);
|
||||||
|
|
||||||
SimpleMageClient mageClient = new SimpleMageClient();
|
SimpleMageClient mageClient = new SimpleMageClient();
|
||||||
|
|
@ -159,7 +179,7 @@ public class LoadTest {
|
||||||
if (!session.joinTable(roomId, table.getTableId(), TEST_USER_NAME + i, "Human", 1, deckList)) {
|
if (!session.joinTable(roomId, table.getTableId(), TEST_USER_NAME + i, "Human", 1, deckList)) {
|
||||||
log.error("Error while joining table");
|
log.error("Error while joining table");
|
||||||
Assert.assertTrue("Error while joining table", false);
|
Assert.assertTrue("Error while joining table", false);
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** Connect with a second player ***/
|
/*** Connect with a second player ***/
|
||||||
|
|
@ -175,7 +195,7 @@ public class LoadTest {
|
||||||
if (!session2.joinTable(roomId2, table.getTableId(), TEST_USER_NAME_2 + i, "Human", 1, deckList)) {
|
if (!session2.joinTable(roomId2, table.getTableId(), TEST_USER_NAME_2 + i, "Human", 1, deckList)) {
|
||||||
log.error("Error while joining table");
|
log.error("Error while joining table");
|
||||||
Assert.assertTrue("Error while joining table", false);
|
Assert.assertTrue("Error while joining table", false);
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** Start game ***/
|
/*** Start game ***/
|
||||||
|
|
@ -184,7 +204,7 @@ public class LoadTest {
|
||||||
while (!mageClient.isGameOver()) {
|
while (!mageClient.isGameOver()) {
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
}
|
}
|
||||||
}
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -386,7 +386,7 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa
|
||||||
scorePlayer = state.getPlayers().values().iterator().next();
|
scorePlayer = state.getPlayers().values().iterator().next();
|
||||||
init(choosingPlayerId, options);
|
init(choosingPlayerId, options);
|
||||||
play(startingPlayerId);
|
play(startingPlayerId);
|
||||||
saveState();
|
//saveState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -448,7 +448,7 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa
|
||||||
player.beginTurn(this);
|
player.beginTurn(this);
|
||||||
}
|
}
|
||||||
fireInformEvent("game has started");
|
fireInformEvent("game has started");
|
||||||
saveState();
|
//saveState();
|
||||||
|
|
||||||
//20091005 - 103.1
|
//20091005 - 103.1
|
||||||
if (!gameOptions.skipInitShuffling) { //don't shuffle in test mode for card injection on top of player's libraries
|
if (!gameOptions.skipInitShuffling) { //don't shuffle in test mode for card injection on top of player's libraries
|
||||||
|
|
@ -476,7 +476,7 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
saveState();
|
//saveState();
|
||||||
|
|
||||||
//20091005 - 103.3
|
//20091005 - 103.3
|
||||||
for (UUID playerId: state.getPlayerList(startingPlayerId)) {
|
for (UUID playerId: state.getPlayerList(startingPlayerId)) {
|
||||||
|
|
@ -496,7 +496,7 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa
|
||||||
mulligan(player.getId());
|
mulligan(player.getId());
|
||||||
}
|
}
|
||||||
fireInformEvent(player.getName() + " keeps hand");
|
fireInformEvent(player.getName() + " keeps hand");
|
||||||
saveState();
|
//saveState();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (UUID playerId : state.getPlayerList(startingPlayerId)) {
|
for (UUID playerId : state.getPlayerList(startingPlayerId)) {
|
||||||
|
|
@ -627,8 +627,8 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa
|
||||||
Player player;
|
Player player;
|
||||||
while (!isPaused() && !isGameOver()) {
|
while (!isPaused() && !isGameOver()) {
|
||||||
try {
|
try {
|
||||||
if (bookmark == 0)
|
//if (bookmark == 0)
|
||||||
bookmark = bookmarkState();
|
//bookmark = bookmarkState();
|
||||||
player = getPlayer(state.getPlayerList().get());
|
player = getPlayer(state.getPlayerList().get());
|
||||||
state.setPriorityPlayerId(player.getId());
|
state.setPriorityPlayerId(player.getId());
|
||||||
while (!player.isPassed() && !player.hasLost() && !player.hasLeft() && !isPaused() && !isGameOver()) {
|
while (!player.isPassed() && !player.hasLost() && !player.hasLeft() && !isPaused() && !isGameOver()) {
|
||||||
|
|
@ -654,7 +654,7 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa
|
||||||
state.getRevealed().reset();
|
state.getRevealed().reset();
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
removeBookmark(bookmark);
|
//removeBookmark(bookmark);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -662,13 +662,13 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa
|
||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
logger.fatal("Game exception ", ex);
|
logger.fatal("Game exception ", ex);
|
||||||
this.fireErrorEvent("Game exception occurred: ", ex);
|
this.fireErrorEvent("Game exception occurred: ", ex);
|
||||||
restoreState(bookmark);
|
//restoreState(bookmark);
|
||||||
bookmark = 0;
|
bookmark = 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
state.getPlayerList().getNext();
|
state.getPlayerList().getNext();
|
||||||
}
|
}
|
||||||
removeBookmark(bookmark);
|
//removeBookmark(bookmark);
|
||||||
bookmark = 0;
|
bookmark = 0;
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
|
|
|
||||||
|
|
@ -28,15 +28,16 @@
|
||||||
|
|
||||||
package mage.game.turn;
|
package mage.game.turn;
|
||||||
|
|
||||||
|
import mage.Constants.PhaseStep;
|
||||||
|
import mage.Constants.TurnPhase;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.players.Player;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.Constants.PhaseStep;
|
|
||||||
import mage.Constants.TurnPhase;
|
|
||||||
import mage.game.Game;
|
|
||||||
import mage.players.Player;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -121,7 +122,9 @@ public class Turn implements Serializable {
|
||||||
if (phase.play(game, activePlayerId)) {
|
if (phase.play(game, activePlayerId)) {
|
||||||
//20091005 - 500.4/703.4n
|
//20091005 - 500.4/703.4n
|
||||||
game.emptyManaPools();
|
game.emptyManaPools();
|
||||||
game.saveState();
|
|
||||||
|
//game.saveState();
|
||||||
|
|
||||||
//20091005 - 500.8
|
//20091005 - 500.8
|
||||||
playExtraPhases(game, phase.getType());
|
playExtraPhases(game, phase.getType());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue