From bd3306c84568c68ade05cc97d4b7644e7e25ac93 Mon Sep 17 00:00:00 2001 From: Robert Rati Date: Fri, 1 May 2015 09:24:16 -0400 Subject: [PATCH] Moved writePerfData to utils. #7572 --- test/e2e/density.go | 24 ++------------------- test/e2e/util.go | 51 +++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 51 insertions(+), 24 deletions(-) diff --git a/test/e2e/density.go b/test/e2e/density.go index e32fdae024d..0878ac833a8 100644 --- a/test/e2e/density.go +++ b/test/e2e/density.go @@ -37,26 +37,6 @@ import ( . "github.com/onsi/gomega" ) -func writePerfData(c *client.Client, dirName string, postfix string) { - defer GinkgoRecover() - - hdnl, err := os.Create(fmt.Sprintf("%s/metrics_%s.txt", dirName, postfix)) - expectNoError(err) - metrics, err := GetMetrics(c) - expectNoError(err) - _, err = hdnl.WriteString(metrics) - expectNoError(err) - expectNoError(hdnl.Close()) - debug, err := GetDebugInfo(c) - for key, value := range debug { - hdnl, err = os.Create(fmt.Sprintf("%s/%s_%s.txt", dirName, key, postfix)) - expectNoError(err) - _, err = hdnl.WriteString(value) - expectNoError(err) - expectNoError(hdnl.Close()) - } -} - // This test suite can take a long time to run, so by default it is added to // the ginkgo.skip list (see driver.go). // To run this suite you must explicitly ask for it by setting the @@ -81,7 +61,7 @@ var _ = Describe("Density", func() { expectNoError(err) uuid = string(util.NewUUID()) expectNoError(os.Mkdir(uuid, 0777)) - writePerfData(c, uuid, "before") + expectNoError(writePerfData(c, uuid, "before")) }) AfterEach(func() { @@ -107,7 +87,7 @@ var _ = Describe("Density", func() { highLatencyRequests, err := HighLatencyRequests(c, 10*time.Second, util.NewStringSet("events")) expectNoError(err) Expect(highLatencyRequests).NotTo(BeNumerically(">", 0)) - writePerfData(c, uuid, "after") + expectNoError(writePerfData(c, uuid, "after")) }) // Tests with "Skipped" substring in their name will be skipped when running diff --git a/test/e2e/util.go b/test/e2e/util.go index df118c643d5..6139ff05d9c 100644 --- a/test/e2e/util.go +++ b/test/e2e/util.go @@ -950,7 +950,7 @@ func HighLatencyRequests(c *client.Client, threshold time.Duration, ignoredResou } // Retrieve metrics information -func GetMetrics(c *client.Client) (string, error) { +func getMetrics(c *client.Client) (string, error) { body, err := c.Get().AbsPath("/metrics").DoRaw() if err != nil { return "", err @@ -959,7 +959,7 @@ func GetMetrics(c *client.Client) (string, error) { } // Retrieve debug information -func GetDebugInfo(c *client.Client) (map[string]string, error) { +func getDebugInfo(c *client.Client) (map[string]string, error) { data := make(map[string]string) for _, key := range []string{"block", "goroutine", "heap", "threadcreate"} { body, err := c.Get().AbsPath(fmt.Sprintf("/debug/pprof/%s", key)).DoRaw() @@ -970,3 +970,50 @@ func GetDebugInfo(c *client.Client) (map[string]string, error) { } return data, nil } + +func writePerfData(c *client.Client, dirName string, postfix string) error { + fname := fmt.Sprintf("%s/metrics_%s.txt", dirName, postfix) + + hdnl, err := os.Create(fname) + if err != nil { + return fmt.Errorf("Error creating file '%s': %v", fname, err) + } + + metrics, err := getMetrics(c) + if err != nil { + return fmt.Errorf("Error retrieving metrics: %v", err) + } + + _, err = hdnl.WriteString(metrics) + if err != nil { + return fmt.Errorf("Error writing metrics: %v", err) + } + + err = hdnl.Close() + if err != nil { + return fmt.Errorf("Error closing '%s': %v", fname, err) + } + + debug, err := getDebugInfo(c) + if err != nil { + return fmt.Errorf("Error retrieving debug information: %v", err) + } + + for key, value := range debug { + fname := fmt.Sprintf("%s/%s_%s.txt", dirName, key, postfix) + hdnl, err = os.Create(fname) + if err != nil { + return fmt.Errorf("Error creating file '%s': %v", fname, err) + } + _, err = hdnl.WriteString(value) + if err != nil { + return fmt.Errorf("Error writing %s: %v", key, err) + } + + err = hdnl.Close() + if err != nil { + return fmt.Errorf("Error closing '%s': %v", fname, err) + } + } + return nil +}