Testserver with shared database: Difference between revisions

From Arianne
Jump to navigation Jump to search
Content deleted Content added
imported>Hendrik Brummermann
update script
imported>Hendrik Brummermann
Line 13: Line 13:
=== Setup test database ===
=== Setup test database ===


Please start the test server once, so that it will create all the tables, do not login.
{{TODO|describe database setup}}

We are going to replace some tables with VIEWs pointing to the main database:

<source lang="sql">
DROP TABLE account;
DROP TABLE accountban;
DROP TABLE banlist;
DROP TABLE characters;
DROP TABLE loginEvent;
CREATE VIEW account AS SELECT * FROM marauroa.account;
CREATE VIEW accountban AS SELECT * FROM marauroa.accountban;
CREATE VIEW banlist AS SELECT * FROM marauroa.banlist;
CREATE VIEW characters AS SELECT * FROM marauroa.characters;
CREATE VIEW loginEvent AS SELECT * FROM marauroa.loginEvent;
</source>


=== Configure marauroa on test server ===
=== Configure marauroa on test server ===

Revision as of 21:12, 23 November 2010

This article describes how to configure a test server so that players can use their normal accounts and characters for testing.

The easy ways

There are two easy way:

Just setup a new empty database
Players can create new accounts there, and some script may give them enough XP and items for testing. There are two problems with this approach: Players may just go to the test server to play with a strong character. And people may play there for a couple of days and get used to it for normal playing
Just copy the production database into a second database every night
This has the obvious advantage that players can test with their own characters so the test are way more realistic. The problem with this approach is that it destroys the logs every night. An attacker may try to crack passwords on the test database without anyone noticing.

The complex way

The complex way allows players to test with their own account and characters, while doing smart things with the logs. The login events will be logged to the original database so that the number of wrong password tries sums up both databases. The Stendhal website displays a login history covering all sources: website, main server and test server. The gameEvents and itemlog tables will be kept for the analysis of bugs.

Setup test database

Please start the test server once, so that it will create all the tables, do not login.

We are going to replace some tables with VIEWs pointing to the main database:

<source lang="sql"> DROP TABLE account; DROP TABLE accountban; DROP TABLE banlist; DROP TABLE characters; DROP TABLE loginEvent; CREATE VIEW account AS SELECT * FROM marauroa.account; CREATE VIEW accountban AS SELECT * FROM marauroa.accountban; CREATE VIEW banlist AS SELECT * FROM marauroa.banlist; CREATE VIEW characters AS SELECT * FROM marauroa.characters; CREATE VIEW loginEvent AS SELECT * FROM marauroa.loginEvent; </source>

Configure marauroa on test server

TODO: describe marauroa setup


Nightly update script

This update script will copy the rpobject table from the main server. rpobject is the table the progress of characters is stored in:

<source lang="bash"> nice mysql -u testserver --password=xxx testserver < refresh-database.sql mysqldump -f -u testserver --password=xxx stendhal rpobject | mysql -u testserver --password=xxx testserver </source>

refresh-database.sql: <source lang="sql"> TRUNCATE rpzone; TRUNCATE rpobject; </source>