You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by du...@apache.org on 2017/09/15 16:10:49 UTC

[incubator-openwhisk] branch master updated: Add activation logs strip option. (#2620)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new f767599  Add activation logs strip option. (#2620)
f767599 is described below

commit f7675991d413b51b4e9a23d033f32df573f13895
Author: David Liu <no...@126.com>
AuthorDate: Sat Sep 16 00:10:47 2017 +0800

    Add activation logs strip option. (#2620)
    
    * Add activation logs strip option.
    
    * Add proper test for strip option.
    
    * Remove dead code.
---
 .../main/scala/whisk/core/entity/WhiskStore.scala    |  1 +
 .../main/scala/whisk/core/controller/Actions.scala   |  5 +----
 tests/dat/actions/log.js                             |  7 +++++++
 .../whisk/core/cli/test/WskBasicUsageTests.scala     | 20 +++++++++++++++++++-
 tools/cli/go-whisk-cli/commands/activation.go        |  2 +-
 tools/cli/go-whisk-cli/commands/flags.go             |  1 +
 tools/cli/go-whisk-cli/commands/util.go              |  7 ++++++-
 .../go-whisk-cli/wski18n/resources/en_US.all.json    |  4 ++++
 8 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/common/scala/src/main/scala/whisk/core/entity/WhiskStore.scala b/common/scala/src/main/scala/whisk/core/entity/WhiskStore.scala
index 21595b7..6c3f872 100644
--- a/common/scala/src/main/scala/whisk/core/entity/WhiskStore.scala
+++ b/common/scala/src/main/scala/whisk/core/entity/WhiskStore.scala
@@ -51,6 +51,7 @@ package object types {
   type EntityStore = ArtifactStore[WhiskEntity]
   type ActivationStore = ArtifactStore[WhiskActivation]
 }
+
 protected[core] trait WhiskDocument extends DocumentSerializer with DocumentRevisionProvider {
 
   /**
diff --git a/core/controller/src/main/scala/whisk/core/controller/Actions.scala b/core/controller/src/main/scala/whisk/core/controller/Actions.scala
index e760c1e..6be768c 100644
--- a/core/controller/src/main/scala/whisk/core/controller/Actions.scala
+++ b/core/controller/src/main/scala/whisk/core/controller/Actions.scala
@@ -60,9 +60,6 @@ import whisk.core.entitlement.Privilege._
 object WhiskActionsApi {
   def requiredProperties = Map(WhiskConfig.actionSequenceMaxLimit -> null)
 
-  /** Grace period after action timeout limit to poll for result. */
-  protected[core] val blockingInvokeGrace = 5 seconds
-
   /**
    * Max duration to wait for a blocking activation.
    * This is the default timeout on a POST request.
@@ -593,7 +590,7 @@ trait WhiskActionsApi extends WhiskCollectionAPI with PostActionActivation with
    * the given original sequence.
    *
    * @param origSequence the original sequence that is updated/created which generated the checks
-   * @param the components of the a sequence to check if they reference the original sequence
+   * @param components the components of the a sequence to check if they reference the original sequence
    * @return Future with the number of atomic actions in the current sequence or an appropriate error if there is a cycle or a non-existent action reference
    */
   private def countAtomicActionsAndCheckCycle(
diff --git a/tests/dat/actions/log.js b/tests/dat/actions/log.js
new file mode 100644
index 0000000..bfbd513
--- /dev/null
+++ b/tests/dat/actions/log.js
@@ -0,0 +1,7 @@
+/**
+ * Emit strings to stdout/stderr.
+ */
+function main() {
+    console.log("this is stdout");
+    console.error("this is stderr");
+}
diff --git a/tests/src/test/scala/whisk/core/cli/test/WskBasicUsageTests.scala b/tests/src/test/scala/whisk/core/cli/test/WskBasicUsageTests.scala
index b21a218..e9f17e5 100644
--- a/tests/src/test/scala/whisk/core/cli/test/WskBasicUsageTests.scala
+++ b/tests/src/test/scala/whisk/core/cli/test/WskBasicUsageTests.scala
@@ -307,6 +307,22 @@ class WskBasicUsageTests extends TestHelpers with WskTestHelpers {
       N = 5)
   }
 
+  it should "ensure timestamp and stream are stripped from log lines" in withAssetCleaner(wskprops) {
+    val name = "activationLogStripTest"
+    val auth: Seq[String] = Seq("--auth", wskprops.authKey)
+
+    (wp, assetHelper) =>
+      assetHelper.withCleaner(wsk.action, name) { (action, _) =>
+        action.create(name, Some(TestUtils.getTestActionFilename("log.js")))
+      }
+
+      withActivation(wsk.activation, wsk.action.invoke(name)) { activation =>
+        val cmd = Seq("activation", "logs", "--strip", activation.activationId)
+        val run = wsk.cli(cmd ++ wskprops.overrides ++ auth, expectedExitCode = SUCCESS_EXIT)
+        run.stdout shouldBe "this is stdout\nthis is stderr\n"
+      }
+  }
+
   it should "ensure keys are not omitted from activation record" in withAssetCleaner(wskprops) {
     val name = "activationRecordTest"
 
@@ -352,7 +368,9 @@ class WskBasicUsageTests extends TestHelpers with WskTestHelpers {
           "key" -> JsString("limits"),
           "value" -> ActionLimits(TimeLimit(timeLimit), MemoryLimit(memoryLimit), LogLimit(logLimit)).toJson)
 
-        val path = annotations.find { _.fields("key").convertTo[String] == "path" }.get
+        val path = annotations.find {
+          _.fields("key").convertTo[String] == "path"
+        }.get
 
         path.fields("value").convertTo[String] should fullyMatch regex (s""".*/$name""")
         annotations should contain(limitsObj)
diff --git a/tools/cli/go-whisk-cli/commands/activation.go b/tools/cli/go-whisk-cli/commands/activation.go
index 59e84fe..9021267 100644
--- a/tools/cli/go-whisk-cli/commands/activation.go
+++ b/tools/cli/go-whisk-cli/commands/activation.go
@@ -401,7 +401,7 @@ func init() {
     activationGetCmd.Flags().BoolVarP(&flags.activation.last, "last", "l", false, wski18n.T("retrieves the last activation"))
 
     activationLogsCmd.Flags().BoolVarP(&flags.activation.last, "last", "l", false, wski18n.T("retrieves the last activation"))
-
+    activationLogsCmd.Flags().BoolVarP(&flags.activation.strip, "strip", "r", false, wski18n.T("strip timestamp and stream information"))
     activationResultCmd.Flags().BoolVarP(&flags.activation.last, "last", "l", false, wski18n.T("retrieves the last activation"))
 
     activationPollCmd.Flags().IntVarP(&flags.activation.exit, "exit", "e", 0, wski18n.T("stop polling after `SECONDS` seconds"))
diff --git a/tools/cli/go-whisk-cli/commands/flags.go b/tools/cli/go-whisk-cli/commands/flags.go
index 15f9ed4..834c04a 100644
--- a/tools/cli/go-whisk-cli/commands/flags.go
+++ b/tools/cli/go-whisk-cli/commands/flags.go
@@ -94,6 +94,7 @@ type Flags struct {
         sinceDays       int
         exit            int
         last            bool
+        strip           bool
     }
 
     // rule
diff --git a/tools/cli/go-whisk-cli/commands/util.go b/tools/cli/go-whisk-cli/commands/util.go
index 9288cae..e8c422f 100644
--- a/tools/cli/go-whisk-cli/commands/util.go
+++ b/tools/cli/go-whisk-cli/commands/util.go
@@ -273,7 +273,12 @@ func printFullActivationList(activations []whisk.Activation) {
 
 func printActivationLogs(logs []string) {
     for _, log := range logs {
-        fmt.Printf("%s\n", log)
+        if (flags.activation.strip){
+            fmt.Printf("%s\n", log[39:])
+        } else {
+            fmt.Printf("%s\n", log)
+        }
+
     }
 }
 
diff --git a/tools/cli/go-whisk-cli/wski18n/resources/en_US.all.json b/tools/cli/go-whisk-cli/wski18n/resources/en_US.all.json
index 39551d0..5f5bdf8 100644
--- a/tools/cli/go-whisk-cli/wski18n/resources/en_US.all.json
+++ b/tools/cli/go-whisk-cli/wski18n/resources/en_US.all.json
@@ -1064,6 +1064,10 @@
     "translation": "retrieves the last activation"
   },
   {
+    "id": "strip timestamp and stream information",
+    "translation": "strip timestamp and stream information"
+  },
+  {
     "id": "stop polling after `SECONDS` seconds",
     "translation": "stop polling after `SECONDS` seconds"
   },

-- 
To stop receiving notification emails like this one, please contact
['"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>'].