forked from containers/virtcontainers
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cnm_test.go
103 lines (87 loc) · 1.94 KB
/
cnm_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
//
// Copyright (c) 2017 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
package virtcontainers
import (
"net"
"reflect"
"testing"
cniTypes "github.com/containernetworking/cni/pkg/types"
types "github.com/containernetworking/cni/pkg/types/current"
"github.com/vishvananda/netlink"
)
type mockAddr struct {
network string
ipAddr string
}
func (m mockAddr) Network() string {
return m.network
}
func (m mockAddr) String() string {
return m.ipAddr
}
func TestCNMCreateResults(t *testing.T) {
plugin := &cnm{}
macAddr := net.HardwareAddr{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
ip, ipNet, err := net.ParseCIDR("192.168.0.1/8")
if err != nil {
t.Fatal()
}
ipNet.IP = ip
expected := types.Result{
Interfaces: []*types.Interface{
{
Name: "eth0",
Mac: macAddr.String(),
},
},
IPs: []*types.IPConfig{
{
Version: "4",
Interface: 0,
Address: *ipNet,
},
},
Routes: []*cniTypes.Route{
{
Dst: *ipNet,
GW: ipNet.IP,
},
},
}
iface := net.Interface{
Index: 0,
Name: "eth0",
HardwareAddr: macAddr,
}
addr := mockAddr{
network: "test-network",
ipAddr: "192.168.0.1/8",
}
addrs := []net.Addr{net.Addr(addr)}
routes := []netlink.Route{
{
Dst: ipNet,
Gw: ipNet.IP,
},
}
result, err := plugin.createResult(iface, addrs, routes)
if err != nil {
t.Fatal(err)
}
if reflect.DeepEqual(result, expected) == false {
t.Fatal()
}
}