Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions azurediskplugin_coverage.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
mode: set
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:36.13,38.55 2 1
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:38.55,40.3 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:51.27,53.2 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:55.13,57.14 2 1
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:57.14,59.17 2 1
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:59.17,61.4 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:62.3,62.20 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:63.8,63.25 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:63.25,65.3 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:65.8,68.3 2 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:69.2,69.9 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:72.43,74.16 2 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:74.16,76.3 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:76.8,77.51 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:77.51,80.4 2 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:82.2,82.45 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:85.15,90.19 4 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:90.19,92.3 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:93.2,93.57 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:93.57,95.3 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:98.22,99.27 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:99.27,101.3 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:102.2,103.16 2 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:103.16,106.3 2 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:107.2,107.46 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:110.83,113.12 3 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:113.12,115.38 2 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:115.38,117.4 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:121.41,125.2 3 0
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:127.41,128.16 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:128.16,130.3 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:131.2,131.71 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:131.71,133.3 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/azurediskplugin/main.go:134.2,134.12 1 1
10,079 changes: 10,079 additions & 0 deletions coverage.html

Large diffs are not rendered by default.

2,317 changes: 2,317 additions & 0 deletions coverage.out

Large diffs are not rendered by default.

22 changes: 22 additions & 0 deletions credentials_coverage.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
mode: set
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:90.56,94.17 3 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:94.17,96.3 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:97.2,106.25 9 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:106.25,108.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:110.2,110.20 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:110.20,112.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:114.2,114.18 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:114.18,116.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:118.2,118.123 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:118.123,120.3 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:122.2,123.119 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:127.40,128.86 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:128.86,130.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:132.2,132.12 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:136.178,139.16 3 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:139.16,141.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:143.2,144.16 2 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:144.16,146.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:147.2,161.16 4 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:161.16,163.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:165.2,165.16 1 1
22 changes: 22 additions & 0 deletions credentials_coverage2.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
mode: set
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:90.56,94.17 3 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:94.17,96.3 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:97.2,106.25 9 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:106.25,108.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:110.2,110.20 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:110.20,112.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:114.2,114.18 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:114.18,116.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:118.2,118.123 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:118.123,120.3 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:122.2,123.119 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:127.40,128.86 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:128.86,130.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:132.2,132.12 1 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:136.178,139.16 3 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:139.16,141.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:143.2,144.16 2 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:144.16,146.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:147.2,161.16 4 1
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:161.16,163.3 1 0
sigs.k8s.io/azuredisk-csi-driver/test/utils/credentials/credentials.go:165.2,165.16 1 1
27 changes: 27 additions & 0 deletions mounter_coverage.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
mode: set
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:37.62,38.31 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:38.31,40.3 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:42.2,48.8 3 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:52.77,53.45 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:53.45,55.3 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:55.8,55.52 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:55.52,57.3 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:59.2,59.12 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:63.89,64.50 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:64.50,66.3 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:66.8,66.57 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:66.57,68.3 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:70.2,70.12 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:74.76,75.47 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:75.47,77.3 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:78.2,78.47 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:78.47,80.3 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:81.2,81.18 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:85.67,87.16 2 0
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:87.16,89.3 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:90.2,90.21 1 0
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:94.90,95.33 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:95.33,97.62 2 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:97.62,104.4 5 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/fake_safe_mounter.go:106.3,106.59 1 1
sigs.k8s.io/azuredisk-csi-driver/pkg/mounter/safe_mounter_unix.go:29.134,32.2 2 1
31 changes: 31 additions & 0 deletions pkg/azuredisk/azure_common_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,34 @@ func TestRescanAllVolumes(t *testing.T) {
t.Errorf("rescanAllVolumes failed with error: %v", err)
}
}

