summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/pkg/logs/csv_test.go
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-08-26 08:15:24 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-08-26 08:15:35 +0000
commitf09848204fa5283d21ea43e262ee41aa578e1808 (patch)
treec62385d7adf209fa6a798635954d887f718fb3fb /src/go/collectors/go.d.plugin/pkg/logs/csv_test.go
parentReleasing debian version 1.46.3-2. (diff)
downloadnetdata-f09848204fa5283d21ea43e262ee41aa578e1808.tar.xz
netdata-f09848204fa5283d21ea43e262ee41aa578e1808.zip
Merging upstream version 1.47.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/go/collectors/go.d.plugin/pkg/logs/csv_test.go')
-rw-r--r--src/go/collectors/go.d.plugin/pkg/logs/csv_test.go175
1 files changed, 0 insertions, 175 deletions
diff --git a/src/go/collectors/go.d.plugin/pkg/logs/csv_test.go b/src/go/collectors/go.d.plugin/pkg/logs/csv_test.go
deleted file mode 100644
index d7baaa1b5..000000000
--- a/src/go/collectors/go.d.plugin/pkg/logs/csv_test.go
+++ /dev/null
@@ -1,175 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-package logs
-
-import (
- "strings"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-)
-
-var testCSVConfig = CSVConfig{
- Delimiter: " ",
- Format: "$A %B",
-}
-
-func TestNewCSVParser(t *testing.T) {
- tests := []struct {
- name string
- format string
- wantErr bool
- }{
- {name: "valid format", format: "$A $B"},
- {name: "empty format", wantErr: true},
- {name: "bad format: csv read error", format: "$A $B \"$C", wantErr: true},
- {name: "bad format: duplicate fields", format: "$A $A", wantErr: true},
- {name: "bad format: zero fields", format: "!A !B", wantErr: true},
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- c := testCSVConfig
- c.Format = tt.format
- p, err := NewCSVParser(c, nil)
- if tt.wantErr {
- assert.Error(t, err)
- assert.Nil(t, p)
- } else {
- assert.NoError(t, err)
- assert.NotNil(t, p)
- }
- })
- }
-}
-
-func TestNewCSVFormat(t *testing.T) {
- tests := []struct {
- format string
- wantFormat csvFormat
- wantErr bool
- }{
- {format: "$A $B", wantFormat: csvFormat{maxIndex: 1, fields: []csvField{{"$A", 0}, {"$B", 1}}}},
- {format: "$A $B !C $E", wantFormat: csvFormat{maxIndex: 3, fields: []csvField{{"$A", 0}, {"$B", 1}, {"$E", 3}}}},
- {format: "!A !B !C $E", wantFormat: csvFormat{maxIndex: 3, fields: []csvField{{"$E", 3}}}},
- {format: "$A $OFFSET $B", wantFormat: csvFormat{maxIndex: 3, fields: []csvField{{"$A", 0}, {"$B", 3}}}},
- {format: "$A $OFFSET $B $OFFSET !A", wantFormat: csvFormat{maxIndex: 3, fields: []csvField{{"$A", 0}, {"$B", 3}}}},
- {format: "$A $OFFSET $OFFSET $B", wantFormat: csvFormat{maxIndex: 5, fields: []csvField{{"$A", 0}, {"$B", 5}}}},
- {format: "$OFFSET $A $OFFSET $B", wantFormat: csvFormat{maxIndex: 5, fields: []csvField{{"$A", 2}, {"$B", 5}}}},
- {format: "$A \"$A", wantErr: true},
- {format: "$A $A", wantErr: true},
- {format: "!A !A", wantErr: true},
- {format: "", wantErr: true},
- }
-
- for _, tt := range tests {
- t.Run(tt.format, func(t *testing.T) {
- c := testCSVConfig
- c.Format = tt.format
- c.CheckField = testCheckCSVFormatField
- tt.wantFormat.raw = tt.format
-
- f, err := newCSVFormat(c)
-
- if tt.wantErr {
- assert.Error(t, err)
- assert.Nil(t, f)
- } else {
- assert.NoError(t, err)
- assert.Equal(t, tt.wantFormat, *f)
- }
- })
- }
-}
-
-func TestCSVParser_ReadLine(t *testing.T) {
- tests := []struct {
- name string
- row string
- format string
- wantErr bool
- wantParseErr bool
- }{
- {name: "match and no error", row: "1 2 3", format: `$A $B $C`},
- {name: "match but error on assigning", row: "1 2 3", format: `$A $B $ERR`, wantErr: true, wantParseErr: true},
- {name: "not match", row: "1 2 3", format: `$A $B $C $d`, wantErr: true, wantParseErr: true},
- {name: "error on reading csv.Err", row: "1 2\"3", format: `$A $B $C`, wantErr: true, wantParseErr: true},
- {name: "error on reading EOF", row: "", format: `$A $B $C`, wantErr: true},
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- var line logLine
- r := strings.NewReader(tt.row)
- c := testCSVConfig
- c.Format = tt.format
- p, err := NewCSVParser(c, r)
- require.NoError(t, err)
-
- err = p.ReadLine(&line)
-
- if tt.wantErr {
- require.Error(t, err)
- if tt.wantParseErr {
- assert.True(t, IsParseError(err))
- } else {
- assert.False(t, IsParseError(err))
- }
- } else {
- assert.NoError(t, err)
- }
- })
- }
-}
-
-func TestCSVParser_Parse(t *testing.T) {
- tests := []struct {
- name string
- row string
- format string
- wantErr bool
- }{
- {name: "match and no error", row: "1 2 3", format: `$A $B $C`},
- {name: "match but error on assigning", row: "1 2 3", format: `$A $B $ERR`, wantErr: true},
- {name: "not match", row: "1 2 3", format: `$A $B $C $d`, wantErr: true},
- {name: "error on reading csv.Err", row: "1 2\"3", format: `$A $B $C`, wantErr: true},
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- var line logLine
- r := strings.NewReader(tt.row)
- c := testCSVConfig
- c.Format = tt.format
- p, err := NewCSVParser(c, r)
- require.NoError(t, err)
-
- err = p.ReadLine(&line)
-
- if tt.wantErr {
- require.Error(t, err)
- assert.True(t, IsParseError(err))
- } else {
- assert.NoError(t, err)
- }
- })
- }
-
-}
-
-func TestCSVParser_Info(t *testing.T) {
- p, err := NewCSVParser(testCSVConfig, nil)
- require.NoError(t, err)
- assert.NotZero(t, p.Info())
-}
-
-func testCheckCSVFormatField(name string) (newName string, offset int, valid bool) {
- if len(name) < 2 || !strings.HasPrefix(name, "$") {
- return "", 0, false
- }
- if name == "$OFFSET" {
- return "", 1, false
- }
- return name, 0, true
-}