[ninjatrace] Remove ninjatrace tool
This has been moved to fuchsia.googlesource.com/tools.
Change-Id: I46402332617198f59fc71468ac5cf2e5c254d336
diff --git a/cmd/ninjatrace/ninjatrace.go b/cmd/ninjatrace/ninjatrace.go
deleted file mode 100644
index 411614d..0000000
--- a/cmd/ninjatrace/ninjatrace.go
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2014 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// ninja_log_trace converts .ninja_log into trace-viewer formats.
-//
-// usage:
-// $ go run ninja_log_trace.go --filename out/debug-x64/.ninja_log
-//
-package main
-
-import (
- "bufio"
- "compress/gzip"
- "encoding/json"
- "flag"
- "io"
- "log"
- "os"
- "path/filepath"
- "runtime/pprof"
-
- "fuchsia.googlesource.com/infra/infra/ninjalog"
-)
-
-var (
- filename = flag.String("filename", ".ninja_log", "filename of .ninja_log")
- traceJSON = flag.String("trace_json", "trace.json", "output filename of trace.json")
- cpuprofile = flag.String("cpuprofile", "", "file to write cpu profile")
-)
-
-func reader(fname string, rd io.Reader) (io.Reader, error) {
- if filepath.Ext(fname) != ".gz" {
- return bufio.NewReaderSize(rd, 512*1024), nil
- }
- return gzip.NewReader(bufio.NewReaderSize(rd, 512*1024))
-}
-
-func convert(fname string) ([]ninjalog.Trace, error) {
- f, err := os.Open(fname)
- if err != nil {
- return nil, err
- }
- defer f.Close()
- rd, err := reader(fname, f)
- if err != nil {
- return nil, err
- }
-
- njl, err := ninjalog.Parse(fname, rd)
- if err != nil {
- return nil, err
- }
- steps := ninjalog.Dedup(njl.Steps)
- flow := ninjalog.Flow(steps)
- return ninjalog.ToTraces(flow, 1), nil
-}
-
-func output(fname string, traces []ninjalog.Trace) (err error) {
- f, err := os.Create(fname)
- if err != nil {
- return err
- }
- defer func() {
- cerr := f.Close()
- if err == nil {
- err = cerr
- }
- }()
- js, err := json.Marshal(traces)
- if err != nil {
- return err
- }
- _, err = f.Write(js)
- return err
-}
-
-func main() {
- flag.Parse()
-
- if *cpuprofile != "" {
- f, err := os.Create(*cpuprofile)
- if err != nil {
- log.Fatal(err)
- }
- pprof.StartCPUProfile(f)
- defer pprof.StopCPUProfile()
- }
-
- traces, err := convert(*filename)
- if err != nil {
- log.Fatal(err)
- }
- if *traceJSON != "" {
- err = output(*traceJSON, traces)
- if err != nil {
- log.Fatal(err)
- }
- }
-}
diff --git a/ninjalog/doc.go b/ninjalog/doc.go
deleted file mode 100644
index 4c2b075..0000000
--- a/ninjalog/doc.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/*
-Package ninjalog provides ninja_log parser
-
-It support ninja log v5.
-
- # ninja log v5
- <start> <end> <restat> <target> <cmdhash>
-
-where
- <start> = start time since ninja starts in msec.
- <end> = end time since ninja starts in msec.
- <restat> = restat time in epoch.
- <target> = target (output) filename
- <cmdhash> = hash of command line (?)
-
-It assumes steps in the last build will be ascendent order of <end>.
-
-It also supports metadata added by chromium's buildbot compile.py.
-metadata is added after
-
- # end of ninja log
-
-and written in json format.
-
-*/
-package ninjalog
diff --git a/ninjalog/ninjalog.go b/ninjalog/ninjalog.go
deleted file mode 100644
index 09261ac..0000000
--- a/ninjalog/ninjalog.go
+++ /dev/null
@@ -1,449 +0,0 @@
-// Copyright 2014 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package ninjalog
-
-import (
- "bufio"
- "encoding/json"
- "fmt"
- "io"
- "sort"
- "strconv"
- "strings"
- "time"
-)
-
-// Step is one step in ninja_log file.
-// time is measured from ninja start time.
-type Step struct {
- Start time.Duration
- End time.Duration
- // modification time, but not convertable to absolute real time.
- // on POSIX, time_t is used, but on Windows different type is used.
- // htts://github.com/martine/ninja/blob/master/src/timestamp.h
- Restat int
- Out string
- CmdHash string
-
- // other outs for the same CmdHash if dedup'ed.
- Outs []string
-}
-
-// Duration reports step's duration.
-func (s Step) Duration() time.Duration {
- return s.End - s.Start
-}
-
-// Steps is a list of Step.
-// It could be used to sort by start time.
-type Steps []Step
-
-func (s Steps) Len() int { return len(s) }
-func (s Steps) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
-func (s Steps) Less(i, j int) bool {
- if s[i].Start != s[j].Start {
- return s[i].Start < s[j].Start
- }
- if s[i].End != s[j].End {
- return s[i].End < s[j].End
- }
- return s[i].Out < s[j].Out
-}
-
-// Reverse reverses steps.
-// It would be more efficient if steps is already sorted than using sort.Reverse.
-func (s Steps) Reverse() {
- for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
- s[i], s[j] = s[j], s[i]
- }
-}
-
-// ByEnd is used to sort by end time.
-type ByEnd struct{ Steps }
-
-func (s ByEnd) Less(i, j int) bool { return s.Steps[i].End < s.Steps[j].End }
-
-// ByDuration is used to sort by duration.
-type ByDuration struct{ Steps }
-
-func (s ByDuration) Less(i, j int) bool { return s.Steps[i].Duration() < s.Steps[j].Duration() }
-
-// ByWeightedTime is used to sort by weighted time.
-type ByWeightedTime struct {
- Weighted map[string]time.Duration
- Steps
-}
-
-func (s ByWeightedTime) Less(i, j int) bool {
- return s.Weighted[s.Steps[i].Out] < s.Weighted[s.Steps[j].Out]
-}
-
-// Metadata is data added by compile.py.
-type Metadata struct {
- // Platform is platform of buildbot.
- Platform string `json:"platform"`
-
- // Argv is argv of compile.py
- Argv []string `json:"argv"`
-
- // Cwd is current working directory of compile.py
- Cwd string `json:"cwd"`
-
- // Compiler is compiler used.
- Compiler string `json:"compiler"`
-
- // Cmdline is command line of ninja.
- Cmdline []string `json:"cmdline"`
-
- // Exit is exit status of ninja.
- Exit int `json:"exit"`
-
- // Env is environment variables.
- Env map[string]string `json:"env"`
-
- // CompilerProxyInfo is a path name of associated compiler_proxy.INFO log.
- CompilerProxyInfo string `json:"compiler_proxy_info"`
-
- // Raw is raw string for metadata.
- Raw string
- // Error is error message of parsing metadata.
- Error string
-}
-
-// NinjaLog is parsed data of ninja_log file.
-type NinjaLog struct {
- // Filename is a filename of ninja_log.
- Filename string
-
- // Start is start line of the last build in ninja_log file.
- Start int
-
- // Steps contains steps in the last build in ninja_log file.
- Steps []Step
-
- // Metadata is additional data found in ninja_log file.
- Metadata Metadata
-}
-
-// Parse parses .ninja_log file, with chromium's compile.py metadata.
-func Parse(fname string, r io.Reader) (*NinjaLog, error) {
- b := bufio.NewReader(r)
- scanner := bufio.NewScanner(b)
- nlog := &NinjaLog{Filename: fname}
- lineno := 0
- if !scanner.Scan() {
- if err := scanner.Err(); err != nil {
- return nil, err
- }
- return nil, fmt.Errorf("empty file?")
- }
- lineno++
- line := scanner.Text()
- if line != "# ninja log v5" {
- return nil, fmt.Errorf("unexpected format: %s", line)
- }
- nlog.Start = lineno
- var lastStep Step
- for scanner.Scan() {
- line := scanner.Text()
- if line == "# end of ninja log" {
- break
- }
- if line == "" {
- continue
- }
- step, err := lineToStep(line)
- if err != nil {
- return nil, fmt.Errorf("error at %d: %v", lineno, err)
- }
- if step.End < lastStep.End {
- nlog.Start = lineno
- nlog.Steps = nil
- }
- nlog.Steps = append(nlog.Steps, step)
- lastStep = step
- lineno++
- }
- if err := scanner.Err(); err != nil {
- return nil, fmt.Errorf("error at %d: %v", lineno, err)
- }
- if !scanner.Scan() {
- if err := scanner.Err(); err != nil {
- return nil, fmt.Errorf("error at %d: %v", lineno, err)
- }
- // missing metadata?
- return nlog, nil
- }
- lineno++
- nlog.Metadata.Raw = scanner.Text()
- if err := parseMetadata([]byte(nlog.Metadata.Raw), &nlog.Metadata); err != nil {
- nlog.Metadata.Error = fmt.Sprintf("error at %d: %v", lineno, err)
- }
- return nlog, nil
-}
-
-func lineToStep(line string) (Step, error) {
- var step Step
-
- // Due to slowness of strings.Split in App Engine Go,
- // we use more faster implementation.
- fields := make([]string, 0, 5)
- for i := 0; i < 5; i += 1 {
- m := strings.IndexByte(line, '\t')
- if m < 0 {
- m = len(line)
- }
- fields = append(fields, line[:m])
- if m < len(line) {
- line = line[m+1:]
- }
- }
-
- if len(fields) < 5 {
- return step, fmt.Errorf("few fields:%d", len(fields))
- }
- s, err := strconv.ParseUint(fields[0], 10, 0)
- if err != nil {
- return step, fmt.Errorf("bad start %s:%v", fields[0], err)
- }
- e, err := strconv.ParseUint(fields[1], 10, 0)
- if err != nil {
- return step, fmt.Errorf("bad end %s:%v", fields[1], err)
- }
- rs, err := strconv.ParseUint(fields[2], 10, 0)
- if err != nil {
- return step, fmt.Errorf("bad restat %s:%v", fields[2], err)
- }
- step.Start = time.Duration(s) * time.Millisecond
- step.End = time.Duration(e) * time.Millisecond
- step.Restat = int(rs)
- step.Out = fields[3]
- step.CmdHash = fields[4]
- return step, nil
-}
-
-func stepToLine(s Step) string {
- return fmt.Sprintf("%d\t%d\t%d\t%s\t%s",
- s.Start.Nanoseconds()/int64(time.Millisecond),
- s.End.Nanoseconds()/int64(time.Millisecond),
- s.Restat,
- s.Out,
- s.CmdHash)
-}
-
-func parseMetadata(buf []byte, metadata *Metadata) error {
- return json.Unmarshal(buf, metadata)
-}
-
-// Dump dumps steps as ninja log v5 format in w.
-func Dump(w io.Writer, steps []Step) error {
- _, err := fmt.Fprintf(w, "# ninja log v5\n")
- if err != nil {
- return err
- }
- for _, s := range steps {
- _, err = fmt.Fprintln(w, stepToLine(s))
- if err != nil {
- return err
- }
- }
- return nil
-}
-
-// Dedup dedupes steps. step may have the same cmd hash.
-// Dedup only returns the first step for these steps.
-// steps will be sorted by start time.
-func Dedup(steps []Step) []Step {
- m := make(map[string]*Step)
- sort.Sort(Steps(steps))
- var dedup []Step
- for _, s := range steps {
- if os := m[s.CmdHash]; os != nil {
- os.Outs = append(os.Outs, s.Out)
- continue
- }
- dedup = append(dedup, s)
- m[s.CmdHash] = &dedup[len(dedup)-1]
- }
- return dedup
-}
-
-// TotalTime returns startup time and end time of ninja, and accumulated time
-// of all tasks.
-func TotalTime(steps []Step) (startupTime, endTime, cpuTime time.Duration) {
- if len(steps) == 0 {
- return 0, 0, 0
- }
- steps = Dedup(steps)
- startup := steps[0].Start
- var end time.Duration
- for _, s := range steps {
- if s.Start < startup {
- startup = s.Start
- }
- if s.End > end {
- end = s.End
- }
- cpuTime += s.Duration()
- }
- return startup, end, cpuTime
-}
-
-// Flow returns concurrent steps by time.
-// steps in every []Step will not have time overlap.
-// steps will be sorted by start time.
-func Flow(steps []Step) [][]Step {
- sort.Sort(Steps(steps))
- var threads [][]Step
-
- for _, s := range steps {
- tid := -1
- for i, th := range threads {
- if len(th) == 0 {
- panic(fmt.Errorf("thread %d has no entry", i))
- }
- if th[len(th)-1].End <= s.Start {
- tid = i
- break
- }
- }
- if tid == -1 {
- threads = append(threads, nil)
- tid = len(threads) - 1
- }
- threads[tid] = append(threads[tid], s)
- }
- return threads
-}
-
-// action represents an event's action. "start" or "end".
-type action string
-
-const (
- unknownAction action = ""
- startAction action = "start"
- stopAction action = "stop"
-)
-
-// event is an event of steps.
-type event struct {
- time time.Duration
- action action
- target string
-}
-
-// toEvent converts steps into events.
-// events are sorted by its time.
-func toEvent(steps []Step) []event {
- var events []event
- for _, s := range steps {
- events = append(events,
- event{
- time: s.Start,
- action: startAction,
- target: s.Out,
- },
- event{
- time: s.End,
- action: stopAction,
- target: s.Out,
- },
- )
- }
- sort.Slice(events, func(i, j int) bool {
- if events[i].time == events[j].time {
- // If a task starts and stops on the same time stamp
- // then the start will come first.
- return events[i].action < events[j].action
- }
- return events[i].time < events[j].time
- })
- return events
-}
-
-// WeightedTime calculates weighted time, which is elapsed time with
-// each segment divided by the number of tasks that were running in paralle.
-// This makes it a much better approximation of how "important" a slow step was.
-// For example, A link that is entirely or mostly serialized will have a
-// weighted time that is the same or similar to its elapsed time.
-// A compile that runs in parallel with 999 other compiles will have a weighted
-// time that is tiny.
-func WeightedTime(steps []Step) map[string]time.Duration {
- if len(steps) == 0 {
- return nil
- }
- steps = Dedup(steps)
- events := toEvent(steps)
- weightedDuration := make(map[string]time.Duration)
-
- // Track the tasks which are currently running.
- runningTasks := make(map[string]time.Duration)
-
- // Record the time we have processed up to so we know how to calculate
- // time deltas.
- lastTime := events[0].time
-
- // Track the accumulated weighted time so that it can efficiently be
- // added to individual tasks.
- var lastWeightedTime time.Duration
-
- for _, event := range events {
- numRunning := len(runningTasks)
- if numRunning > 0 {
- // Update the total weighted time up to this moment.
- lastWeightedTime += (event.time - lastTime) / time.Duration(numRunning)
- }
- switch event.action {
- case startAction:
- // Record the total weighted task time when this task starts.
- runningTasks[event.target] = lastWeightedTime
- case stopAction:
- // Record the change in the total weighted task time while this task ran.
- weightedDuration[event.target] = lastWeightedTime - runningTasks[event.target]
- delete(runningTasks, event.target)
- }
- lastTime = event.time
- }
- return weightedDuration
-}
-
-// Stat represents statistics for build step.
-type Stat struct {
- Type string
- Count int
- Time time.Duration
- Weighted time.Duration
-}
-
-// StatsByType summarizes build step statistics with weighted and typeOf.
-// Stats is sorted by Weighted, longer first.
-func StatsByType(steps []Step, weighted map[string]time.Duration, typeOf func(Step) string) []Stat {
- if len(steps) == 0 {
- return nil
- }
- steps = Dedup(steps)
- m := make(map[string]int) // type to index of stats.
- var stats []Stat
- for _, step := range steps {
- t := typeOf(step)
- if i, ok := m[t]; ok {
- stats[i].Count++
- stats[i].Time += step.Duration()
- stats[i].Weighted += weighted[step.Out]
- continue
- }
- stats = append(stats, Stat{
- Type: t,
- Count: 1,
- Time: step.Duration(),
- Weighted: weighted[step.Out],
- })
- m[t] = len(stats) - 1
- }
- sort.Slice(stats, func(i, j int) bool {
- return stats[i].Weighted > stats[j].Weighted
- })
- return stats
-}
diff --git a/ninjalog/ninjalog_test.go b/ninjalog/ninjalog_test.go
deleted file mode 100644
index bc5306d..0000000
--- a/ninjalog/ninjalog_test.go
+++ /dev/null
@@ -1,553 +0,0 @@
-// Copyright 2014 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package ninjalog
-
-import (
- "bytes"
- "io/ioutil"
- "reflect"
- "sort"
- "strings"
- "testing"
- "time"
-)
-
-var (
- logTestCase = `# ninja log v5
-76 187 0 resources/inspector/devtools_extension_api.js 75430546595be7c2
-80 284 0 gen/autofill_regex_constants.cc fa33c8d7ce1d8791
-78 286 0 gen/angle/commit_id.py 4ede38e2c1617d8c
-79 287 0 gen/angle/copy_compiler_dll.bat 9fb635ad5d2c1109
-141 287 0 PepperFlash/manifest.json 324f0a0b77c37ef
-142 288 0 PepperFlash/libpepflashplayer.so 1e2c2b7845a4d4fe
-287 290 0 obj/third_party/angle/src/copy_scripts.actions_rules_copies.stamp b211d373de72f455
-`
-
- stepsTestCase = []Step{
- Step{
- Start: 76 * time.Millisecond,
- End: 187 * time.Millisecond,
- Out: "resources/inspector/devtools_extension_api.js",
- CmdHash: "75430546595be7c2",
- },
- Step{
- Start: 80 * time.Millisecond,
- End: 284 * time.Millisecond,
- Out: "gen/autofill_regex_constants.cc",
- CmdHash: "fa33c8d7ce1d8791",
- },
- Step{
- Start: 78 * time.Millisecond,
- End: 286 * time.Millisecond,
- Out: "gen/angle/commit_id.py",
- CmdHash: "4ede38e2c1617d8c",
- },
- Step{
- Start: 79 * time.Millisecond,
- End: 287 * time.Millisecond,
- Out: "gen/angle/copy_compiler_dll.bat",
- CmdHash: "9fb635ad5d2c1109",
- },
- Step{
- Start: 141 * time.Millisecond,
- End: 287 * time.Millisecond,
- Out: "PepperFlash/manifest.json",
- CmdHash: "324f0a0b77c37ef",
- },
- Step{
- Start: 142 * time.Millisecond,
- End: 288 * time.Millisecond,
- Out: "PepperFlash/libpepflashplayer.so",
- CmdHash: "1e2c2b7845a4d4fe",
- },
- Step{
- Start: 287 * time.Millisecond,
- End: 290 * time.Millisecond,
- Out: "obj/third_party/angle/src/copy_scripts.actions_rules_copies.stamp",
- CmdHash: "b211d373de72f455",
- },
- }
-
- stepsSorted = []Step{
- Step{
- Start: 76 * time.Millisecond,
- End: 187 * time.Millisecond,
- Out: "resources/inspector/devtools_extension_api.js",
- CmdHash: "75430546595be7c2",
- },
- Step{
- Start: 78 * time.Millisecond,
- End: 286 * time.Millisecond,
- Out: "gen/angle/commit_id.py",
- CmdHash: "4ede38e2c1617d8c",
- },
- Step{
- Start: 79 * time.Millisecond,
- End: 287 * time.Millisecond,
- Out: "gen/angle/copy_compiler_dll.bat",
- CmdHash: "9fb635ad5d2c1109",
- },
- Step{
- Start: 80 * time.Millisecond,
- End: 284 * time.Millisecond,
- Out: "gen/autofill_regex_constants.cc",
- CmdHash: "fa33c8d7ce1d8791",
- },
- Step{
- Start: 141 * time.Millisecond,
- End: 287 * time.Millisecond,
- Out: "PepperFlash/manifest.json",
- CmdHash: "324f0a0b77c37ef",
- },
- Step{
- Start: 142 * time.Millisecond,
- End: 288 * time.Millisecond,
- Out: "PepperFlash/libpepflashplayer.so",
- CmdHash: "1e2c2b7845a4d4fe",
- },
- Step{
- Start: 287 * time.Millisecond,
- End: 290 * time.Millisecond,
- Out: "obj/third_party/angle/src/copy_scripts.actions_rules_copies.stamp",
- CmdHash: "b211d373de72f455",
- },
- }
-
- metadataTestCase = Metadata{
- Platform: "linux",
- Argv: []string{"../../../scripts/slave/compile.py", "--target", "Release", "--clobber", "--compiler=goma", "--", "all"},
- Cwd: "/b/build/slave/Linux_x64/build/src",
- Compiler: "goma",
- Cmdline: []string{"ninja", "-C", "/b/build/slave/Linux_x64/build/src/out/Release", "all", "-j50"},
- Exit: 0,
- Env: map[string]string{
- "LANG": "en_US.UTF-8",
- "SHELL": "/bin/bash",
- "HOME": "/home/chrome-bot",
- "PWD": "/b/build/slave/Linux_x64/build",
- "LOGNAME": "chrome-bot",
- "USER": "chrome-bot",
- "PATH": "/home/chrome-bot/slavebin:/b/depot_tools:/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin",
- },
- CompilerProxyInfo: "/tmp/compiler_proxy.build48-m1.chrome-bot.log.INFO.20140907-203827.14676",
- }
-)
-
-func TestStepsSort(t *testing.T) {
- steps := append([]Step{}, stepsTestCase...)
- sort.Sort(Steps(steps))
- if !reflect.DeepEqual(steps, stepsSorted) {
- t.Errorf("sort Steps=%v; want=%v", steps, stepsSorted)
- }
-}
-
-func TestStepsReverse(t *testing.T) {
- steps := []Step{
- Step{Out: "0"},
- Step{Out: "1"},
- Step{Out: "2"},
- Step{Out: "3"},
- }
- Steps(steps).Reverse()
- want := []Step{
- Step{Out: "3"},
- Step{Out: "2"},
- Step{Out: "1"},
- Step{Out: "0"},
- }
- if !reflect.DeepEqual(steps, want) {
- t.Errorf("steps.Reverse=%v; want=%v", steps, want)
- }
-}
-
-func TestParseBadVersion(t *testing.T) {
- _, err := Parse(".ninja_log", strings.NewReader(`# ninja log v4
-0 1 0 foo touch foo
-`))
- if err == nil {
- t.Error("Parse()=_, <nil>; want=_, error")
- }
-}
-
-func TestParseSimple(t *testing.T) {
- njl, err := Parse(".ninja_log", strings.NewReader(logTestCase))
- if err != nil {
- t.Errorf(`Parse()=_, %v; want=_, <nil>`, err)
- }
-
- want := &NinjaLog{
- Filename: ".ninja_log",
- Start: 1,
- Steps: stepsTestCase,
- }
- if !reflect.DeepEqual(njl, want) {
- t.Errorf("Parse()=%v; want=%v", njl, want)
- }
-}
-
-func TestParseEmptyLine(t *testing.T) {
- njl, err := Parse(".ninja_log", strings.NewReader(logTestCase+"\n"))
- if err != nil {
- t.Errorf(`Parse()=_, %v; want=_, <nil>`, err)
- }
- want := &NinjaLog{
- Filename: ".ninja_log",
- Start: 1,
- Steps: stepsTestCase,
- }
- if !reflect.DeepEqual(njl, want) {
- t.Errorf("Parse()=%v; want=%v", njl, want)
- }
-}
-
-func TestParseLast(t *testing.T) {
- njl, err := Parse(".ninja_log", strings.NewReader(`# ninja log v5
-1020807 1020916 0 chrome.1 e101fd46be020cfc
-84 9489 0 gen/libraries.cc 9001f3182fa8210e
-1024369 1041522 0 chrome aee9d497d56c9637
-76 187 0 resources/inspector/devtools_extension_api.js 75430546595be7c2
-80 284 0 gen/autofill_regex_constants.cc fa33c8d7ce1d8791
-78 286 0 gen/angle/commit_id.py 4ede38e2c1617d8c
-79 287 0 gen/angle/copy_compiler_dll.bat 9fb635ad5d2c1109
-141 287 0 PepperFlash/manifest.json 324f0a0b77c37ef
-142 288 0 PepperFlash/libpepflashplayer.so 1e2c2b7845a4d4fe
-287 290 0 obj/third_party/angle/src/copy_scripts.actions_rules_copies.stamp b211d373de72f455
-`))
- if err != nil {
- t.Errorf(`Parse()=_, %v; want=_, <nil>`, err)
- }
-
- want := &NinjaLog{
- Filename: ".ninja_log",
- Start: 4,
- Steps: stepsTestCase,
- }
- if !reflect.DeepEqual(njl, want) {
- t.Errorf("Parse()=%v; want=%v", njl, want)
- }
-}
-
-func TestParseMetadata(t *testing.T) {
- njl, err := Parse(".ninja_log", strings.NewReader(`# ninja log v5
-1020807 1020916 0 chrome.1 e101fd46be020cfc
-84 9489 0 gen/libraries.cc 9001f3182fa8210e
-1024369 1041522 0 chrome aee9d497d56c9637
-76 187 0 resources/inspector/devtools_extension_api.js 75430546595be7c2
-80 284 0 gen/autofill_regex_constants.cc fa33c8d7ce1d8791
-78 286 0 gen/angle/commit_id.py 4ede38e2c1617d8c
-79 287 0 gen/angle/copy_compiler_dll.bat 9fb635ad5d2c1109
-141 287 0 PepperFlash/manifest.json 324f0a0b77c37ef
-142 288 0 PepperFlash/libpepflashplayer.so 1e2c2b7845a4d4fe
-287 290 0 obj/third_party/angle/src/copy_scripts.actions_rules_copies.stamp b211d373de72f455
-
-# end of ninja log
-{"platform": "linux", "argv": ["../../../scripts/slave/compile.py", "--target", "Release", "--clobber", "--compiler=goma", "--", "all"], "cmdline": ["ninja", "-C", "/b/build/slave/Linux_x64/build/src/out/Release", "all", "-j50"], "exit": 0, "env": {"LANG": "en_US.UTF-8", "SHELL": "/bin/bash", "HOME": "/home/chrome-bot", "PWD": "/b/build/slave/Linux_x64/build", "LOGNAME": "chrome-bot", "USER": "chrome-bot", "PATH": "/home/chrome-bot/slavebin:/b/depot_tools:/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin" }, "compiler_proxy_info": "/tmp/compiler_proxy.build48-m1.chrome-bot.log.INFO.20140907-203827.14676", "cwd": "/b/build/slave/Linux_x64/build/src", "compiler": "goma"}
-`))
- if err != nil {
- t.Errorf(`Parse()=_, %#v; want=_, <nil>`, err)
- }
-
- want := &NinjaLog{
- Filename: ".ninja_log",
- Start: 4,
- Steps: stepsTestCase,
- Metadata: metadataTestCase,
- }
- njl.Metadata.Raw = ""
- if !reflect.DeepEqual(njl, want) {
- t.Errorf("Parse()=%#v; want=%#v", njl, want)
- }
-}
-
-func TestParseBadMetadata(t *testing.T) {
- // https://bugs.chromium.org/p/chromium/issues/detail?id=667571
- njl, err := Parse(".ninja_log", strings.NewReader(`# ninja log v5
-1020807 1020916 0 chrome.1 e101fd46be020cfc
-84 9489 0 gen/libraries.cc 9001f3182fa8210e
-1024369 1041522 0 chrome aee9d497d56c9637
-76 187 0 resources/inspector/devtools_extension_api.js 75430546595be7c2
-80 284 0 gen/autofill_regex_constants.cc fa33c8d7ce1d8791
-78 286 0 gen/angle/commit_id.py 4ede38e2c1617d8c
-79 287 0 gen/angle/copy_compiler_dll.bat 9fb635ad5d2c1109
-141 287 0 PepperFlash/manifest.json 324f0a0b77c37ef
-142 288 0 PepperFlash/libpepflashplayer.so 1e2c2b7845a4d4fe
-287 290 0 obj/third_party/angle/src/copy_scripts.actions_rules_copies.stamp b211d373de72f455
-# end of ninja log
-{"platform": "linux", "argv": ["/b/build/scripts/slave/upload_goma_logs.py", "--upload-compiler-proxy-info", "--json-status", "/b/build/slave/cache/cipd/goma/jsonstatus", "--ninja-log-outdir", "/b/build/slave/pdfium/build/pdfium/out/debug_xfa_v8", "--ninja-log-compiler", "unknown", "--ninja-log-command", "['ninja', '-C', Path('checkout', 'out','debug_xfa_v8'), '-j', 80]", "--ninja-log-exit-status", "0", "--goma-stats-file", "/b/build/slave/pdfium/.recipe_runtime/tmpOgwx97/build_data/goma_stats_proto", "--goma-crash-report-id-file", "/b/build/slave/pdfium/.recipe_runtime/tmpOgwx97/build_data/crash_report_id_file", "--build-data-dir", "/b/build/slave/pdfium/.recipe_runtime/tmpOgwx97/build_data", "--buildbot-buildername", "linux_xfa", "--buildbot-mastername", "tryserver.client.pdfium", "--buildbot-slavename", "slave1386-c4"], "cmdline": "['ninja', '-C', Path('checkout','out','debug_xfa_v8'), '-j', 80]", "exit": 0, "env": {"GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json", "BUILDBOT_BUILDERNAME": "linux_xfa", "USER": "chrome-bot", "HOME": "/home/chrome-bot", "BOTO_CONFIG": "/b/build/scripts/slave/../../site_config/.boto", "PATH": "/home/chrome-bot/slavebin:/b/depot_tools:/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin", "PYTHONUNBUFFERED": "1", "BUILDBOT_BUILDBOTURL": "https://build.chromium.org/p/tryserver.client.pdfium/", "DISPLAY": ":0.0", "LANG": "en_US.UTF-8", "BUILDBOT_BLAMELIST": "[u'dsinclair@chromium.org']", "BUILDBOT_MASTERNAME": "tryserver.client.pdfium", "GOMACTL_CRASH_REPORT_ID_FILE": "/b/build/slave/pdfium/.recipe_runtime/tmpOgwx97/build_data/crash_report_id_file", "USERNAME": "chrome-bot", "BUILDBOT_GOT_REVISION": "None", "PYTHONPATH": "/b/build/site_config:/b/build/scripts:/b/build/scripts/release:/b/build/third_party:/b/build/third_party/requests_2_10_0:/b/build_internal/site_config:/b/build_internal/symsrc:/b/build/slave:/b/build/third_party/buildbot_slave_8_4:/b/build/third_party/twisted_10_2:", "BUILDBOT_SCHEDULER": "None", "BUILDBOT_REVISION": "", "AWS_CREDENTIAL_FILE": "/b/build/scripts/slave/../../site_config/.boto", "CHROME_HEADLESS": "1", "BUILDBOT_BRANCH": "", "GIT_USER_AGENT": "linux2 git/2.10.2 slave1386-c4.c.chromecompute.google.com.internal", "TESTING_SLAVENAME": "slave1386-c4", "GOMA_DUMP_STATS_FILE": "/b/build/slave/pdfium/.recipe_runtime/tmpOgwx97/build_data/goma_stats_proto", "BUILDBOT_BUILDNUMBER": "2937", "PWD": "/b/build/slave/pdfium/build", "BUILDBOT_SLAVENAME": "slave1386-c4", "BUILDBOT_CLOBBER": "", "PAGER": "cat"}, "compiler_proxy_info": "/tmp/compiler_proxy.slave1386-c4.chrome-bot.log.INFO.20161121-165459.5790", "cwd": "/b/build/slave/pdfium/build", "compiler": "unknown"}
-`))
- if err != nil {
- t.Errorf(`Parse()=_, %#v; want=_, <nil>`, err)
- }
-
- if njl.Metadata.Error == "" {
- t.Errorf("Parse().Metadata.Error='', want some error")
- }
- njl.Metadata = Metadata{}
-
- want := &NinjaLog{
- Filename: ".ninja_log",
- Start: 4,
- Steps: stepsTestCase,
- }
- if !reflect.DeepEqual(njl, want) {
- t.Errorf("Parse()=%#v; want=%#v", njl, want)
- }
-}
-
-func TestDump(t *testing.T) {
- var b bytes.Buffer
- err := Dump(&b, stepsTestCase)
- if err != nil {
- t.Errorf("Dump()=%v; want=<nil>", err)
- }
- if b.String() != logTestCase {
- t.Errorf("Dump %q; want %q", b.String(), logTestCase)
- }
-}
-
-func TestDedup(t *testing.T) {
- steps := append([]Step{}, stepsTestCase...)
- for _, out := range []string{
- "gen/ui/keyboard/webui/keyboard.mojom.cc",
- "gen/ui/keyboard/webui/keyboard.mojom.h",
- "gen/ui/keyboard/webui/keyboard.mojom.js",
- "gen/ui/keyboard/webui/keyboard.mojom-internal.h",
- } {
- steps = append(steps, Step{
- Start: 302 * time.Millisecond,
- End: 5764 * time.Millisecond,
- Out: out,
- CmdHash: "a551cc46f8c21e5a",
- })
- }
- got := Dedup(steps)
- want := append([]Step{}, stepsSorted...)
- want = append(want, Step{
- Start: 302 * time.Millisecond,
- End: 5764 * time.Millisecond,
- Out: "gen/ui/keyboard/webui/keyboard.mojom-internal.h",
- Outs: []string{
- "gen/ui/keyboard/webui/keyboard.mojom.cc",
- "gen/ui/keyboard/webui/keyboard.mojom.h",
- "gen/ui/keyboard/webui/keyboard.mojom.js",
- },
- CmdHash: "a551cc46f8c21e5a",
- })
- if !reflect.DeepEqual(got, want) {
- t.Errorf("Dedup=%v; want=%v", got, want)
- }
-}
-
-func TestFlow(t *testing.T) {
- steps := append([]Step{}, stepsTestCase...)
- steps = append(steps, Step{
- Start: 187 * time.Millisecond,
- End: 21304 * time.Millisecond,
- Out: "obj/third_party/pdfium/core/src/fpdfdoc/fpdfdoc.doc_formfield.o",
- CmdHash: "2ac7111aa1ae86af",
- })
-
- flow := Flow(steps)
-
- want := [][]Step{
- []Step{
- Step{
- Start: 76 * time.Millisecond,
- End: 187 * time.Millisecond,
- Out: "resources/inspector/devtools_extension_api.js",
- CmdHash: "75430546595be7c2",
- },
- Step{
- Start: 187 * time.Millisecond,
- End: 21304 * time.Millisecond,
- Out: "obj/third_party/pdfium/core/src/fpdfdoc/fpdfdoc.doc_formfield.o",
- CmdHash: "2ac7111aa1ae86af",
- },
- },
- []Step{
- Step{
- Start: 78 * time.Millisecond,
- End: 286 * time.Millisecond,
- Out: "gen/angle/commit_id.py",
- CmdHash: "4ede38e2c1617d8c",
- },
- Step{
- Start: 287 * time.Millisecond,
- End: 290 * time.Millisecond,
- Out: "obj/third_party/angle/src/copy_scripts.actions_rules_copies.stamp",
- CmdHash: "b211d373de72f455",
- },
- },
- []Step{
- Step{
- Start: 79 * time.Millisecond,
- End: 287 * time.Millisecond,
- Out: "gen/angle/copy_compiler_dll.bat",
- CmdHash: "9fb635ad5d2c1109",
- },
- },
- []Step{
- Step{
- Start: 80 * time.Millisecond,
- End: 284 * time.Millisecond,
- Out: "gen/autofill_regex_constants.cc",
- CmdHash: "fa33c8d7ce1d8791",
- },
- },
- []Step{
- Step{
- Start: 141 * time.Millisecond,
- End: 287 * time.Millisecond,
- Out: "PepperFlash/manifest.json",
- CmdHash: "324f0a0b77c37ef",
- },
- },
- []Step{
- Step{
- Start: 142 * time.Millisecond,
- End: 288 * time.Millisecond,
- Out: "PepperFlash/libpepflashplayer.so",
- CmdHash: "1e2c2b7845a4d4fe",
- },
- },
- }
-
- if !reflect.DeepEqual(flow, want) {
- t.Errorf("Flow()=%v; want=%v", flow, want)
- }
-}
-
-func TestWeightedTime(t *testing.T) {
- steps := []Step{
- Step{
- Start: 0 * time.Millisecond,
- End: 3 * time.Millisecond,
- Out: "target-a",
- CmdHash: "hash-target-a",
- },
- Step{
- Start: 2 * time.Millisecond,
- End: 5 * time.Millisecond,
- Out: "target-b",
- CmdHash: "hash-target-b",
- },
- Step{
- Start: 2 * time.Millisecond,
- End: 8 * time.Millisecond,
- Out: "target-c",
- CmdHash: "hash-target-c",
- },
- Step{
- Start: 2 * time.Millisecond,
- End: 3 * time.Millisecond,
- Out: "target-d",
- CmdHash: "hash-target-d",
- },
- }
-
- // 0 1 2 3 4 5 6 7 8
- // +-+-+-+-+-+-+-+-+
- // <--A-->
- // <--B-->
- // <------C---->
- // <D>
- got := WeightedTime(steps)
- want := map[string]time.Duration{
- "target-a": 2*time.Millisecond + 1*time.Millisecond/4,
- "target-b": 1*time.Millisecond/4 + 2*time.Millisecond/2,
- "target-c": 1*time.Millisecond/4 + 2*time.Millisecond/2 + 3*time.Millisecond,
- "target-d": 1 * time.Millisecond / 4,
- }
- if !reflect.DeepEqual(got, want) {
- t.Errorf("WeightedTime(%v)=%v; want=%v", steps, got, want)
- }
-}
-
-func BenchmarkParse(b *testing.B) {
- data, err := ioutil.ReadFile("testdata/ninja_log")
- if err != nil {
- b.Errorf(`ReadFile("testdata/ninja_log")=_, %v; want_, <nil>`, err)
- }
-
- for i := 0; i < b.N; i++ {
- _, err := Parse(".ninja_log", bytes.NewReader(data))
- if err != nil {
- b.Errorf(`Parse()=_, %v; want=_, <nil>`, err)
- }
- }
-}
-
-func BenchmarkDedup(b *testing.B) {
- data, err := ioutil.ReadFile("testdata/ninja_log")
- if err != nil {
- b.Errorf(`ReadFile("testdata/ninja_log")=_, %v; want_, <nil>`, err)
- }
-
- njl, err := Parse(".ninja_log", bytes.NewReader(data))
- if err != nil {
- b.Errorf(`Parse()=_, %v; want=_, <nil>`, err)
- }
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- steps := make([]Step, len(njl.Steps))
- copy(steps, njl.Steps)
- Dedup(steps)
- }
-}
-
-func BenchmarkFlow(b *testing.B) {
- data, err := ioutil.ReadFile("testdata/ninja_log")
- if err != nil {
- b.Errorf(`ReadFile("testdata/ninja_log")=_, %v; want_, <nil>`, err)
- }
-
- njl, err := Parse(".ninja_log", bytes.NewReader(data))
- if err != nil {
- b.Errorf(`Parse()=_, %v; want=_, <nil>`, err)
- }
- steps := Dedup(njl.Steps)
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- flowInput := make([]Step, len(steps))
- copy(flowInput, steps)
- Flow(flowInput)
- }
-}
-
-func BenchmarkToTraces(b *testing.B) {
- data, err := ioutil.ReadFile("testdata/ninja_log")
- if err != nil {
- b.Errorf(`ReadFile("testdata/ninja_log")=_, %v; want_, <nil>`, err)
- }
-
- njl, err := Parse(".ninja_log", bytes.NewReader(data))
- if err != nil {
- b.Errorf(`Parse()=_, %v; want=_, <nil>`, err)
- }
- steps := Dedup(njl.Steps)
- flow := Flow(steps)
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- ToTraces(flow, 1)
- }
-}
-
-func BenchmarkDedupFlowToTraces(b *testing.B) {
- data, err := ioutil.ReadFile("testdata/ninja_log")
- if err != nil {
- b.Errorf(`ReadFile("testdata/ninja_log")=_, %v; want_, <nil>`, err)
- }
-
- for i := 0; i < b.N; i++ {
- njl, err := Parse(".ninja_log", bytes.NewReader(data))
- if err != nil {
- b.Errorf(`Parse()=_, %v; want=_, <nil>`, err)
- }
-
- steps := Dedup(njl.Steps)
- flow := Flow(steps)
- ToTraces(flow, 1)
- }
-}
diff --git a/ninjalog/testdata/ninja_log b/ninjalog/testdata/ninja_log
deleted file mode 100644
index ac90cab..0000000
--- a/ninjalog/testdata/ninja_log
+++ /dev/null
@@ -1,326 +0,0 @@
-# ninja log v5
-932 1887 0 obj/aura_builder.stamp 7f299500e7cc72e4
-933 1887 0 obj/chromium_builder_tests.stamp 3b269cc5e106d1cb
-935 1889 0 obj/chromium_swarm_tests.stamp 228817dbc2838ed
-935 1889 0 obj/breakpad/stackwalk_common/ia32_operand.o e910d286882099db
-936 1890 0 obj/breakpad/stackwalk_common/ia32_implicit.o 5f70baee81295512
-936 1891 0 obj/breakpad/stackwalk_common/ia32_insn.o f5a4396053248fe2
-940 1892 0 obj/breakpad/stackwalk_common/ia32_settings.o defcb1700387b35b
-941 1900 0 obj/breakpad/stackwalk_common/x86_imm.o a9d30af1b7950290
-944 1901 0 obj/build/config/posix/posix.stamp 6d0ca2a0eaf18f67
-944 1902 0 obj/build/config/nacl/nacl_base.stamp ef27934affc9c112
-945 1903 0 obj/build/config/sanitizers/deps_no_options.stamp 5a49d397d6442ac3
-947 1903 0 obj/build/config/linux/linux.stamp f77230b5eb5afaf2
-947 1910 0 obj/build/config/linux/gtk3/gtk3.stamp 9b784fd2e50164d4
-947 1910 0 obj/build/config/linux/gtk3/gtkprint3.stamp 630941a61f5a6923
-948 1914 0 obj/base/base_static/switches.o b013922ef6f8aaab
-948 1915 0 gen/base/histogram_unittest_nc.cc dd29c0c48a525644
-949 1915 0 gen/base/callback_unittest_nc.cc 475066177ce401ff
-949 1916 0 gen/base/callback_list_unittest_nc.cc 16824df464b694f
-953 1920 0 obj/base/test/native_library_test_utils/native_library_test_utils.o c33b12415d139603
-953 1920 0 obj/base/allocator/tcmalloc/low_level_alloc.o 1fc5cc88e3e16e23
-957 1921 0 obj/base/allocator/tcmalloc/sysinfo.o 45a91a4d87d1aa9e
-957 1922 0 obj/base/allocator/tcmalloc/vdso_support.o 3e46bc0f32a5f33c
-962 1922 0 obj/base/allocator/tcmalloc/common.o 13a060d08e39d509
-962 1923 0 obj/base/allocator/tcmalloc/free_list.o 4e42356197e89a16
-965 1925 0 obj/base/allocator/tcmalloc/malloc_extension.o 76679f18029232e7
-965 1925 0 obj/base/allocator/tcmalloc/malloc_hook.o c627b7675ebfb1b0
-968 1925 0 obj/base/allocator/tcmalloc/page_heap.o d94de6badd6f30e6
-968 1926 0 obj/base/allocator/tcmalloc/raw_printer.o 9a2e6e0c1a365182
-968 1927 0 obj/base/allocator/tcmalloc/sampler.o ab3fb9ade346e5bc
-969 1927 0 obj/base/allocator/tcmalloc/stacktrace.o 7ac392099df854df
-969 1928 0 obj/base/allocator/tcmalloc/static_vars.o 5a7c9b34e682f72f
-973 1929 0 obj/base/allocator/tcmalloc/system-alloc.o f7e40e31b72b4fed
-977 1929 0 gen/base/debug/debugging_flags.h 9596e291177bcaa7
-977 1932 0 obj/base/base_unittests_bundle_data.stamp ccc2010a4884995f
-980 1932 0 obj/base/build_date.inputdeps.stamp 44b53a9dd8e06c36
-980 1932 0 gen/base/allocator/features.h f9894386c01c41c2
-980 1935 0 obj/base/allocator/tcmalloc/spinlock_internal.o 52eb3163ecfc72c
-980 1935 0 obj/base/allocator/tcmalloc/abort.o 318d8d2c8df20f6c
-987 1935 0 obj/base/allocator/tcmalloc/atomicops-internals-x86.o 3d3c2a4b6e9e91fa
-1005 1936 0 obj/base/allocator/tcmalloc/logging.o 861b3c21231da430
-1023 1937 0 obj/base/third_party/xdg_mime/xdg_mime/xdgmimeicon.o 64baf98d444024dd
-1029 1937 0 obj/base/third_party/libevent/libevent/strlcpy.o be9686387d30188e
-1171 1938 0 minidump_fuzzer.dict 2f759dc54b10c5a5
-1195 1939 0 minidump_fuzzer.options 12fb1704c79cd108
-1204 1940 0 gen/library_loaders/libgio.h 3f42a994f91c90ad
-1204 1940 0 gen/library_loaders/libgio_loader.cc 3f42a994f91c90ad
-1220 1944 0 obj/breakpad/stackwalk_common/dump_object.o e6678006ee215cf6
-1253 1944 0 obj/breakpad/stackwalk_common/stackwalker_sparc.o 634f5cec2de7ad50
-1253 1944 0 chrome.VisualElementsManifest.xml 11019a3b23390133
-1258 1944 0 gen/library_loaders/libudev0.h 6e9ea2f9a6d08cc5
-1258 1944 0 gen/library_loaders/libudev0_loader.cc 6e9ea2f9a6d08cc5
-1259 1945 0 gen/library_loaders/libudev1.h 5cff2c8da0269aa3
-1259 1945 0 gen/library_loaders/libudev1_loader.cc 5cff2c8da0269aa3
-1259 1945 0 obj/build/util/chrome_version_json.inputdeps.stamp 4a98b379bd3a95e1
-1259 1945 0 obj/build/util/webkit_version.inputdeps.stamp b4f2c6e2e759ee6d
-1259 1945 0 obj/build/win/default_exe_manifest.stamp 5749e6404e11fdd6
-1259 1947 0 obj/cc/ipc/interfaces__is_mojom.stamp 4f4afff0f6093dda
-1259 1948 0 obj/chrome/browser/preferences_manifest.inputdeps.stamp 373d9f2344667069
-1261 1948 0 obj/cc/ipc/test_interfaces__is_mojom.stamp 11f28ad8101031f9
-1268 1948 0 product_logo_48.png b4486b27ac8de19e
-1269 1950 0 chrome-wrapper c30fdbd2f2925001
-1270 1951 0 obj/chrome/manpage.inputdeps.stamp 307252fd80755cae
-1271 1951 0 xdg-mime 472f1619df53cd2b
-1272 1951 0 xdg-settings 325658a140ad44c1
-1272 1952 0 obj/chrome/app/chrome_content_gpu_manifest__is_service_manifest.stamp bc54c4907b6aae93
-1273 1952 0 obj/chrome/app/chrome_content_browser_manifest_overlay__is_service_manifest.stamp f6b6ad1752883df7
-1273 1952 0 obj/chrome/app/chrome_content_browser_manifest__is_service_manifest.stamp 679b1f0fffefa65f
-1273 1954 0 obj/chrome/app/chrome_content_gpu_manifest_overlay.inputdeps.stamp 87835f17ee6d9ad8
-1273 1954 0 obj/chrome/app/chrome_content_gpu_manifest_overlay__is_service_manifest.stamp b8219a49d409a88e
-1274 1955 0 obj/chrome/app/chrome_content_packaged_services_manifest__is_service_manifest.stamp 162af6abc2708239
-1274 1956 0 obj/chrome/app/chrome_content_packaged_services_manifest_for_mash__is_service_manifest.stamp b1395a7bf61f2e1a
-1274 1956 0 obj/chrome/app/chrome_content_packaged_services_manifest_overlay__is_service_manifest.stamp da61f69dd6c92351
-1274 1956 0 obj/chrome/app/chrome_content_packaged_services_manifest_overlay_for_mash__is_service_manifest.stamp 2a19ea80ead0568a
-1275 1957 0 obj/chrome/app/chrome_content_plugin_manifest_overlay.inputdeps.stamp a6733dbc50dc0b4
-1275 1957 0 obj/chrome/app/chrome_content_plugin_manifest__is_service_manifest.stamp df4185965232a7e6
-1275 1957 0 obj/chrome/app/chrome_content_plugin_manifest_overlay__is_service_manifest.stamp bd0fb97237c5074d
-1275 1957 0 obj/chrome/app/chrome_content_renderer_manifest_overlay.inputdeps.stamp 1605b840beae701c
-1275 1958 0 obj/chrome/app/chrome_content_renderer_manifest__is_service_manifest.stamp 5173642d314f2d18
-1276 1959 0 obj/chrome/app/chrome_content_renderer_manifest_overlay__is_service_manifest.stamp dab5a7d3eaadd85a
-1276 1960 0 obj/chrome/app/chrome_content_utility_manifest_overlay.inputdeps.stamp bb61a6eae7e90d98
-1276 1962 0 obj/chrome/app/chrome_content_utility_manifest__is_service_manifest.stamp d102efc7228156fc
-1276 1962 0 obj/chrome/app/chrome_content_utility_manifest_overlay__is_service_manifest.stamp e7c510cfbe2d9088
-1277 1962 0 obj/chrome/app/chrome_dll_resources.stamp 608c7174590ae48c
-1280 1963 0 obj/chrome/app/chrome_manifest.inputdeps.stamp 26a230f094ee6e25
-1281 1964 0 obj/chrome/app/chrome_manifest__is_service_manifest.stamp 392035a75b781481
-1281 1965 0 obj/chrome/app/command_ids.stamp a2bf13bf4ee69ea3
-1282 1966 0 obj/chrome/browser/ui/webui/omnibox/mojo_bindings__check_deps_are_all_mojom.stamp bd7ff06038f3ec7f
-1282 1966 0 obj/chrome/app/vector_icons/chrome_vector_icons.inputdeps.stamp f47ee6fec73e05b0
-1282 1967 0 cast_remoting_connector_fuzzer.options 930134b769ba9f73
-1282 1967 0 obj/chrome/browser/media/router/mojo_bindings__is_mojom.stamp 466fc9a439fbb2ec
-1283 1970 0 obj/chrome/browser/media/router/mojo_bindings_common__is_mojom.stamp 8b490270cdafecf
-1283 1971 0 obj/chrome/browser/media/router/mojo_test_interfaces__is_mojom.stamp 4c893ba3099cdaf7
-1283 1971 0 obj/chrome/browser/resources/md_downloads/vulcanize.inputdeps.stamp b463bc7f9833e4eb
-1283 1973 0 obj/chrome/browser/resources/md_history/vulcanize_app.inputdeps.stamp 5da5a62ad1dcb31f
-1283 1975 0 obj/chrome/browser/resources/md_history/vulcanize_lazy_load.inputdeps.stamp 3962d76366774295
-1284 1976 0 obj/components/domain_reliability/bake_in_configs.inputdeps.stamp 7fb2b7da8b55926b
-1284 1976 0 obj/chrome/browser/chrome_internal_resources_gen.stamp 1eae97aecd17386c
-1284 1976 0 obj/chrome/browser/preferences_manifest__is_service_manifest.stamp 33d9abfb726981c4
-1284 1978 0 obj/chrome/browser/theme_properties.stamp 6aa373278541af71
-1288 1978 0 gen/chrome/common/features.h 1380d988824bf2ae
-1289 1982 0 obj/chrome/common/mojo_bindings__is_mojom.stamp 58677facfc55a6c3
-1289 1983 0 obj/chrome/common/instant_mojom__is_mojom.stamp eca52cd264c479c6
-1289 1983 0 obj/chrome/browser/ui/webui/engagement/mojo_bindings__is_mojom.stamp 9f26b0e2b5750aa6
-1289 1984 0 obj/chrome/browser/ui/webui/omnibox/mojo_bindings__type_mappings.inputdeps.stamp a92cfc87812fc28e
-1289 1984 0 obj/chrome/browser/ui/webui/omnibox/mojo_bindings__is_mojom.stamp 1f292b08a229fcff
-1289 1984 0 obj/chrome/browser/ui/webui/omnibox/mojo_bindings_blink__type_mappings.inputdeps.stamp a7ef1a514c41174f
-1289 1985 0 obj/chrome/browser/ui/webui/usb_internals/mojo_bindings__is_mojom.stamp 9f2140f824793e44
-1290 1986 0 obj/chrome/common/extensions/mojo_bindings__is_mojom.stamp 697cc1f72aa3c9e9
-1290 1987 0 obj/chrome/common/version_header_action.inputdeps.stamp 6b9baa8063a6a905
-1291 1987 0 obj/chrome/common/extensions/api/api_bundle_generator_schema.inputdeps.stamp 417a733a1b1dc1b8
-1291 1988 0 obj/chrome/common/extensions/api/api_schema_generator.inputdeps.stamp c78d2148e660f04b
-1291 1990 0 obj/chrome/common/extensions/api/api_registration_bundle_generator_registration.inputdeps.stamp d87a40660f2526e8
-1292 1990 0 obj/chrome/common/importer/interfaces__is_mojom.stamp fbba48a63930fad8
-1292 1991 0 obj/components/password_manager/core/browser/unit_tests_bundle_data.stamp a1221f6a41bbc716
-1292 1993 0 obj/components/visitedlink/common/interfaces__is_mojom.stamp 2c49363bec81305d
-1292 1994 0 obj/components/visitedlink/common/interfaces__type_mappings.inputdeps.stamp a0d0f67f50be78ae
-1294 1994 0 obj/chrome/installer/installer.stamp fdbc934e2b94627c
-1294 1996 0 obj/chrome/installer/util/generate_strings.inputdeps.stamp c21387fd9dd578b7
-1294 1996 0 obj/components/payments/content/payment_app__is_mojom.stamp a8f1f182179a2e4a
-1294 1996 0 obj/components/autofill/core/browser/unit_tests_bundle_data.stamp 76813fb9ac300ccd
-1295 1997 0 obj/components/dom_distiller/core/unit_tests_bundle_data.stamp 6a0f970508ef2822
-1295 1998 0 obj/mash/public/interfaces/interfaces__type_mappings.inputdeps.stamp 8fc53baa86393f2c
-1295 1999 0 obj/components/dom_distiller/content/common/mojo_bindings__type_mappings.inputdeps.stamp 7cf1b8d92cfbe99d
-1295 2002 0 obj/chrome/test/test.stamp 740bf2e94b308511
-1295 2005 0 obj/extensions/browser/api/api_registration_bundle_generator_registration.inputdeps.stamp 16ba782e33efde8a
-1295 2009 0 obj/components/autofill/content/common/mojo_interfaces__is_mojom.stamp 9e5b625f65094c9f
-1295 2009 0 obj/components/autofill/content/common/mojo_types__is_mojom.stamp dcb5dbec6d55a6a7
-1296 2011 0 obj/components/autofill/content/common/mojo_test_types__is_mojom.stamp d9c798289ba46425
-1297 2011 0 obj/components/password_manager/content/common/mojo_interfaces__is_mojom.stamp 626b36fa82d1da58
-1298 2012 0 obj/components/bookmarks/browser/unit_tests_bundle_data.stamp 597321f908035e7b
-1298 2029 0 test_data/chrome/browser/resources/print_preview/print_preview_utils.js 3da6f440b12423f5
-1298 2045 0 test_data/chrome/browser/resources/print_preview/data/measurement_system.js 276da1cf0e264513
-1298 2061 0 test_data/chrome/browser/resources/md_downloads/action_service.js ab7d4417cd0ee295
-1298 2097 0 test_data/chrome/renderer/resources/extensions/notifications_custom_bindings.js a6480bafe57a2747
-1299 2097 0 test_data/chrome/renderer/resources/extensions/notifications_test_util.js 21534713a862f9f0
-1300 2106 0 media_router/browser_test_resources/no_provider.json 3966753c5d416bb
-1300 2120 0 media_router/browser_test_resources/no_sinks.json 8a565aa71679478b
-1300 2121 0 media_router/test_extension/manifest.json 8f65bc8b627dcc57
-1300 2126 0 media_router/test_extension/script.js 107afb97bad014f
-1300 2127 0 media_router/browser_test_resources/close_route_with_error_on_send.json b9facf84d2e8c445
-1301 2129 0 media_router/browser_test_resources/basic_test.html f95507df99df541
-1301 2134 0 media_router/browser_test_resources/common.js d07c9ad75bf70cf5
-1301 2137 0 media_router/browser_test_resources/route_creation_timed_out.json e5dc7c74ac436fe5
-1302 2141 0 media_router/browser_test_resources/fail_create_route.json f41da6c16c17fcce
-1302 2157 0 media_router/browser_test_resources/fail_reconnect_session.json 581f4aec17f01054
-1302 2177 0 media_router/browser_test_resources/no_supported_sinks.json 9a1378949ae8c576
-1303 2181 0 media_router/browser_test_resources/fail_reconnect_session.html 63cebfae6ed2384e
-1303 2181 0 obj/content/test/content_test_mojo_bindings__check_deps_are_all_mojom.stamp ffff60eb9ffb675
-1303 2183 0 test_data/ui/webui/resources/js/cr.js b6fec657a251987d
-1303 2184 0 obj/chrome/test/chromedriver/embed_js_in_cpp.inputdeps.stamp decaaac784c17e4a
-1303 2184 0 obj/chrome/test/chromedriver/embed_user_data_dir_in_cpp.inputdeps.stamp e92600aa087bbb93
-1304 2185 0 obj/chrome/test/chromedriver/embed_version_in_cpp.inputdeps.stamp 3972b73cb5c02713
-1304 2186 0 obj/chrome/test/chromedriver/embed_extension_in_cpp.inputdeps.stamp b9ccb10c5ebe688b
-1304 2189 0 obj/components/content_settings/core/common/mojo_bindings__check_deps_are_all_mojom.stamp da375d2ecca40368
-1305 2201 0 obj/components/history/core/browser/unit_tests_bundle_data.stamp a3b912d12f688623
-1305 2201 0 obj/components/contextual_search/mojo_bindings__check_deps_are_all_mojom.stamp 18fd737f0687941e
-1305 2201 0 obj/components/contextual_search/mojo_bindings__is_mojom.stamp d187e414f8925477
-1308 2205 0 obj/components/contextual_search/mojo_bindings__type_mappings.inputdeps.stamp 1af9b91fb39cf2c
-1309 2221 0 hid_report_descriptor_fuzzer.options 580f064a68005230
-1309 2224 0 obj/components/content_settings/core/common/mojo_bindings__type_mappings.inputdeps.stamp 5d22a3eb8a588726
-1309 2249 0 obj/components/content_settings/core/common/mojo_bindings__is_mojom.stamp 7750f7c67582c124
-1309 2258 0 obj/components/content_settings/core/common/mojo_bindings_blink__type_mappings.inputdeps.stamp 2431763c76fe6e5a
-1309 2265 0 obj/components/contextual_search/mojo_bindings_blink__type_mappings.inputdeps.stamp e7473d8c2e1dcae2
-1311 2265 0 obj/components/data_reduction_proxy/core/common/version_header_action.inputdeps.stamp def55c35f16728c2
-1311 2277 0 obj/components/data_reduction_proxy/core/browser/unit_tests_bundle_data.stamp 7cb412d497616df3
-1311 2297 0 obj/components/discardable_memory/public/interfaces/interfaces__type_mappings.inputdeps.stamp dca59ab4f91c2ee8
-1311 2309 0 obj/components/discardable_memory/public/interfaces/interfaces__is_mojom.stamp 9f0a161334664221
-1311 2333 0 obj/components/discardable_memory/public/interfaces/interfaces_blink__type_mappings.inputdeps.stamp 6e36ef3a17f3de02
-1312 2345 0 obj/components/discardable_memory/public/interfaces/interfaces__check_deps_are_all_mojom.stamp ec112dbb3de63c54
-1312 2345 0 obj/components/dom_distiller/content/common/mojo_bindings__is_mojom.stamp e9cb079e59ba260e
-1312 2348 0 obj/components/dom_distiller/content/common/mojo_bindings__check_deps_are_all_mojom.stamp dbece267a76395df
-1314 2353 0 obj/ui/base/ime/text_input_types.stamp 7a2d9dbcc77cfda6
-1314 2359 0 obj/components/dom_distiller/content/common/mojo_bindings_blink__type_mappings.inputdeps.stamp 1e36ef36dd3398c9
-1315 2360 0 obj/components/filesystem/test_manifest__is_service_manifest.stamp 49dd9970c19ba5e
-1315 2369 0 obj/components/filesystem/manifest__is_service_manifest.stamp 95c95da367c72984
-1315 2369 0 obj/components/filesystem/test_manifest.inputdeps.stamp ff8428f5f54eeb48
-1315 2393 0 obj/components/filesystem/manifest.inputdeps.stamp 43bef0c83d0b0886
-1315 2393 0 obj/components/filesystem/public/interfaces/interfaces__is_mojom.stamp 4c28486b416c7fd2
-1316 2394 0 obj/components/font_service/manifest.inputdeps.stamp d8a2303746c6b516
-1317 2395 0 obj/components/font_service/manifest__is_service_manifest.stamp 1fc5b5ae92a492b7
-1317 2396 0 obj/components/font_service/public/interfaces/interfaces__is_mojom.stamp 2f17d19bcb97eb84
-1318 2404 0 obj/components/handoff/handoff.stamp a1ecd0e1f95f0461
-1318 2409 0 obj/components/visitedlink/common/interfaces_blink__type_mappings.inputdeps.stamp 22bdb1b353356929
-1318 2425 0 obj/components/json_schema/unit_tests_bundle_data.stamp 55e44fc60b39fe05
-1318 2427 0 obj/components/leveldb/public/interfaces/interfaces__is_mojom.stamp a4c4f4afa51e0970
-1319 2427 0 obj/components/leveldb/test_manifest__is_service_manifest.stamp a5060450ad053f48
-1319 2429 0 obj/components/leveldb/manifest__is_service_manifest.stamp 98ae837e0acd335
-1319 2429 0 obj/components/leveldb/test_manifest.inputdeps.stamp 68a6f2adcbd52597
-1319 2433 0 obj/components/leveldb/manifest.inputdeps.stamp ab10e912a19cf2df
-1320 2433 0 obj/content/public/common/service_names__type_mappings.inputdeps.stamp 373bbbad6ead5f34
-1321 2453 0 obj/content/public/common/service_names__is_mojom.stamp 8357cc3b4f2c0123
-1323 2461 0 obj/content/renderer/for_content_tests.stamp 700a6a50f029f439
-1323 2461 0 obj/components/metrics/call_stack_profile_params/call_stack_profile_params.o d0898cd3269c4685
-1324 2461 0 obj/components/metrics/public/interfaces/call_stack_mojo_bindings__is_mojom.stamp d71fb0ea06f4ff50
-1324 2463 0 obj/components/metrics/public/interfaces/call_stack_mojo_test_bindings__is_mojom.stamp f343bc355006eda9
-1324 2465 0 obj/content/test/content_test_mojo_bindings__is_mojom.stamp dca0e4ba7b52130d
-1325 2466 0 obj/content/test/content_test_mojo_bindings__type_mappings.inputdeps.stamp 1b21e422740b76bd
-1325 2466 0 obj/device/bluetooth/public/interfaces/interfaces__type_mappings.inputdeps.stamp bb0aa06fc65ada2
-1325 2486 0 obj/device/bluetooth/public/interfaces/interfaces__is_mojom.stamp 5e31bc7b9644b45e
-1325 2486 0 obj/components/omnibox/browser/unit_tests_bundle_data.stamp e6f22eb311c939d0
-1326 2489 0 obj/components/omnibox/common/common.stamp c3620bb786809ce6
-1326 2489 0 obj/components/omnibox/browser/omnibox_vector_icons.inputdeps.stamp fc4caa96333b1f49
-1328 2525 0 obj/components/payments/content/payment_request__type_mappings.inputdeps.stamp 4138c73edd8d9967
-1329 2525 0 obj/components/payments/content/payment_request__is_mojom.stamp 4dbc6bdd61021ca0
-1330 2537 0 obj/components/payments/content/payment_request__check_deps_are_all_mojom.stamp d922943f5977c2dd
-1330 2541 0 obj/components/payments/content/payment_request_blink__type_mappings.inputdeps.stamp 43997c6ac87963a4
-1330 2541 0 obj/components/policy/full_runtime_code_generate.inputdeps.stamp 8207acd4fc2c0e50
-1331 2542 0 obj/device/wake_lock/public/interfaces/interfaces_blink__type_mappings.inputdeps.stamp 6b4c989d4e204ee3
-1332 2545 0 obj/components/policy/cloud_policy_code_generate.inputdeps.stamp 80d997b008445f27
-1332 2559 0 obj/components/rappor/public/interfaces/interfaces__is_mojom.stamp f74ddb5b30de7283
-1332 2585 0 gen/components/reading_list/core/reading_list_enable_flags.h f18d0b5d02cf9f78
-1334 2586 0 obj/headless/version_header_action.inputdeps.stamp c1023777f5460270
-1334 2587 0 obj/components/resources/about_credits.inputdeps.stamp a42c859c1e84aafc
-1334 2587 0 obj/gpu/ipc/common/test_interfaces__is_mojom.stamp 6c211a01634aee8e
-1335 2587 0 obj/components/search_engines/prepopulated_engines_action.inputdeps.stamp 563322a485255768
-1335 2588 0 obj/components/safe_json/public/interfaces/interfaces__is_mojom.stamp b1c4ffd92ad2d62
-1337 2593 0 gpu_fuzzer.options 357a45b5220e5ae6
-1337 2593 0 gen/components/spellcheck/spellcheck_build_features.h ffbfeb2acac5fefb
-1338 2594 0 net_url_request_ftp_fuzzer.dict d2a573f9850594ae
-1338 2594 0 net_url_request_ftp_fuzzer.options ebf89f03483d7889
-1338 2596 0 obj/components/startup_metric_utils/common/interfaces__is_mojom.stamp 402b01730c095796
-1339 2597 0 obj/services/image_decoder/public/interfaces/constants__check_deps_are_all_mojom.stamp 79541de2b563448d
-1339 2598 0 remoting/chrome-remote-desktop-host 645e67669422d2f4
-1339 2598 0 obj/services/ui/ws/mus_ws_unittests_app_manifest.inputdeps.stamp 387fe8854b2e7630
-1339 2599 0 obj/skia/public/interfaces/test_interfaces__is_mojom.stamp 8e9419d22031d89a
-1340 2606 0 obj/services/shape_detection/manifest.inputdeps.stamp 2245ddb863b954c
-1341 2621 0 colorenhancer/src/cvd.js bfff4c53b86e67fa
-1342 2621 0 colorenhancer/src/common.js 273a0f544599a6f
-1343 2633 0 colorenhancer/src/background.js 8b6bc1aa16c16bc8
-1343 2633 0 obj/ui/base/mojo/mojo_bindings_blink__type_mappings.inputdeps.stamp 565a2b79604e9caa
-1344 2633 0 obj/services/service_manager/manifest.inputdeps.stamp 89d35163db05eef
-1344 2634 0 obj/services/service_manager/manifest__is_service_manifest.stamp 1cbc8d6f5f4b48ff
-1350 2634 0 obj/services/service_manager/background/tests/test_manifest__is_service_manifest.stamp d6300a614424bac5
-1351 2636 0 obj/services/service_manager/background/tests/test_service_interfaces__check_deps_are_all_mojom.stamp 17f819c51d0bbcba
-1351 2636 0 obj/services/service_manager/background/tests/test_manifest.inputdeps.stamp ac6756d58fa02be5
-1351 2636 0 obj/services/service_manager/background/tests/test_service_interfaces__is_mojom.stamp d9304a27f20ef777
-1351 2636 0 obj/services/service_manager/background/tests/test_service_interfaces__type_mappings.inputdeps.stamp 99a4b65a446a96c6
-1352 2637 0 obj/services/service_manager/background/tests/test_service_interfaces_blink__type_mappings.inputdeps.stamp fc8744ed09af87be
-1352 2637 0 obj/services/service_manager/background/tests/test_service_manifest.inputdeps.stamp c24cd0627664d8f
-1352 2637 0 obj/services/service_manager/background/tests/test_service_manifest__is_service_manifest.stamp b5e86b588a28fb5c
-1353 2641 0 obj/services/service_manager/public/interfaces/constants__is_mojom.stamp e062038719022d9a
-1354 2642 0 obj/services/service_manager/public/interfaces/constants__check_deps_are_all_mojom.stamp 419f0ddba4c080d6
-1356 2643 0 obj/services/service_manager/public/interfaces/constants__type_mappings.inputdeps.stamp d69a5fd3bc55a6fa
-1357 2643 0 obj/services/service_manager/public/interfaces/constants_blink__type_mappings.inputdeps.stamp e5d64366e8ff03ac
-1358 2645 0 obj/services/service_manager/public/interfaces/interfaces__is_mojom.stamp 8008271190de7995
-1358 2649 0 obj/services/service_manager/tests/interfaces__type_mappings.inputdeps.stamp 3b926ed55307693f
-1359 2650 0 obj/services/service_manager/tests/interfaces__is_mojom.stamp bbf5a998c440e482
-1359 2652 0 obj/services/service_manager/runner/host/host_test_service_manifest__is_service_manifest.stamp b3629c78e87569ea
-1360 2652 0 obj/services/service_manager/runner/host/host_test_service_manifest.inputdeps.stamp 881ed42edc54279
-1360 2654 0 obj/services/service_manager/tests/interfaces__check_deps_are_all_mojom.stamp 3e745013b5c3a7d4
-1361 2654 0 obj/ui/keyboard/mojom__is_mojom.stamp ac83212aef984ca6
-1362 2655 0 obj/components/toolbar/toolbar_vector_icons.inputdeps.stamp 999190b061be2b18
-1363 2656 0 obj/components/translate/content/common/common__is_mojom.stamp e77a47adf41e78ca
-1363 2658 0 obj/components/ui_devtools/protocol_compatibility.inputdeps.stamp a262a48d447d407c
-1364 2660 0 obj/components/update_client/unit_tests_bundle_data.stamp e34a9f29a7ddf9da
-1364 2660 0 obj/components/variations/field_trial_config/field_trial_testing_config_action.inputdeps.stamp 434946957497ef1e
-1364 2660 0 obj/testing/buildbot/filters/browser_tests_filters.stamp 3b9fd46dc80e103
-1365 2660 0 obj/components/version_info/generate_version_info_action.inputdeps.stamp e320dedf7f041bb8
-1365 2662 0 obj/components/web_cache/public/interfaces/interfaces__type_mappings.inputdeps.stamp 1d8798130ad180c8
-1365 2662 0 obj/components/web_cache/public/interfaces/interfaces__is_mojom.stamp 5173eb112c5d56f1
-1366 2669 0 obj/mash/public/interfaces/interfaces__is_mojom.stamp 6dd113bd4ce0134a
-1366 2669 0 obj/components/web_cache/public/interfaces/interfaces_blink__type_mappings.inputdeps.stamp defee36e55d65320
-1367 2669 0 obj/components/visitedlink/common/interfaces__check_deps_are_all_mojom.stamp 12c5f8f404f07144
-1367 2669 0 obj/components/web_cache/public/interfaces/interfaces__check_deps_are_all_mojom.stamp 4d22832bbd44e332
-1368 2673 0 obj/content/sandbox_helper_win.stamp 53556bd1952574d0
-1369 2681 0 obj/services/ui/demo/manifest.inputdeps.stamp d261cb8b5832ad36
-1370 2681 0 obj/components/webdata/common/unit_tests_bundle_data.stamp bea6c98642e32d4e
-1370 2681 0 obj/content/app/both_for_content_tests.stamp 61ebf49fd98b90cc
-1370 2681 0 obj/content/export.stamp 4a060d841250382b
-1370 2681 0 obj/content/common/mojo_bindings__is_mojom.stamp 41eea74b73e02dfb
-1371 2682 0 obj/content/child/for_content_tests.stamp 44aaf3e748abc1ea
-1371 2682 0 gen/content/public/common/features.h f5ec1a1276c73150
-1372 2683 0 obj/content/common/for_content_tests.stamp b3f0afc35633fbca
-1373 2684 0 gen/content/common/features.h f14dec80fcf32baa
-1373 2685 0 obj/services/ui/demo/test_manifest.inputdeps.stamp 76824c99aa6bf355
-1373 2685 0 obj/content/public/app/renderer_manifest__is_service_manifest.stamp fd7f4a85ccacf1b7
-1374 2686 0 obj/content/public/app/renderer_manifest.inputdeps.stamp 48032c8ab25a6aec
-1374 2688 0 obj/content/public/app/plugin_manifest__is_service_manifest.stamp 99d43b55bb330fae
-1374 2690 0 obj/content/public/app/plugin_manifest.inputdeps.stamp fd40843720182461
-1374 2690 0 obj/content/public/app/packaged_services_manifest__is_service_manifest.stamp 4813dd4c7cfe0dd4
-1375 2691 0 obj/content/public/app/gpu_manifest__is_service_manifest.stamp ae2b882bbd8bb292
-1375 2692 0 obj/content/public/app/gpu_manifest.inputdeps.stamp d316339c888e8cbf
-1375 2692 0 obj/content/public/app/browser_manifest__is_service_manifest.stamp 83671be596ae3bf9
-1377 2692 0 obj/content/public/app/utility_manifest__is_service_manifest.stamp c875df2d90c2c80
-1378 2693 0 obj/content/public/app/utility_manifest.inputdeps.stamp 88bb6e963b00b0c1
-1378 2694 0 obj/content/public/common/service_names_blink__type_mappings.inputdeps.stamp 1b2338947af3a1b
-1378 2694 0 obj/content/public/common/interfaces__check_deps_are_all_mojom.stamp 97afcae8baadc77a
-1379 2694 0 obj/content/public/common/result_codes.stamp 7e3d25132dcedc3b
-1380 2694 0 obj/content/public/common/service_names__check_deps_are_all_mojom.stamp 1b497d9c4f1d8650
-1380 2695 0 obj/content/public/common/interfaces__type_mappings.inputdeps.stamp 359a82b755d6dfbc
-1380 2696 0 obj/content/public/common/interfaces__is_mojom.stamp 4a4e8a0c32c5f938
-1381 2696 0 obj/content/public/common/interfaces_blink__type_mappings.inputdeps.stamp ee602eacc9b045e9
-1381 2697 0 GardinerModCat.ttf 3ce72a7c357259c0
-1381 2699 0 GardinerModBug.ttf 69f4c57ee21e3d45
-1382 2699 0 fonts.conf 903c92c674848f27
-1383 2699 0 AHEM____.TTF d9be98d3534e71be
-1384 2699 0 obj/content/shell/mojo_bindings__is_mojom.stamp 41a503d4088b8a6d
-1384 2700 0 obj/content/test/content_test_mojo_bindings_blink__type_mappings.inputdeps.stamp cdbad946535f7511
-1385 2701 0 obj/content/test/content_unittests_manifest__is_service_manifest.stamp f72e2413607b90b6
-1385 2701 0 obj/content/utility/for_content_tests.stamp 144e86637a119ab7
-1385 2701 0 obj/content/test/web_ui_test_mojo_bindings__check_deps_are_all_mojom.stamp 70bf70f78a81f092
-1386 2703 0 obj/third_party/webrtc/base/gtest_prod.stamp c7ba3618f71670fe
-1387 2713 0 obj/device/battery/mojo_bindings__is_mojom.stamp d1000202725cdd3a
-1387 2713 0 obj/device/battery/mojo_bindings_blink__type_mappings.inputdeps.stamp b5a2ba69c2ffe9f1
-1388 2714 0 obj/device/battery/mojo_bindings__check_deps_are_all_mojom.stamp ec7d3f5902ab03b8
-1388 2715 0 obj/device/battery/mojo_bindings__type_mappings.inputdeps.stamp 8f755a1226416498
-1388 2716 0 obj/content/test/web_ui_test_mojo_bindings_blink__type_mappings.inputdeps.stamp 491d4795773c54c8
-1388 2716 0 obj/content/test/web_ui_test_mojo_bindings__type_mappings.inputdeps.stamp de7637397f63b2ec
-1389 2716 0 obj/content/test/web_ui_test_mojo_bindings__is_mojom.stamp 1e0ab0348c2e1ee0
-1390 2717 0 obj/content/test/fuzzer/fuzzer.stamp bbc6f5317d29aa65
-1390 2718 0 obj/device/bluetooth/public/interfaces/experimental_interfaces__is_mojom.stamp 1c79665bed98ab04
-1390 2719 0 obj/device/bluetooth/public/interfaces/interfaces__check_deps_are_all_mojom.stamp 89c2f14913b32f85
-1391 2719 0 obj/device/bluetooth/public/interfaces/interfaces_blink__type_mappings.inputdeps.stamp 2b05f29f4adaa33
-1392 2720 0 obj/device/gamepad/public/interfaces/gamepad_struct_traits_test__is_mojom.stamp 33daf38dd323965b
-1393 2721 0 obj/device/gamepad/public/interfaces/interfaces__check_deps_are_all_mojom.stamp 35111b8a42281362
-1393 2721 0 obj/device/gamepad/public/interfaces/interfaces__is_mojom.stamp 60c295fb5928248a
-1394 2722 0 obj/device/gamepad/public/interfaces/interfaces__type_mappings.inputdeps.stamp 3b2c48390830aa2b
-1395 2725 0 obj/device/gamepad/public/interfaces/interfaces_blink__type_mappings.inputdeps.stamp 1e19f40cc0de3a70
-1395 2733 0 obj/device/generic_sensor/public/interfaces/interfaces__check_deps_are_all_mojom.stamp 4314a13b8c276e18
-1395 2733 0 obj/device/generic_sensor/public/interfaces/interfaces__is_mojom.stamp 69989e0cd8e35ad4
-1396 2735 0 obj/device/generic_sensor/public/interfaces/interfaces__type_mappings.inputdeps.stamp 5ddddfa704d022e6
-1396 2735 0 obj/device/generic_sensor/public/interfaces/interfaces_blink__type_mappings.inputdeps.stamp e1fa941c54fc56cc
-1397 2735 0 obj/device/geolocation/public/interfaces/interfaces__is_mojom.stamp 1c29a8f30eb15f9d
-1397 2736 0 obj/device/geolocation/public/interfaces/interfaces__type_mappings.inputdeps.stamp 286d95a305d8b211
-1398 2737 0 obj/device/geolocation/public/interfaces/interfaces__check_deps_are_all_mojom.stamp a9256d80d904d268
diff --git a/ninjalog/trace.go b/ninjalog/trace.go
deleted file mode 100644
index 0313d4c..0000000
--- a/ninjalog/trace.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2014 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package ninjalog
-
-import (
- "sort"
-)
-
-// Trace is an entry of trace format.
-// https://code.google.com/p/trace-viewer/
-type Trace struct {
- Name string `json:"name"`
- Category string `json:"cat"`
- EventType string `json:"ph"`
- Timestamp int `json:"ts"` // microsecond
- Duration int `json:"dur"` // microsecond
- ProcessID int `json:"pid"`
- ThreadID int `json:"tid"`
- Args map[string]interface{} `json:"args"`
-}
-
-type traceByStart []Trace
-
-func (t traceByStart) Len() int { return len(t) }
-func (t traceByStart) Swap(i, j int) { t[i], t[j] = t[j], t[i] }
-func (t traceByStart) Less(i, j int) bool { return t[i].Timestamp < t[j].Timestamp }
-
-func toTrace(step Step, pid int, tid int) Trace {
- return Trace{
- Name: step.Out,
- Category: "target",
- EventType: "X",
- Timestamp: int(step.Start.Nanoseconds() / 1000),
- Duration: int(step.Duration().Nanoseconds() / 1000),
- ProcessID: pid,
- ThreadID: tid,
- Args: make(map[string]interface{}),
- }
-}
-
-// ToTraces converts Flow outputs into trace log.
-func ToTraces(steps [][]Step, pid int) []Trace {
- traceNum := 0
- for _, thread := range steps {
- traceNum += len(thread)
- }
-
- traces := make([]Trace, 0, traceNum)
- for tid, thread := range steps {
- for _, step := range thread {
- traces = append(traces, toTrace(step, pid, tid))
- }
- }
- sort.Sort(traceByStart(traces))
- return traces
-}
diff --git a/ninjalog/trace_test.go b/ninjalog/trace_test.go
deleted file mode 100644
index 9417587..0000000
--- a/ninjalog/trace_test.go
+++ /dev/null
@@ -1,164 +0,0 @@
-// Copyright 2014 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package ninjalog
-
-import (
- "reflect"
- "testing"
- "time"
-)
-
-func TestTrace(t *testing.T) {
- flow := [][]Step{
- []Step{
- Step{
- Start: 76 * time.Millisecond,
- End: 187 * time.Millisecond,
- Out: "resources/inspector/devtools_extension_api.js",
- CmdHash: "75430546595be7c2",
- },
- Step{
- Start: 187 * time.Millisecond,
- End: 21304 * time.Millisecond,
- Out: "obj/third_party/pdfium/core/src/fpdfdoc/fpdfdoc.doc_formfield.o",
- CmdHash: "2ac7111aa1ae86af",
- },
- },
- []Step{
- Step{
- Start: 78 * time.Millisecond,
- End: 286 * time.Millisecond,
- Out: "gen/angle/commit_id.py",
- CmdHash: "4ede38e2c1617d8c",
- },
- Step{
- Start: 287 * time.Millisecond,
- End: 290 * time.Millisecond,
- Out: "obj/third_party/angle/src/copy_scripts.actions_rules_copies.stamp",
- CmdHash: "b211d373de72f455",
- },
- },
- []Step{
- Step{
- Start: 79 * time.Millisecond,
- End: 287 * time.Millisecond,
- Out: "gen/angle/copy_compiler_dll.bat",
- CmdHash: "9fb635ad5d2c1109",
- },
- },
- []Step{
- Step{
- Start: 80 * time.Millisecond,
- End: 284 * time.Millisecond,
- Out: "gen/autofill_regex_constants.cc",
- CmdHash: "fa33c8d7ce1d8791",
- },
- },
- []Step{
- Step{
- Start: 141 * time.Millisecond,
- End: 287 * time.Millisecond,
- Out: "PepperFlash/manifest.json",
- CmdHash: "324f0a0b77c37ef",
- },
- },
- []Step{
- Step{
- Start: 142 * time.Millisecond,
- End: 288 * time.Millisecond,
- Out: "PepperFlash/libpepflashplayer.so",
- CmdHash: "1e2c2b7845a4d4fe",
- },
- },
- }
-
- traces := ToTraces(flow, 1)
- want := []Trace{
- Trace{
- Name: "resources/inspector/devtools_extension_api.js",
- Category: "target",
- EventType: "X",
- Timestamp: 76 * 1000,
- Duration: (187 - 76) * 1000,
- ProcessID: 1,
- ThreadID: 0,
- Args: map[string]interface{}{},
- },
- Trace{
- Name: "gen/angle/commit_id.py",
- Category: "target",
- EventType: "X",
- Timestamp: 78 * 1000,
- Duration: (286 - 78) * 1000,
- ProcessID: 1,
- ThreadID: 1,
- Args: map[string]interface{}{},
- },
- Trace{
- Name: "gen/angle/copy_compiler_dll.bat",
- Category: "target",
- EventType: "X",
- Timestamp: 79 * 1000,
- Duration: (287 - 79) * 1000,
- ProcessID: 1,
- ThreadID: 2,
- Args: map[string]interface{}{},
- },
- Trace{
- Name: "gen/autofill_regex_constants.cc",
- Category: "target",
- EventType: "X",
- Timestamp: 80 * 1000,
- Duration: (284 - 80) * 1000,
- ProcessID: 1,
- ThreadID: 3,
- Args: map[string]interface{}{},
- },
- Trace{
- Name: "PepperFlash/manifest.json",
- Category: "target",
- EventType: "X",
- Timestamp: 141 * 1000,
- Duration: (287 - 141) * 1000,
- ProcessID: 1,
- ThreadID: 4,
- Args: map[string]interface{}{},
- },
- Trace{
- Name: "PepperFlash/libpepflashplayer.so",
- Category: "target",
- EventType: "X",
- Timestamp: 142 * 1000,
- Duration: (288 - 142) * 1000,
- ProcessID: 1,
- ThreadID: 5,
- Args: map[string]interface{}{},
- },
- Trace{
- Name: "obj/third_party/pdfium/core/src/fpdfdoc/fpdfdoc.doc_formfield.o",
- Category: "target",
- EventType: "X",
- Timestamp: 187 * 1000,
- Duration: (21304 - 187) * 1000,
- ProcessID: 1,
- ThreadID: 0,
- Args: map[string]interface{}{},
- },
- Trace{
- Name: "obj/third_party/angle/src/copy_scripts.actions_rules_copies.stamp",
- Category: "target",
- EventType: "X",
- Timestamp: 287 * 1000,
- Duration: (290 - 287) * 1000,
- ProcessID: 1,
- ThreadID: 1,
- Args: map[string]interface{}{},
- },
- }
-
- if !reflect.DeepEqual(traces, want) {
- t.Errorf("ToTrace()=%v; want=%v", traces, want)
- }
-}