test(pkg/logfile/convert): add test for cross converting between logfiles
This commit is contained in:
parent
6707dabdf1
commit
1e25b55789
@ -84,16 +84,14 @@ func (cl *csvLogfile) ReadTemperatures() ([]*types.Temperature, error) {
|
|||||||
SensorID: record[4],
|
SensorID: record[4],
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(record) == 6 && record[5] != "" {
|
// Creation date
|
||||||
temperatureCreationDate, err := time.Parse(timeFormat, record[5])
|
temperatureCreationDate, err := time.Parse(timeFormat, record[5])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("%v %v: %v", errorParseTime, record[5], err)
|
return nil, fmt.Errorf("%v %v: %v", errorParseTime, record[5], err)
|
||||||
}
|
}
|
||||||
|
|
||||||
temperature.CreationDate = &temperatureCreationDate
|
temperature.CreationDate = &temperatureCreationDate
|
||||||
}
|
|
||||||
|
|
||||||
if len(record) == 7 && record[6] != "" {
|
if record[6] != "" {
|
||||||
temperatureUpdateDate, err := time.Parse(timeFormat, record[6])
|
temperatureUpdateDate, err := time.Parse(timeFormat, record[6])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("%v %v: %v", errorParseTime, record[6], err)
|
return nil, fmt.Errorf("%v %v: %v", errorParseTime, record[6], err)
|
||||||
|
@ -1,90 +0,0 @@
|
|||||||
package logfile_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/go-flucky/flucky/pkg/logfile"
|
|
||||||
"github.com/go-flucky/flucky/pkg/types"
|
|
||||||
uuid "github.com/satori/go.uuid"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
|
||||||
|
|
||||||
var tmpDir string
|
|
||||||
|
|
||||||
func TestJSON(t *testing.T) {
|
|
||||||
require := require.New(t)
|
|
||||||
|
|
||||||
tmpDir = filepath.Join(os.TempDir(), uuid.NewV4().String())
|
|
||||||
err := os.MkdirAll(tmpDir, 0775)
|
|
||||||
require.Nil(err)
|
|
||||||
|
|
||||||
testCases := []*testCase{
|
|
||||||
&testCase{
|
|
||||||
name: "validateTemperatures",
|
|
||||||
f: testValidateTemperatures,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, testCase := range testCases {
|
|
||||||
err := t.Run(testCase.name, testCase.f)
|
|
||||||
require.True(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// func testCompressTemperatures(t *testing.T) {
|
|
||||||
// require := require.New(t)
|
|
||||||
|
|
||||||
// assets := []string{
|
|
||||||
// "pkg/logfile/test/json/faultyTemperatures_01.json",
|
|
||||||
// "pkg/logfile/test/json/faultyTemperatures_02.json",
|
|
||||||
// "pkg/logfile/test/json/faultyTemperatures_03.json",
|
|
||||||
// "pkg/logfile/test/json/faultyTemperatures_04.json",
|
|
||||||
// "pkg/logfile/test/json/faultyTemperatures_05.json",
|
|
||||||
// }
|
|
||||||
|
|
||||||
// for i, asset := range assets {
|
|
||||||
// l := filepath.Join(tmpDir, fmt.Sprintf("%v.json", i))
|
|
||||||
// temperatures, err := saveAndReadTemperatureAsset(t, logfile.New(l), asset)
|
|
||||||
// require.Nil(err, "%v", err)
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
func testValidateTemperatures(t *testing.T) {
|
|
||||||
require := require.New(t)
|
|
||||||
|
|
||||||
assets := []string{
|
|
||||||
"pkg/logfile/test/json/faultyTemperatures_01.json",
|
|
||||||
"pkg/logfile/test/json/faultyTemperatures_02.json",
|
|
||||||
"pkg/logfile/test/json/faultyTemperatures_03.json",
|
|
||||||
"pkg/logfile/test/json/faultyTemperatures_04.json",
|
|
||||||
"pkg/logfile/test/json/faultyTemperatures_05.json",
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, asset := range assets {
|
|
||||||
l := filepath.Join(tmpDir, fmt.Sprintf("%v.json", i))
|
|
||||||
temperatures, err := saveAndReadTemperatureAsset(t, logfile.New(l), asset)
|
|
||||||
require.Nil(err, "%v", err)
|
|
||||||
|
|
||||||
err = logfile.ValidateTemperatures(temperatures)
|
|
||||||
require.Errorf(err, "Asset %v", asset)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func saveAndReadTemperatureAsset(t *testing.T, logfile logfile.Logfile, a string) ([]*types.Temperature, error) {
|
|
||||||
require := require.New(t)
|
|
||||||
|
|
||||||
f, err := os.Create(logfile.GetLogfile())
|
|
||||||
require.Nil(err)
|
|
||||||
f.Write(MustAsset(a))
|
|
||||||
f.Close()
|
|
||||||
|
|
||||||
temperatures, err := logfile.ReadTemperatures()
|
|
||||||
require.Nil(err, "%v", err)
|
|
||||||
|
|
||||||
return temperatures, nil
|
|
||||||
}
|
|
@ -1,8 +1,104 @@
|
|||||||
package logfile_test
|
package logfile_test
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
type testCase struct {
|
"github.com/go-flucky/flucky/pkg/logfile"
|
||||||
name string
|
uuid "github.com/satori/go.uuid"
|
||||||
f func(t *testing.T)
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
var tmpDir = os.TempDir()
|
||||||
|
|
||||||
|
type interfaceMap struct {
|
||||||
|
testFile string
|
||||||
|
logfileA logfile.Logfile
|
||||||
|
goldenFile string
|
||||||
|
logfileB logfile.Logfile
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestConvert(t *testing.T) {
|
||||||
|
require := require.New(t)
|
||||||
|
|
||||||
|
markupLanguages := []string{"csv", "json", "xml"}
|
||||||
|
|
||||||
|
for _, markupLanguageFrom := range markupLanguages {
|
||||||
|
testDir, cleanup := createTestDir(t)
|
||||||
|
defer cleanup()
|
||||||
|
|
||||||
|
for _, markupLanguageTo := range markupLanguages {
|
||||||
|
|
||||||
|
convertMaps := []*interfaceMap{
|
||||||
|
&interfaceMap{
|
||||||
|
testFile: fmt.Sprintf("pkg/logfile/test/%v/validTemperatures_01.%v", markupLanguageFrom, markupLanguageFrom),
|
||||||
|
logfileA: logfile.New(filepath.Join(testDir, fmt.Sprintf("validTemperatures_01.%v", markupLanguageFrom))),
|
||||||
|
goldenFile: fmt.Sprintf("pkg/logfile/test/%v/validTemperatures_01.%v", markupLanguageTo, markupLanguageTo),
|
||||||
|
logfileB: logfile.New(filepath.Join(testDir, fmt.Sprintf("validTemperatures_01.%v", markupLanguageTo))),
|
||||||
|
},
|
||||||
|
&interfaceMap{
|
||||||
|
testFile: fmt.Sprintf("pkg/logfile/test/%v/validTemperatures_02.%v", markupLanguageFrom, markupLanguageFrom),
|
||||||
|
logfileA: logfile.New(filepath.Join(testDir, fmt.Sprintf("validTemperatures_02.%v", markupLanguageFrom))),
|
||||||
|
goldenFile: fmt.Sprintf("pkg/logfile/test/%v/validTemperatures_02.%v", markupLanguageTo, markupLanguageTo),
|
||||||
|
logfileB: logfile.New(filepath.Join(testDir, fmt.Sprintf("validTemperatures_02.%v", markupLanguageTo))),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
createTestFiles(t, convertMaps)
|
||||||
|
|
||||||
|
for _, convertMap := range convertMaps {
|
||||||
|
temperatures, err := convertMap.logfileA.ReadTemperatures()
|
||||||
|
require.Nil(err)
|
||||||
|
|
||||||
|
err = convertMap.logfileB.WriteTemperatures(temperatures)
|
||||||
|
require.Nil(err)
|
||||||
|
|
||||||
|
verifyFileWithAsset(t, convertMap.logfileB.GetLogfile(), convertMap.goldenFile)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func createTestFiles(t *testing.T, interfaceMaps []*interfaceMap) {
|
||||||
|
require := require.New(t)
|
||||||
|
|
||||||
|
for _, interfaceMap := range interfaceMaps {
|
||||||
|
f, err := os.Create(interfaceMap.logfileA.GetLogfile())
|
||||||
|
require.Nil(err)
|
||||||
|
f.Write(MustAsset(interfaceMap.testFile))
|
||||||
|
f.Close()
|
||||||
|
|
||||||
|
verifyFileWithAsset(t, interfaceMap.logfileA.GetLogfile(), interfaceMap.testFile)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func createTestDir(t *testing.T) (string, func() error) {
|
||||||
|
require := require.New(t)
|
||||||
|
|
||||||
|
testDir := filepath.Join(tmpDir, uuid.NewV4().String())
|
||||||
|
|
||||||
|
err := os.MkdirAll(testDir, 0755)
|
||||||
|
require.Nil(err)
|
||||||
|
|
||||||
|
rmDir := func() error {
|
||||||
|
return os.RemoveAll(testDir)
|
||||||
|
}
|
||||||
|
|
||||||
|
return testDir, rmDir
|
||||||
|
}
|
||||||
|
|
||||||
|
func verifyFileWithAsset(t *testing.T, file string, asset string) {
|
||||||
|
require := require.New(t)
|
||||||
|
f, err := os.Open(file)
|
||||||
|
require.Nil(err)
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
bytes, err := ioutil.ReadAll(f)
|
||||||
|
require.Nil(err)
|
||||||
|
|
||||||
|
require.Equalf(string(MustAsset(asset)), string(bytes), "Asset %v and file %v not even", asset, file)
|
||||||
}
|
}
|
||||||
|
2
pkg/logfile/test/csv/validTemperatures_02.csv
Normal file
2
pkg/logfile/test/csv/validTemperatures_02.csv
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
a469503b-fc16-4e72-8d29-7eeee08ba957,24.562,2019-06-14 21:15:28.504051541 +0200,2019-06-14 21:18:07.384104493 +0200,84eac248-6927-4db6-b6f9-7891ce2d301e,2019-06-14 21:18:07.465885864 +0200,2019-06-14 21:18:07.46587076 +0200
|
||||||
|
5f119ba3-bcea-4c3b-aabb-0406ea70f7e1,24.375,2019-06-14 21:15:28.583856443 +0200,2019-06-14 21:15:28.583856443 +0200,efcd755e-82d1-4789-a50b-355b8735b8d8,2019-06-14 21:18:07.465885864 +0200,
|
|
20
pkg/logfile/test/xml/validTemperatures_01.xml
Normal file
20
pkg/logfile/test/xml/validTemperatures_01.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<temperatures>
|
||||||
|
<temperature>
|
||||||
|
<temperature_id>a469503b-fc16-4e72-8d29-7eeee08ba957</temperature_id>
|
||||||
|
<temperature_value>24.562</temperature_value>
|
||||||
|
<temperature_from_date>2019-06-14T21:15:28.504051541+02:00</temperature_from_date>
|
||||||
|
<temperature_till_date>2019-06-14T21:18:07.384104493+02:00</temperature_till_date>
|
||||||
|
<sensor_id>84eac248-6927-4db6-b6f9-7891ce2d301e</sensor_id>
|
||||||
|
<creation_date>2019-06-14T21:18:07.465885864+02:00</creation_date>
|
||||||
|
<update_date>2019-06-14T21:18:07.46587076+02:00</update_date>
|
||||||
|
</temperature>
|
||||||
|
<temperature>
|
||||||
|
<temperature_id>5f119ba3-bcea-4c3b-aabb-0406ea70f7e1</temperature_id>
|
||||||
|
<temperature_value>24.375</temperature_value>
|
||||||
|
<temperature_from_date>2019-06-14T21:15:28.583856443+02:00</temperature_from_date>
|
||||||
|
<temperature_till_date>2019-06-14T21:18:07.463893776+02:00</temperature_till_date>
|
||||||
|
<sensor_id>efcd755e-82d1-4789-a50b-355b8735b8d8</sensor_id>
|
||||||
|
<creation_date>2019-06-14T21:18:07.465885864+02:00</creation_date>
|
||||||
|
<update_date>2019-06-14T21:18:07.46587701+02:00</update_date>
|
||||||
|
</temperature>
|
||||||
|
</temperatures>
|
19
pkg/logfile/test/xml/validTemperatures_02.xml
Normal file
19
pkg/logfile/test/xml/validTemperatures_02.xml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<temperatures>
|
||||||
|
<temperature>
|
||||||
|
<temperature_id>a469503b-fc16-4e72-8d29-7eeee08ba957</temperature_id>
|
||||||
|
<temperature_value>24.562</temperature_value>
|
||||||
|
<temperature_from_date>2019-06-14T21:15:28.504051541+02:00</temperature_from_date>
|
||||||
|
<temperature_till_date>2019-06-14T21:18:07.384104493+02:00</temperature_till_date>
|
||||||
|
<sensor_id>84eac248-6927-4db6-b6f9-7891ce2d301e</sensor_id>
|
||||||
|
<creation_date>2019-06-14T21:18:07.465885864+02:00</creation_date>
|
||||||
|
<update_date>2019-06-14T21:18:07.46587076+02:00</update_date>
|
||||||
|
</temperature>
|
||||||
|
<temperature>
|
||||||
|
<temperature_id>5f119ba3-bcea-4c3b-aabb-0406ea70f7e1</temperature_id>
|
||||||
|
<temperature_value>24.375</temperature_value>
|
||||||
|
<temperature_from_date>2019-06-14T21:15:28.583856443+02:00</temperature_from_date>
|
||||||
|
<temperature_till_date>2019-06-14T21:15:28.583856443+02:00</temperature_till_date>
|
||||||
|
<sensor_id>efcd755e-82d1-4789-a50b-355b8735b8d8</sensor_id>
|
||||||
|
<creation_date>2019-06-14T21:18:07.465885864+02:00</creation_date>
|
||||||
|
</temperature>
|
||||||
|
</temperatures>
|
@ -4,7 +4,6 @@ import (
|
|||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/go-flucky/flucky/pkg/types"
|
"github.com/go-flucky/flucky/pkg/types"
|
||||||
@ -63,8 +62,6 @@ func (xl *xmlLogfile) ReadTemperatures() ([]*types.Temperature, error) {
|
|||||||
return nil, fmt.Errorf("%v: %v", errorLogfileUnmarshal, err)
|
return nil, fmt.Errorf("%v: %v", errorLogfileUnmarshal, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Println(len(tmpTemperatures.Temperatures))
|
|
||||||
|
|
||||||
temperatures := make([]*types.Temperature, 0)
|
temperatures := make([]*types.Temperature, 0)
|
||||||
|
|
||||||
for _, tmpTemperature := range tmpTemperatures.Temperatures {
|
for _, tmpTemperature := range tmpTemperatures.Temperatures {
|
||||||
|
Loading…
Reference in New Issue
Block a user