Skip to content

Commit d85ef94

Browse files
imsodinAudriusButkevicius
authored andcommitted
lib/model: Introduce setupModel test utility (syncthing#5524)
1 parent dc92994 commit d85ef94

File tree

2 files changed

+42
-153
lines changed

2 files changed

+42
-153
lines changed

lib/model/model_test.go

Lines changed: 41 additions & 148 deletions
Original file line numberDiff line numberDiff line change
@@ -153,36 +153,36 @@ func createTmpWrapper(cfg config.Configuration) *config.Wrapper {
153153
}
154154

155155
func newState(cfg config.Configuration) (*config.Wrapper, *Model) {
156-
db := db.OpenMemory()
157-
158156
wcfg := createTmpWrapper(cfg)
159157

160-
m := NewModel(wcfg, myID, "syncthing", "dev", db, nil)
161-
for _, folder := range cfg.Folders {
162-
if !folder.Paused {
163-
m.AddFolder(folder)
164-
m.StartFolder(folder.ID)
165-
}
166-
}
167-
m.ServeBackground()
158+
m := setupModel(wcfg)
168159

169160
for _, dev := range cfg.Devices {
170161
m.AddConnection(&fakeConnection{id: dev.DeviceID}, protocol.HelloResult{})
171162
}
163+
172164
return wcfg, m
173165
}
174166

175-
func TestRequest(t *testing.T) {
167+
func setupModel(w *config.Wrapper) *Model {
176168
db := db.OpenMemory()
169+
m := NewModel(w, myID, "syncthing", "dev", db, nil)
170+
m.ServeBackground()
171+
for id, cfg := range w.Folders() {
172+
if !cfg.Paused {
173+
m.AddFolder(cfg)
174+
m.StartFolder(id)
175+
}
176+
}
177177

178-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", db, nil)
178+
m.ScanFolders()
179179

180-
// device1 shares default, but device2 doesn't
181-
m.AddFolder(defaultFolderConfig)
182-
m.StartFolder("default")
183-
m.ServeBackground()
180+
return m
181+
}
182+
183+
func TestRequest(t *testing.T) {
184+
m := setupModel(defaultCfgWrapper)
184185
defer m.Stop()
185-
m.ScanFolder("default")
186186

187187
// Existing, shared file
188188
res, err := m.Request(device1, "default", "foo", 6, 0, nil, 0, false)
@@ -250,11 +250,7 @@ func BenchmarkIndex_100(b *testing.B) {
250250
}
251251

252252
func benchmarkIndex(b *testing.B, nfiles int) {
253-
db := db.OpenMemory()
254-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", db, nil)
255-
m.AddFolder(defaultFolderConfig)
256-
m.StartFolder("default")
257-
m.ServeBackground()
253+
m := setupModel(defaultCfgWrapper)
258254
defer m.Stop()
259255

260256
files := genFiles(nfiles)
@@ -280,11 +276,7 @@ func BenchmarkIndexUpdate_10000_1(b *testing.B) {
280276
}
281277

282278
func benchmarkIndexUpdate(b *testing.B, nfiles, nufiles int) {
283-
db := db.OpenMemory()
284-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", db, nil)
285-
m.AddFolder(defaultFolderConfig)
286-
m.StartFolder("default")
287-
m.ServeBackground()
279+
m := setupModel(defaultCfgWrapper)
288280
defer m.Stop()
289281

290282
files := genFiles(nfiles)
@@ -486,12 +478,8 @@ func (f *fakeConnection) sendIndexUpdate() {
486478
}
487479

488480
func BenchmarkRequestOut(b *testing.B) {
489-
db := db.OpenMemory()
490-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", db, nil)
491-
m.AddFolder(defaultFolderConfig)
492-
m.ServeBackground()
481+
m := setupModel(defaultCfgWrapper)
493482
defer m.Stop()
494-
m.ScanFolder("default")
495483

496484
const n = 1000
497485
files := genFiles(n)
@@ -518,12 +506,7 @@ func BenchmarkRequestOut(b *testing.B) {
518506
func BenchmarkRequestInSingleFile(b *testing.B) {
519507
testOs := &fatalOs{b}
520508

521-
db := db.OpenMemory()
522-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", db, nil)
523-
m.AddFolder(defaultFolderConfig)
524-
m.ServeBackground()
525-
defer m.Stop()
526-
m.ScanFolder("default")
509+
m := setupModel(defaultCfgWrapper)
527510

528511
buf := make([]byte, 128<<10)
529512
rand.Read(buf)
@@ -1731,16 +1714,9 @@ func TestIgnores(t *testing.T) {
17311714
testOs.MkdirAll(filepath.Join("testdata", config.DefaultMarkerName), 0644)
17321715
ioutil.WriteFile("testdata/.stignore", []byte(".*\nquux\n"), 0644)
17331716

1734-
db := db.OpenMemory()
1735-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", db, nil)
1736-
m.ServeBackground()
1717+
m := setupModel(defaultCfgWrapper)
17371718
defer m.Stop()
17381719

1739-
// m.cfg.SetFolder is not usable as it is non-blocking, and there is no
1740-
// way to know when the folder is actually added.
1741-
m.AddFolder(defaultFolderConfig)
1742-
m.StartFolder("default")
1743-
17441720
// Reach in and update the ignore matcher to one that always does
17451721
// reloads when asked to, instead of checking file mtimes. This is
17461722
// because we will be changing the files on disk often enough that the
@@ -2426,16 +2402,7 @@ func TestIssue3028(t *testing.T) {
24262402

24272403
// Create a model and default folder
24282404

2429-
db := db.OpenMemory()
2430-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", db, nil)
2431-
defCfg := defaultFolderConfig.Copy()
2432-
defCfg.RescanIntervalS = 86400
2433-
m.AddFolder(defCfg)
2434-
m.StartFolder("default")
2435-
m.ServeBackground()
2436-
2437-
// Make sure the initial scan has finished (ScanFolders is blocking)
2438-
m.ScanFolders()
2405+
m := setupModel(defaultCfgWrapper)
24392406

24402407
// Get a count of how many files are there now
24412408

@@ -2580,12 +2547,7 @@ func TestIssue2782(t *testing.T) {
25802547
}
25812548
defer testOs.RemoveAll(testDir)
25822549

2583-
db := db.OpenMemory()
2584-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", db, nil)
2585-
m.AddFolder(testFolderConfig("~/" + testName + "/synclink/"))
2586-
m.StartFolder("default")
2587-
m.ServeBackground()
2588-
defer m.Stop()
2550+
m := setupModel(defaultCfgWrapper)
25892551

25902552
if err := m.ScanFolder("default"); err != nil {
25912553
t.Error("scan error:", err)
@@ -2627,19 +2589,15 @@ func TestIndexesForUnknownDevicesDropped(t *testing.T) {
26272589
func TestSharedWithClearedOnDisconnect(t *testing.T) {
26282590
testOs := &fatalOs{t}
26292591

2630-
dbi := db.OpenMemory()
2631-
26322592
wcfg := createTmpWrapper(defaultCfg)
26332593
wcfg.SetDevice(config.NewDeviceConfiguration(device2, "device2"))
26342594
fcfg := wcfg.FolderList()[0]
26352595
fcfg.Devices = append(fcfg.Devices, config.FolderDeviceConfiguration{DeviceID: device2})
26362596
wcfg.SetFolder(fcfg)
26372597
defer testOs.Remove(wcfg.ConfigPath())
26382598

2639-
m := NewModel(wcfg, myID, "syncthing", "dev", dbi, nil)
2640-
m.AddFolder(fcfg)
2641-
m.StartFolder(fcfg.ID)
2642-
m.ServeBackground()
2599+
m := setupModel(wcfg)
2600+
defer m.Stop()
26432601

26442602
conn1 := &fakeConnection{id: device1}
26452603
m.AddConnection(conn1, protocol.HelloResult{})
@@ -2746,11 +2704,7 @@ func TestIssue3496(t *testing.T) {
27462704
// percentages. Lets make sure that doesn't happen. Also do some general
27472705
// checks on the completion calculation stuff.
27482706

2749-
dbi := db.OpenMemory()
2750-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", dbi, nil)
2751-
m.AddFolder(defaultFolderConfig)
2752-
m.StartFolder("default")
2753-
m.ServeBackground()
2707+
m := setupModel(defaultCfgWrapper)
27542708
defer m.Stop()
27552709

27562710
m.ScanFolder("default")
@@ -2819,11 +2773,7 @@ func TestIssue3496(t *testing.T) {
28192773
}
28202774

28212775
func TestIssue3804(t *testing.T) {
2822-
dbi := db.OpenMemory()
2823-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", dbi, nil)
2824-
m.AddFolder(defaultFolderConfig)
2825-
m.StartFolder("default")
2826-
m.ServeBackground()
2776+
m := setupModel(defaultCfgWrapper)
28272777
defer m.Stop()
28282778

28292779
// Subdirs ending in slash should be accepted
@@ -2834,11 +2784,7 @@ func TestIssue3804(t *testing.T) {
28342784
}
28352785

28362786
func TestIssue3829(t *testing.T) {
2837-
dbi := db.OpenMemory()
2838-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", dbi, nil)
2839-
m.AddFolder(defaultFolderConfig)
2840-
m.StartFolder("default")
2841-
m.ServeBackground()
2787+
m := setupModel(defaultCfgWrapper)
28422788
defer m.Stop()
28432789

28442790
// Empty subdirs should be accepted
@@ -2853,19 +2799,15 @@ func TestNoRequestsFromPausedDevices(t *testing.T) {
28532799

28542800
testOs := &fatalOs{t}
28552801

2856-
dbi := db.OpenMemory()
2857-
28582802
wcfg := createTmpWrapper(defaultCfg)
28592803
wcfg.SetDevice(config.NewDeviceConfiguration(device2, "device2"))
28602804
fcfg := wcfg.FolderList()[0]
28612805
fcfg.Devices = append(fcfg.Devices, config.FolderDeviceConfiguration{DeviceID: device2})
28622806
wcfg.SetFolder(fcfg)
28632807
defer testOs.Remove(wcfg.ConfigPath())
28642808

2865-
m := NewModel(wcfg, myID, "syncthing", "dev", dbi, nil)
2866-
m.AddFolder(fcfg)
2867-
m.StartFolder(fcfg.ID)
2868-
m.ServeBackground()
2809+
m := setupModel(wcfg)
2810+
defer m.Stop()
28692811

28702812
file := testDataExpected["foo"]
28712813
files := m.folderFiles["default"]
@@ -2959,13 +2901,7 @@ func TestIssue2571(t *testing.T) {
29592901
fd.Close()
29602902
}
29612903

2962-
dbi := db.OpenMemory()
2963-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", dbi, nil)
2964-
m.AddFolder(defaultFolderConfig)
2965-
m.StartFolder("default")
2966-
m.ServeBackground()
2967-
defer m.Stop()
2968-
m.ScanFolder("default")
2904+
m := setupModel(defaultCfgWrapper)
29692905

29702906
if err = testFs.RemoveAll("toLink"); err != nil {
29712907
t.Fatal(err)
@@ -3011,13 +2947,7 @@ func TestIssue4573(t *testing.T) {
30112947
}
30122948
fd.Close()
30132949

3014-
dbi := db.OpenMemory()
3015-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", dbi, nil)
3016-
m.AddFolder(defaultFolderConfig)
3017-
m.StartFolder("default")
3018-
m.ServeBackground()
3019-
defer m.Stop()
3020-
m.ScanFolder("default")
2950+
m := setupModel(defaultCfgWrapper)
30212951

30222952
err = defaultFs.Chmod("inaccessible", 0000)
30232953
if err != nil {
@@ -3080,13 +3010,7 @@ func TestInternalScan(t *testing.T) {
30803010
}
30813011
}
30823012

3083-
dbi := db.OpenMemory()
3084-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", dbi, nil)
3085-
m.AddFolder(defaultFolderConfig)
3086-
m.StartFolder("default")
3087-
m.ServeBackground()
3088-
defer m.Stop()
3089-
m.ScanFolder("default")
3013+
m := setupModel(defaultCfgWrapper)
30903014

30913015
for _, dir := range baseDirs {
30923016
if err = testFs.RemoveAll(dir); err != nil {
@@ -3191,13 +3115,8 @@ func TestRemoveDirWithContent(t *testing.T) {
31913115
}
31923116
fd.Close()
31933117

3194-
dbi := db.OpenMemory()
3195-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", dbi, nil)
3196-
m.AddFolder(defaultFolderConfig)
3197-
m.StartFolder("default")
3198-
m.ServeBackground()
3118+
m := setupModel(defaultCfgWrapper)
31993119
defer m.Stop()
3200-
m.ScanFolder("default")
32013120

32023121
dir, ok := m.CurrentFolderFile("default", "dirwith")
32033122
if !ok {
@@ -3256,13 +3175,8 @@ func TestIssue4475(t *testing.T) {
32563175
t.Fatal(err)
32573176
}
32583177

3259-
dbi := db.OpenMemory()
3260-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", dbi, nil)
3261-
m.AddFolder(defaultFolderConfig)
3262-
m.StartFolder("default")
3263-
m.ServeBackground()
3178+
m := setupModel(defaultCfgWrapper)
32643179
defer m.Stop()
3265-
m.ScanFolder("default")
32663180

32673181
// Scenario: Dir is deleted locally and before syncing/index exchange
32683182
// happens, a file is create in that dir on the remote.
@@ -3331,8 +3245,6 @@ func TestVersionRestore(t *testing.T) {
33313245
}
33323246
defer testOs.RemoveAll(dir)
33333247

3334-
dbi := db.OpenMemory()
3335-
33363248
fcfg := config.NewFolderConfiguration(myID, "default", "default", fs.FilesystemTypeBasic, dir)
33373249
fcfg.Versioning.Type = "simple"
33383250
fcfg.FSWatcherEnabled = false
@@ -3344,11 +3256,7 @@ func TestVersionRestore(t *testing.T) {
33443256
cfg := createTmpWrapper(rawConfig)
33453257
defer testOs.Remove(cfg.ConfigPath())
33463258

3347-
m := NewModel(cfg, myID, "syncthing", "dev", dbi, nil)
3348-
m.AddFolder(fcfg)
3349-
m.StartFolder("default")
3350-
m.ServeBackground()
3351-
defer m.Stop()
3259+
m := setupModel(cfg)
33523260
m.ScanFolder("default")
33533261

33543262
sentinel, err := time.ParseInLocation(versioner.TimeFormat, "20200101-010101", locationLocal)
@@ -3536,15 +3444,10 @@ func TestPausedFolders(t *testing.T) {
35363444
testOs := &fatalOs{t}
35373445

35383446
// Create a separate wrapper not to pollute other tests.
3539-
cfg := defaultCfgWrapper.RawCopy()
3540-
wrapper := createTmpWrapper(cfg)
3447+
wrapper := createTmpWrapper(defaultCfgWrapper.RawCopy())
35413448
defer testOs.Remove(wrapper.ConfigPath())
35423449

3543-
db := db.OpenMemory()
3544-
m := NewModel(wrapper, myID, "syncthing", "dev", db, nil)
3545-
m.AddFolder(defaultFolderConfig)
3546-
m.StartFolder("default")
3547-
m.ServeBackground()
3450+
m := setupModel(wrapper)
35483451
defer m.Stop()
35493452

35503453
if err := m.ScanFolder("default"); err != nil {
@@ -3649,12 +3552,7 @@ func TestIssue4903(t *testing.T) {
36493552
func TestIssue5002(t *testing.T) {
36503553
// recheckFile should not panic when given an index equal to the number of blocks
36513554

3652-
db := db.OpenMemory()
3653-
m := NewModel(defaultCfgWrapper, myID, "syncthing", "dev", db, nil)
3654-
m.AddFolder(defaultFolderConfig)
3655-
m.StartFolder("default")
3656-
3657-
m.ServeBackground()
3555+
m := setupModel(defaultCfgWrapper)
36583556
defer m.Stop()
36593557

36603558
if err := m.ScanFolder("default"); err != nil {
@@ -3721,12 +3619,7 @@ func TestFolderRestartZombies(t *testing.T) {
37213619
folderCfg.FilesystemType = fs.FilesystemTypeFake
37223620
wrapper.SetFolder(folderCfg)
37233621

3724-
db := db.OpenMemory()
3725-
m := NewModel(wrapper, myID, "syncthing", "dev", db, nil)
3726-
m.AddFolder(folderCfg)
3727-
m.StartFolder("default")
3728-
3729-
m.ServeBackground()
3622+
m := setupModel(wrapper)
37303623
defer m.Stop()
37313624

37323625
// Make sure the folder is up and running, because we want to count it.

lib/model/requests_test.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -740,11 +740,7 @@ func setupModelWithConnection() (*Model, *fakeConnection, string, *config.Wrappe
740740
}
741741

742742
func setupModelWithConnectionFromWrapper(w *config.Wrapper) (*Model, *fakeConnection) {
743-
db := db.OpenMemory()
744-
m := NewModel(w, myID, "syncthing", "dev", db, nil)
745-
m.AddFolder(w.FolderList()[0])
746-
m.ServeBackground()
747-
m.StartFolder("default")
743+
m := setupModel(w)
748744

749745
fc := addFakeConn(m, device1)
750746
fc.folder = "default"

0 commit comments

Comments
 (0)