MCPcopy
hub / github.com/google/gvisor / TestSetFlagsForRange

Function TestSetFlagsForRange

pkg/sentry/kernel/fd_table_test.go:317–360  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

315}
316
317func TestSetFlagsForRange(t *testing.T) {
318 type testCase struct {
319 name string
320 startFd int32
321 endFd int32
322 wantErr bool
323 }
324 testCases := []testCase{
325 {"negative ranges", -100, -10, true},
326 {"inverted positive ranges", 100, 10, true},
327 {"good range", maxFD / 4, maxFD / 2, false},
328 }
329
330 for _, test := range testCases {
331 runTest(t, func(ctx context.Context, fdTable *FDTable, fd *vfs.FileDescription, _ *limits.LimitSet) {
332 for i := 0; i < maxFD; i++ {
333 if _, err := fdTable.NewFDs(ctx, 0, []*vfs.FileDescription{fd}, FDFlags{}); err != nil {
334 t.Fatalf("testCase: %v\nfdTable.NewFDs(_, 0, %+v, FDFlags{}): %d, want: nil", test, []*vfs.FileDescription{fd}, err)
335 }
336 }
337
338 newFlags := FDFlags{CloseOnExec: true}
339 if err := fdTable.SetFlagsForRange(ctx, test.startFd, test.endFd, newFlags); (err == nil) == test.wantErr {
340 t.Fatalf("testCase: %v\nfdTable.SetFlagsForRange(_, %d, %d, %v): %v, waf: %t", test, test.startFd, test.endFd, newFlags, err, test.wantErr)
341 }
342
343 if test.wantErr {
344 return
345 }
346
347 testRangeFlags := func(start int32, end int32, expected FDFlags) {
348 for i := start; i <= end; i++ {
349 file, flags := fdTable.Get(i)
350 if file == nil || flags != expected {
351 t.Fatalf("testCase: %v\nfdTable.Get(%d): (%v, %v), wanted (non-nil, %v)", test, i, file, flags, expected)
352 }
353 }
354 }
355 testRangeFlags(0, test.startFd-1, FDFlags{})
356 testRangeFlags(test.startFd, test.endFd, newFlags)
357 testRangeFlags(test.endFd+1, maxFD-1, FDFlags{})
358 })
359 }
360}

Callers

nothing calls this directly

Calls 5

SetFlagsForRangeMethod · 0.80
runTestFunction · 0.70
FatalfMethod · 0.65
GetMethod · 0.65
NewFDsMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…