From 58c6bfe7a8d7d5f63a2f3f65aa62f907ad5b8d5b Mon Sep 17 00:00:00 2001 From: Renan DelValle Date: Thu, 22 Sep 2016 18:34:05 -0400 Subject: [PATCH] PCP code is now able to deal with receiving information asynchronously from pmdumptext --- metrics.go | 1 + pcp.go | 27 -------------------------- pcp/pcp.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 27 deletions(-) create mode 100644 metrics.go delete mode 100644 pcp.go create mode 100644 pcp/pcp.go diff --git a/metrics.go b/metrics.go new file mode 100644 index 0000000..6b8a3c4 --- /dev/null +++ b/metrics.go @@ -0,0 +1 @@ +package electron diff --git a/pcp.go b/pcp.go deleted file mode 100644 index a45ba32..0000000 --- a/pcp.go +++ /dev/null @@ -1,27 +0,0 @@ -package main - -import ( - "fmt" - "log" - "os" - "os/exec" - "time" -) - -func PCP() { - cmd := exec.Command("sh", "-c", "pmdumptext -m -l -o -d , -c config") - time := time.Now().Format("200601021504") - stdout, err := os.Create("./"+time+".txt") - cmd.Stdout = stdout - fmt.Println("PCP started: ") - - if err != nil { - log.Fatal(err) - } - if err := cmd.Start(); err != nil { - log.Fatal(err) - } - if err := cmd.Wait(); err != nil { - log.Fatal(err) - } -} diff --git a/pcp/pcp.go b/pcp/pcp.go new file mode 100644 index 0000000..3f9c592 --- /dev/null +++ b/pcp/pcp.go @@ -0,0 +1,56 @@ +package main + +import ( + "fmt" + "log" + "os/exec" + "bufio" + "strings" +) + +func main() { + const pcpCommand string = "pmdumptext -m -l -f '' -t 1.0 -d , -c config" // We always want the most granular + cmd := exec.Command("sh", "-c", pcpCommand) +// time := time.Now().Format("200601021504") + +// stdout, err := os.Create("./"+time+".txt") + pipe, err := cmd.StdoutPipe() + + //cmd.Stdout = stdout + + scanner := bufio.NewScanner(pipe) + + go func() { + // Get names of the columns + scanner.Scan() + + headers := strings.Split(scanner.Text(), ",") + + for _, hostMetric := range headers { + split := strings.Split(hostMetric, ":") + fmt.Printf("Host %s: Metric: %s\n", split[0], split[1]) + } + + // Throw away first set of results + scanner.Scan() + + + seconds := 0 + for scanner.Scan() { + fmt.Println("Second ", seconds , " val: ", strings.Split(scanner.Text(), ",")) + seconds++ + } + }() + + fmt.Println("PCP started: ") + + if err != nil { + log.Fatal(err) + } + if err := cmd.Start(); err != nil { + log.Fatal(err) + } + if err := cmd.Wait(); err != nil { + log.Fatal(err) + } +}