Skip to content

Commit 1033632

Browse files
committed
chore(gradle): improve testGame behaviour & output
# Conflicts: # server/src/sc/server/Lobby.kt # server/src/sc/server/network/ClientManager.java # server/src/sc/server/network/NewClientListener.java
1 parent d556fa2 commit 1033632

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

gradle/build.gradle.kts

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import org.jetbrains.dokka.gradle.DokkaTask
22
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
33
import java.io.InputStream
4+
import java.util.concurrent.atomic.AtomicBoolean
45

56
plugins {
67
maven
@@ -110,19 +111,22 @@ tasks {
110111
project("server").tasks.jar.get().archiveFile.get().asFile.absolutePath)
111112
.redirectOutput(testLogDir.resolve("server.log")).redirectError(testLogDir.resolve("server-err.log"))
112113
.directory(project("server").buildDir.resolve("runnable")).start()
113-
Thread.sleep(1000)
114+
Thread.sleep(400)
114115
val startClient: (Int) -> Process = {
116+
Thread.sleep(100)
115117
ProcessBuilder("java", "-jar", deployDir.resolve(deployedPlayer).absolutePath)
116118
.redirectOutput(testLogDir.resolve("client$it.log")).redirectError(testLogDir.resolve("client$it-err.log")).start()
117119
}
118120
startClient(1)
119121
startClient(2)
122+
val timeout = AtomicBoolean(false)
120123
val thread = Thread {
121124
try {
122125
Thread.sleep(maxGameLength * 1000)
123126
} catch (e: InterruptedException) {
124127
return@Thread
125128
}
129+
timeout.set(true)
126130
println("$this has been running for over $maxGameLength seconds - killing server!")
127131
server.destroyForcibly()
128132
}.apply {
@@ -131,12 +135,21 @@ tasks {
131135
}
132136
try {
133137
for (i in 1..2) {
138+
val logFile = testLogDir.resolve("client$i.log")
139+
var log: String
134140
println("Waiting for client $i to receive game result")
135141
do {
136-
if (!server.isAlive)
137-
throw Exception("Server terminated unexpectedly!")
138-
Thread.sleep(200)
139-
} while (!testLogDir.resolve("client$i.log").readText().contains("Received game result", true))
142+
if (!server.isAlive) {
143+
if(!timeout.get())
144+
throw Exception("Server terminated unexpectedly!")
145+
return@doFirst
146+
}
147+
Thread.yield()
148+
Thread.sleep(100)
149+
log = logFile.readText()
150+
} while (!log.contains("stop", true))
151+
if(!log.contains("Received game result"))
152+
throw Exception("Client $i did not receive the game result - check $logFile")
140153
}
141154
} catch (t: Throwable) {
142155
println("Error in $this - check the logs in $testLogDir")

0 commit comments

Comments
 (0)