Skip to content

Commit 8c47e1d

Browse files
Merge pull request #30054 from machine424/gather_met
MON-4290: add test for must-gather gather_metrics
2 parents 1fc70a9 + 2d614d1 commit 8c47e1d

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

test/extended/cli/mustgather.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,50 @@ var _ = g.Describe("[sig-cli] oc adm must-gather", func() {
340340
})
341341
})
342342
})
343+
344+
g.It("runs successfully for metrics gathering [apigroup:config.openshift.io]", func() {
345+
tempDir, err := os.MkdirTemp("", "test.oc-adm-must-gather.")
346+
o.Expect(err).NotTo(o.HaveOccurred())
347+
defer os.RemoveAll(tempDir)
348+
349+
args := []string{
350+
"--dest-dir", tempDir,
351+
"--",
352+
"/usr/bin/gather_metrics",
353+
fmt.Sprintf("--min-time=%d", time.Now().Add(-5*time.Minute).UnixMilli()),
354+
fmt.Sprintf("--max-time=%d", time.Now().UnixMilli()),
355+
"--match=prometheus_ready",
356+
"--match=prometheus_build_info",
357+
}
358+
o.Expect(oc.Run("adm", "must-gather").Args(args...).Execute()).To(o.Succeed())
359+
360+
// wait for the contents to show up in the plugin output directory
361+
time.Sleep(5 * time.Second)
362+
363+
pluginOutputDir := GetPluginOutputDir(tempDir)
364+
metricsFile := path.Join(pluginOutputDir, "monitoring", "metrics", "metrics.openmetrics")
365+
errorFile := path.Join(pluginOutputDir, "monitoring", "metrics", "metrics.stderr")
366+
367+
// The error file should be empty
368+
o.Expect(errorFile).To(o.BeAnExistingFile())
369+
errorContent, err := os.ReadFile(errorFile)
370+
o.Expect(err).NotTo(o.HaveOccurred())
371+
o.Expect(errorContent).To(o.BeEmpty())
372+
373+
// The metrics file should contain some series with a given format
374+
o.Expect(metricsFile).To(o.BeAnExistingFile())
375+
metrics, err := os.ReadFile(metricsFile)
376+
o.Expect(err).NotTo(o.HaveOccurred())
377+
378+
lines := strings.Split(strings.TrimSpace(string(metrics)), "\n")
379+
count := len(lines)
380+
o.Expect(count).To(o.BeNumerically(">=", 5))
381+
for _, line := range lines[:count-1] {
382+
o.Expect(line).To(o.MatchRegexp(`^(prometheus_ready|prometheus_build_info)\{.*\} \d+ \d+`))
383+
}
384+
385+
o.Expect(lines[count-1]).To(o.Equal("# EOF"))
386+
})
343387
})
344388

345389
// GetPluginOutputDir returns the directory containing must-gather assets.

test/extended/util/annotate/generated/zz_generated.annotations.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)