mirror of
https://github.com/netbirdio/netbird.git
synced 2024-12-14 10:50:45 +01:00
a4826cfb5f
Get static system info once for Windows, Darwin, and Linux nodes This should improve startup and peer authentication times
202 lines
5.2 KiB
Go
202 lines
5.2 KiB
Go
package system
|
|
|
|
import "testing"
|
|
|
|
func Test_sysInfo(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
sysInfo SysInfo
|
|
wantSerialNum string
|
|
wantProdName string
|
|
wantManufacturer string
|
|
}{
|
|
{
|
|
name: "Test Case 1",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "Default string",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Empty Chassis Serial",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Empty Chassis Serial",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Fallback to Product Serial",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "Default string",
|
|
ProductSerial: "Product serial",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Product serial",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Fallback to Product Serial with default string",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "Default string",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Non UTF-8 in Chassis Serial",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "\x80",
|
|
ProductSerial: "Product serial",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Product serial",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Non UTF-8 in Chassis Serial and Product Serial",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "\x80",
|
|
ProductSerial: "\x80",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "M80-G8013200245",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Non UTF-8 in Chassis Serial and Product Serial and BoardSerial",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "\x80",
|
|
ProductSerial: "\x80",
|
|
BoardSerial: "\x80",
|
|
ProductName: "B650M-HDV/M.2",
|
|
BoardName: "B650M-HDV/M.2",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "",
|
|
wantProdName: "B650M-HDV/M.2",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
|
|
{
|
|
name: "Empty Product Name",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "Default string",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "",
|
|
BoardName: "boardname",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "boardname",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Invalid Product Name",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "Default string",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "\x80",
|
|
BoardName: "boardname",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "boardname",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Invalid BoardName Name",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "Default string",
|
|
ProductSerial: "Default string",
|
|
BoardSerial: "M80-G8013200245",
|
|
ProductName: "\x80",
|
|
BoardName: "\x80",
|
|
ProductVendor: "ASRock",
|
|
},
|
|
wantSerialNum: "Default string",
|
|
wantProdName: "",
|
|
wantManufacturer: "ASRock",
|
|
},
|
|
{
|
|
name: "Invalid chars",
|
|
sysInfo: SysInfo{
|
|
ChassisSerial: "\x80",
|
|
ProductSerial: "\x80",
|
|
BoardSerial: "\x80",
|
|
ProductName: "\x80",
|
|
BoardName: "\x80",
|
|
ProductVendor: "\x80",
|
|
},
|
|
wantSerialNum: "",
|
|
wantProdName: "",
|
|
wantManufacturer: "",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
getSystemInfo = func() SysInfo {
|
|
return tt.sysInfo
|
|
}
|
|
gotSerialNum, gotProdName, gotManufacturer := sysInfo()
|
|
if gotSerialNum != tt.wantSerialNum {
|
|
t.Errorf("sysInfo() gotSerialNum = %v, want %v", gotSerialNum, tt.wantSerialNum)
|
|
}
|
|
if gotProdName != tt.wantProdName {
|
|
t.Errorf("sysInfo() gotProdName = %v, want %v", gotProdName, tt.wantProdName)
|
|
}
|
|
if gotManufacturer != tt.wantManufacturer {
|
|
t.Errorf("sysInfo() gotManufacturer = %v, want %v", gotManufacturer, tt.wantManufacturer)
|
|
}
|
|
})
|
|
}
|
|
}
|