You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by cs...@apache.org on 2018/03/20 23:30:45 UTC
[incubator-openwhisk-runtime-swift] branch master updated: Remove
swift:4.0, only swift:4.1 (#34)
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-swift.git
The following commit(s) were added to refs/heads/master by this push:
new 029afd8 Remove swift:4.0, only swift:4.1 (#34)
029afd8 is described below
commit 029afd8d99b19d928ac76f382ffa800037b983b7
Author: Carlos Santana <cs...@gmail.com>
AuthorDate: Tue Mar 20 19:30:43 2018 -0400
Remove swift:4.0, only swift:4.1 (#34)
---
README.md | 19 ++--
ansible/environments/local/group_vars/all | 7 +-
core/swift40Action/CHANGELOG.md | 20 ----
core/swift40Action/Dockerfile | 30 ------
core/swift40Action/build.gradle | 2 -
core/swift40Action/buildandrecord.py | 77 --------------
core/swift41Action/build.gradle | 34 -------
.../epilogue.swift | 0
.../spm-build/Package.swift | 0
.../spm-build/_Whisk.swift | 0
.../swift4runner.py | 0
settings.gradle | 1 -
tests/dat/build.sh | 3 -
tests/dat/build/swift4.0/HelloSwift4.zip | Bin 10670 -> 0 bytes
tests/dat/build/swift4.0/HelloSwift4Codable.zip | Bin 14599 -> 0 bytes
tests/dat/build/swift4.0/SwiftyRequest.zip | Bin 160343 -> 0 bytes
.../Swift40ActionContainerTests.scala | 113 ---------------------
.../Swift40CodableActionContainerTests.scala | 23 -----
.../Swift41ActionContainerTests.scala | 88 +++++++++++++++-
tests/src/test/scala/sdk/Swift40SDKTests.scala | 26 -----
tests/src/test/scala/sdk/Swift41SDKTests.scala | 2 +-
tools/build/compile.sh | 7 +-
tools/travis/build.sh | 1 -
tools/travis/publish.sh | 2 -
24 files changed, 98 insertions(+), 357 deletions(-)
diff --git a/README.md b/README.md
index 1062e48..5fefccc 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,6 @@
## Changelogs
- [Swift 3.1.1 CHANGELOG.md](core/swift3.1.1Action/CHANGELOG.md)
-- [Swift 4.0 CHANGELOG.md](core/swift40Action/CHANGELOG.md)
- [Swift 4.1 CHANGELOG.md](core/swift41Action/CHANGELOG.md)
## Quick Swift Action
@@ -117,7 +116,7 @@ To avoid the cold-start delay, you can compile your Swift file into a binary and
- Run an interactive Swift action container.
```
- docker run --rm -it -v "$(pwd):/owexec" openwhisk/action-swift-v4.0 bash
+ docker run --rm -it -v "$(pwd):/owexec" openwhisk/action-swift-v4.1 bash
```
This puts you in a bash shell within the Docker container.
@@ -162,7 +161,7 @@ let package = Package(
```
As you can see this example adds `SwiftyRequest` dependencies.
- Notice that now with swift:4.0 is no longer required to include `CCurl`, `Kitura-net` and `SwiftyJSON` in your own `Package.swift`.
+ Notice that now with swift:4.1 is no longer required to include `CCurl`, `Kitura-net` and `SwiftyJSON` in your own `Package.swift`.
You are free now to use no dependencies, or add the combination that you want with the versions you want.
- Copy Package.swift to spm-build directory
@@ -194,7 +193,7 @@ let package = Package(
- Upload it to OpenWhisk with the action name helloSwifty:
```
- wsk action update helloSwiftly hello.zip openwhisk/action-swift-v4.0
+ wsk action update helloSwiftly hello.zip openwhisk/action-swift-v4.1
```
- To check how much faster it is, run
@@ -219,15 +218,15 @@ Having a project directory `Hello` under a directory `actions` like the followin
actions/Hello/Package.swift
actions/Hello/Sources/main.swift
```
-Change to the parent directory then run the compile script specify the project directory, the kind `swift:3.1.1` or `swift:4.0` and any swiftc build flags like the following:
+Change to the parent directory then run the compile script specify the project directory, the kind `swift:3.1.1` or `swift:4.1` and any swiftc build flags like the following:
```
cd actions/
-incubator-runtime-swift/tools/build/compile.sh Hello swift:4.0 -v
+incubator-runtime-swift/tools/build/compile.sh Hello swift:4.1 -v
```
This will produce a zip `build/swift4/Hello.zip`
### SwiftyJSON using single source action file
-If you have a swift:3.1.1 action not compile, just as source using the `SwiftyJSON` package, you need to precompile your action and specify the version of SwiftyJSON you wan to use for swift:4.0 kind action.
+If you have a swift:3.1.1 action not compile, just as source using the `SwiftyJSON` package, you need to precompile your action and specify the version of SwiftyJSON you wan to use for swift:4.1 kind action.
Take into account that starting with Swift 4 there is better support to manage JSON data natively.
Note: This is only applicable to the base image provided for the Swift 4 runtime, other downstream such as IBM Cloud Functions extending this image might provide additional SDK and packages including `SwiftyJSON` and IBM Watson SDK, check the vendor documentation for more specific information about packages and versions.
@@ -236,7 +235,7 @@ Note: This is only applicable to the base image provided for the Swift 4 runtime
```
./gradlew core:swift40Action:distDocker
```
-This will produce the image `whisk/action-swift-v4.0`
+This will produce the image `whisk/action-swift-v4.1`
Build and Push image
```
@@ -246,7 +245,7 @@ docker login
### Swift 4.1 Experimental
We have a runtime for swift 4.1, is experimental as we are trying beta builds released by Swift org.
-Follow same insructions for Swift 4.0 above and replace the kind wih `swift:4.1` and image with `openwhisk/action-swift-v4.0`
+Follow same insructions for Swift 4.1 above and replace the kind wih `swift:4.1` and image with `openwhisk/action-swift-v4.1`
## Codable Suppor with Swift 4.x
@@ -336,7 +335,7 @@ wsk action update myAction myAction.swift --kind swift:3.1.1
## Local development
```
-./gradlew core:swiftAction:distDocker
+./gradlew core:swift41Action:distDocker
```
This will produce the image `whisk/action-swift-v3.1.1`
diff --git a/ansible/environments/local/group_vars/all b/ansible/environments/local/group_vars/all
index f11e4e0..2085010 100755
--- a/ansible/environments/local/group_vars/all
+++ b/ansible/environments/local/group_vars/all
@@ -47,13 +47,8 @@ runtimes_manifest:
image:
name: "action-swift-v3.1.1"
deprecated: false
- - kind: "swift:4.0"
- default: true
- image:
- name: "action-swift-v4.0"
- deprecated: false
- kind: "swift:4.1"
- default: false
+ default: true
image:
name: "action-swift-v4.1"
deprecated: false
diff --git a/core/swift40Action/CHANGELOG.md b/core/swift40Action/CHANGELOG.md
deleted file mode 100644
index b934d8b..0000000
--- a/core/swift40Action/CHANGELOG.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Apache OpenWhisk Swift 4.0 Runtime Container
-
-## 1.0.1
-Changes:
- - Rename image name to `openwhisk/action-swift-v4.0`
- - Rename kind to `swift:4.0`
-
-Swift runtime version: [4.0.3](https://github.com/IBM-Swift/swift-ubuntu-docker/blob/4a821e2db45f7839789f0f516863be8295142ab1/swift-development/Dockerfile)
-
-
-
-## 1.0.0
-Initial Swift 4.0 image
- - Image name: `openwhisk/action-swift-v4`
- - Kind is: `swift:4`
-
-Swift runtime version: [4.0.3](https://github.com/IBM-Swift/swift-ubuntu-docker/blob/4a821e2db45f7839789f0f516863be8295142ab1/swift-development/Dockerfile)
-
-Packages included:
- - No packages included, use Package.swift and pre-compile action.
diff --git a/core/swift40Action/Dockerfile b/core/swift40Action/Dockerfile
deleted file mode 100755
index f14159d..0000000
--- a/core/swift40Action/Dockerfile
+++ /dev/null
@@ -1,30 +0,0 @@
-# Dockerfile for swift actions, overrides and extends ActionRunner from actionProxy
-# This Dockerfile is partially based on: https://github.com/IBM-Swift/swift-ubuntu-docker/blob/master/swift-development/Dockerfile
-FROM ibmcom/swift-ubuntu:4.0.3
-
-# Set WORKDIR
-WORKDIR /
-
-# Upgrade and install basic Python dependencies
-RUN apt-get -y update \
- && apt-get -y install --fix-missing python2.7 python-gevent python-flask zip
-
-# Add the action proxy
-ADD https://raw.githubusercontent.com/apache/incubator-openwhisk-runtime-docker/dockerskeleton%401.1.0/core/actionProxy/actionproxy.py /actionProxy/actionproxy.py
-
-# Add files needed to build and run action
-RUN mkdir -p /swift4Action/spm-build/Sources/Action
-ADD epilogue.swift /swift4Action
-ADD buildandrecord.py /swift4Action
-ADD swift4runner.py /swift4Action
-ADD spm-build/Package.swift /swift4Action/spm-build
-ADD spm-build/_Whisk.swift /swift4Action/spm-build/Sources/Action
-
-# Build
-RUN touch /swift4Action/spm-build/Sources/Action/main.swift
-RUN python /swift4Action/buildandrecord.py && rm /swift4Action/spm-build/.build/release/Action
-#RUN cd /swift4Action/spm-build; swift build -v -c release; rm /swift4Action/spm-build/.build/release/Action
-ENV FLASK_PROXY_PORT 8080
-EXPOSE 8080
-
-CMD ["/bin/bash", "-c", "cd /swift4Action && PYTHONIOENCODING='utf-8' python -u swift4runner.py"]
\ No newline at end of file
diff --git a/core/swift40Action/build.gradle b/core/swift40Action/build.gradle
deleted file mode 100755
index fcde7c2..0000000
--- a/core/swift40Action/build.gradle
+++ /dev/null
@@ -1,2 +0,0 @@
-ext.dockerImageName = 'action-swift-v4.0'
-apply from: '../../gradle/docker.gradle'
diff --git a/core/swift40Action/buildandrecord.py b/core/swift40Action/buildandrecord.py
deleted file mode 100755
index 346ecef..0000000
--- a/core/swift40Action/buildandrecord.py
+++ /dev/null
@@ -1,77 +0,0 @@
-"""Python to generate build script.
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-"""
-from __future__ import print_function
-import os
-import sys
-from subprocess import check_output
-
-# Settings
-COMPILE_PREFIX = "/usr/bin/swiftc -module-name Action "
-LINKER_PREFIX = "/usr/bin/swiftc -target 'x86_64-unknown-linux' -sdk / -L '/swift4Action/spm-build/.build/x86_64-unknown-linux/release' -o '/swift4Action/spm-build/.build/x86_64-unknown-linux/release/Action' -module-name Action -emit-executable -Xlinker '-rpath=$ORIGIN'"
-GENERATED_BUILD_SCRIPT = "/swift4Action/spm-build/swiftbuildandlink.sh"
-SPM_DIRECTORY = "/swift4Action/spm-build"
-BUILD_COMMAND = ["swift", "build", "-v", "-c", "release"]
-
-# Build Swift package and capture step trace
-print("Building action")
-out = check_output(BUILD_COMMAND, cwd=SPM_DIRECTORY)
-print("action built. Decoding compile and link commands")
-
-# Look for compile and link commands in step trace
-compileCommand = None
-linkCommand = None
-
-buildInstructions = out.decode("utf-8").splitlines()
-
-for instruction in buildInstructions:
- if instruction.startswith(COMPILE_PREFIX):
- compileCommand = instruction
-
- # add flag to quiet warnings
- compileCommand += " -suppress-warnings"
-
- elif instruction.startswith(LINKER_PREFIX):
- linkCommand = instruction
-
-# if found, create build script, otherwise exit with error
-if compileCommand is not None and linkCommand is not None:
- print("Generated OpenWhisk Compile command: %s" % compileCommand)
- print("=========")
- print("Generated OpenWhisk Link command: %s" % linkCommand)
-
- with open(GENERATED_BUILD_SCRIPT, "a") as buildScript:
- buildScript.write("#!/bin/bash\n")
- buildScript.write("echo \"Compiling\"\n")
- buildScript.write("%s\n" % compileCommand)
- buildScript.write("swiftStatus=$?\n")
- buildScript.write("echo swiftc status is $swiftStatus\n")
- buildScript.write("if [[ \"$swiftStatus\" -eq \"0\" ]]; then\n")
- buildScript.write("echo \"Linking\"\n")
- buildScript.write("%s\n" % linkCommand)
- buildScript.write("else\n")
- buildScript.write(">2& echo \"Action did not compile\"\n")
- buildScript.write("exit 1\n")
- buildScript.write("fi")
-
- os.chmod(GENERATED_BUILD_SCRIPT, 0o777)
- sys.exit(0)
-else:
- print("Cannot generate build script: compile or link command not found")
- sys.exit(1)
diff --git a/core/swift41Action/build.gradle b/core/swift41Action/build.gradle
index 895dc46..7e91809 100755
--- a/core/swift41Action/build.gradle
+++ b/core/swift41Action/build.gradle
@@ -1,36 +1,2 @@
ext.dockerImageName = 'action-swift-v4.1'
apply from: '../../gradle/docker.gradle'
-
-distDocker.dependsOn 'copyEpilogue'
-distDocker.dependsOn 'copySwiftRunner'
-distDocker.dependsOn 'copyWhisk'
-distDocker.dependsOn 'copyPackageSwift'
-distDocker.finalizedBy('cleanup')
-
-
-task copyEpilogue(type: Copy) {
- from '../swift40Action/epilogue.swift'
- into '.'
-}
-
-task copySwiftRunner(type: Copy) {
- from '../swift40Action/swift4runner.py'
- into '.'
-}
-
-task copyWhisk(type: Copy) {
- from '../swift40Action/spm-build/_Whisk.swift'
- into './spm-build'
-}
-
-task copyPackageSwift(type: Copy) {
- from '../swift40Action/spm-build/Package.swift'
- into './spm-build'
-}
-
-task cleanup(type: Delete) {
- delete 'epilogue.swift'
- delete 'swift4runner.py'
- delete 'spm-build/_Whisk.swift'
- delete 'spm-build/Package.swift'
-}
diff --git a/core/swift40Action/epilogue.swift b/core/swift41Action/epilogue.swift
similarity index 100%
rename from core/swift40Action/epilogue.swift
rename to core/swift41Action/epilogue.swift
diff --git a/core/swift40Action/spm-build/Package.swift b/core/swift41Action/spm-build/Package.swift
similarity index 100%
rename from core/swift40Action/spm-build/Package.swift
rename to core/swift41Action/spm-build/Package.swift
diff --git a/core/swift40Action/spm-build/_Whisk.swift b/core/swift41Action/spm-build/_Whisk.swift
similarity index 100%
rename from core/swift40Action/spm-build/_Whisk.swift
rename to core/swift41Action/spm-build/_Whisk.swift
diff --git a/core/swift40Action/swift4runner.py b/core/swift41Action/swift4runner.py
similarity index 100%
rename from core/swift40Action/swift4runner.py
rename to core/swift41Action/swift4runner.py
diff --git a/settings.gradle b/settings.gradle
index dc7ecfe..bce3ebb 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -2,7 +2,6 @@ include 'tests'
include 'core:swift3.1.1Action'
-include 'core:swift40Action'
include 'core:swift41Action'
rootProject.name = 'runtime-swift'
diff --git a/tests/dat/build.sh b/tests/dat/build.sh
index 97879b8..108dbbf 100755
--- a/tests/dat/build.sh
+++ b/tests/dat/build.sh
@@ -2,9 +2,6 @@
set -e
../../tools/build/compile.sh HelloSwift3 swift:3.1.1 "-v"
-../../tools/build/compile.sh HelloSwift4 swift:4.0 "-v"
-../../tools/build/compile.sh SwiftyRequest swift:4.0 "-v"
-../../tools/build/compile.sh HelloSwift4Codable swift:4.0 "-v"
../../tools/build/compile.sh HelloSwift4 swift:4.1 "-v"
../../tools/build/compile.sh SwiftyRequest swift:4.1 "-v"
diff --git a/tests/dat/build/swift4.0/HelloSwift4.zip b/tests/dat/build/swift4.0/HelloSwift4.zip
deleted file mode 100644
index b230a07..0000000
Binary files a/tests/dat/build/swift4.0/HelloSwift4.zip and /dev/null differ
diff --git a/tests/dat/build/swift4.0/HelloSwift4Codable.zip b/tests/dat/build/swift4.0/HelloSwift4Codable.zip
deleted file mode 100644
index 79cc30b..0000000
Binary files a/tests/dat/build/swift4.0/HelloSwift4Codable.zip and /dev/null differ
diff --git a/tests/dat/build/swift4.0/SwiftyRequest.zip b/tests/dat/build/swift4.0/SwiftyRequest.zip
deleted file mode 100644
index 78ed395..0000000
Binary files a/tests/dat/build/swift4.0/SwiftyRequest.zip and /dev/null differ
diff --git a/tests/src/test/scala/actionContainers/Swift40ActionContainerTests.scala b/tests/src/test/scala/actionContainers/Swift40ActionContainerTests.scala
deleted file mode 100644
index 51ddca7..0000000
--- a/tests/src/test/scala/actionContainers/Swift40ActionContainerTests.scala
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package runtime.actionContainers
-
-import java.io.File
-
-import org.junit.runner.RunWith
-import org.scalatest.junit.JUnitRunner
-import spray.json.{JsObject, JsString}
-import actionContainers.ResourceHelpers
-
-@RunWith(classOf[JUnitRunner])
-class Swift40ActionContainerTests extends SwiftActionContainerTests {
-
- override lazy val swiftContainerImageName = "action-swift-v4.0"
- override lazy val swiftBinaryName = "tests/dat/build/swift4.0/HelloSwift4.zip"
- lazy val partyCompile = "tests/dat/build/swift4.0/SwiftyRequest.zip"
-
- val httpCode = """
- | import Dispatch
- | func main(args:[String: Any]) -> [String:Any] {
- | var resp :[String:Any] = ["error":"getUrl failed"]
- | guard let urlStr = args["getUrl"] as? String else {
- | return ["error":"getUrl not found in action input"]
- | }
- | guard let url = URL(string: urlStr) else {
- | return ["error":"invalid url string \(urlStr)"]
- | }
- | let request = URLRequest(url: url)
- | let session = URLSession(configuration: .default)
- | let semaphore = DispatchSemaphore(value: 0)
- | let task = session.dataTask(with: request, completionHandler: {data, response, error -> Void in
- | print("done with http request")
- | if let error = error {
- | print("There was an error \(error)")
- | } else if let data = data,
- | let response = response as? HTTPURLResponse,
- | response.statusCode == 200 {
- | do {
- | let respJson = try JSONSerialization.jsonObject(with: data)
- | if respJson is [String:Any] {
- | resp = respJson as! [String:Any]
- | } else {
- | resp = ["error":"Response from server is not a dictionary"]
- | }
- | } catch {
- | resp = ["error":"Error creating json from response: \(error)"]
- | }
- | }
- | semaphore.signal()
- | })
- | task.resume()
- | _ = semaphore.wait(timeout: .distantFuture)
- | return resp
- | }
- """.stripMargin
-
- it should "support ability to use 3rd party packages like SwiftyRequest" in {
- val zip = new File(partyCompile).toPath
- val code = ResourceHelpers.readAsBase64(zip)
-
- val (out, err) = withActionContainer() { c =>
- val (initCode, initRes) = c.init(initPayload(code))
- initCode should be(200)
-
- val args = JsObject("message" -> (JsString("serverless")))
- val (runCode, runRes) = c.run(runPayload(args))
-
- runCode should be(200)
- val json = runRes.get.fields.get("json")
- json shouldBe Some(args)
- }
-
- checkStreams(out, err, {
- case (o, e) =>
- if (enforceEmptyOutputStream) o shouldBe empty
- e shouldBe empty
- })
- }
-
- it should "receive a large (1MB) argument" in {
- withActionContainer() { c =>
- val code = """
- | func main(args: [String: Any]) -> [String: Any] {
- | return args
- | }
- |""".stripMargin
-
- val (initCode, initRes) = c.init(initPayload(code))
- initCode should be(200)
-
- val arg = JsObject("arg" -> JsString(("a" * 1048561)))
- val (_, runRes) = c.run(runPayload(arg))
- runRes.get shouldBe arg
- }
- }
-
-}
diff --git a/tests/src/test/scala/actionContainers/Swift40CodableActionContainerTests.scala b/tests/src/test/scala/actionContainers/Swift40CodableActionContainerTests.scala
deleted file mode 100644
index 8a71155..0000000
--- a/tests/src/test/scala/actionContainers/Swift40CodableActionContainerTests.scala
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package runtime.actionContainers
-
-class Swift40CodableActionContainerTests extends SwiftCodableActionContainerTests {
- override lazy val swiftContainerImageName = "action-swift-v4.0"
- override lazy val swiftBinaryName = "tests/dat/build/swift4.0/HelloSwift4Codable.zip"
-}
diff --git a/tests/src/test/scala/actionContainers/Swift41ActionContainerTests.scala b/tests/src/test/scala/actionContainers/Swift41ActionContainerTests.scala
index 04d44b6..8ca8c0e 100644
--- a/tests/src/test/scala/actionContainers/Swift41ActionContainerTests.scala
+++ b/tests/src/test/scala/actionContainers/Swift41ActionContainerTests.scala
@@ -17,12 +17,96 @@
package runtime.actionContainers
+import java.io.File
+
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
+import spray.json.{JsObject, JsString}
+import actionContainers.ResourceHelpers
@RunWith(classOf[JUnitRunner])
-class Swift41ActionContainerTests extends Swift40ActionContainerTests {
+class Swift41ActionContainerTests extends SwiftActionContainerTests {
+
override lazy val swiftContainerImageName = "action-swift-v4.1"
override lazy val swiftBinaryName = "tests/dat/build/swift4.1/HelloSwift4.zip"
- override lazy val partyCompile = "tests/dat/build/swift4.1/SwiftyRequest.zip"
+ lazy val partyCompile = "tests/dat/build/swift4.1/SwiftyRequest.zip"
+
+ val httpCode = """
+ | import Dispatch
+ | func main(args:[String: Any]) -> [String:Any] {
+ | var resp :[String:Any] = ["error":"getUrl failed"]
+ | guard let urlStr = args["getUrl"] as? String else {
+ | return ["error":"getUrl not found in action input"]
+ | }
+ | guard let url = URL(string: urlStr) else {
+ | return ["error":"invalid url string \(urlStr)"]
+ | }
+ | let request = URLRequest(url: url)
+ | let session = URLSession(configuration: .default)
+ | let semaphore = DispatchSemaphore(value: 0)
+ | let task = session.dataTask(with: request, completionHandler: {data, response, error -> Void in
+ | print("done with http request")
+ | if let error = error {
+ | print("There was an error \(error)")
+ | } else if let data = data,
+ | let response = response as? HTTPURLResponse,
+ | response.statusCode == 200 {
+ | do {
+ | let respJson = try JSONSerialization.jsonObject(with: data)
+ | if respJson is [String:Any] {
+ | resp = respJson as! [String:Any]
+ | } else {
+ | resp = ["error":"Response from server is not a dictionary"]
+ | }
+ | } catch {
+ | resp = ["error":"Error creating json from response: \(error)"]
+ | }
+ | }
+ | semaphore.signal()
+ | })
+ | task.resume()
+ | _ = semaphore.wait(timeout: .distantFuture)
+ | return resp
+ | }
+ """.stripMargin
+
+ it should "support ability to use 3rd party packages like SwiftyRequest" in {
+ val zip = new File(partyCompile).toPath
+ val code = ResourceHelpers.readAsBase64(zip)
+
+ val (out, err) = withActionContainer() { c =>
+ val (initCode, initRes) = c.init(initPayload(code))
+ initCode should be(200)
+
+ val args = JsObject("message" -> (JsString("serverless")))
+ val (runCode, runRes) = c.run(runPayload(args))
+
+ runCode should be(200)
+ val json = runRes.get.fields.get("json")
+ json shouldBe Some(args)
+ }
+
+ checkStreams(out, err, {
+ case (o, e) =>
+ if (enforceEmptyOutputStream) o shouldBe empty
+ e shouldBe empty
+ })
+ }
+
+ it should "receive a large (1MB) argument" in {
+ withActionContainer() { c =>
+ val code = """
+ | func main(args: [String: Any]) -> [String: Any] {
+ | return args
+ | }
+ |""".stripMargin
+
+ val (initCode, initRes) = c.init(initPayload(code))
+ initCode should be(200)
+
+ val arg = JsObject("arg" -> JsString(("a" * 1048561)))
+ val (_, runRes) = c.run(runPayload(arg))
+ runRes.get shouldBe arg
+ }
+ }
}
diff --git a/tests/src/test/scala/sdk/Swift40SDKTests.scala b/tests/src/test/scala/sdk/Swift40SDKTests.scala
deleted file mode 100644
index 319a622..0000000
--- a/tests/src/test/scala/sdk/Swift40SDKTests.scala
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package runtime.sdk
-
-import org.junit.runner.RunWith
-import org.scalatest.junit.JUnitRunner
-
-@RunWith(classOf[JUnitRunner])
-class Swift40SDKTests extends SwiftSDKTests {
- override lazy val actionKind = "swift:4.0"
-}
diff --git a/tests/src/test/scala/sdk/Swift41SDKTests.scala b/tests/src/test/scala/sdk/Swift41SDKTests.scala
index 267f15a..edf66c6 100644
--- a/tests/src/test/scala/sdk/Swift41SDKTests.scala
+++ b/tests/src/test/scala/sdk/Swift41SDKTests.scala
@@ -21,6 +21,6 @@ import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
@RunWith(classOf[JUnitRunner])
-class Swift41SDKTests extends Swift40SDKTests {
+class Swift41SDKTests extends SwiftSDKTests {
override lazy val actionKind = "swift:4.1"
}
diff --git a/tools/build/compile.sh b/tools/build/compile.sh
index 08c5523..425ffb1 100755
--- a/tools/build/compile.sh
+++ b/tools/build/compile.sh
@@ -23,7 +23,7 @@ if [ -z "$1" ] ; then
exit 1
fi
if [ -z "$2" ] ; then
- echo 'Error: Missing runtime docker image name, for example openwhisk/action-swift-v4.0'
+ echo 'Error: Missing kind, for example swift:4.1'
exit 2
fi
@@ -32,11 +32,6 @@ DEST_SOURCE="$BASE_PATH/spm-build"
RUNTIME="openwhisk/action-swift-v3.1.1"
if [ ${2} == "swift:3.1.1" ]; then
OUTPUT_DIR="build/swift311"
-elif [ ${2} == "swift:4.0" ]; then
- RUNTIME="action-swift-v4.0"
- BASE_PATH="/swift4Action"
- DEST_SOURCE="/$BASE_PATH/spm-build/Sources/Action"
- OUTPUT_DIR="build/swift4.0"
elif [ ${2} == "swift:4.1" ]; then
RUNTIME="action-swift-v4.1"
BASE_PATH="/swift4Action"
diff --git a/tools/travis/build.sh b/tools/travis/build.sh
index 2293a54..8f4db2a 100755
--- a/tools/travis/build.sh
+++ b/tools/travis/build.sh
@@ -49,6 +49,5 @@ TERM=dumb ./gradlew \
cd $ROOTDIR
TERM=dumb ./gradlew \
:core:swift3.1.1Action:distDocker \
-:core:swift40Action:distDocker \
:core:swift41Action:distDocker \
-PdockerImagePrefix=${IMAGE_PREFIX}
diff --git a/tools/travis/publish.sh b/tools/travis/publish.sh
index 480e782..42c2c34 100755
--- a/tools/travis/publish.sh
+++ b/tools/travis/publish.sh
@@ -32,8 +32,6 @@ IMAGE_TAG=$3
if [ ${RUNTIME_VERSION} == "3.1.1" ]; then
RUNTIME="swift3.1.1Action"
-elif [ ${RUNTIME_VERSION} == "4.0" ]; then
- RUNTIME="swift40Action"
elif [ ${RUNTIME_VERSION} == "4.1" ]; then
RUNTIME="swift41Action"
fi
--
To stop receiving notification emails like this one, please contact
csantanapr@apache.org.