// Copyright 2024 The Prometheus Authors // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package main import ( "testing" ) func TestBuildDeviceLabel(t *testing.T) { tests := []struct { deviceName string deviceType string expectedLabel string }{ {"/dev/bus/0", "megaraid,1", "bus_0_megaraid_1"}, {"/dev/sda", "auto", "sda"}, {"/dev/disk/by-id/ata-CT500MX500SSD1_ABCDEFGHIJ", "auto", "ata-CT500MX500SSD1_ABCDEFGHIJ"}, // Some cases extracted from smartctl docs. Are these the prettiest? // Probably not. Are they unique enough. Definitely. {"/dev/sg1", "cciss,1", "sg1_cciss_1"}, {"/dev/bsg/sssraid0", "sssraid,0,1", "bsg_sssraid0_sssraid_0_1"}, {"/dev/cciss/c0d0", "cciss,0", "cciss_c0d0_cciss_0"}, {"/dev/sdb", "aacraid,1,0,4", "sdb_aacraid_1_0_4"}, {"/dev/twl0", "3ware,1", "twl0_3ware_1"}, } for _, test := range tests { result := buildDeviceLabel(test.deviceName, test.deviceType) if result != test.expectedLabel { t.Errorf("deviceName=%v deviceType=%v expected=%v result=%v", test.deviceName, test.deviceType, test.expectedLabel, result) } } }