func TestRescanVolume(t *testing.T) {
if runtime.GOOS == "darwin" {
t.Skipf("skip test on GOOS=%s", runtime.GOOS)
}

tests := []struct {
name string
devicePath string
}{
{
name: "rescan sdc device",
devicePath: "/dev/sdc",
},
{
name: "rescan sdd device",
devicePath: "/dev/sdd",
},
}

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
mockIO := azureutils.NewFakeIOHandler()
err := rescanVolume(mockIO, test.devicePath)
// FakeIOHandler always returns nil for WriteFile, so we expect no error
if err != nil {
t.Errorf("test(%s): unexpected error: %v", test.name, err)
}
})
}
}
42 changes: 42 additions & 0 deletions pkg/azuredisk/azuredisk_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -618,3 +618,45 @@
}
}
}

func TestIsCheckDiskLunThrottled(t *testing.T) {
cntl := gomock.NewController(t)
defer cntl.Finish()

Check failure on line 625 in pkg/azuredisk/azuredisk_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

File is not properly formatted (gofmt)

Check failure on line 625 in pkg/azuredisk/azuredisk_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

File is not properly formatted (gofmt)
fakeD, _ := NewFakeDriver(cntl)
d := fakeD.(*fakeDriver)

tests := []struct {
name string
setupCache func(*fakeDriver)
expectedBool bool
}{
{
name: "no throttling cache set",
setupCache: func(d *fakeDriver) {

Check failure on line 636 in pkg/azuredisk/azuredisk_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

unused-parameter: parameter 'd' seems to be unused, consider removing or renaming it as _ (revive)

Check failure on line 636 in pkg/azuredisk/azuredisk_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

unused-parameter: parameter 'd' seems to be unused, consider removing or renaming it as _ (revive)
// cache is empty by default
},
expectedBool: false,
},
{
name: "throttling cache is set",
setupCache: func(d *fakeDriver) {
// Set a cache entry to simulate throttling
d.checkDiskLunThrottlingCache.Set(consts.CheckDiskLunThrottlingKey, "throttled")
},
expectedBool: true,
},
}

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
test.setupCache(d)
result := d.isCheckDiskLunThrottled(context.Background())
if result != test.expectedBool {
t.Errorf("test(%s): result(%v) != expected result(%v)", test.name, result, test.expectedBool)
}
// Clear cache for next test
d.checkDiskLunThrottlingCache.Delete(consts.CheckDiskLunThrottlingKey)

Check failure on line 659 in pkg/azuredisk/azuredisk_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

Error return value of `d.checkDiskLunThrottlingCache.Delete` is not checked (errcheck)

Check failure on line 659 in pkg/azuredisk/azuredisk_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

Error return value of `d.checkDiskLunThrottlingCache.Delete` is not checked (errcheck)
})
}
}
60 changes: 60 additions & 0 deletions pkg/azuredisk/controllerserver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
"google.golang.org/grpc/status"
"google.golang.org/protobuf/types/known/timestamppb"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/utils/ptr"
consts "sigs.k8s.io/azuredisk-csi-driver/pkg/azureconstants"
"sigs.k8s.io/azuredisk-csi-driver/pkg/azuredisk/mockcorev1"
Expand Down Expand Up @@ -3165,3 +3166,62 @@
d.getCloud().KubeClient.CoreV1().(*mockcorev1.MockInterface).EXPECT().PersistentVolumes().Return(persistentvolume).AnyTimes()
return d
}

