This is an automated email from the ASF dual-hosted git repository.

houshengbo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-cli.git

commit dd1dd2a65e860e40e7ba560a53ea068e80291031
Author: Benjamin Poole <[email protected]>
AuthorDate: Thu Jul 13 10:00:39 2017 -0400

    (Review) Added --last Activation Flag  (#2334)
    
    * Added lastFlag to activation logs, result and get along with docs/testing
---
 .../test/scala/system/basic/WskBasicTests.scala    | 76 ++++++++++++++++++----
 .../test/scala/system/basic/WskSequenceTests.scala |  4 +-
 2 files changed, 65 insertions(+), 15 deletions(-)

diff --git a/tests/src/test/scala/system/basic/WskBasicTests.scala 
b/tests/src/test/scala/system/basic/WskBasicTests.scala
index 6de37d8..65ebc04 100644
--- a/tests/src/test/scala/system/basic/WskBasicTests.scala
+++ b/tests/src/test/scala/system/basic/WskBasicTests.scala
@@ -852,34 +852,84 @@ class WskBasicTests
             withActivation(wsk.activation, run) {
                 activation =>
                     val successMsg = s"ok: got activation 
${activation.activationId}, displaying field"
-                    wsk.activation.get(activation.activationId, fieldFilter = 
Some("namespace")).stdout should include regex (s"""(?i)$successMsg 
namespace\n$ns_regex_list""")
-                    wsk.activation.get(activation.activationId, fieldFilter = 
Some("name")).stdout should include(s"""$successMsg name\n"$name"""")
-                    wsk.activation.get(activation.activationId, fieldFilter = 
Some("version")).stdout should include(s"""$successMsg version\n"0.0.1"""")
-                    wsk.activation.get(activation.activationId, fieldFilter = 
Some("publish")).stdout should include(s"""$successMsg publish\nfalse""")
-                    wsk.activation.get(activation.activationId, fieldFilter = 
Some("subject")).stdout should include regex (s"""(?i)$successMsg subject\n""")
-                    wsk.activation.get(activation.activationId, fieldFilter = 
Some("activationid")).stdout should include(s"""$successMsg 
activationid\n"${activation.activationId}""")
-                    wsk.activation.get(activation.activationId, fieldFilter = 
Some("start")).stdout should include regex (s"""$successMsg start\n\\d""")
-                    wsk.activation.get(activation.activationId, fieldFilter = 
Some("end")).stdout should include regex (s"""$successMsg end\n\\d""")
-                    wsk.activation.get(activation.activationId, fieldFilter = 
Some("duration")).stdout should include regex (s"""$successMsg duration\n\\d""")
-                    wsk.activation.get(activation.activationId, fieldFilter = 
Some("annotations")).stdout should include(s"""$successMsg annotations\n[]""")
+                    wsk.activation.get(Some(activation.activationId), 
fieldFilter = Some("namespace")).stdout should include regex 
(s"""(?i)$successMsg namespace\n$ns_regex_list""")
+                    wsk.activation.get(Some(activation.activationId), 
fieldFilter = Some("name")).stdout should include(s"""$successMsg 
name\n"$name"""")
+                    wsk.activation.get(Some(activation.activationId), 
fieldFilter = Some("version")).stdout should include(s"""$successMsg 
version\n"0.0.1"""")
+                    wsk.activation.get(Some(activation.activationId), 
fieldFilter = Some("publish")).stdout should include(s"""$successMsg 
publish\nfalse""")
+                    wsk.activation.get(Some(activation.activationId), 
fieldFilter = Some("subject")).stdout should include regex (s"""(?i)$successMsg 
subject\n""")
+                    wsk.activation.get(Some(activation.activationId), 
fieldFilter = Some("activationid")).stdout should include(s"""$successMsg 
activationid\n"${activation.activationId}""")
+                    wsk.activation.get(Some(activation.activationId), 
fieldFilter = Some("start")).stdout should include regex (s"""$successMsg 
start\n\\d""")
+                    wsk.activation.get(Some(activation.activationId), 
fieldFilter = Some("end")).stdout should include regex (s"""$successMsg 
end\n\\d""")
+                    wsk.activation.get(Some(activation.activationId), 
fieldFilter = Some("duration")).stdout should include regex (s"""$successMsg 
duration\n\\d""")
+                    wsk.activation.get(Some(activation.activationId), 
fieldFilter = Some("annotations")).stdout should include(s"""$successMsg 
annotations\n[]""")
             }
     }
 
     it should "reject get of activation that does not exist" in {
         val name = "0"*32
-        val stderr = wsk.activation.get(name, expectedExitCode = 
NOT_FOUND).stderr
+        val stderr = wsk.activation.get(Some(name), expectedExitCode = 
NOT_FOUND).stderr
         stderr should include regex (s"""Unable to get activation '$name': The 
requested resource does not exist. \\(code \\d+\\)""")
     }
 
     it should "reject logs of activation that does not exist" in {
         val name = "0"*32
-        val stderr = wsk.activation.logs(name, expectedExitCode = 
NOT_FOUND).stderr
+        val stderr = wsk.activation.logs(Some(name), expectedExitCode = 
NOT_FOUND).stderr
         stderr should include regex (s"""Unable to get logs for activation 
'$name': The requested resource does not exist. \\(code \\d+\\)""")
     }
 
     it should "reject result of activation that does not exist" in {
         val name = "0"*32
-        val stderr = wsk.activation.result(name, expectedExitCode = 
NOT_FOUND).stderr
+        val stderr = wsk.activation.result(Some(name), expectedExitCode = 
NOT_FOUND).stderr
         stderr should include regex (s"""Unable to get result for activation 
'$name': The requested resource does not exist. \\(code \\d+\\)""")
     }
+
+    it should "retrieve the last activation using --last flag" in 
withAssetCleaner(wskprops) {
+        (wp, assetHelper) =>
+            val auth: Seq[String] = Seq("--auth", wskprops.authKey)
+            val includeStr = "hello, undefined!"
+
+            assetHelper.withCleaner(wsk.action, "lastName") {
+                (action, _) => wsk.action.create("lastName", defaultAction)
+            }
+            val lastInvoke = wsk.action.invoke("lastName")
+            val includeID = wsk.activation.extractActivationId(lastInvoke).get
+            Thread.sleep(1000)
+
+            var  lastFlag = Seq (
+                (Seq("activation", "get", "publish", "--last"), includeID),
+                (Seq("activation", "get", "--last"), includeID),
+                (Seq("activation", "logs", "--last"), includeStr),
+                (Seq("activation", "result", "--last"), includeStr))
+
+            lastFlag foreach {
+                case (cmd, output) =>
+                    val stdout = wsk.cli(cmd ++ wskprops.overrides ++ auth, 
expectedExitCode = SUCCESS_EXIT).stdout
+                    stdout should include(output)
+            }
+    }
+
+    it should "reject activation request when using activation ID with --last 
Flag" in withAssetCleaner(wskprops) {
+        (wp, assetHelper) =>
+            val auth: Seq[String] = Seq("--auth", wskprops.authKey)
+
+             assetHelper.withCleaner(wsk.action, "lastName") {
+                 (action, _) => wsk.action.create("lastName", defaultAction)
+             }
+            val lastId = 
wsk.activation.extractActivationId(wsk.action.invoke("lastName")).get
+            val tooManyArgsMsg = s"${lastId}. An activation ID is required."
+            val invalidField = s"Invalid field filter '${lastId}'."
+            Thread.sleep(1000)
+
+            var  invalidCmd = Seq (
+                (Seq("activation", "get", s"$lastId", "publish", "--last"), 
tooManyArgsMsg),
+                (Seq("activation", "get", s"$lastId", "--last"), invalidField),
+                (Seq("activation", "logs", s"$lastId", "--last"), 
tooManyArgsMsg),
+                (Seq("activation", "result", s"$lastId", "--last"), 
tooManyArgsMsg))
+
+            invalidCmd foreach {
+                case (cmd, err) =>
+                    val stderr = wsk.cli(cmd ++ wskprops.overrides ++ auth, 
expectedExitCode = ERROR_EXIT).stderr
+                    stderr should include(err)
+            }
+     }
 }
diff --git a/tests/src/test/scala/system/basic/WskSequenceTests.scala 
b/tests/src/test/scala/system/basic/WskSequenceTests.scala
index a5c483b..0c023c9 100644
--- a/tests/src/test/scala/system/basic/WskSequenceTests.scala
+++ b/tests/src/test/scala/system/basic/WskSequenceTests.scala
@@ -213,7 +213,7 @@ class WskSequenceTests
                     result.fields.get("error") shouldBe 
Some(JsString(sequenceIsTooLong))
                     // check that inner sequence had only (limit - 1) 
activations
                     val innerSeq = activation.logs.get(1) // the id of the 
inner sequence activation
-                    val getInnerSeq = wsk.activation.get(innerSeq)
+                    val getInnerSeq = wsk.activation.get(Some(innerSeq))
                     withActivation(wsk.activation, getInnerSeq, totalWait = 
allowedActionDuration) {
                         innerSeqActivation =>
                             innerSeqActivation.logs.get.size shouldBe (limit - 
1)
@@ -507,7 +507,7 @@ class WskSequenceTests
         withActivation(wsk.activation, run, totalWait = 2 * 
allowedActionDuration) { activation =>
             checkSequenceLogsAndAnnotations(activation, 1)
             val componentId = activation.logs.get(atomicActionIdx)
-            val getComponentActivation = wsk.activation.get(componentId)
+            val getComponentActivation = wsk.activation.get(Some(componentId))
             withActivation(wsk.activation, getComponentActivation, totalWait = 
allowedActionDuration) { componentActivation =>
                 println(componentActivation)
                 componentActivation.logs shouldBe defined

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to