From 6e148e20cd8b9ed2893659bf0dfdc44d1308100b Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Sun, 12 Nov 2017 23:28:45 +0100 Subject: [PATCH] test: Mend tests for latest event changes etc --- lib/rc/rc.go | 33 +++++++++++++-- test/h1/config.xml | 78 +++++++++++++++++++++++------------ test/h2/config.xml | 82 +++++++++++++++++++++++-------------- test/h3/config.xml | 58 +++++++++++++++++--------- test/h4/config.xml | 33 +++++++++++---- test/sync_test.go | 11 +++++ test/transfer-bench_test.go | 3 ++ test/util.go | 1 + 8 files changed, 212 insertions(+), 87 deletions(-) diff --git a/lib/rc/rc.go b/lib/rc/rc.go index a8de386d..fc370bf7 100644 --- a/lib/rc/rc.go +++ b/lib/rc/rc.go @@ -213,7 +213,7 @@ type Event struct { } func (p *Process) Events(since int) ([]Event, error) { - bs, err := p.Get(fmt.Sprintf("/rest/events?since=%d", since)) + bs, err := p.Get(fmt.Sprintf("/rest/events?since=%d&timeout=10", since)) if err != nil { return nil, err } @@ -291,6 +291,16 @@ func (p *Process) ResumeDevice(dev protocol.DeviceID) error { return err } +func (p *Process) PauseAll() error { + _, err := p.Post("/rest/system/pause", nil) + return err +} + +func (p *Process) ResumeAll() error { + _, err := p.Post("/rest/system/resume", nil) + return err +} + func InSync(folder string, ps ...*Process) bool { for _, p := range ps { p.eventMut.Lock() @@ -314,10 +324,12 @@ func InSync(folder string, ps ...*Process) bool { sourceID := ps[i].id.String() sourceSeq := ps[i].sequence[folder][sourceID] + l.Debugf("sourceSeq = ps[%d].sequence[%q][%q] = %d", i, folder, sourceID, sourceSeq) for j := range ps { if i != j { remoteSeq := ps[j].sequence[folder][sourceID] if remoteSeq != sourceSeq { + l.Debugf("remoteSeq = ps[%d].sequence[%q][%q] = %d", j, folder, sourceID, remoteSeq) return false } } @@ -455,9 +467,13 @@ func (p *Process) eventLoop() { log.Println("eventLoop: events:", err) continue } - since = events[len(events)-1].ID for _, ev := range events { + if ev.ID != since+1 { + l.Warnln("Event ID jumped", since, "to", ev.ID) + } + since = ev.ID + switch ev.Type { case "Starting": // The Starting event tells us where the configuration is. Load @@ -484,10 +500,17 @@ func (p *Process) eventLoop() { notScanned[id] = struct{}{} } + l.Debugln("Started", p.id) + case "StateChanged": // When a folder changes to idle, we tick it off by removing // it from p.notScanned. + if len(p.folders) == 0 { + // We haven't parsed the config yet, shouldn't happen + panic("race, or lost startup event") + } + if !p.startComplete { data := ev.Data.(map[string]interface{}) to := data["to"].(string) @@ -512,7 +535,11 @@ func (p *Process) eventLoop() { if m == nil { m = make(map[string]int64) } - m[p.id.String()] = version + device := p.id.String() + if device == "" { + panic("race, or startup not complete") + } + m[device] = version p.sequence[folder] = m p.done[folder] = false l.Debugf("LocalIndexUpdated %v %v done=false\n\t%+v", p.id, folder, m) diff --git a/test/h1/config.xml b/test/h1/config.xml index 65556d1c..5900cf42 100644 --- a/test/h1/config.xml +++ b/test/h1/config.xml @@ -1,10 +1,11 @@ - - - - - - - 1 + + + basic + + + + + 1 1 16 @@ -12,16 +13,19 @@ random false 0 - 0 0 -1 false false + false + 25 + .stfolder - - - - 1 + + basic + + + 1 1 16 @@ -29,26 +33,33 @@ random false 0 - 0 0 -1 false false + false + 25 + .stfolder - -
kcp://127.0.0.1:22004
+ +
tcp://127.0.0.1:22004
+ false
- -
kcp://127.0.0.1:22001
+ +
tcp://127.0.0.1:22001
+ false
- -
kcp://127.0.0.1:22002
+ +
tcp://127.0.0.1:22002
+ false
- -
kcp://127.0.0.1:22003
+ +
tcp://127.0.0.1:22003
+ false
- -
kcp://127.0.0.1:22004
+ +
tcp://127.0.0.1:22004
+ false
127.0.0.1:8081
@@ -58,7 +69,7 @@ default
- kcp://127.0.0.1:22001 + tcp://127.0.0.1:22001 default false true @@ -75,23 +86,36 @@ 30 10 -1 - + 2 + tmwxxCqi https://data.syncthing.net/newdata false 1800 true 12 + false 24 false 5 - true false - 1 + 1 https://upgrades.syncthing.net/meta.json false 10 + 0 + auto + default + 24 + false + 25 + false + true + 128 + 128 + ~ true 30 10 + 0
diff --git a/test/h2/config.xml b/test/h2/config.xml index 5aabb7df..2e35e115 100644 --- a/test/h2/config.xml +++ b/test/h2/config.xml @@ -1,9 +1,10 @@ - - - - - - 1 + + + basic + + + + 1 1 16 @@ -11,17 +12,19 @@ random false 0 - 0 0 -1 false false - false + false + 25 + .stfolder - - - - 1 + + basic + + + 1 1 16 @@ -29,17 +32,19 @@ random false 0 - 0 0 -1 false false - false + false + 25 + .stfolder - - - - 1 + + basic + + + 1 1 16 @@ -47,21 +52,25 @@ random false 0 - 0 0 -1 false false - false + false + 25 + .stfolder - -
kcp://127.0.0.1:22001
+ +
tcp://127.0.0.1:22001
+ false
- -
kcp://127.0.0.1:22002
+ +
tcp://127.0.0.1:22002
+ false
- -
kcp://127.0.0.1:22003
+ +
tcp://127.0.0.1:22003
+ false
127.0.0.1:8082
@@ -70,7 +79,7 @@
dynamic+https://relays.syncthing.net/endpoint - kcp://127.0.0.1:22002 + tcp://127.0.0.1:22002 default false true @@ -87,20 +96,33 @@ 1 10 -1 - + 2 + x7AWqz5k https://data.syncthing.net/newdata false 1800 true 12 + false 24 false 5 - true false - 1 + 1 https://upgrades.syncthing.net/meta.json false 10 + 0 + auto + default + 24 + false + 25 + false + true + 128 + 128 + ~ + 0
diff --git a/test/h3/config.xml b/test/h3/config.xml index 6579d8bd..1860748c 100644 --- a/test/h3/config.xml +++ b/test/h3/config.xml @@ -1,8 +1,9 @@ - - - - - 1 + + + basic + + + 1 1 16 @@ -10,18 +11,20 @@ random false 0 - 0 0 -1 false false - false + false + 25 + .stfolder - - - - - 1 + + basic + + + + 1 @@ -31,21 +34,25 @@ random false 0 - 0 0 -1 false false - false + false + 25 + .stfolder - +
tcp://127.0.0.1:22001
+ false
- +
tcp://127.0.0.1:22002
+ false
- +
tcp://127.0.0.1:22003
+ false
127.0.0.1:8083
@@ -71,20 +78,33 @@ 30 10 -1 + 2 https://data.syncthing.net/newdata false 1800 true 12 + false 24 false 5 - true false - 1 + 1 https://upgrades.syncthing.net/meta.json false 10 + 0 + auto + default + 24 + false + 25 + false + true + 128 + 128 + ~ + 0
diff --git a/test/h4/config.xml b/test/h4/config.xml index 74053766..3ebd8d32 100644 --- a/test/h4/config.xml +++ b/test/h4/config.xml @@ -1,7 +1,8 @@ - - - - 1 + + + basic + + 1 1 16 @@ -9,14 +10,17 @@ random false 0 - 0 0 -1 false false + false + 25 + .stfolder - +
dynamic
+ false
127.0.0.1:8084
@@ -42,20 +46,33 @@ 30 10 -1 + 2 https://data.syncthing.net/newdata false 1800 true 12 + false 24 false 5 - true false - 1 + 1 https://upgrades.syncthing.net/meta.json false 10 + 0 + auto + default + 24 + false + 25 + false + true + 128 + 128 + ~ + 0
diff --git a/test/sync_test.go b/test/sync_test.go index 45a46cd4..9647afff 100644 --- a/test/sync_test.go +++ b/test/sync_test.go @@ -205,6 +205,10 @@ func testSyncCluster(t *testing.T) { p2 := startInstance(t, 3) defer checkedStop(t, p2) + p0.ResumeAll() + p1.ResumeAll() + p2.ResumeAll() + p := []*rc.Process{p0, p1, p2} start := time.Now() @@ -351,6 +355,10 @@ func testSyncClusterForcedRescan(t *testing.T) { p2 := startInstance(t, 3) defer checkedStop(t, p2) + p0.ResumeAll() + p1.ResumeAll() + p2.ResumeAll() + p := []*rc.Process{p0, p1, p2} start := time.Now() @@ -514,6 +522,9 @@ func TestSyncSparseFile(t *testing.T) { p1 := startInstance(t, 2) defer checkedStop(t, p1) + p0.ResumeAll() + p1.ResumeAll() + rc.AwaitSync("default", p0, p1) log.Println("Comparing...") diff --git a/test/transfer-bench_test.go b/test/transfer-bench_test.go index b79f3a35..2d5c25f6 100644 --- a/test/transfer-bench_test.go +++ b/test/transfer-bench_test.go @@ -83,6 +83,9 @@ func benchmarkTransfer(t *testing.T, files, sizeExp int) { receiver := startInstance(t, 2) defer checkedStop(t, receiver) + sender.ResumeAll() + receiver.ResumeAll() + var t0, t1 time.Time lastEvent := 0 loop: diff --git a/test/util.go b/test/util.go index 7361a5b8..5df9e143 100644 --- a/test/util.go +++ b/test/util.go @@ -541,6 +541,7 @@ func startInstance(t *testing.T, i int) *rc.Process { t.Fatal(err) } p.AwaitStartup() + p.PauseAll() return p }