TestTrace enables tracing after connection established

This avoids locking to a specific version of the server.
non-blocking
Jack Christensen 2022-05-23 17:52:10 -05:00
parent 67635f896c
commit b59cd50508
1 changed files with 8 additions and 34 deletions

View File

@ -3,7 +3,6 @@ package pgproto3_test
import ( import (
"bytes" "bytes"
"context" "context"
"io"
"os" "os"
"testing" "testing"
"time" "time"
@ -19,45 +18,20 @@ func TestTrace(t *testing.T) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() defer cancel()
config, err := pgconn.ParseConfig(os.Getenv("PGX_TEST_CONN_STRING")) conn, err := pgconn.Connect(ctx, os.Getenv("PGX_TEST_CONN_STRING"))
require.NoError(t, err) require.NoError(t, err)
defer conn.Close(ctx)
traceOutput := &bytes.Buffer{} traceOutput := &bytes.Buffer{}
conn.Frontend().Trace(traceOutput, pgproto3.TracerOptions{
config.BuildFrontend = func(r io.Reader, w io.Writer) *pgproto3.Frontend {
f := pgproto3.NewFrontend(r, w)
f.Trace(traceOutput, pgproto3.TracerOptions{
SuppressTimestamps: true, SuppressTimestamps: true,
RegressMode: true, RegressMode: true,
}) })
return f
}
conn, err := pgconn.ConnectConfig(ctx, config)
require.NoError(t, err)
defer conn.Close(ctx)
result := conn.ExecParams(ctx, "select n from generate_series(1,5) n", nil, nil, nil, nil).Read() result := conn.ExecParams(ctx, "select n from generate_series(1,5) n", nil, nil, nil, nil).Read()
require.NoError(t, result.Err) require.NoError(t, result.Err)
expected := `F StartupMessage 37 expected := `F Parse 45 "" "select n from generate_series(1,5) n" 0
B AuthenticationOk 9
B ParameterStatus 23 "application_name" ""
B ParameterStatus 26 "client_encoding" "UTF8"
B ParameterStatus 24 "DateStyle" "ISO, MDY"
B ParameterStatus 39 "default_transaction_read_only" "off"
B ParameterStatus 24 "in_hot_standby" "off"
B ParameterStatus 26 "integer_datetimes" "on"
B ParameterStatus 28 "IntervalStyle" "postgres"
B ParameterStatus 21 "is_superuser" "on"
B ParameterStatus 26 "server_encoding" "UTF8"
B ParameterStatus 25 "server_version" "14.3"
B ParameterStatus 32 "session_authorization" "jack"
B ParameterStatus 36 "standard_conforming_strings" "on"
B ParameterStatus 30 "TimeZone" "America/Chicago"
B BackendKeyData 13 NNNN NNNN
B ReadyForQuery 6 I
F Parse 45 "" "select n from generate_series(1,5) n" 0
F Bind 13 "" "" 0 0 0 F Bind 13 "" "" 0 0 0
F Describe 7 P "" F Describe 7 P ""
F Execute 10 "" 0 F Execute 10 "" 0