pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/system/sensors/sensors_test.go (about) 1 //go:build linux 2 // +build linux 3 4 package sensors 5 6 // ////////////////////////////////////////////////////////////////////////////////// // 7 // // 8 // Copyright (c) 2022 ESSENTIAL KAOS // 9 // Apache License, Version 2.0 <https://www.apache.org/licenses/LICENSE-2.0> // 10 // // 11 // ////////////////////////////////////////////////////////////////////////////////// // 12 13 import ( 14 "io/ioutil" 15 "os" 16 "testing" 17 18 . "pkg.re/essentialkaos/check.v1" 19 ) 20 21 // ////////////////////////////////////////////////////////////////////////////////// // 22 23 func Test(t *testing.T) { TestingT(t) } 24 25 type SensorsSuite struct{} 26 27 // ////////////////////////////////////////////////////////////////////////////////// // 28 29 var _ = Suite(&SensorsSuite{}) 30 31 // ////////////////////////////////////////////////////////////////////////////////// // 32 33 func (s *SensorsSuite) TestParsing(c *C) { 34 tmpDir := c.MkDir() 35 createFakeFS(tmpDir) 36 37 hwmonDir = tmpDir 38 39 devices, err := Collect() 40 41 c.Assert(err, IsNil) 42 c.Assert(devices, NotNil) 43 c.Assert(devices, HasLen, 2) 44 c.Assert(devices[0].Name, Equals, "acpitz") 45 c.Assert(devices[0].TempSensors[0].Name, Equals, "") 46 c.Assert(devices[0].TempSensors[0].Cur, Equals, 8.2) 47 c.Assert(devices[0].TempSensors[0].Min, Equals, 0.0) 48 c.Assert(devices[0].TempSensors[0].Max, Equals, 0.0) 49 c.Assert(devices[0].TempSensors[0].Crit, Equals, 25.6) 50 c.Assert(devices[1].Name, Equals, "coretemp") 51 c.Assert(devices[1].TempSensors[0].Name, Equals, "Core 0") 52 c.Assert(devices[1].TempSensors[0].Cur, Equals, 38.0) 53 c.Assert(devices[1].TempSensors[0].Min, Equals, 12.0) 54 c.Assert(devices[1].TempSensors[0].Max, Equals, 81.0) 55 c.Assert(devices[1].TempSensors[0].Crit, Equals, 91.0) 56 57 t1, t2, t3 := devices[1].Temperature() 58 c.Assert(t1, Equals, 38.0) 59 c.Assert(t2, Equals, 41.0) 60 c.Assert(t3, Equals, 39.5) 61 62 c.Assert(devices[1].TempSensors[0].String(), Equals, "{Name:Core 0 Cur:+38°C Min:+12°C Max:+81°C Crit:+91°C}") 63 } 64 65 func (s *SensorsSuite) TestParsingErrors(c *C) { 66 hwmonDir = "/_unknown_" 67 68 _, err := Collect() 69 c.Assert(err, NotNil) 70 71 d := &Device{} 72 t1, t2, t3 := d.Temperature() 73 c.Assert(t1, Equals, 0.0) 74 c.Assert(t2, Equals, 0.0) 75 c.Assert(t3, Equals, 0.0) 76 77 tmpDir := c.MkDir() 78 createFakeFS(tmpDir) 79 80 hwmonDir = tmpDir 81 82 ioutil.WriteFile(tmpDir+"/hwmon1/temp1_crit", []byte("AAA"), 0644) 83 _, err = Collect() 84 c.Assert(err, NotNil) 85 86 ioutil.WriteFile(tmpDir+"/hwmon1/temp1_max", []byte("AAA"), 0644) 87 _, err = Collect() 88 c.Assert(err, NotNil) 89 90 ioutil.WriteFile(tmpDir+"/hwmon1/temp1_min", []byte("AAA"), 0644) 91 _, err = Collect() 92 c.Assert(err, NotNil) 93 94 ioutil.WriteFile(tmpDir+"/hwmon1/temp1_input", []byte("AAA"), 0644) 95 _, err = Collect() 96 c.Assert(err, NotNil) 97 98 os.Remove(tmpDir + "/hwmon1/temp1_input") 99 os.Mkdir(tmpDir+"/hwmon1/temp1_input", 0644) 100 _, err = Collect() 101 c.Assert(err, NotNil) 102 103 os.Remove(tmpDir + "/hwmon1/temp1_label") 104 os.Mkdir(tmpDir+"/hwmon1/temp1_label", 0644) 105 _, err = Collect() 106 c.Assert(err, NotNil) 107 108 os.Remove(tmpDir + "/hwmon1/name") 109 os.Mkdir(tmpDir+"/hwmon1/name", 0644) 110 _, err = Collect() 111 c.Assert(err, NotNil) 112 } 113 114 // ////////////////////////////////////////////////////////////////////////////////// // 115 116 func createFakeFS(tmpDir string) { 117 os.Mkdir(tmpDir+"/hwmon0", 0755) 118 os.Mkdir(tmpDir+"/hwmon1", 0755) 119 os.Mkdir(tmpDir+"/hwmon2", 0755) 120 121 ioutil.WriteFile(tmpDir+"/hwmon0/name", []byte("acpitz"), 0644) 122 ioutil.WriteFile(tmpDir+"/hwmon0/temp1_crit", []byte("25600"), 0644) 123 ioutil.WriteFile(tmpDir+"/hwmon0/temp1_input", []byte("8200"), 0644) 124 125 ioutil.WriteFile(tmpDir+"/hwmon1/name", []byte("coretemp"), 0644) 126 ioutil.WriteFile(tmpDir+"/hwmon1/temp1_label", []byte("Core 0"), 0644) 127 ioutil.WriteFile(tmpDir+"/hwmon1/temp1_crit", []byte("91000"), 0644) 128 ioutil.WriteFile(tmpDir+"/hwmon1/temp1_input", []byte("38000"), 0644) 129 ioutil.WriteFile(tmpDir+"/hwmon1/temp1_max", []byte("81000"), 0644) 130 ioutil.WriteFile(tmpDir+"/hwmon1/temp1_min", []byte("12000"), 0644) 131 ioutil.WriteFile(tmpDir+"/hwmon1/temp2_label", []byte("Core 0"), 0644) 132 ioutil.WriteFile(tmpDir+"/hwmon1/temp2_crit", []byte("91000"), 0644) 133 ioutil.WriteFile(tmpDir+"/hwmon1/temp2_input", []byte("41000"), 0644) 134 ioutil.WriteFile(tmpDir+"/hwmon1/temp2_max", []byte("81000"), 0644) 135 ioutil.WriteFile(tmpDir+"/hwmon1/temp2_min", []byte("12000"), 0644) 136 }