84 lines
1.4 KiB
Go
84 lines
1.4 KiB
Go
|
// Copyright (c) 2016 Arista Networks, Inc.
|
||
|
// Use of this source code is governed by the Apache License 2.0
|
||
|
// that can be found in the COPYING file.
|
||
|
|
||
|
package netns
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestParseAddress(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
desc string
|
||
|
arg string
|
||
|
vrf string
|
||
|
addr string
|
||
|
err bool
|
||
|
}{{
|
||
|
"Parse address with VRF",
|
||
|
"vrf1/1.2.3.4:50",
|
||
|
"ns-vrf1",
|
||
|
"1.2.3.4:50",
|
||
|
false,
|
||
|
}, {
|
||
|
"Parse address without VRF",
|
||
|
"1.2.3.4:50",
|
||
|
"",
|
||
|
"1.2.3.4:50",
|
||
|
false,
|
||
|
}, {
|
||
|
"Parse malformed input",
|
||
|
"vrf1/1.2.3.4/24",
|
||
|
"",
|
||
|
"",
|
||
|
true,
|
||
|
}}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
vrf, addr, err := ParseAddress(tt.arg)
|
||
|
if tt.err {
|
||
|
if err == nil {
|
||
|
t.Fatalf("%s: expected error, but got success", tt.desc)
|
||
|
}
|
||
|
} else {
|
||
|
if err != nil {
|
||
|
t.Fatalf("%s: expected success, but got error %s", tt.desc, err)
|
||
|
}
|
||
|
if addr != tt.addr {
|
||
|
t.Fatalf("%s: expected addr %s, but got %s", tt.desc, tt.addr, addr)
|
||
|
}
|
||
|
if vrf != tt.vrf {
|
||
|
t.Fatalf("%s: expected VRF %s, but got %s", tt.desc, tt.vrf, vrf)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestVrfToNetNSTests(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
desc string
|
||
|
vrf string
|
||
|
netNS string
|
||
|
}{{
|
||
|
"Empty VRF name",
|
||
|
"",
|
||
|
"",
|
||
|
}, {
|
||
|
"Default VRF",
|
||
|
"default",
|
||
|
"default",
|
||
|
}, {
|
||
|
"Regular VRF name",
|
||
|
"cust1",
|
||
|
"ns-cust1",
|
||
|
}}
|
||
|
for _, tt := range tests {
|
||
|
netNS := VRFToNetNS(tt.vrf)
|
||
|
if netNS != tt.netNS {
|
||
|
t.Fatalf("%s: expected netNS %s, but got %s", tt.desc, tt.netNS,
|
||
|
netNS)
|
||
|
}
|
||
|
}
|
||
|
}
|