You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.6 KiB
139 lines
3.6 KiB
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)
|
|
}
|