Skip to content

Commit 1196c61

Browse files
committed
validate results before compress and upload
1 parent 8d0ff23 commit 1196c61

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

cmd/lens/util.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"os"
99
"os/exec"
1010
"path"
11+
"regexp"
1112
"strconv"
1213
"strings"
1314
"time"
@@ -86,6 +87,25 @@ func checkZstd() error {
8687
return nil
8788
}
8889

90+
func validResult(directory, filename string) error {
91+
fullPath := path.Join(directory, filename)
92+
data, err := os.ReadFile(fullPath)
93+
if err != nil {
94+
return fmt.Errorf("error reading %s: %w", fullPath, err)
95+
}
96+
content := string(data)
97+
98+
// Match variants like:
99+
// [1763071200.038727] 64 bytes from 100.64.0.1: icmp_seq=1 ttl=63 time=33.1 ms
100+
// 64 bytes from 100.64.0.1: icmp_seq=1 ttl=63 time=33.1 ms
101+
re := regexp.MustCompile(`(?m)(?:\[\d+(?:\.\d+)?\]\s*)?\d+\s+bytes\s+from\s+[0-9a-fA-F:\.]+:.*\btime=[0-9.]+(?:\s*ms)?`)
102+
if re.FindStringIndex(content) != nil {
103+
return nil
104+
}
105+
106+
return fmt.Errorf("%s contains no valid ping results", fullPath)
107+
}
108+
89109
func compress(directory, filename string) error {
90110
fullFilename := path.Join(directory, filename)
91111
fileInfo, err := os.Stat(fullFilename)
@@ -95,6 +115,9 @@ func compress(directory, filename string) error {
95115
if fileInfo.Size() == 0 {
96116
return fmt.Errorf("%s is empty, skipping compression", fullFilename)
97117
}
118+
if err := validResult(directory, filename); err != nil {
119+
return fmt.Errorf("no valid results in %s, skipping compression", fullFilename)
120+
}
98121

99122
cmd := exec.Command("tar", "--zstd", "-C", directory, "-cf", path.Join(directory, fmt.Sprintf("%s.tar.zst", filename)), filename, "--remove-files")
100123
if err := checkZstd(); err != nil {

0 commit comments

Comments
 (0)