func TestGetOccupiedLunsFromNode(t *testing.T) {
cntl := gomock.NewController(t)
defer cntl.Finish()

d, _ := NewFakeDriver(cntl)
fakeD := d.(*fakeDriver)

tests := []struct {
name string
checkDiskLUNEnabled bool
throttled bool

Check failure on line 3180 in pkg/azuredisk/controllerserver_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

File is not properly formatted (gofmt)

Check failure on line 3180 in pkg/azuredisk/controllerserver_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

File is not properly formatted (gofmt)
expectedLunsLen int
}{
{
name: "checkDiskLUNCollision disabled",
checkDiskLUNEnabled: false,
throttled: false,
expectedLunsLen: 0,
},
{
name: "checkDiskLUNCollision enabled but throttled",
checkDiskLUNEnabled: true,
throttled: true,
expectedLunsLen: 0,
},
{
name: "checkDiskLUNCollision enabled and not throttled",
checkDiskLUNEnabled: true,
throttled: false,
expectedLunsLen: 0, // will be 0 because mock methods return empty
},
}

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
// Setup
fakeD.checkDiskLUNCollision = test.checkDiskLUNEnabled
if test.throttled {
fakeD.checkDiskLunThrottlingCache.Set(consts.CheckDiskLunThrottlingKey, "throttled")
} else {
fakeD.checkDiskLunThrottlingCache.Delete(consts.CheckDiskLunThrottlingKey)

Check failure on line 3210 in pkg/azuredisk/controllerserver_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

Error return value of `fakeD.checkDiskLunThrottlingCache.Delete` is not checked (errcheck)

Check failure on line 3210 in pkg/azuredisk/controllerserver_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

Error return value of `fakeD.checkDiskLunThrottlingCache.Delete` is not checked (errcheck)
}

ctx := context.Background()
nodeName := types.NodeName("test-node")
diskURI := "/subscriptions/sub/resourceGroups/rg/providers/Microsoft.Compute/disks/test-disk"

luns := fakeD.getOccupiedLunsFromNode(ctx, nodeName, diskURI)

if len(luns) != test.expectedLunsLen {
t.Errorf("test(%s): len(luns)=%d, expected=%d", test.name, len(luns), test.expectedLunsLen)
}

// Cleanup
fakeD.checkDiskLunThrottlingCache.Delete(consts.CheckDiskLunThrottlingKey)

Check failure on line 3224 in pkg/azuredisk/controllerserver_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

Error return value of `fakeD.checkDiskLunThrottlingCache.Delete` is not checked (errcheck)

Check failure on line 3224 in pkg/azuredisk/controllerserver_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

Error return value of `fakeD.checkDiskLunThrottlingCache.Delete` is not checked (errcheck)
})
}
}
28 changes: 28 additions & 0 deletions pkg/azurediskplugin/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,31 @@
}
}
}

func TestExportMetrics(t *testing.T) {
tests := []struct {
name string

Check failure on line 86 in pkg/azurediskplugin/main_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

File is not properly formatted (gofmt)

Check failure on line 86 in pkg/azurediskplugin/main_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

File is not properly formatted (gofmt)
metricsAddr string
}{
{
name: "empty metrics address",
metricsAddr: "",
},
{
name: "invalid metrics address",
metricsAddr: "invalid:address:port",
},
}

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {

Check failure on line 100 in pkg/azurediskplugin/main_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)

Check failure on line 100 in pkg/azurediskplugin/main_test.go

View workflow job for this annotation

GitHub Actions / Go Lint

unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)
// Store original value
original := *metricsAddress
*metricsAddress = test.metricsAddr
defer func() { *metricsAddress = original }()

// exportMetrics should not panic and should handle invalid addresses gracefully
exportMetrics()
})
}
}
42 changes: 42 additions & 0 deletions pkg/mounter/fake_safe_mounter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -221,3 +221,45 @@ func TestSetNextCommandOutputScripts(t *testing.T) {
}
}
}

func TestIsMountPoint(t *testing.T) {
tests := []struct {
desc string
file string
expectedResult bool
expectedErr error
}{
{
desc: "[Success] File that is likely not a mount point",
file: targetTest,
expectedResult: false,
expectedErr: nil,
},
{
desc: "[Success] File that is a mount point",
file: "./false_is_likely_target",
expectedResult: true,
expectedErr: nil,
},
{
desc: "[Error] File with error",
file: "./error_is_likely_target",
expectedResult: false,
expectedErr: fmt.Errorf("fake IsLikelyNotMountPoint: fake error"),
},
}

fakeMounter := &FakeSafeMounter{}

for _, test := range tests {
t.Run(test.desc, func(t *testing.T) {
result, err := fakeMounter.IsMountPoint(test.file)
if !reflect.DeepEqual(err, test.expectedErr) {
t.Errorf("Unexpected error: %v, expected: %v", err, test.expectedErr)
}
if result != test.expectedResult {
t.Errorf("Unexpected result: %v, expected: %v", result, test.expectedResult)
}
})
}
}
Loading
Loading