forked from rgbkrk/libvirt-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
interface_test.go
128 lines (118 loc) · 2.7 KB
/
interface_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package libvirt
import (
"crypto/rand"
"fmt"
"testing"
)
func buildTestInterface(mac string) (VirInterface, VirConnection) {
conn := buildTestConnection()
xml := `<interface type='ethernet' name='ethTest0'><mac address='` + mac + `'/></interface>`
iface, err := conn.InterfaceDefineXML(xml, 0)
if err != nil {
panic(err)
}
return iface, conn
}
func generateRandomMac() string {
macBuf := make([]byte, 3)
if _, err := rand.Read(macBuf); err != nil {
panic(err)
}
return fmt.Sprintf("aa:bb:cc:%02x:%02x:%02x", macBuf[0], macBuf[1], macBuf[2])
}
func TestCreateDestroyInterface(t *testing.T) {
iface, conn := buildTestInterface(generateRandomMac())
defer iface.Free()
defer conn.CloseConnection()
if err := iface.Create(0); err != nil {
t.Error(err)
return
}
if err := iface.Destroy(0); err != nil {
t.Error(err)
}
}
func TestUndefineInterface(t *testing.T) {
iface, conn := buildTestInterface(generateRandomMac())
defer iface.Free()
defer conn.CloseConnection()
name, err := iface.GetName()
if err != nil {
t.Error(err)
return
}
if err := iface.Undefine(); err != nil {
t.Error(err)
return
}
if _, err := conn.LookupInterfaceByName(name); err == nil {
t.Fatal("Shouldn't have been able to find interface")
}
}
func TestGetInterfaceName(t *testing.T) {
iface, conn := buildTestInterface(generateRandomMac())
defer iface.Free()
defer conn.CloseConnection()
if _, err := iface.GetName(); err != nil {
t.Fatal(err)
}
}
func TestInterfaceIsActive(t *testing.T) {
iface, conn := buildTestInterface(generateRandomMac())
defer iface.Free()
defer conn.CloseConnection()
if err := iface.Create(0); err != nil {
t.Log(err)
return
}
active, err := iface.IsActive()
if err != nil {
t.Error(err)
return
}
if !active {
t.Fatal("Interface should be active")
}
if err := iface.Destroy(0); err != nil {
t.Error(err)
return
}
active, err = iface.IsActive()
if err != nil {
t.Error(err)
return
}
if active {
t.Fatal("Interface should be inactive")
}
}
func TestGetMACString(t *testing.T) {
origMac := generateRandomMac()
iface, conn := buildTestInterface(origMac)
defer iface.Free()
defer conn.CloseConnection()
mac, err := iface.GetMACString()
if err != nil {
t.Error(err)
return
}
if mac != origMac {
t.Fatalf("expected MAC: %s , got: %s", origMac, mac)
}
}
func TestGetInterfaceXMLDesc(t *testing.T) {
iface, conn := buildTestInterface(generateRandomMac())
defer conn.CloseConnection()
defer iface.Free()
if _, err := iface.GetXMLDesc(0); err != nil {
t.Error(err)
}
}
func TestInterfaceFree(t *testing.T) {
iface, conn := buildTestInterface(generateRandomMac())
defer conn.CloseConnection()
if err := iface.Free(); err != nil {
t.Error(err)
return
}
}