Fix race condition in munin output.

The munin server used the same structure in two goroutines at once causing
possible data corruption. A copy of the structure is now used by the second
goroutine instead.
This commit is contained in:
Hendrik van Wyk
2020-09-26 13:35:11 +02:00
parent 157736a99d
commit 49be089a23
3 changed files with 65 additions and 43 deletions

View File

@@ -0,0 +1,29 @@
package munin
import (
"io/ioutil"
"net/http"
"net/http/httptest"
"testing"
"github.com/diebietse/invertergui/mk2driver"
)
func TestServer(t *testing.T) {
mockMk2 := mk2driver.NewMk2Mock()
muninServer := NewMunin(mockMk2)
ts := httptest.NewServer(http.HandlerFunc(muninServer.ServeMuninHTTP))
defer ts.Close()
res, err := http.Get(ts.URL)
if err != nil {
log.Fatal(err)
}
_, err = ioutil.ReadAll(res.Body)
res.Body.Close()
if err != nil {
log.Fatal(err)
}
}