@@ -182,35 +182,39 @@ Port 13051. So kannst du ihn nutzen:
1821826 . Um weitere Testspiele zu spielen, starte die : t [ Computerspieler] { # player } erneut.
183183 Der Testserver muss dabei nicht neu gestartet werden.
184184
185- Beachte, dass der Testserver keine Spielaufzeichnungen anlegt, wie es
186- der Server mit grafischer Oberfläche tut. Die Auswertung der Spiele muss
187- in einem der teilnehmenden : t [ Computerspieler] { # player } geschehen (z.B. durch
188- Log-Ausgaben).
189-
190- Es ist ebenfalls möglich, statt eines zufällig generierten vollständigen
191- Spielplanes eine Spielsituation zu laden und zu testen. Die
192- Spielsituation muss vorher wie unter [ Spielsituation
193- nachstellen] ( #spielsituation-nachstellen ) erzeugt werden. Dann kann die
194- Datei mit dem Argument ` --loadGameFile ` geladen werden und optional mit
195- ` --turn ` ein Zug spezifiziert werden.
185+ Beachte, dass der Testserver keine Spielaufzeichnungen anlegt,
186+ wie es der Server mit grafischer Oberfläche tut.
187+ Die Auswertung der Spiele muss in einem der teilnehmenden : t [ Computerspieler] { # player } geschehen
188+ (z.B. durch Log-Ausgaben).
189+
190+ Es ist ebenfalls möglich, statt eines zufällig generierten vollständigen Spielplanes
191+ eine Spielsituation zu laden und zu testen.
192+ Die Spielsituation muss vorher wie unter [ Spielsituation nachstellen] ( #spielsituation-nachstellen ) erzeugt werden.
193+ Dann kann die Datei mit dem Argument ` --loadGameFile ` geladen werden
194+ und optional mit ` --turn ` ein Zug spezifiziert werden.
196195``` shell
197196 java -Dfile.encoding=UTF-8 -Dlogback.configurationFile=logback.xml -jar softwarechallenge-server.jar --port 13051 --loadGameFile ./replay.xml --turn 10
198197
199198```
199+
200200### Unerwartete Zugzeitüberschreitungen (Soft-Timeout)
201201
202- Wenn Sie den Testserver einige Zeit laufen lassen, um eine größere
203- Anzahl von Testspielen durchzuführen, kann es dazu kommen, dass
204- : t [ Computerspieler] { # player } wegen Zugzeitüberschreitungen vom Server disqualifiziert
205- werden (Soft-Timeout). Dies passiert, obwohl der Zug innerhalb der
206- erlaubten Zugzeit (abhängig vom Spiel, bisher aber immer zwei Sekunden)
207- an den Server geschickt wurde. Der Garbage Collector der Java Virtual
208- Machine löst dieses Verhalten aus. Er pausiert die Anwendung, um nicht
209- mehr genutzten Speicher freizugeben. Wenn der Server dadurch zu einem
210- ungünstigen Zeitpunkt angehalten wird, bemerkt er den Eingang des Zuges
211- vom : t [ Computerspieler] { # player } nicht rechtzeitig und disqualifiziert ihn daraufhin.
212- Damit dieses Problem möglichst selten auftritt, haben sich die folgenden
213- Parameter beim Starten des Servers bewährt:
202+ Mit der Option ` --no-timeout ` können Zeitüberschreitungen für alle Spieler deaktiviert werden.
203+ Alternativ können diese auch bei erstellten Reservierungen
204+ über das XML-Protokoll individuell für jeden Spieler gesetzt werden.
205+
206+ Wenn Sie den Testserver einige Zeit laufen lassen,
207+ um eine größere Anzahl von Testspielen durchzuführen, kann es dazu kommen,
208+ dass : t [ Computerspieler] { # player } wegen Zugzeitüberschreitungen vom Server disqualifiziert werden (Soft-Timeout).
209+ Dies passiert, obwohl der Zug innerhalb der erlaubten Zugzeit
210+ (abhängig vom Spiel, bisher aber immer zwei Sekunden)
211+ an den Server geschickt wurde.
212+ Der Garbage Collector der Java Virtual Machine löst dieses Verhalten aus.
213+ Er pausiert die Anwendung, um nicht mehr genutzten Speicher freizugeben.
214+ Wenn der Server dadurch zu einem ungünstigen Zeitpunkt angehalten wird,
215+ bemerkt er den Eingang des Zuges vom : t [ Computerspieler] { # player } nicht rechtzeitig und disqualifiziert ihn daraufhin.
216+ Damit dieses Problem möglichst selten auftritt,
217+ haben sich die folgenden Parameter beim Starten des Servers bewährt:
214218
215219Unter Linux:
216220``` shell
@@ -253,18 +257,23 @@ Dazu gehören erhöhter Resourcenverbrauch und Instabilität der Anwendung.
253257Eine Auflistung möglicher nützlicher Parameter für : t [ Computerspieler] { # player } findet sich unter
254258https://stackoverflow.com/questions/48989515/java-garbage-collector-time-limit .
255259
256- ### Massentests
260+ ### Massentests mit dem TestClient
257261
258262Massentests mit dem eigenen : t [ Computerspieler] { # player } können sehr nützlich sein,
259- beispeilsweise um die Stärke gegenüber einer früheren Version zu Testen.
260- Dafür wird in jeder Saison ab Version XX.1.0 ein TestClient
261- bereitgestellt.
263+ beispielsweise um die Stärke gegenüber einer früheren Version zu Testen.
264+ Dafür wird in jeder Saison ab Version XX.1.0 ein TestClient bereitgestellt.
265+
266+ Der TestClient lässt für eine Anzahl an Spielen zwei Computerspieler gegeneinander antreten,
267+ wobei die Startreihenfolge abwechselt,
268+ sodass eine gerade Anzahl an Spielen sinnvoll ist.
269+ Dabei informiert er über den Fortschritt
270+ und wertet am Ende die erreichten Punktzahlen aus.
262271
263- Der TestClient muss vom Terminal mit den entsprechenden Argumenten
264- aufgerufen werden. Diese werden unter den Beispielen näher erläutert.
272+ Der TestClient muss vom Terminal mit den entsprechenden Argumenten aufgerufen werden.
273+ Diese werden unter den Beispielen näher erläutert.
265274
266275Unter Linux:
267- ``` shell
276+ ``` sh
268277 java -jar -Dlogback.configurationFile=logback-tests.xml test-client.jar \
269278 --tests 4 \
270279 --name1 " displayName1" \
@@ -274,10 +283,10 @@ Unter Linux:
274283 --start-server \
275284 --port 13051
276285```
277- Unter Windows (unterscheidet sich nur durch die Art, den langen Befehl
278- auf mehrere Zeilen zu verteilen):
286+ Unter Windows
287+ (unterscheidet sich nur durch die Art, den langen Befehl auf mehrere Zeilen zu verteilen):
279288
280- ``` shell
289+ ``` cmd
281290 java -jar -Dlogback.configurationFile=logback-tests.xml test-client.jar ^
282291 --tests 4 ^
283292 --name1 "displayName1" ^
@@ -287,10 +296,9 @@ auf mehrere Zeilen zu verteilen):
287296 --start-server ^
288297 --port 13051
289298```
290- Der TestClient kann sich auch mit einem bereits laufenden Server
291- verbinden, bei Angabe des Arguments ` --start-server ` startet er jedoch
292- einfach selbst einen. Wichtig ist, dass nicht versucht wird, zwei Server
293- auf dem selben Port zu starten.
299+ Der TestClient kann sich auch mit einem bereits laufenden Server verbinden,
300+ bei Angabe des Arguments ` --start-server ` startet er jedoch einfach selbst einen.
301+ Wichtig ist, dass nicht versucht wird, zwei Server auf dem selben Port zu starten.
294302
295303#### Argumente des TestClients
296304
0 commit comments