This is an automated email from the ASF dual-hosted git repository. csantanapr pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-runtime-go.git
commit c9fd6e82fc0a9d73d7fd2ae6cc6aa27acfbf0544 Author: Carlos Santana <[email protected]> AuthorDate: Sun Sep 23 15:32:36 2018 -0400 minor updates to travis 1.11 --- .travis.yml | 6 +- .../actionContainers/ActionLoopBasicGoTests.scala | 15 ++-- .../actionContainers/ActionLoopBasicTests.scala | 12 +-- .../ActionLoopContainerTests.scala | 28 +++--- .../ActionLoopGoContainerTests.scala | 99 ++++++++++------------ .../actionContainers/GoResourceHelpers.scala | 38 ++++++--- tools/travis/publish.sh | 11 +++ tools/travis/test.sh | 2 +- 8 files changed, 115 insertions(+), 96 deletions(-) diff --git a/.travis.yml b/.travis.yml index a240ad2..a2ef5e3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ sudo: required language: go go: -- 1.10.2 +- "1.11" services: - docker notifications: @@ -25,13 +25,13 @@ deploy: repo: apache/incubator-openwhisk-runtime-go - provider: script skip_cleanup: true - script: "./tools/travis/publish.sh openwhisk actionProxyLoop master" + script: "./tools/travis/publish.sh openwhisk actionProxyLoop latest" on: branch: master repo: apache/incubator-openwhisk-runtime-go - provider: script skip_cleanup: true - script: "./tools/travis/publish.sh openwhisk golang1.10 master" + script: "./tools/travis/publish.sh openwhisk golang1.11 latest" on: branch: master repo: apache/incubator-openwhisk-runtime-go diff --git a/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicGoTests.scala b/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicGoTests.scala index 5534474..72d3b96 100644 --- a/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicGoTests.scala +++ b/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicGoTests.scala @@ -23,16 +23,20 @@ import org.junit.runner.RunWith import org.scalatest.junit.JUnitRunner @RunWith(classOf[JUnitRunner]) -class ActionLoopBasicGoTests extends BasicActionRunnerTests with WskActorSystem { +class ActionLoopBasicGoTests + extends BasicActionRunnerTests + with WskActorSystem { val goCompiler = "actionloop-golang-v1.11" val image = goCompiler - override def withActionContainer(env: Map[String, String] = Map.empty)(code: ActionContainer => Unit) = { + override def withActionContainer(env: Map[String, String] = Map.empty)( + code: ActionContainer => Unit) = { withContainer(image, env)(code) } - def withActionLoopContainer(code: ActionContainer => Unit) = withContainer(image)(code) + def withActionLoopContainer(code: ActionContainer => Unit) = + withContainer(image)(code) behavior of image @@ -80,7 +84,6 @@ class ActionLoopBasicGoTests extends BasicActionRunnerTests with WskActorSystem |} """.stripMargin) - override val testEnv = TestConfig( """ |package main @@ -109,7 +112,9 @@ class ActionLoopBasicGoTests extends BasicActionRunnerTests with WskActorSystem |func niam(args map[string]interface{}) map[string]interface{} { | return args |} - """.stripMargin, main="niam") + """.stripMargin, + main = "niam" + ) override val testLargeInput = TestConfig( """|package main diff --git a/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicTests.scala b/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicTests.scala index 32d43c3..7936af4 100644 --- a/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicTests.scala +++ b/tests/src/test/scala/runtime/actionContainers/ActionLoopBasicTests.scala @@ -27,25 +27,25 @@ class ActionLoopBasicTests extends BasicActionRunnerTests with WskActorSystem { val image = "actionloop" - override def withActionContainer(env: Map[String, String] = Map.empty)(code: ActionContainer => Unit) = { + override def withActionContainer(env: Map[String, String] = Map.empty)( + code: ActionContainer => Unit) = { withContainer(image, env)(code) } - def withActionLoopContainer(code: ActionContainer => Unit) = withContainer(image)(code) + def withActionLoopContainer(code: ActionContainer => Unit) = + withContainer(image)(code) behavior of image override val testNoSourceOrExec = TestConfig("") - override val testNotReturningJson = TestConfig( - """#!/bin/bash + override val testNotReturningJson = TestConfig("""#!/bin/bash |read line |echo '"not json"' >&3 |read line |""".stripMargin) - override val testEcho = TestConfig( - """|#!/bin/bash + override val testEcho = TestConfig("""|#!/bin/bash |while read line |do | echo "hello stdout" diff --git a/tests/src/test/scala/runtime/actionContainers/ActionLoopContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/ActionLoopContainerTests.scala index 9c2ebfb..002bbc8 100644 --- a/tests/src/test/scala/runtime/actionContainers/ActionLoopContainerTests.scala +++ b/tests/src/test/scala/runtime/actionContainers/ActionLoopContainerTests.scala @@ -26,13 +26,16 @@ import org.scalatest.junit.JUnitRunner import spray.json.{JsObject, JsString} @RunWith(classOf[JUnitRunner]) -class ActionLoopContainerTests extends ActionProxyContainerTestUtils with WskActorSystem { +class ActionLoopContainerTests + extends ActionProxyContainerTestUtils + with WskActorSystem { import GoResourceHelpers._ val image = "actionloop" - def withActionLoopContainer(code: ActionContainer => Unit) = withContainer("actionloop")(code) + def withActionLoopContainer(code: ActionContainer => Unit) = + withContainer("actionloop")(code) behavior of "actionloop" @@ -58,7 +61,6 @@ class ActionLoopContainerTests extends ActionProxyContainerTestUtils with WskAct private def okMsg(key: String, value: String) = 200 -> Some(JsObject(key -> JsString(value))) - it should "run sample with init that does nothing" in { val (out, err) = withActionLoopContainer { c => c.init(JsObject())._1 should be(403) @@ -66,25 +68,21 @@ class ActionLoopContainerTests extends ActionProxyContainerTestUtils with WskAct } } - it should "deploy a shell script" in { val script = shCodeHello("main") val mesg = ExeBuilder.mkBase64Src(script, "main") - withActionLoopContainer { - c => - val payload = initPayload(mesg) - c.init(payload)._1 should be(200) - c.run(helloMsg()) should be(okMsg("main", "Hello, Demo")) + withActionLoopContainer { c => + val payload = initPayload(mesg) + c.init(payload)._1 should be(200) + c.run(helloMsg()) should be(okMsg("main", "Hello, Demo")) } } it should "deploy a zip based script" in { val scr = ExeBuilder.mkBase64SrcZip(shCodeHello("main"), "main") - withActionLoopContainer { - c => - c.init(initPayload(scr))._1 should be(200) - c.run(helloMsg()) should be(okMsg("main", "Hello, Demo")) + withActionLoopContainer { c => + c.init(initPayload(scr))._1 should be(200) + c.run(helloMsg()) should be(okMsg("main", "Hello, Demo")) } } - } - +} diff --git a/tests/src/test/scala/runtime/actionContainers/ActionLoopGoContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/ActionLoopGoContainerTests.scala index b59e306..54857e0 100644 --- a/tests/src/test/scala/runtime/actionContainers/ActionLoopGoContainerTests.scala +++ b/tests/src/test/scala/runtime/actionContainers/ActionLoopGoContainerTests.scala @@ -29,14 +29,17 @@ import org.scalatest.junit.JUnitRunner import spray.json.{JsObject, JsString} @RunWith(classOf[JUnitRunner]) -class ActionLoopGoContainerTests extends ActionProxyContainerTestUtils with WskActorSystem { +class ActionLoopGoContainerTests + extends ActionProxyContainerTestUtils + with WskActorSystem { import GoResourceHelpers._ val goCompiler = "actionloop-golang-v1.11" val image = goCompiler - def withActionLoopContainer(code: ActionContainer => Unit) = withContainer(image)(code) + def withActionLoopContainer(code: ActionContainer => Unit) = + withContainer(image)(code) behavior of image @@ -69,7 +72,6 @@ class ActionLoopGoContainerTests extends ActionProxyContainerTestUtils with WskA private def okMsg(key: String, value: String) = 200 -> Some(JsObject(key -> JsString(value))) - it should "run sample with init that does nothing" in { val (out, err) = withActionLoopContainer { c => c.init(JsObject())._1 should be(403) @@ -78,103 +80,90 @@ class ActionLoopGoContainerTests extends ActionProxyContainerTestUtils with WskA } it should "accept a binary main" in { - val exe = ExeBuilder.mkBase64Exe( - goCompiler, helloSrc("main"), "main") + val exe = ExeBuilder.mkBase64Exe(goCompiler, helloSrc("main"), "main") - withActionLoopContainer { - c => - c.init(initPayload(exe))._1 shouldBe (200) - c.run(helloMsg()) should be(okMsg("main-main", "Hello, Demo!")) + withActionLoopContainer { c => + c.init(initPayload(exe))._1 shouldBe (200) + c.run(helloMsg()) should be(okMsg("main-main", "Hello, Demo!")) } } - //def pr(x: Any) = { println(x) ; x} it should "accept a zipped main binary" in { - val zip = ExeBuilder.mkBase64Zip( - goCompiler, helloSrc("main"), "main") - withActionLoopContainer { - c => - c.init(initPayload(zip))._1 should be(200) - c.run(helloMsg()) should be(okMsg("main-main", "Hello, Demo!")) + val zip = ExeBuilder.mkBase64Zip(goCompiler, helloSrc("main"), "main") + withActionLoopContainer { c => + c.init(initPayload(zip))._1 should be(200) + c.run(helloMsg()) should be(okMsg("main-main", "Hello, Demo!")) } } it should "accept a binary not-main" in { - val exe = ExeBuilder.mkBase64Exe( - goCompiler, helloSrc("hello"), "hello") - withActionLoopContainer { - c => - c.init(initPayload(exe, "hello"))._1 shouldBe (200) - c.run(helloMsg()) should be(okMsg("main-hello", "Hello, Demo!")) + val exe = ExeBuilder.mkBase64Exe(goCompiler, helloSrc("hello"), "hello") + withActionLoopContainer { c => + c.init(initPayload(exe, "hello"))._1 shouldBe (200) + c.run(helloMsg()) should be(okMsg("main-hello", "Hello, Demo!")) } } it should "accept a zipped binary not-main" in { - val zip = ExeBuilder.mkBase64Zip( - goCompiler, helloSrc("hello"), "hello") - withActionLoopContainer { - c => - c.init(initPayload(zip, "hello"))._1 shouldBe (200) - c.run(helloMsg()) should be(okMsg("main-hello", "Hello, Demo!")) + val zip = ExeBuilder.mkBase64Zip(goCompiler, helloSrc("hello"), "hello") + withActionLoopContainer { c => + c.init(initPayload(zip, "hello"))._1 shouldBe (200) + c.run(helloMsg()) should be(okMsg("main-hello", "Hello, Demo!")) } } it should "accept a src main action " in { var src = ExeBuilder.mkBase64Src(helloSrc("main"), "main") - withActionLoopContainer { - c => - c.init(initPayload(src))._1 shouldBe (200) - c.run(helloMsg()) should be(okMsg("main-main", "Hello, Demo!")) + withActionLoopContainer { c => + c.init(initPayload(src))._1 shouldBe (200) + c.run(helloMsg()) should be(okMsg("main-main", "Hello, Demo!")) } } it should "accept a src not-main action " in { var src = ExeBuilder.mkBase64Src(helloSrc("hello"), "hello") - withActionLoopContainer { - c => - c.init(initPayload(src, "hello"))._1 shouldBe (200) - c.run(helloMsg()) should be(okMsg("main-hello", "Hello, Demo!")) + withActionLoopContainer { c => + c.init(initPayload(src, "hello"))._1 shouldBe (200) + c.run(helloMsg()) should be(okMsg("main-hello", "Hello, Demo!")) } } - it should "accept a zipped src main action" in { var src = ExeBuilder.mkBase64SrcZip(helloSrc("main"), "main") - withActionLoopContainer { - c => - c.init(initPayload(src))._1 shouldBe (200) - c.run(helloMsg()) should be(okMsg("main-main", "Hello, Demo!")) + withActionLoopContainer { c => + c.init(initPayload(src))._1 shouldBe (200) + c.run(helloMsg()) should be(okMsg("main-main", "Hello, Demo!")) } } it should "accept a zipped src not-main action" in { var src = ExeBuilder.mkBase64SrcZip(helloSrc("hello"), "hello") - withActionLoopContainer { - c => - c.init(initPayload(src, "hello"))._1 shouldBe (200) - c.run(helloMsg()) should be(okMsg("main-hello", "Hello, Demo!")) + withActionLoopContainer { c => + c.init(initPayload(src, "hello"))._1 shouldBe (200) + c.run(helloMsg()) should be(okMsg("main-hello", "Hello, Demo!")) } } it should "deploy a zip main src with subdir" in { - var src = ExeBuilder.mkBase64SrcZip(Seq( - Seq("hello", "hello.go") -> helloGo("Hello", "hello"), - Seq("main") -> - """ + var src = ExeBuilder.mkBase64SrcZip( + Seq( + Seq("hello", "hello.go") -> helloGo("Hello", "hello"), + Seq("main") -> + """ |package main |import "hello" |func Main(args map[string]interface{})map[string]interface{} { | return hello.Hello(args) |} """.stripMargin - ), "main") - withActionLoopContainer { - c => - c.init(initPayload(src))._1 shouldBe (200) - c.run(helloMsg()) should be(okMsg("hello-Hello", "Hello, Demo!")) + ), + "main" + ) + withActionLoopContainer { c => + c.init(initPayload(src))._1 shouldBe (200) + c.run(helloMsg()) should be(okMsg("hello-Hello", "Hello, Demo!")) } } } - diff --git a/tests/src/test/scala/runtime/actionContainers/GoResourceHelpers.scala b/tests/src/test/scala/runtime/actionContainers/GoResourceHelpers.scala index 1370fe5..02782a6 100644 --- a/tests/src/test/scala/runtime/actionContainers/GoResourceHelpers.scala +++ b/tests/src/test/scala/runtime/actionContainers/GoResourceHelpers.scala @@ -29,6 +29,7 @@ import actionContainers.ResourceHelpers import scala.util.Random object GoResourceHelpers { + /** Create a temporary directory in your /tmp directory. * /tmp/openwhisk/random-lowercase-string/prefix+suffix * @@ -39,12 +40,18 @@ object GoResourceHelpers { * */ def tmpDirectoryFile(prefix: String, suffix: String = "") = - new File(new File(new File("/tmp", "openwhisk"), - Random.alphanumeric.take(10).toArray.mkString.toLowerCase /*random filename alphanumeric and lower case*/) - , prefix++suffix) + new File( + new File(new File("/tmp", "openwhisk"), + Random.alphanumeric + .take(10) + .toArray + .mkString + .toLowerCase /*random filename alphanumeric and lower case*/ ), + prefix ++ suffix + ) def createTmpDirectory(prefix: String, suffix: String = "") = { - val tmpDir = tmpDirectoryFile(prefix,suffix) + val tmpDir = tmpDirectoryFile(prefix, suffix) tmpDir.mkdirs() tmpDir.toPath.toAbsolutePath } @@ -62,7 +69,9 @@ object GoResourceHelpers { val arPath = createTmpDirectory("output", extension).toAbsolutePath() // We "mount" it as a filesystem, so we can just copy files into it. - val dstUri = new URI("jar:" + arPath.toUri().getScheme(), arPath.toAbsolutePath().toString(), null) + val dstUri = new URI("jar:" + arPath.toUri().getScheme(), + arPath.toAbsolutePath().toString(), + null) // OK, that's a hack. Doing this because newFileSystem wants to create that file. arPath.toFile().delete() val fs = FileSystems.newFileSystem(dstUri, Map(("create" -> "true")).asJava) @@ -91,14 +100,14 @@ object GoResourceHelpers { FileVisitResult.CONTINUE } - }) + } + ) fs.close() arPath } - /** * Creates a temporary directory in the home and reproduces the desired file structure * in it. Returns the path of the temporary directory and the path of each @@ -108,7 +117,8 @@ object GoResourceHelpers { * a tmp folder in the home directory. * * */ - private def writeSourcesToHomeTmpDirectory(sources: Seq[(Seq[String], String)]): (Path, Seq[Path]) = { + private def writeSourcesToHomeTmpDirectory( + sources: Seq[(Seq[String], String)]): (Path, Seq[Path]) = { // A temporary directory for the source files. val srcDir = createTmpDirectory("src") val srcAbsPaths = for ((sourceName, sourceContent) <- sources) yield { @@ -145,7 +155,9 @@ object GoResourceHelpers { // prepare sources, then compile them // return the exe File and the output dir Path - private def compile(image: String, sources: Seq[(Seq[String], String)], main: String) = { + private def compile(image: String, + sources: Seq[(Seq[String], String)], + main: String) = { require(!sources.isEmpty) // The absolute paths of the source file @@ -172,13 +184,17 @@ object GoResourceHelpers { } - def mkBase64Exe(image: String, sources: Seq[(Seq[String] /*lines*/, String /*name*/)], main: String) = { + def mkBase64Exe(image: String, + sources: Seq[(Seq[String] /*lines*/, String /*name*/ )], + main: String) = { val (exe, dir) = compile(image, sources, main) //println(s"exe=${exe.getAbsolutePath}") ResourceHelpers.readAsBase64(exe.toPath) } - def mkBase64Zip(image: String, sources: Seq[(Seq[String], String)], main: String) = { + def mkBase64Zip(image: String, + sources: Seq[(Seq[String], String)], + main: String) = { val (exe, dir) = compile(image, sources, main) val archive = makeZipFromDir(dir) //println(s"zip=${archive.toFile.getAbsolutePath}") diff --git a/tools/travis/publish.sh b/tools/travis/publish.sh index 51690f2..cad9d8a 100755 --- a/tools/travis/publish.sh +++ b/tools/travis/publish.sh @@ -34,4 +34,15 @@ TERM=dumb ./gradlew \ -PdockerRegistry=docker.io \ -PdockerImagePrefix=${IMAGE_PREFIX} \ -PdockerImageTag=${IMAGE_TAG} + + # if doing latest also push a tag with the hash commit + if [ ${IMAGE_TAG} == "latest" ]; then + SHORT_COMMIT=`git rev-parse --short HEAD` + TERM=dumb ./gradlew \ + :core:${RUNTIME}:distDocker \ + -PdockerRegistry=docker.io \ + -PdockerImagePrefix=${IMAGE_PREFIX} \ + -PdockerImageTag=${SHORT_COMMIT} + fi + fi diff --git a/tools/travis/test.sh b/tools/travis/test.sh index 2534d83..d11e175 100755 --- a/tools/travis/test.sh +++ b/tools/travis/test.sh @@ -27,6 +27,6 @@ WHISKDIR="$ROOTDIR/../openwhisk" export OPENWHISK_HOME=$WHISKDIR cd ${ROOTDIR} TERM=dumb ./gradlew :tests:test - +go version TERM=dumb ./gradlew test --info
