github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgSys/tun_test.go (about)

     1  package kmgSys
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/bronze1man/kmg/kmgCmd"
     9  	"github.com/bronze1man/kmg/kmgTest"
    10  )
    11  
    12  func TestTun(ot *testing.T) {
    13  	fmt.Println(1)
    14  	tun, err := NewTun("")
    15  	fmt.Println(2)
    16  	if os.IsPermission(err) {
    17  		ot.Skip("you need root permission to run this test.")
    18  		return
    19  	}
    20  	kmgTest.Equal(err, nil)
    21  	defer tun.Close()
    22  	kmgTest.Equal(tun.GetDeviceType(), DeviceTypeTun)
    23  	fmt.Println(3)
    24  
    25  	err = SetP2PIpAndUp(tun, "10.209.34.1", "10.209.34.2")
    26  	kmgTest.Equal(err, nil)
    27  
    28  	err = SetMtu(tun, 1420)
    29  	kmgTest.Equal(err, nil)
    30  	fmt.Println(4)
    31  	cmd := kmgCmd.CmdString("ping 10.209.34.2").GetExecCmd()
    32  	err = cmd.Start()
    33  	kmgTest.Equal(err, nil)
    34  	defer cmd.Process.Kill()
    35  
    36  	buf := make([]byte, 4096)
    37  	n, err := tun.Read(buf)
    38  	kmgTest.Equal(err, nil)
    39  	kmgTest.Ok(n > 0)
    40  	/*
    41  		tun2, err := NewTun("")
    42  		t.Equal(err, nil)
    43  		defer tun2.Close()
    44  	*/
    45  }
    46  
    47  func TestTap(ot *testing.T) {
    48  	tap, err := NewTap("")
    49  	if os.IsPermission(err) {
    50  		ot.Skip("you need root permission to run this test.")
    51  		return
    52  	}
    53  	kmgTest.Equal(err, nil)
    54  	defer tap.Close()
    55  	kmgTest.Equal(tap.GetDeviceType(), DeviceTypeTap)
    56  
    57  	err = kmgCmd.CmdString("ifconfig " + tap.Name() + " 10.209.34.1 up").GetExecCmd().Run()
    58  	kmgTest.Equal(err, nil)
    59  	/*
    60  		cmd := kmgCmd.NewOsStdioCmdString("ping 10.0.0.2")
    61  		err = cmd.Start()
    62  		t.Equal(err, nil)
    63  		defer cmd.Process.Kill()
    64  
    65  		buf := make([]byte, 4096)
    66  		n, err := tun.Read(buf)
    67  		t.Equal(err, nil)
    68  		t.Ok(n > 0)
    69  
    70  		tun2, err := NewTap("")
    71  		t.Equal(err, nil)
    72  		defer tun2.Close()
    73  	*/
    74  }