Skip to content

Commit c23fd3e

Browse files
committed
util/log: dedup some code by providing FromLogEntry
Epic: none Release note: None
1 parent 7f6207d commit c23fd3e

File tree

5 files changed

+11
-31
lines changed

5 files changed

+11
-31
lines changed

pkg/jobs/jobs_test.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ package jobs_test
88
import (
99
"context"
1010
gosql "database/sql"
11-
"encoding/json"
1211
"fmt"
1312
"path/filepath"
1413
"reflect"
@@ -232,14 +231,7 @@ func (rts *registryTestSuite) setUp(t *testing.T) func() {
232231
t,
233232
[]logpb.Channel{logpb.Channel_OPS},
234233
[]string{"status_change"},
235-
func(entry logpb.Entry) (eventpb.StatusChange, error) {
236-
var structuredPayload eventpb.StatusChange
237-
err := json.Unmarshal([]byte(entry.Message[entry.StructuredStart:entry.StructuredEnd]), &structuredPayload)
238-
if err != nil {
239-
return structuredPayload, err
240-
}
241-
return structuredPayload, nil
242-
},
234+
logtestutils.FromLogEntry[eventpb.StatusChange],
243235
)
244236

245237
rts.statusChangeLogSpy = spy

pkg/sql/event_log_test.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,13 +125,7 @@ func TestStructuredEventLogging_txnReadTimestamp(t *testing.T) {
125125
t,
126126
[]logpb.Channel{logpb.Channel_SQL_SCHEMA},
127127
[]string{"create_table"},
128-
func(entry logpb.Entry) (eventpb.CreateTable, error) {
129-
var cte eventpb.CreateTable
130-
if err := json.Unmarshal([]byte(entry.Message[entry.StructuredStart:entry.StructuredEnd]), &cte); err != nil {
131-
return cte, err
132-
}
133-
return cte, nil
134-
},
128+
logtestutils.FromLogEntry[eventpb.CreateTable],
135129
)
136130

137131
cleanup := log.InterceptWith(ctx, appLogsSpy)

pkg/sql/sql_exec_log_test.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ package sql
77

88
import (
99
"context"
10-
"encoding/json"
1110
"testing"
1211

1312
"github.com/cockroachdb/cockroach/pkg/base"
@@ -38,13 +37,7 @@ func TestSqlExecLog(t *testing.T) {
3837
t,
3938
[]logpb.Channel{logpb.Channel_SQL_EXEC},
4039
[]string{"query_execute"},
41-
func(entry logpb.Entry) (eventpb.QueryExecute, error) {
42-
var qe eventpb.QueryExecute
43-
if err := json.Unmarshal([]byte(entry.Message[entry.StructuredStart:entry.StructuredEnd]), &qe); err != nil {
44-
return qe, err
45-
}
46-
return qe, nil
47-
},
40+
logtestutils.FromLogEntry[eventpb.QueryExecute],
4841
func(entry logpb.Entry, qe eventpb.QueryExecute) bool {
4942
// Filter out internal queries.
5043
return qe.ExecMode != executorTypeInternal.logLabel()

pkg/util/log/event_log_test.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ package log_test
77

88
import (
99
"context"
10-
"encoding/json"
1110
"testing"
1211
"time"
1312

@@ -73,12 +72,8 @@ func TestEventLog(t *testing.T) {
7372
[]logpb.Channel{logpb.Channel_DEV},
7473
[]string{logtestutils.TestEventType},
7574
func(entry logpb.Entry) (TestEventSev, error) {
76-
var structuredPayload logtestutils.TestEvent
77-
err := json.Unmarshal([]byte(entry.Message[entry.StructuredStart:entry.StructuredEnd]), &structuredPayload)
78-
if err != nil {
79-
return TestEventSev{event: structuredPayload, severity: entry.Severity}, err
80-
}
81-
return TestEventSev{event: structuredPayload, severity: entry.Severity}, nil
75+
te, err := logtestutils.FromLogEntry[logtestutils.TestEvent](entry)
76+
return TestEventSev{event: te, severity: entry.Severity}, err
8277
},
8378
)
8479

pkg/util/log/logtestutils/structured_log_spy.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,12 @@ func FormatEntryAsJSON(entry logpb.Entry) (string, error) {
104104
return printJSONMap(jsonMap)
105105
}
106106

107+
func FromLogEntry[T any](entry logpb.Entry) (T, error) {
108+
var payload T
109+
err := json.Unmarshal([]byte(entry.Message[entry.StructuredStart:entry.StructuredEnd]), &payload)
110+
return payload, err
111+
}
112+
107113
// StructuredLogSpy is a test utility that intercepts structured log entries
108114
// and stores them in memory. It can be used to verify the contents of log
109115
// entries in tests.

0 commit comments

Comments
 (0)