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

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


The following commit(s) were added to refs/heads/master by this push:
     new 27de5ba  Account for variable length timestamps when stripping logs 
(#292)
27de5ba is described below

commit 27de5ba9990c65ce7c94b181ee246607f83f296f
Author: James Dubee <[email protected]>
AuthorDate: Tue May 8 15:46:26 2018 -0400

    Account for variable length timestamps when stripping logs (#292)
    
    * Account for variable length timestamps for log stripping
    
    * Use regex for stripped log extraction
    
    * Create activation logs strip method
    
    * Add unit test
    
    * Review refactor
    
    * Use map for unit test
---
 commands/activation.go |  7 ++++++-
 commands/util.go       | 26 ++++++++++++++++++++------
 commands/util_test.go  | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 72 insertions(+), 7 deletions(-)

diff --git a/commands/activation.go b/commands/activation.go
index a360270..dcf1ffa 100644
--- a/commands/activation.go
+++ b/commands/activation.go
@@ -202,7 +202,12 @@ var activationLogsCmd = &cobra.Command{
                        return werr
                }
 
-               printActivationLogs(activation.Logs)
+               if !Flags.activation.strip {
+                       printActivationLogs(activation.Logs)
+               } else {
+                       printStrippedActivationLogs(activation.Logs)
+               }
+
                return nil
        },
 }
diff --git a/commands/util.go b/commands/util.go
index 570a93e..a33ad23 100644
--- a/commands/util.go
+++ b/commands/util.go
@@ -225,6 +225,19 @@ func makeDefaultHeader(collection interface{}) string {
        return defaultHeader
 }
 
+func stripTimestamp(log string) (strippedLog string) {
+       regex := regexp.MustCompile("[a-zA-Z0-9\\s]*(stdout|stderr):\\s(.*)")
+       match := regex.FindStringSubmatch(log)
+
+       if len(match) > 2 && len(match[2]) > 0 {
+               strippedLog = match[2]
+       } else {
+               strippedLog = log
+       }
+
+       return strippedLog
+}
+
 func printFullList(collection interface{}) {
        switch collection := collection.(type) {
        case []whisk.Action:
@@ -280,14 +293,15 @@ func printFullActivationList(activations 
[]whisk.Activation) {
        }
 }
 
-func printActivationLogs(logs []string) {
+func printStrippedActivationLogs(logs []string) {
        for _, log := range logs {
-               if Flags.activation.strip {
-                       fmt.Printf("%s\n", log[39:])
-               } else {
-                       fmt.Printf("%s\n", log)
-               }
+               fmt.Printf("%s\n", stripTimestamp(log))
+       }
+}
 
+func printActivationLogs(logs []string) {
+       for _, log := range logs {
+               fmt.Printf("%s\n", log)
        }
 }
 
diff --git a/commands/util_test.go b/commands/util_test.go
new file mode 100644
index 0000000..afdba35
--- /dev/null
+++ b/commands/util_test.go
@@ -0,0 +1,46 @@
+//// +build unit
+
+/*
+ * 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 commands
+
+import (
+       "github.com/stretchr/testify/assert"
+       "testing"
+)
+
+func TestStripTimestamp(t *testing.T) {
+       logs := map[string]string{
+               "2018-05-02T19:33:32.829992819Z stdout: this is stdout stderr: 
this is still stdout": "this is stdout stderr: this is still stdout",
+               "2018-05-02T19:33:32.829992819Z stderr: this is stderr stdout: 
this is still stderr": "this is stderr stdout: this is still stderr",
+               "2018-05-02T19:33:32.89Z stdout: this is stdout":               
                      "this is stdout",
+               "2018-05-02T19:33:32.89Z stderr: this is stderr":               
                      "this is stderr",
+               "anything stdout: this is stdout":                              
                      "this is stdout",
+               "anything stderr: this is stderr":                              
                      "this is stderr",
+               "stdout: this is stdout":                                       
                      "this is stdout",
+               "stderr: this is stderr":                                       
                      "this is stderr",
+               "this is stdout":                                               
                      "this is stdout",
+               "this is stderr":                                               
                      "this is stderr",
+               "something":                                                    
                      "something",
+               "":                                                             
                      ""}
+       assert := assert.New(t)
+
+       for log, expected := range logs {
+               assert.Equal(stripTimestamp(log), expected)
+       }
+}

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

Reply via email to