Skip to content

Commit 059aba4

Browse files
committed
feat: Use multiple time formats for system resource metrics
1 parent 21f2709 commit 059aba4

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

test-results/cmd/resource-metrics.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"strings"
1010
"time"
1111

12+
"github.com/semaphoreci/toolbox/test-results/pkg/parser"
1213
"github.com/spf13/cobra"
1314
)
1415

@@ -89,8 +90,7 @@ var resourceMetricsCmd = &cobra.Command{
8990
dockerDiskSeries []string
9091
)
9192

92-
layout := "Mon 02 Jan 2006 03:04:05 PM MST"
93-
startTime, err := time.Parse(layout, metrics[0].Timestamp)
93+
startTime, layout, err := parser.ParseTimeAuto(metrics[0].Timestamp)
9494
if err != nil {
9595
return fmt.Errorf("failed to parse start time: %w", err)
9696
}

test-results/pkg/parser/time.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
ackage parser
2+
3+
import (
4+
"fmt"
5+
"time"
6+
)
7+
8+
var layouts = []string{
9+
time.RFC1123,
10+
time.RFC1123Z,
11+
"Mon 02 Jan 2006 03:04:05 PM MST",
12+
"Mon Jan 2 15:04:05 MST 2006",
13+
"Mon Jan 2 03:04:05 PM MST 2006",
14+
"Mon Jan 2 15:04:05 UTC 2006",
15+
}
16+
17+
func ParseTimeAuto(input string) (time.Time, string, error) {
18+
for _, layout := range layouts {
19+
t, err := time.Parse(layout, input)
20+
if err == nil {
21+
return t, layout, nil
22+
}
23+
}
24+
return time.Time{}, "", fmt.Errorf("no matching layout found for: %s", input)
25+
}

0 commit comments

Comments
 (0)