Skip to content

Commit

Permalink
Add unit test cases
Browse files Browse the repository at this point in the history
Signed-off-by: Wenqi Qiu <wenqiq@vmware.com>
  • Loading branch information
wenqiq committed Mar 22, 2022
1 parent 8fad6f7 commit ae7d793
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 21 deletions.
3 changes: 1 addition & 2 deletions pkg/controller/networkpolicy/networkpolicy_controller.go
Expand Up @@ -1187,8 +1187,7 @@ func nodeToGroupMember(node *v1.Node) (member *controlplane.GroupMember) {
member = &controlplane.GroupMember{Node: &controlplane.NodeReference{Name: node.Name}}
ips, err := k8s.GetNodeAllAddrs(node)
if err != nil {
klog.ErrorS(err, "get Node addresses error")
return
klog.ErrorS(err, "get Node IP addresses error", "Name", node.Name)
}
for ip := range ips {
member.IPs = append(member.IPs, ipStrToIPAddress(ip))
Expand Down
32 changes: 16 additions & 16 deletions pkg/util/k8s/node.go
Expand Up @@ -86,28 +86,28 @@ func GetNodeAddrsFromAnnotations(node *v1.Node, annotationKey string) (*ip.DualS
// GetNodeGatewayAddrs gets Node Antrea gateway IPs from the Node Spec.
func GetNodeGatewayAddrs(node *v1.Node) (*ip.DualStackIPs, error) {
nodeAddrs := new(ip.DualStackIPs)
parseIP := func(podCIDR string) error {
cidrIP, _, err := net.ParseCIDR(podCIDR)
if err != nil {
return err
}
if cidrIP.To4() != nil {
nodeAddrs.IPv4 = ip2.NextIP(cidrIP)
} else {
nodeAddrs.IPv6 = ip2.NextIP(cidrIP)
}
return nil
}
if node.Spec.PodCIDRs != nil {
for _, podCIDR := range node.Spec.PodCIDRs {
cidrIP, _, err := net.ParseCIDR(podCIDR)
if err != nil {
return nil, err
}
if cidrIP.To4() != nil {
nodeAddrs.IPv4 = ip2.NextIP(cidrIP)
} else {
nodeAddrs.IPv6 = ip2.NextIP(cidrIP)
if err := parseIP(podCIDR); err != nil {
return nodeAddrs, err
}
}
return nodeAddrs, nil
}
cidrIP, _, err := net.ParseCIDR(node.Spec.PodCIDR)
if err != nil {
return nil, err
}
if cidrIP.To4() == nil {
nodeAddrs.IPv6 = ip2.NextIP(cidrIP)
} else {
nodeAddrs.IPv4 = ip2.NextIP(cidrIP)
if err := parseIP(node.Spec.PodCIDR); err != nil {
return nodeAddrs, err
}
return nodeAddrs, nil
}
Expand Down
55 changes: 52 additions & 3 deletions pkg/util/k8s/node_test.go
Expand Up @@ -232,9 +232,9 @@ func TestGetNodeAllAddrs(t *testing.T) {
node: &corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node0",
Annotations: map[string]string{types.NodeTransportAddressAnnotationKey: "172.16.0.1"},
Annotations: map[string]string{types.NodeTransportAddressAnnotationKey: "172.16.0.1,1::1"},
},
Spec: corev1.NodeSpec{PodCIDR: "192.168.0.0/24"},
Spec: corev1.NodeSpec{PodCIDRs: []string{"192.168.0.0/24", "2001::/64"}},
Status: corev1.NodeStatus{
Addresses: []corev1.NodeAddress{
{
Expand All @@ -244,7 +244,7 @@ func TestGetNodeAllAddrs(t *testing.T) {
},
},
},
expectedAddrs: sets.NewString("172.16.0.1", "192.168.0.1", "10.176.10.10"),
expectedAddrs: sets.NewString("172.16.0.1", "192.168.0.1", "10.176.10.10", "1::1", "2001::1"),
expectedErr: nil,
},
{
Expand All @@ -267,6 +267,55 @@ func TestGetNodeAllAddrs(t *testing.T) {
expectedAddrs: sets.NewString("192.168.0.1", "1.1.1.1"),
expectedErr: nil,
},
{
name: "Node with invalid gateway IP",
node: &corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node2",
},
Spec: corev1.NodeSpec{PodCIDR: "x"},
Status: corev1.NodeStatus{
Addresses: []corev1.NodeAddress{
{
Type: corev1.NodeInternalIP,
Address: "1.1.1.1",
},
},
},
},
expectedAddrs: sets.NewString("1.1.1.1"),
expectedErr: &net.ParseError{Type: "CIDR address", Text: "x"},
},
{
name: "Node with invalid transport address annotation",
node: &corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node3",
Annotations: map[string]string{types.NodeTransportAddressAnnotationKey: "x"},
},
Spec: corev1.NodeSpec{PodCIDR: "192.168.0.0/24"},
Status: corev1.NodeStatus{
Addresses: []corev1.NodeAddress{
{
Type: corev1.NodeInternalIP,
Address: "1.1.1.1",
},
},
},
},
expectedAddrs: sets.NewString("1.1.1.1", "192.168.0.1"),
expectedErr: fmt.Errorf("invalid annotation for ip-address on Node node3: x"),
},
{
name: "Node with none valid IPs",
node: &corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node4",
},
},
expectedAddrs: sets.NewString(),
expectedErr: fmt.Errorf("Node node4 has neither external ip nor internal ip"),
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Expand Down

0 comments on commit ae7d793

Please sign in to comment.