From 2fdf9bc55d271d9b47f1af154273ef33bbd34931 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Sat, 3 Feb 2018 10:28:37 +0100 Subject: [PATCH] test: Mend the transfer benchmark --- test/transfer-bench_test.go | 30 ++++++++++++++++++++++-------- test/util.go | 5 ++++- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/test/transfer-bench_test.go b/test/transfer-bench_test.go index 2d5c25f6..bb6a7081 100644 --- a/test/transfer-bench_test.go +++ b/test/transfer-bench_test.go @@ -88,6 +88,8 @@ func benchmarkTransfer(t *testing.T, files, sizeExp int) { var t0, t1 time.Time lastEvent := 0 + oneItemFinished := false + loop: for { evs, err := receiver.Events(lastEvent) @@ -99,22 +101,34 @@ loop: } for _, ev := range evs { - if ev.Type == "StateChanged" { + lastEvent = ev.ID + + switch ev.Type { + case "ItemFinished": + oneItemFinished = true + continue + + case "StateChanged": data := ev.Data.(map[string]interface{}) if data["folder"].(string) != "default" { continue } - log.Println(ev) - if data["to"].(string) == "syncing" { + + switch data["to"].(string) { + case "syncing": t0 = ev.Time continue - } - if !t0.IsZero() && data["to"].(string) == "idle" { - t1 = ev.Time - break loop + + case "idle": + if !oneItemFinished { + continue + } + if !t0.IsZero() { + t1 = ev.Time + break loop + } } } - lastEvent = ev.ID } time.Sleep(250 * time.Millisecond) diff --git a/test/util.go b/test/util.go index 5df9e143..4dd00806 100644 --- a/test/util.go +++ b/test/util.go @@ -453,7 +453,10 @@ func startWalker(dir string, res chan<- fileInfo, abort <-chan struct{}) chan er f = fileInfo{ name: rn, mode: info.Mode(), - mod: info.ModTime().Truncate(time.Microsecond).UnixNano(), + // comparing timestamps with better precision than a second + // is problematic as there is rounding and truncatign going + // on at every level + mod: info.ModTime().Unix(), size: info.Size(), } sum, err := md5file(path)