1
0
Fork 0
mirror of https://github.com/shouptech/tempgopher.git synced 2026-02-03 16:49:42 +00:00

Improve unit tests for config.go

This commit is contained in:
Emma 2018-10-26 09:38:22 -06:00
parent 1ce594d540
commit 32f1c7fc9d
5 changed files with 94 additions and 8 deletions

View file

@ -3,7 +3,6 @@ package main
import ( import (
"errors" "errors"
"io/ioutil" "io/ioutil"
"log"
"os" "os"
"syscall" "syscall"
@ -75,7 +74,6 @@ func UpdateSensorConfig(s Sensor) error {
config.Sensors[i].CoolInvert = s.CoolInvert config.Sensors[i].CoolInvert = s.CoolInvert
config.Sensors[i].CoolMinutes = s.CoolMinutes config.Sensors[i].CoolMinutes = s.CoolMinutes
config.Sensors[i].Verbose = s.Verbose config.Sensors[i].Verbose = s.Verbose
log.Println(config.Sensors[i])
} }
} }
@ -83,8 +81,6 @@ func UpdateSensorConfig(s Sensor) error {
return err return err
} }
log.Println(config.Sensors[0])
if err = SignalReload(); err != nil { if err = SignalReload(); err != nil {
return err return err
} }

View file

@ -1,11 +1,98 @@
package main package main
import ( import (
"io/ioutil"
"os"
"os/signal"
"syscall"
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
func Test_UpdateSensortConfig(t *testing.T) {
testConfig := Config{
Sensors: []Sensor{
Sensor{
Alias: "foo",
},
},
Users: []User{},
ListenAddr: ":8080",
}
newSensor := Sensor{Alias: "bar"}
// Create a temp file
tmpfile, err := ioutil.TempFile("", "tempgopher")
assert.Equal(t, nil, err)
defer os.Remove(tmpfile.Name()) // Remove the tempfile when done
configFilePath = tmpfile.Name()
// Save to tempfile
err = SaveConfig(tmpfile.Name(), testConfig)
assert.Equal(t, nil, err)
// Create a channel to capture SIGHUP
sig := make(chan os.Signal, 1)
signal.Notify(sig, syscall.SIGHUP)
// Update the stored config
UpdateSensorConfig(newSensor)
// Load the config
config, err := LoadConfig(tmpfile.Name())
assert.Equal(t, nil, err)
assert.Equal(t, "bar", config.Sensors[0].Alias)
// Validate SIGHUP
ret := <-sig
assert.Equal(t, syscall.SIGHUP, ret)
}
func Test_SignalReload(t *testing.T) {
// Create a channel to capture SIGHUP
sig := make(chan os.Signal, 1)
signal.Notify(sig, syscall.SIGHUP)
// Generate SIGHUP
err := SignalReload()
assert.Equal(t, nil, err)
// Validate SIGHUP
ret := <-sig
assert.Equal(t, syscall.SIGHUP, ret)
}
func Test_SaveConfig(t *testing.T) {
// Save zero-valued config
testConfig := Config{
Sensors: []Sensor{},
Users: []User{},
ListenAddr: ":8080",
}
// Test writing to a path that doesn't exist
err := SaveConfig("/this/does/not/exist", testConfig)
assert.NotEqual(t, nil, err)
// Create a temp file
tmpfile, err := ioutil.TempFile("", "tempgopher")
assert.Equal(t, nil, err)
defer os.Remove(tmpfile.Name()) // Remove the tempfile when done
// Save to tempfile
err = SaveConfig(tmpfile.Name(), testConfig)
assert.Equal(t, nil, err)
// Load the config
config, err := LoadConfig(tmpfile.Name())
assert.Equal(t, nil, err)
assert.Equal(t, testConfig, *config)
}
func Test_LoadConfig(t *testing.T) { func Test_LoadConfig(t *testing.T) {
testConfig := Config{ testConfig := Config{
Sensors: []Sensor{ Sensors: []Sensor{
@ -30,17 +117,23 @@ func Test_LoadConfig(t *testing.T) {
}, },
}, },
BaseURL: "https://foo.bar", BaseURL: "https://foo.bar",
ListenAddr: "127.0.0.1:8080", ListenAddr: ":8080",
DisplayFahrenheit: true, DisplayFahrenheit: true,
Influx: Influx{Addr: "http://foo:8086"}, Influx: Influx{Addr: "http://foo:8086"},
} }
// Test loading of config
loadedConfig, err := LoadConfig("tests/test_config.yml") loadedConfig, err := LoadConfig("tests/test_config.yml")
assert.Equal(t, nil, err) assert.Equal(t, nil, err)
assert.Equal(t, &testConfig, loadedConfig) assert.Equal(t, &testConfig, loadedConfig)
// Test for failures with duplicate IDs and Aliases
_, err = LoadConfig("tests/duplicate_id.yml") _, err = LoadConfig("tests/duplicate_id.yml")
assert.NotEqual(t, nil, err) assert.NotEqual(t, nil, err)
_, err = LoadConfig("tests/duplicate_alias.yml") _, err = LoadConfig("tests/duplicate_alias.yml")
assert.NotEqual(t, nil, err) assert.NotEqual(t, nil, err)
// Test for non-existence
_, err = LoadConfig("DNE")
assert.NotEqual(t, nil, err)
} }

View file

@ -24,5 +24,4 @@ sensors:
users: users:
- foo: bar - foo: bar
baseurl: https://foo.bar baseurl: https://foo.bar
listenaddr: 127.0.0.1:8080
displayfahrenheit: true displayfahrenheit: true

View file

@ -24,5 +24,4 @@ sensors:
users: users:
- foo: bar - foo: bar
baseurl: https://foo.bar baseurl: https://foo.bar
listenaddr: 127.0.0.1:8080
displayfahrenheit: true displayfahrenheit: true

View file

@ -14,7 +14,6 @@ users:
- name: foo - name: foo
password: bar password: bar
baseurl: https://foo.bar baseurl: https://foo.bar
listenaddr: 127.0.0.1:8080
displayfahrenheit: true displayfahrenheit: true
influx: influx:
addr: http://foo:8086 addr: http://foo:8086