...

Source file src/github.com/vishvananda/netns/netns_linux_test.go

Documentation: github.com/vishvananda/netns

     1  package netns
     2  
     3  import (
     4  	"runtime"
     5  	"sync"
     6  	"testing"
     7  )
     8  
     9  func TestGetNewSetDelete(t *testing.T) {
    10  	runtime.LockOSThread()
    11  	defer runtime.UnlockOSThread()
    12  
    13  	origns, err := Get()
    14  	if err != nil {
    15  		t.Fatal(err)
    16  	}
    17  	newns, err := New()
    18  	if err != nil {
    19  		t.Fatal(err)
    20  	}
    21  	if origns.Equal(newns) {
    22  		t.Fatal("New ns failed")
    23  	}
    24  	if err := Set(origns); err != nil {
    25  		t.Fatal(err)
    26  	}
    27  	if err := newns.Close(); err != nil {
    28  		t.Error("Failed to close ns", err)
    29  	}
    30  	if newns.IsOpen() {
    31  		t.Fatal("newns still open after close", newns)
    32  	}
    33  	ns, err := Get()
    34  	if err != nil {
    35  		t.Fatal(err)
    36  	}
    37  	if !ns.Equal(origns) {
    38  		t.Fatal("Reset ns failed", origns, newns, ns)
    39  	}
    40  }
    41  
    42  func TestNone(t *testing.T) {
    43  	ns := None()
    44  	if ns.IsOpen() {
    45  		t.Fatal("None ns is open", ns)
    46  	}
    47  }
    48  
    49  func TestThreaded(t *testing.T) {
    50  	ncpu := runtime.GOMAXPROCS(-1)
    51  	if ncpu < 2 {
    52  		t.Skip("-cpu=2 or larger required")
    53  	}
    54  
    55  	// Lock this thread simply to ensure other threads get used.
    56  	runtime.LockOSThread()
    57  	defer runtime.UnlockOSThread()
    58  
    59  	wg := &sync.WaitGroup{}
    60  	for i := 0; i < ncpu; i++ {
    61  		wg.Add(1)
    62  		go func() {
    63  			defer wg.Done()
    64  			TestGetNewSetDelete(t)
    65  		}()
    66  	}
    67  	wg.Wait()
    68  }
    69  

View as plain text