package detect_test import ( mock_config "github.com/analogj/scrutiny/collector/pkg/config/mock" "github.com/analogj/scrutiny/collector/pkg/detect" "github.com/analogj/scrutiny/collector/pkg/models" "github.com/golang/mock/gomock" "github.com/stretchr/testify/require" "testing" ) func TestDetect_TransformDetectedDevices_Empty(t *testing.T) { //setup mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() fakeConfig := mock_config.NewMockInterface(mockCtrl) fakeConfig.EXPECT().GetString("host.id").AnyTimes().Return("") fakeConfig.EXPECT().GetScanOverrides().AnyTimes().Return([]models.ScanOverride{}) detectedDevices := models.Scan{ Devices: []models.ScanDevice{ { Name: "/dev/sda", InfoName: "/dev/sda", Protocol: "scsi", Type: "scsi", }, }, } d := detect.Detect{ Config: fakeConfig, } //test transformedDevices := d.TransformDetectedDevices(detectedDevices) //assert require.Equal(t, "sda", transformedDevices[0].DeviceName) require.Equal(t, "scsi", transformedDevices[0].DeviceType) } func TestDetect_TransformDetectedDevices_Ignore(t *testing.T) { //setup mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() fakeConfig := mock_config.NewMockInterface(mockCtrl) fakeConfig.EXPECT().GetString("host.id").AnyTimes().Return("") fakeConfig.EXPECT().GetScanOverrides().AnyTimes().Return([]models.ScanOverride{{Device: "/dev/sda", DeviceType: nil, Ignore: true}}) detectedDevices := models.Scan{ Devices: []models.ScanDevice{ { Name: "/dev/sda", InfoName: "/dev/sda", Protocol: "scsi", Type: "scsi", }, }, } d := detect.Detect{ Config: fakeConfig, } //test transformedDevices := d.TransformDetectedDevices(detectedDevices) //assert require.Equal(t, []models.Device{}, transformedDevices) } func TestDetect_TransformDetectedDevices_Raid(t *testing.T) { //setup mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() fakeConfig := mock_config.NewMockInterface(mockCtrl) fakeConfig.EXPECT().GetString("host.id").AnyTimes().Return("") fakeConfig.EXPECT().GetScanOverrides().AnyTimes().Return([]models.ScanOverride{ { Device: "/dev/bus/0", DeviceType: []string{"megaraid,14", "megaraid,15", "megaraid,18", "megaraid,19", "megaraid,20", "megaraid,21"}, Ignore: false, }, { Device: "/dev/twa0", DeviceType: []string{"3ware,0", "3ware,1", "3ware,2", "3ware,3", "3ware,4", "3ware,5"}, Ignore: false, }}) detectedDevices := models.Scan{ Devices: []models.ScanDevice{ { Name: "/dev/bus/0", InfoName: "/dev/bus/0", Protocol: "scsi", Type: "scsi", }, }, } d := detect.Detect{ Config: fakeConfig, } //test transformedDevices := d.TransformDetectedDevices(detectedDevices) //assert require.Equal(t, 12, len(transformedDevices)) } func TestDetect_TransformDetectedDevices_Simple(t *testing.T) { //setup mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() fakeConfig := mock_config.NewMockInterface(mockCtrl) fakeConfig.EXPECT().GetString("host.id").AnyTimes().Return("") fakeConfig.EXPECT().GetScanOverrides().AnyTimes().Return([]models.ScanOverride{{Device: "/dev/sda", DeviceType: []string{"sat+megaraid"}}}) detectedDevices := models.Scan{ Devices: []models.ScanDevice{ { Name: "/dev/sda", InfoName: "/dev/sda", Protocol: "ata", Type: "ata", }, }, } d := detect.Detect{ Config: fakeConfig, } //test transformedDevices := d.TransformDetectedDevices(detectedDevices) //assert require.Equal(t, 1, len(transformedDevices)) require.Equal(t, "sat+megaraid", transformedDevices[0].DeviceType) }