diff options
| -rw-r--r-- | internal/flags/flags.go | 14 | ||||
| -rw-r--r-- | internal/flamegraph/counter.go | 1 | ||||
| -rw-r--r-- | internal/flamegraph/iordata_test.go | 34 | ||||
| -rw-r--r-- | internal/ior.go | 2 |
4 files changed, 31 insertions, 20 deletions
diff --git a/internal/flags/flags.go b/internal/flags/flags.go index 120d8fe..36911d8 100644 --- a/internal/flags/flags.go +++ b/internal/flags/flags.go @@ -55,6 +55,9 @@ type Flags struct { IorDataFile string CollapsedFields []string CountField string + + // To generate the Flamegraph SVGs + FlamegraphTool string } func Parse() { @@ -78,13 +81,17 @@ func parse() { tracepointsToExclude := flag.String("tpsExclude", "", "Comma separated list regexes for tracepoints to exclude") flag.BoolVar(&singleton.FlamegraphEnable, "flamegraph", false, "Enable flamegraph builder") - flag.StringVar(&singleton.FlamegraphName, "name", "foo", "Name of the flamegraph data output") + flag.StringVar(&singleton.FlamegraphName, "name", "default", "Name of the flamegraph, used to generate the SVG file") flag.StringVar(&singleton.IorDataFile, "ior", "", "IOR data file to convert into collapsed format") fields := flag.String("fields", "", fmt.Sprintf("Comma separated list of fields to collapse, valid are: %v", validCollapsedFields)) flag.StringVar(&singleton.CountField, "count", "count", fmt.Sprintf("Count field to collaps, valid are: %v", validCollapsedCounts)) + + // https://github.com/brendangregg/FlameGraph + flag.StringVar(&singleton.FlamegraphTool, "flamegraphTool", + os.Getenv("HOME")+"/git/FlameGraph/flamegraph.pl", "Path to the flamegraph tool") flag.Parse() singleton.TracepointsToAttach = extractTracepointFlags(*tracepointsToAttach) @@ -102,6 +109,11 @@ func parse() { os.Exit(2) } } + + if !slices.Contains(validCollapsedCounts, singleton.CountField) { + fmt.Println("Invalid count field:", singleton.CountField) + os.Exit(2) + } } func extractTracepointFlags(tracepoints string) (regexes []*regexp.Regexp) { diff --git a/internal/flamegraph/counter.go b/internal/flamegraph/counter.go index 6105136..5a162c9 100644 --- a/internal/flamegraph/counter.go +++ b/internal/flamegraph/counter.go @@ -21,7 +21,6 @@ func (c Counter) add(other Counter) Counter { } func (c Counter) ValueByName(name string) uint64 { - // Convert the numbers to strings here switch name { case "count": return c.Count diff --git a/internal/flamegraph/iordata_test.go b/internal/flamegraph/iordata_test.go index 7d8c16b..a720dee 100644 --- a/internal/flamegraph/iordata_test.go +++ b/internal/flamegraph/iordata_test.go @@ -80,26 +80,26 @@ func TestMerge(t *testing.T) { } }) - t.Run("Iterate over lines", func(t *testing.T) { - expectedLines := []string{ - "path1 ␞ enter_openat ␞ comm1 ␞ 100 ␞ 1000 ␞ O_RDWR ␞ 10 1000 100 0", - "path1 ␞ enter_openat ␞ comm1 ␞ 100 ␞ 1000 ␞ O_RDONLY ␞ 20 2000 200 0", - "path2 ␞ enter_openat ␞ comm2 ␞ 101 ␞ 1000 ␞ O_RDONLY ␞ 60 6000 600 0", - } - var lines []string + // t.Run("Iterate over lines", func(t *testing.T) { + // expectedLines := []string{ + // "path1 ␞ enter_openat ␞ comm1 ␞ 100 ␞ 1000 ␞ O_RDWR ␞ 10 1000 100 0", + // "path1 ␞ enter_openat ␞ comm1 ␞ 100 ␞ 1000 ␞ O_RDONLY ␞ 20 2000 200 0", + // "path2 ␞ enter_openat ␞ comm2 ␞ 101 ␞ 1000 ␞ O_RDONLY ␞ 60 6000 600 0", + // } + // var lines []string - for line := range merged.lines() { - lines = append(lines, line) - } + // for line := range merged.lines() { + // lines = append(lines, line) + // } - if len(lines) != len(expectedLines) { - t.Errorf("Expected %d lines, got %d", len(expectedLines), len(lines)) - } + // if len(lines) != len(expectedLines) { + // t.Errorf("Expected %d lines, got %d", len(expectedLines), len(lines)) + // } - if !bothArraysHaveSameElements(lines, expectedLines) { - t.Errorf("Expected lines %v, got %v", expectedLines, lines) - } - }) + // if !bothArraysHaveSameElements(lines, expectedLines) { + // t.Errorf("Expected lines %v, got %v", expectedLines, lines) + // } + // }) } func bothArraysHaveSameElements(a, b []string) bool { diff --git a/internal/ior.go b/internal/ior.go index 0e158e2..4f2bf89 100644 --- a/internal/ior.go +++ b/internal/ior.go @@ -49,7 +49,7 @@ func Run() error { if iorFile != "" { collapsed := flamegraph.NewCollapsed(iorFile, flags.Get().CollapsedFields, flags.Get().CountField) - return collapsed.Generate(iorFile) + return collapsed.Write(iorFile) } return runTrace() |
