github.com/code-reading/golang@v0.0.0-20220303082512-ba5bc0e589a3/go/src/net/internal/socktest/main_test.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:build !js && !plan9 6 // +build !js,!plan9 7 8 package socktest_test 9 10 import ( 11 "net/internal/socktest" 12 "os" 13 "sync" 14 "syscall" 15 "testing" 16 ) 17 18 var sw socktest.Switch 19 20 func TestMain(m *testing.M) { 21 installTestHooks() 22 23 st := m.Run() 24 25 for s := range sw.Sockets() { 26 closeFunc(s) 27 } 28 uninstallTestHooks() 29 os.Exit(st) 30 } 31 32 func TestSwitch(t *testing.T) { 33 const N = 10 34 var wg sync.WaitGroup 35 wg.Add(N) 36 for i := 0; i < N; i++ { 37 go func() { 38 defer wg.Done() 39 for _, family := range []int{syscall.AF_INET, syscall.AF_INET6} { 40 socketFunc(family, syscall.SOCK_STREAM, syscall.IPPROTO_TCP) 41 } 42 }() 43 } 44 wg.Wait() 45 } 46 47 func TestSocket(t *testing.T) { 48 for _, f := range []socktest.Filter{ 49 func(st *socktest.Status) (socktest.AfterFilter, error) { return nil, nil }, 50 nil, 51 } { 52 sw.Set(socktest.FilterSocket, f) 53 for _, family := range []int{syscall.AF_INET, syscall.AF_INET6} { 54 socketFunc(family, syscall.SOCK_STREAM, syscall.IPPROTO_TCP) 55 } 56 } 57 }