MCPcopy Create free account
hub / github.com/netdata/netdata / TestQueryRows

Function TestQueryRows

src/go/plugin/go.d/pkg/sqlquery/query_test.go:15–116  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

13)
14
15func TestQueryRows(t *testing.T) {
16 t.Run("streams rows with rowEnd markers", func(t *testing.T) {
17 db, mock, err := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
18 require.NoError(t, err)
19 defer func() { _ = db.Close() }()
20
21 mock.ExpectQuery("SELECT a, b").
22 WillReturnRows(sqlmock.NewRows([]string{"a", "b"}).
23 AddRow("x", "1").
24 AddRow("y", "2"))
25
26 var got []struct {
27 column string
28 value string
29 rowEnd bool
30 }
31 dur, err := QueryRows(context.Background(), db, "SELECT a, b", func(column, value string, rowEnd bool) {
32 got = append(got, struct {
33 column string
34 value string
35 rowEnd bool
36 }{column: column, value: value, rowEnd: rowEnd})
37 })
38 require.NoError(t, err)
39 assert.GreaterOrEqual(t, dur.Milliseconds(), int64(0))
40
41 require.Len(t, got, 4)
42 assert.Equal(t, "a", got[0].column)
43 assert.Equal(t, "x", got[0].value)
44 assert.False(t, got[0].rowEnd)
45 assert.Equal(t, "b", got[1].column)
46 assert.Equal(t, "1", got[1].value)
47 assert.True(t, got[1].rowEnd)
48 assert.Equal(t, "a", got[2].column)
49 assert.Equal(t, "y", got[2].value)
50 assert.False(t, got[2].rowEnd)
51 assert.Equal(t, "b", got[3].column)
52 assert.Equal(t, "2", got[3].value)
53 assert.True(t, got[3].rowEnd)
54 assert.NoError(t, mock.ExpectationsWereMet())
55 })
56
57 t.Run("null values are converted to empty string", func(t *testing.T) {
58 db, mock, err := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
59 require.NoError(t, err)
60 defer func() { _ = db.Close() }()
61
62 mock.ExpectQuery("SELECT a").
63 WillReturnRows(sqlmock.NewRows([]string{"a"}).AddRow(nil))
64
65 var values []string
66 _, err = QueryRows(context.Background(), db, "SELECT a", func(_ string, value string, _ bool) {
67 values = append(values, value)
68 })
69 require.NoError(t, err)
70 require.Len(t, values, 1)
71 assert.Equal(t, "", values[0])
72 assert.NoError(t, mock.ExpectationsWereMet())

Callers

nothing calls this directly

Calls 7

QueryRowsFunction · 0.85
EqualMethod · 0.80
RunMethod · 0.65
NewMethod · 0.65
CloseMethod · 0.65
LenMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…