github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/influx/client_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package influx 5 6 import ( 7 "errors" 8 "testing" 9 10 "github.com/SAP/jenkins-library/pkg/influx/mocks" 11 "github.com/stretchr/testify/mock" 12 ) 13 14 func TestWriteMetrics(t *testing.T) { 15 errWriteMetrics := errors.New("error") 16 tests := []struct { 17 name string 18 dataMap map[string]map[string]interface{} 19 dataMapTags map[string]map[string]string 20 writePointErr error 21 err error 22 }{ 23 { 24 "Test writing metrics - success", 25 map[string]map[string]interface{}{ 26 "series_1": {"field_a": 11, "field_b": 12}, 27 "series_2": {"field_c": 21, "field_d": 22}, 28 }, 29 map[string]map[string]string{ 30 "series_1": {"tag_a": "a", "tag_b": "b"}, 31 "series_2": {"tag_c": "c", "tag_d": "d"}, 32 }, 33 nil, 34 nil, 35 }, 36 { 37 "Test writing metrics - failed", 38 map[string]map[string]interface{}{ 39 "series_1": {"field_a": 11, "field_b": 12}, 40 "series_2": {"field_c": 21, "field_d": 22}, 41 }, 42 map[string]map[string]string{ 43 "series_1": {"tag_a": "a", "tag_b": "b"}, 44 "series_2": {"tag_c": "c", "tag_d": "d"}, 45 }, 46 errWriteMetrics, 47 errWriteMetrics, 48 }, 49 } 50 51 for _, tt := range tests { 52 t.Run(tt.name, func(t *testing.T) { 53 influxClientMock := &mocks.Client{} 54 client := NewClient(influxClientMock, "org", "piper") 55 writeAPIBlockingMock := &mocks.WriteAPIBlocking{} 56 writeAPIBlockingMock.On("WritePoint", client.ctx, mock.Anything).Return(tt.writePointErr) 57 influxClientMock.On("WriteAPIBlocking", client.organization, client.bucket).Return(writeAPIBlockingMock) 58 err := client.WriteMetrics(tt.dataMap, tt.dataMapTags) 59 if err != tt.err { 60 t.Errorf("\nactual: %q\nexpected: %q\n", err, tt.err) 61 } 62 }) 63 } 64 65 }