Skip to content

Commit 56e6dbf

Browse files
committed
Add integration tests for Get/SetAttachState APIs
Change-Id: Iab35b39feda7e92680c961aba2c565481349b747
1 parent f76ba87 commit 56e6dbf

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

integrationtests/disk_test.go

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@ package integrationtests
22

33
import (
44
"context"
5+
"fmt"
6+
"math/rand"
57
"strconv"
68
"strings"
79
"testing"
10+
"time"
811

912
"github.com/kubernetes-csi/csi-proxy/client/api/disk/v1beta2"
1013
v1beta2client "github.com/kubernetes-csi/csi-proxy/client/groups/disk/v1beta2"
14+
"github.com/stretchr/testify/assert"
1115
"github.com/stretchr/testify/require"
1216
)
1317

@@ -53,4 +57,61 @@ func TestDiskAPIGroup(t *testing.T) {
5357
}
5458
}
5559
})
60+
61+
t.Run("Get/SetAttachState", func(t *testing.T) {
62+
skipTestOnCondition(t, isRunningOnGhActions())
63+
client, err := v1beta2client.NewClient()
64+
require.NoError(t, err)
65+
66+
defer client.Close()
67+
68+
s1 := rand.NewSource(time.Now().UTC().UnixNano())
69+
r1 := rand.New(s1)
70+
71+
testPluginPath := fmt.Sprintf("C:\\var\\lib\\kubelet\\plugins\\testplugin-%d.csi.io\\", r1.Intn(100))
72+
mountPath := fmt.Sprintf("%smount-%d", testPluginPath, r1.Intn(100))
73+
vhdxPath := fmt.Sprintf("%sdisk-%d.vhdx", testPluginPath, r1.Intn(100))
74+
75+
defer diskCleanup(t, vhdxPath, mountPath, testPluginPath)
76+
diskNum := diskInit(t, vhdxPath, mountPath, testPluginPath)
77+
78+
out, err := runPowershellCmd(fmt.Sprintf("Get-Disk -Number %s | Set-Disk -IsOffline $true", diskNum))
79+
require.NoError(t, err, "failed setting disk offline, out=%v", out)
80+
81+
getReq := &v1beta2.GetAttachStateRequest{DiskID: diskNum}
82+
getResp, err := client.GetAttachState(context.TODO(), getReq)
83+
84+
if assert.NoError(t, err) {
85+
assert.False(t, getResp.IsOnline, "Expected disk to be offline")
86+
}
87+
88+
setReq := &v1beta2.SetAttachStateRequest{DiskID: diskNum, IsOnline: true}
89+
_, err = client.SetAttachState(context.TODO(), setReq)
90+
assert.NoError(t, err)
91+
92+
out, err = runPowershellCmd(fmt.Sprintf("Get-Disk -Number %s | Select-Object -ExpandProperty IsOffline", diskNum))
93+
assert.NoError(t, err)
94+
95+
result, err := strconv.ParseBool(strings.TrimSpace(out))
96+
assert.NoError(t, err)
97+
assert.False(t, result, "Expected disk to be online")
98+
99+
getReq = &v1beta2.GetAttachStateRequest{DiskID: diskNum}
100+
getResp, err = client.GetAttachState(context.TODO(), getReq)
101+
102+
if assert.NoError(t, err) {
103+
assert.True(t, getResp.IsOnline, "Expected disk is online")
104+
}
105+
106+
setReq = &v1beta2.SetAttachStateRequest{DiskID: diskNum, IsOnline: false}
107+
_, err = client.SetAttachState(context.TODO(), setReq)
108+
assert.NoError(t, err)
109+
110+
out, err = runPowershellCmd(fmt.Sprintf("Get-Disk -Number %s | Select-Object -ExpandProperty IsOffline", diskNum))
111+
assert.NoError(t, err)
112+
113+
result, err = strconv.ParseBool(strings.TrimSpace(out))
114+
assert.NoError(t, err)
115+
assert.True(t, result, "Expected disk to be offline")
116+
})
56117
}

0 commit comments

Comments
 (0)