github.com/flyinox/gosm@v0.0.0-20171117061539-16768cb62077/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  // +build !plan9
     6  
     7  package socktest_test
     8  
     9  import (
    10  	"net/internal/socktest"
    11  	"os"
    12  	"sync"
    13  	"syscall"
    14  	"testing"
    15  )
    16  
    17  var sw socktest.Switch
    18  
    19  func TestMain(m *testing.M) {
    20  	installTestHooks()
    21  
    22  	st := m.Run()
    23  
    24  	for s := range sw.Sockets() {
    25  		closeFunc(s)
    26  	}
    27  	uninstallTestHooks()
    28  	os.Exit(st)
    29  }
    30  
    31  func TestSwitch(t *testing.T) {
    32  	const N = 10
    33  	var wg sync.WaitGroup
    34  	wg.Add(N)
    35  	for i := 0; i < N; i++ {
    36  		go func() {
    37  			defer wg.Done()
    38  			for _, family := range []int{syscall.AF_INET, syscall.AF_INET6} {
    39  				socketFunc(family, syscall.SOCK_STREAM, syscall.IPPROTO_TCP)
    40  			}
    41  		}()
    42  	}
    43  	wg.Wait()
    44  }
    45  
    46  func TestSocket(t *testing.T) {
    47  	for _, f := range []socktest.Filter{
    48  		func(st *socktest.Status) (socktest.AfterFilter, error) { return nil, nil },
    49  		nil,
    50  	} {
    51  		sw.Set(socktest.FilterSocket, f)
    52  		for _, family := range []int{syscall.AF_INET, syscall.AF_INET6} {
    53  			socketFunc(family, syscall.SOCK_STREAM, syscall.IPPROTO_TCP)
    54  		}
    55  	}
    56  }