diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-04-07 09:40:07 -0700 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-04-07 11:08:17 -0700 |
commit | 9598b243d7c5108a99fd98860810f71f6302aec1 (patch) | |
tree | ecb446f42e95845453722f37927bb9e1374fb75e /clientserver/test | |
parent | cfb494443ff84c30c8fab457fdc9dcfad7d76769 (diff) | |
download | mill-9598b243d7c5108a99fd98860810f71f6302aec1.tar.gz mill-9598b243d7c5108a99fd98860810f71f6302aec1.tar.bz2 mill-9598b243d7c5108a99fd98860810f71f6302aec1.zip |
first pass at moving mill client over to JavaModule
Diffstat (limited to 'clientserver/test')
-rw-r--r-- | clientserver/test/src/mill/clientserver/ClientServerTests.scala | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/clientserver/test/src/mill/clientserver/ClientServerTests.scala b/clientserver/test/src/mill/clientserver/ClientServerTests.scala deleted file mode 100644 index 2c9a57b0..00000000 --- a/clientserver/test/src/mill/clientserver/ClientServerTests.scala +++ /dev/null @@ -1,120 +0,0 @@ -package mill.clientserver -import java.io._ -import java.nio.file.Path - -import utest._ -class EchoServer extends ServerMain[Int]{ - def main0(args: Array[String], - stateCache: Option[Int], - mainInteractive: Boolean, - stdin: InputStream, - stdout: PrintStream, - stderr: PrintStream) = { - - val reader = new BufferedReader(new InputStreamReader(stdin)) - val str = reader.readLine() - stdout.println(str + args(0)) - stdout.flush() - stderr.println(str.toUpperCase + args(0)) - stderr.flush() - (true, None) - } -} - -object ClientServerTests extends TestSuite{ - def initStreams() = { - val in = new ByteArrayInputStream("hello\n".getBytes()) - val out = new ByteArrayOutputStream() - val err = new ByteArrayOutputStream() - (in, out, err) - } - def init() = { - val tmpDir = java.nio.file.Files.createTempDirectory("") - val locks = Locks.memory() - - (tmpDir, locks) - } - - def tests = Tests{ - 'hello - { - val (tmpDir, locks) = init() - - def spawnEchoServer(): Unit = { - new Thread(() => new Server( - tmpDir.toString, - new EchoServer(), - () => (), - 1000, - locks - ).run()).start() - } - - - def runClient(arg: String) = { - val (in, out, err) = initStreams() - Server.lockBlock(locks.clientLock){ - Client.run( - tmpDir.toString, - () => spawnEchoServer(), - locks, - in, - out, - err, - Array(arg) - ) - Thread.sleep(100) - (new String(out.toByteArray), new String(err.toByteArray)) - } - } - - // Make sure the simple "have the client start a server and - // exchange one message" workflow works from end to end. - - assert( - locks.clientLock.probe(), - locks.serverLock.probe(), - locks.processLock.probe() - ) - - val (out1, err1) = runClient("world") - - assert( - out1 == "helloworld\n", - err1 == "HELLOworld\n" - ) - - // Give a bit of time for the server to release the lock and - // re-acquire it to signal to the client that it's done - Thread.sleep(100) - - assert( - locks.clientLock.probe(), - !locks.serverLock.probe(), - !locks.processLock.probe() - ) - - // A seecond client in sequence connect to the same server - val (out2, err2) = runClient(" WORLD") - - assert( - out2 == "hello WORLD\n", - err2 == "HELLO WORLD\n" - ) - - // Make sure the server times out of not used for a while - Thread.sleep(2000) - assert( - locks.clientLock.probe(), - locks.serverLock.probe(), - locks.processLock.probe() - ) - - // Have a third client spawn/connect-to a new server at the same path - val (out3, err3) = runClient(" World") - assert( - out3 == "hello World\n", - err3 == "HELLO World\n" - ) - } - } -} |