Home | History | Annotate | Download | only in socktest
      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 }
     57