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  }