From 6b8e716428fbebdef4d3cfbd57ef1673a7e71f08 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 11 Sep 2017 00:34:14 -0400 Subject: [PATCH] implement server handshake test --- .travis.yml | 2 +- .../sbt-test/server/handshake/Client.scala | 35 +++++++++++++++++++ sbt/src/sbt-test/server/handshake/build.sbt | 13 +++++++ sbt/src/sbt-test/server/handshake/test | 6 ++++ 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 sbt/src/sbt-test/server/handshake/Client.scala create mode 100644 sbt/src/sbt-test/server/handshake/build.sbt create mode 100644 sbt/src/sbt-test/server/handshake/test diff --git a/.travis.yml b/.travis.yml index a33abc64e..32110046e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,7 +26,7 @@ env: - SBT_CMD="scripted dependency-management/*4of4" - SBT_CMD="scripted java/* package/* reporter/* run/* project-load/*" - SBT_CMD="scripted project/*1of2" - - SBT_CMD="scripted project/*2of2" + - SBT_CMD="scripted project/*2of2 server/*" - SBT_CMD="scripted source-dependencies/*1of3" - SBT_CMD="scripted source-dependencies/*2of3" - SBT_CMD="scripted source-dependencies/*3of3" diff --git a/sbt/src/sbt-test/server/handshake/Client.scala b/sbt/src/sbt-test/server/handshake/Client.scala new file mode 100644 index 000000000..ee0255abf --- /dev/null +++ b/sbt/src/sbt-test/server/handshake/Client.scala @@ -0,0 +1,35 @@ +package example + +import java.net.{ URI, Socket, InetAddress, SocketException } +import sbt.io._ +import sbt.io.syntax._ +import java.io.File + +object Client extends App { + val host = "127.0.0.1" + val port = 5123 + val delimiter: Byte = '\n'.toByte + + println("hello") + Thread.sleep(1000) + + val connection = getConnection + val out = connection.getOutputStream + val in = connection.getInputStream + + out.write("""{ "type": "ExecCommand", "commandLine": "exit" }""".getBytes("utf-8")) + out.write(delimiter.toInt) + out.flush + + val baseDirectory = new File(args(0)) + IO.write(baseDirectory / "ok.txt", "ok") + + def getConnection: Socket = + try { + new Socket(InetAddress.getByName(host), port) + } catch { + case _ => + Thread.sleep(1000) + getConnection + } +} diff --git a/sbt/src/sbt-test/server/handshake/build.sbt b/sbt/src/sbt-test/server/handshake/build.sbt new file mode 100644 index 000000000..9692ab267 --- /dev/null +++ b/sbt/src/sbt-test/server/handshake/build.sbt @@ -0,0 +1,13 @@ +lazy val runClient = taskKey[Unit]("") + +lazy val root = (project in file(".")) + .settings( + scalaVersion := "2.12.3", + serverPort in Global := 5123, + libraryDependencies += "org.scala-sbt" %% "io" % "1.0.1", + runClient := (Def.taskDyn { + val b = baseDirectory.value + (bgRun in Compile).toTask(s""" $b""") + }).value + ) + \ No newline at end of file diff --git a/sbt/src/sbt-test/server/handshake/test b/sbt/src/sbt-test/server/handshake/test new file mode 100644 index 000000000..9c2ba1cc1 --- /dev/null +++ b/sbt/src/sbt-test/server/handshake/test @@ -0,0 +1,6 @@ +> show serverPort +> runClient +-> shell + +$ sleep 1000 +$ exists ok.txt