MCPcopy
hub / github.com/syncthing/syncthing / TestRequestLimit

Function TestRequestLimit

lib/model/model_test.go:2964–3009  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2962}
2963
2964func TestRequestLimit(t *testing.T) {
2965 wrapper, fcfg := newDefaultCfgWrapper(t)
2966 ffs := fcfg.Filesystem()
2967
2968 file := "tmpfile"
2969 fd, err := ffs.Create(file)
2970 must(t, err)
2971 fd.Close()
2972 waiter, err := wrapper.Modify(func(cfg *config.Configuration) {
2973 _, i, _ := cfg.Device(device1)
2974 cfg.Devices[i].MaxRequestKiB = 1
2975 })
2976 must(t, err)
2977 waiter.Wait()
2978 m, conn := setupModelWithConnectionFromWrapper(t, wrapper)
2979 defer cleanupModel(m)
2980 m.ScanFolder("default")
2981
2982 befReq := time.Now()
2983 first, err := m.Request(conn, &protocol.Request{Folder: "default", Name: file, Size: 2000})
2984 if err != nil {
2985 t.Fatalf("First request failed: %v", err)
2986 }
2987 reqDur := time.Since(befReq)
2988 returned := make(chan struct{})
2989 go func() {
2990 second, err := m.Request(conn, &protocol.Request{Folder: "default", Name: file, Size: 2000})
2991 if err != nil {
2992 t.Errorf("Second request failed: %v", err)
2993 }
2994 close(returned)
2995 second.Close()
2996 }()
2997 time.Sleep(10 * reqDur)
2998 select {
2999 case <-returned:
3000 t.Fatalf("Second request returned before first was done")
3001 default:
3002 }
3003 first.Close()
3004 select {
3005 case <-returned:
3006 case <-time.After(time.Second):
3007 t.Fatalf("Second request did not return after first was done")
3008 }
3009}
3010
3011// TestConnCloseOnRestart checks that there is no deadlock when calling Close
3012// on a protocol connection that has a blocking reader (blocking writer can't

Callers

nothing calls this directly

Calls 14

newDefaultCfgWrapperFunction · 0.85
mustFunction · 0.85
cleanupModelFunction · 0.85
FilesystemMethod · 0.80
CreateMethod · 0.65
CloseMethod · 0.65
ModifyMethod · 0.65
DeviceMethod · 0.65
WaitMethod · 0.65
ScanFolderMethod · 0.65
NowMethod · 0.65

Tested by

no test coverage detected