Skip to content

Commit 600879f

Browse files
arc9693andyzhangx
authored andcommitted
Restructure tests
1 parent 82b8b82 commit 600879f

File tree

2 files changed

+117
-73
lines changed

2 files changed

+117
-73
lines changed

pkg/azurefile/azurefile.go

+4
Original file line numberDiff line numberDiff line change
@@ -1303,6 +1303,10 @@ func getNodeInfoFromLabels(ctx context.Context, nodeID string, kubeClient client
13031303
}
13041304

13051305
func isKataNode(ctx context.Context, nodeID string, kubeClient clientset.Interface) bool {
1306+
if nodeID == "" {
1307+
return false
1308+
}
1309+
13061310
kataVMIsolationLabel, kataRuntimeLabel, err := getNodeInfoFromLabels(ctx, nodeID, kubeClient)
13071311

13081312
if err != nil {

pkg/azurefile/azurefile_test.go

+113-73
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import (
3939
"go.uber.org/mock/gomock"
4040
v1api "k8s.io/api/core/v1"
4141
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
42+
"k8s.io/client-go/kubernetes"
4243
"k8s.io/client-go/kubernetes/fake"
4344

4445
"sigs.k8s.io/cloud-provider-azure/pkg/azclient"
@@ -1634,95 +1635,134 @@ func TestGetFileShareClientForSub(t *testing.T) {
16341635
}
16351636

16361637
func TestGetNodeInfoFromLabels(t *testing.T) {
1637-
ctx := context.TODO()
1638-
1639-
// Test case where kubeClient is nil
1640-
_, _, err := getNodeInfoFromLabels(ctx, "test-node", nil)
1641-
if err == nil || err.Error() != "kubeClient is nil" {
1642-
t.Fatalf("expected error 'kubeClient is nil', got %v", err)
1643-
}
1644-
1645-
// Create a fake clientset
1646-
clientset := fake.NewSimpleClientset()
1647-
1648-
// Test case where the node does not exist
1649-
_, _, err = getNodeInfoFromLabels(ctx, "nonexistent-node", clientset)
1650-
if err == nil {
1651-
t.Fatalf("expected an error, got nil")
1652-
}
1653-
1654-
// Test case where node exists but has no labels
1655-
node := &v1api.Node{
1656-
ObjectMeta: metav1.ObjectMeta{
1657-
Name: "test-node",
1658-
Labels: map[string]string{},
1638+
testCases := []struct {
1639+
name string
1640+
nodeName string
1641+
labels map[string]string
1642+
setupClient bool
1643+
expectedVals [2]string
1644+
expectedErr error
1645+
}{
1646+
{
1647+
name: "Error when kubeClient is nil",
1648+
nodeName: "test-node",
1649+
setupClient: false,
1650+
expectedErr: fmt.Errorf("kubeClient is nil"),
1651+
},
1652+
{
1653+
name: "Error when node does not exist",
1654+
nodeName: "nonexistent-node",
1655+
setupClient: true,
1656+
expectedErr: fmt.Errorf("get node(nonexistent-node) failed with nodes \"nonexistent-node\" not found"),
1657+
},
1658+
{
1659+
name: "Error when node has no labels",
1660+
nodeName: "test-node",
1661+
setupClient: true,
1662+
labels: map[string]string{}, // Node exists but has no labels
1663+
expectedErr: fmt.Errorf("node(test-node) label is empty"),
1664+
},
1665+
{
1666+
name: "Success with kata labels",
1667+
nodeName: "test-node",
1668+
setupClient: true,
1669+
labels: map[string]string{
1670+
"kubernetes.azure.com/kata-mshv-vm-isolation": "true",
1671+
"katacontainers.io/kata-runtime": "false",
1672+
},
1673+
expectedVals: [2]string{"true", "false"},
1674+
expectedErr: nil,
16591675
},
1660-
}
1661-
_, err = clientset.CoreV1().Nodes().Create(ctx, node, metav1.CreateOptions{})
1662-
if err != nil {
1663-
t.Fatalf("expected no error, got %v", err)
16641676
}
16651677

1666-
_, _, err = getNodeInfoFromLabels(ctx, "test-node", clientset)
1667-
if err == nil || err.Error() != "node(test-node) label is empty" {
1668-
t.Fatalf("expected error 'node(test-node) label is empty', got %v", err)
1669-
}
1678+
for _, tc := range testCases {
1679+
t.Run(tc.name, func(t *testing.T) {
1680+
ctx := context.TODO()
1681+
var clientset kubernetes.Interface
16701682

1671-
// Test case where node has kata labels
1672-
node.Labels = map[string]string{
1673-
"kubernetes.azure.com/kata-mshv-vm-isolation": "true",
1674-
"katacontainers.io/kata-runtime": "false",
1675-
}
1676-
_, err = clientset.CoreV1().Nodes().Update(ctx, node, metav1.UpdateOptions{})
1677-
if err != nil {
1678-
t.Fatalf("expected no error, got %v", err)
1679-
}
1683+
if tc.setupClient {
1684+
clientset = fake.NewSimpleClientset()
1685+
}
16801686

1681-
kataVMIsolation, kataRuntime, err := getNodeInfoFromLabels(ctx, "test-node", clientset)
1682-
if err != nil {
1683-
t.Fatalf("expected no error, got %v", err)
1684-
}
1687+
if tc.labels != nil && tc.setupClient {
1688+
node := &v1api.Node{
1689+
ObjectMeta: metav1.ObjectMeta{
1690+
Name: tc.nodeName,
1691+
Labels: tc.labels,
1692+
},
1693+
}
1694+
_, err := clientset.CoreV1().Nodes().Create(ctx, node, metav1.CreateOptions{})
1695+
assert.NoError(t, err)
1696+
}
1697+
1698+
kataVMIsolation, kataRuntime, err := getNodeInfoFromLabels(ctx, tc.nodeName, clientset)
16851699

1686-
if kataVMIsolation != "true" || kataRuntime != "false" {
1687-
t.Fatalf("expected (true, false), got (%v, %v)", kataVMIsolation, kataRuntime)
1700+
if tc.expectedErr != nil {
1701+
assert.EqualError(t, err, tc.expectedErr.Error())
1702+
} else {
1703+
assert.NoError(t, err)
1704+
assert.Equal(t, tc.expectedVals[0], kataVMIsolation)
1705+
assert.Equal(t, tc.expectedVals[1], kataRuntime)
1706+
}
1707+
})
16881708
}
16891709
}
16901710

16911711
func TestIsKataNode(t *testing.T) {
1692-
ctx := context.TODO()
1693-
clientset := fake.NewSimpleClientset()
1694-
1695-
// Test case where node does not exist
1696-
if isKataNode(ctx, "nonexistent-node", clientset) {
1697-
t.Fatalf("expected false, got true")
1698-
}
1699-
1700-
// Create node without kata labels
1701-
node := &v1api.Node{
1702-
ObjectMeta: metav1.ObjectMeta{
1703-
Name: "test-node",
1704-
Labels: map[string]string{
1712+
testCases := []struct {
1713+
name string
1714+
nodeName string
1715+
labels map[string]string
1716+
setupClient bool
1717+
expected bool
1718+
}{
1719+
{
1720+
name: "Node does not exist",
1721+
nodeName: "",
1722+
setupClient: true,
1723+
expected: false,
1724+
},
1725+
{
1726+
name: "Node exists but has no kata labels",
1727+
nodeName: "test-node",
1728+
setupClient: true,
1729+
labels: map[string]string{
17051730
"some-other-label": "value",
17061731
},
1732+
expected: false,
1733+
},
1734+
{
1735+
name: "Node has kata labels",
1736+
nodeName: "test-node",
1737+
setupClient: true,
1738+
labels: map[string]string{
1739+
"kubernetes.azure.com/kata-mshv-vm-isolation": "true",
1740+
},
1741+
expected: true,
17071742
},
1708-
}
1709-
_, err := clientset.CoreV1().Nodes().Create(ctx, node, metav1.CreateOptions{})
1710-
if err != nil {
1711-
t.Fatalf("expected no error, got %v", err)
17121743
}
17131744

1714-
if isKataNode(ctx, "test-node", clientset) {
1715-
t.Fatalf("expected false, got true")
1716-
}
1745+
for _, tc := range testCases {
1746+
t.Run(tc.name, func(t *testing.T) {
1747+
ctx := context.TODO()
1748+
var clientset kubernetes.Interface
17171749

1718-
// Update node with kata labels
1719-
node.Labels["kubernetes.azure.com/kata-mshv-vm-isolation"] = "true"
1720-
_, err = clientset.CoreV1().Nodes().Update(ctx, node, metav1.UpdateOptions{})
1721-
if err != nil {
1722-
t.Fatalf("expected no error, got %v", err)
1723-
}
1750+
if tc.setupClient {
1751+
clientset = fake.NewSimpleClientset()
1752+
}
17241753

1725-
if !isKataNode(ctx, "test-node", clientset) {
1726-
t.Fatalf("expected true, got false")
1754+
if tc.labels != nil && tc.setupClient {
1755+
node := &v1api.Node{
1756+
ObjectMeta: metav1.ObjectMeta{
1757+
Name: tc.nodeName,
1758+
Labels: tc.labels,
1759+
},
1760+
}
1761+
_, err := clientset.CoreV1().Nodes().Create(ctx, node, metav1.CreateOptions{})
1762+
assert.NoError(t, err)
1763+
}
1764+
result := isKataNode(ctx, tc.nodeName, clientset)
1765+
assert.Equal(t, tc.expected, result)
1766+
})
17271767
}
17281768
}

0 commit comments

Comments
 (0)