summaryrefslogtreecommitdiff
path: root/clientserver/test
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-04-07 09:40:07 -0700
committerLi Haoyi <haoyi.sg@gmail.com>2018-04-07 11:08:17 -0700
commit9598b243d7c5108a99fd98860810f71f6302aec1 (patch)
treeecb446f42e95845453722f37927bb9e1374fb75e /clientserver/test
parentcfb494443ff84c30c8fab457fdc9dcfad7d76769 (diff)
downloadmill-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.scala120
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"
- )
- }
- }
-}