test: replace manual config struct literals with constructors

This commit is contained in:
Jay
2026-06-04 19:56:00 -04:00
parent a6d412c31d
commit 84aa9aaf98
3 changed files with 84 additions and 107 deletions
+9 -24
View File
@@ -21,14 +21,9 @@ func setupPool(t *testing.T) (*Pool, *honeybeetest.MockDialer) {
return honeybeetest.NewMockSocket(), nil, nil return honeybeetest.NewMockSocket(), nil, nil
}, },
} }
cc := *transport.GetDefaultConnectionConfig() cc, _ := transport.NewConnectionConfig(transport.WithConnectionDialer(dialer))
cc.Dialer = dialer config, _ := NewPoolConfig(WithConnectionConfig(*cc))
pool, err := NewPool(context.Background(), &PoolConfig{ pool, err := NewPool(context.Background(), config, nil)
InboxBufferSize: 256,
EventsBufferSize: 10,
ConnectionConfig: cc,
WorkerConfig: *GetDefaultWorkerConfig(),
}, nil)
assert.NoError(t, err) assert.NoError(t, err)
return pool, dialer return pool, dialer
} }
@@ -108,14 +103,9 @@ func TestPoolConnectWithDialer(t *testing.T) {
}, },
} }
cc := *transport.GetDefaultConnectionConfig() cc, _ := transport.NewConnectionConfig(transport.WithConnectionDialer(poolDialer))
cc.Dialer = poolDialer config, _ := NewPoolConfig(WithConnectionConfig(*cc))
pool, err := NewPool(context.Background(), &PoolConfig{ pool, err := NewPool(context.Background(), config, nil)
InboxBufferSize: 256,
EventsBufferSize: 10,
ConnectionConfig: cc,
WorkerConfig: *GetDefaultWorkerConfig(),
}, nil)
assert.NoError(t, err) assert.NoError(t, err)
err = pool.Connect("wss://test", WithDialer(perCallDialer)) err = pool.Connect("wss://test", WithDialer(perCallDialer))
@@ -204,14 +194,9 @@ func TestPoolSend(t *testing.T) {
}, },
} }
cc := *transport.GetDefaultConnectionConfig() cc, _ := transport.NewConnectionConfig(transport.WithConnectionDialer(mockDialer))
cc.Dialer = mockDialer config, _ := NewPoolConfig(WithConnectionConfig(*cc))
pool, err := NewPool(context.Background(), &PoolConfig{ pool, err := NewPool(context.Background(), config, nil)
InboxBufferSize: 256,
EventsBufferSize: 10,
ConnectionConfig: cc,
WorkerConfig: *GetDefaultWorkerConfig(),
}, nil)
assert.NoError(t, err) assert.NoError(t, err)
err = pool.Connect("wss://test") err = pool.Connect("wss://test")
+56 -60
View File
@@ -68,9 +68,12 @@ func TestNewConnection(t *testing.T) {
config: nil, config: nil,
}, },
{ {
name: "valid url, valid config", name: "valid url, valid config",
url: "wss://relay.example.com:8080/path", url: "wss://relay.example.com:8080/path",
config: &ConnectionConfig{WriteTimeout: 30 * time.Second, Retry: RetryConfig{Disabled: true}}, config: func() *ConnectionConfig {
c, _ := NewConnectionConfig(WithWriteTimeout(30*time.Second), WithRetryDisabled())
return c
}(),
}, },
{ {
name: "invalid url", name: "invalid url",
@@ -157,7 +160,10 @@ func TestNewConnectionFromSocket(t *testing.T) {
{ {
name: "valid socket with valid config", name: "valid socket with valid config",
socket: honeybeetest.NewMockSocket(), socket: honeybeetest.NewMockSocket(),
config: &ConnectionConfig{WriteTimeout: 30 * time.Second, Retry: RetryConfig{Disabled: true}}, config: func() *ConnectionConfig {
c, _ := NewConnectionConfig(WithWriteTimeout(30*time.Second), WithRetryDisabled())
return c
}(),
}, },
{ {
name: "invalid config", name: "invalid config",
@@ -174,12 +180,13 @@ func TestNewConnectionFromSocket(t *testing.T) {
{ {
name: "close handler set when provided", name: "close handler set when provided",
socket: honeybeetest.NewMockSocket(), socket: honeybeetest.NewMockSocket(),
config: &ConnectionConfig{ config: func() *ConnectionConfig {
CloseHandler: func(code int, text string) error { c, _ := NewConnectionConfig(
return nil WithCloseHandler(func(code int, text string) error { return nil }),
}, WithRetryDisabled(),
Retry: RetryConfig{Disabled: true}, )
}, return c
}(),
}, },
} }
@@ -287,8 +294,8 @@ func TestConnect(t *testing.T) {
return mockSocket, nil, nil return mockSocket, nil, nil
}, },
} }
conn, err := NewConnection(context.Background(), "ws://test", conf, _ := NewConnectionConfig(WithRetryDisabled(), WithConnectionDialer(mockDialer))
&ConnectionConfig{Retry: RetryConfig{Disabled: true}, Dialer: mockDialer}, nil) conn, err := NewConnection(context.Background(), "ws://test", conf, nil)
assert.NoError(t, err) assert.NoError(t, err)
err = conn.Connect(context.Background(), nil) err = conn.Connect(context.Background(), nil)
@@ -321,15 +328,13 @@ func TestConnect(t *testing.T) {
return honeybeetest.NewMockSocket(), nil, nil return honeybeetest.NewMockSocket(), nil, nil
}, },
} }
config := &ConnectionConfig{ config, _ := NewConnectionConfig(
Retry: RetryConfig{ WithRetryMaxRetries(2),
MaxRetries: 2, WithRetryInitialDelay(1*time.Millisecond),
InitialDelay: 1 * time.Millisecond, WithRetryMaxDelay(5*time.Millisecond),
MaxDelay: 5 * time.Millisecond, WithRetryJitterFactor(0.0),
JitterFactor: 0.0, WithConnectionDialer(mockDialer),
}, )
Dialer: mockDialer,
}
conn, err := NewConnection(context.Background(), "ws://test", config, nil) conn, err := NewConnection(context.Background(), "ws://test", config, nil)
assert.NoError(t, err) assert.NoError(t, err)
@@ -347,15 +352,13 @@ func TestConnect(t *testing.T) {
return nil, nil, fmt.Errorf("dial failed") return nil, nil, fmt.Errorf("dial failed")
}, },
} }
config := &ConnectionConfig{ config, _ := NewConnectionConfig(
Retry: RetryConfig{ WithRetryMaxRetries(2),
MaxRetries: 2, WithRetryInitialDelay(1*time.Millisecond),
InitialDelay: 1 * time.Millisecond, WithRetryMaxDelay(5*time.Millisecond),
MaxDelay: 5 * time.Millisecond, WithRetryJitterFactor(0.0),
JitterFactor: 0.0, WithConnectionDialer(mockDialer),
}, )
Dialer: mockDialer,
}
conn, err := NewConnection(context.Background(), "ws://test", config, nil) conn, err := NewConnection(context.Background(), "ws://test", config, nil)
assert.NoError(t, err) assert.NoError(t, err)
@@ -376,8 +379,8 @@ func TestConnect(t *testing.T) {
}, },
} }
var err error var err error
conn, err = NewConnection(context.Background(), "ws://test", conf, _ := NewConnectionConfig(WithRetryDisabled(), WithConnectionDialer(mockDialer))
&ConnectionConfig{Retry: RetryConfig{Disabled: true}, Dialer: mockDialer}, nil) conn, err = NewConnection(context.Background(), "ws://test", conf, nil)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, StateDisconnected, conn.State()) assert.Equal(t, StateDisconnected, conn.State())
@@ -400,13 +403,11 @@ func TestConnect(t *testing.T) {
return mockSocket, nil, nil return mockSocket, nil, nil
}, },
} }
config := &ConnectionConfig{ config, _ := NewConnectionConfig(
CloseHandler: func(code int, text string) error { WithCloseHandler(func(code int, text string) error { return nil }),
return nil WithRetryDisabled(),
}, WithConnectionDialer(mockDialer),
Retry: RetryConfig{Disabled: true}, )
Dialer: mockDialer,
}
conn, err := NewConnection(context.Background(), "ws://test", config, nil) conn, err := NewConnection(context.Background(), "ws://test", config, nil)
assert.NoError(t, err) assert.NoError(t, err)
@@ -451,10 +452,13 @@ func TestConnect(t *testing.T) {
return honeybeetest.NewMockSocket(), nil, nil return honeybeetest.NewMockSocket(), nil, nil
}, },
} }
config := &ConnectionConfig{ config, _ := NewConnectionConfig(
Retry: RetryConfig{MaxRetries: 3, InitialDelay: 1 * time.Millisecond, MaxDelay: 5 * time.Millisecond}, WithRetryMaxRetries(3),
Dialer: mockDialer, WithRetryInitialDelay(1*time.Millisecond),
} WithRetryMaxDelay(5*time.Millisecond),
WithRetryJitterFactor(0.0),
WithConnectionDialer(mockDialer),
)
conn, err := NewConnection(context.Background(), "ws://test", config, nil) conn, err := NewConnection(context.Background(), "ws://test", config, nil)
assert.NoError(t, err) assert.NoError(t, err)
@@ -480,10 +484,7 @@ func TestConnect(t *testing.T) {
return honeybeetest.NewMockSocket(), nil, nil return honeybeetest.NewMockSocket(), nil, nil
}, },
} }
config := &ConnectionConfig{ config, _ := NewConnectionConfig(WithRetryDisabled(), WithConnectionDialer(mockDialer))
Retry: RetryConfig{Disabled: true},
Dialer: mockDialer,
}
conn, err := NewConnection(context.Background(), "ws://test", config, nil) conn, err := NewConnection(context.Background(), "ws://test", config, nil)
assert.NoError(t, err) assert.NoError(t, err)
@@ -500,10 +501,7 @@ func TestConnect(t *testing.T) {
return nil, nil, fmt.Errorf("dial failed") return nil, nil, fmt.Errorf("dial failed")
}, },
} }
config := &ConnectionConfig{ config, _ := NewConnectionConfig(WithRetryDisabled(), WithConnectionDialer(mockDialer))
Retry: RetryConfig{Disabled: true},
Dialer: mockDialer,
}
conn, err := NewConnection(context.Background(), "ws://test", config, nil) conn, err := NewConnection(context.Background(), "ws://test", config, nil)
assert.NoError(t, err) assert.NoError(t, err)
@@ -515,14 +513,6 @@ func TestConnect(t *testing.T) {
func TestConnectContextCancellation(t *testing.T) { func TestConnectContextCancellation(t *testing.T) {
t.Run("context cancelled during connect returns before retries exhaust", func(t *testing.T) { t.Run("context cancelled during connect returns before retries exhaust", func(t *testing.T) {
config := &ConnectionConfig{
Retry: RetryConfig{
MaxRetries: 100,
InitialDelay: 500 * time.Millisecond,
MaxDelay: 1 * time.Second,
JitterFactor: 0.0,
},
}
dialCount := atomic.Int32{} dialCount := atomic.Int32{}
mockDialer := &honeybeetest.MockDialer{ mockDialer := &honeybeetest.MockDialer{
DialContextFunc: func(ctx context.Context, _ string, _ http.Header) (types.Socket, *http.Response, error) { DialContextFunc: func(ctx context.Context, _ string, _ http.Header) (types.Socket, *http.Response, error) {
@@ -530,7 +520,13 @@ func TestConnectContextCancellation(t *testing.T) {
return nil, nil, fmt.Errorf("dial failed") return nil, nil, fmt.Errorf("dial failed")
}, },
} }
config.Dialer = mockDialer config, _ := NewConnectionConfig(
WithRetryMaxRetries(100),
WithRetryInitialDelay(500*time.Millisecond),
WithRetryMaxDelay(1*time.Second),
WithRetryJitterFactor(0.0),
WithConnectionDialer(mockDialer),
)
conn, err := NewConnection(context.Background(), "ws://test", config, nil) conn, err := NewConnection(context.Background(), "ws://test", config, nil)
assert.NoError(t, err) assert.NoError(t, err)
+19 -23
View File
@@ -34,8 +34,8 @@ func TestConnectLogging(t *testing.T) {
return mockSocket, nil, nil return mockSocket, nil, nil
}, },
} }
conn, err := NewConnection(context.Background(), "ws://test", conf, _ := NewConnectionConfig(WithRetryDisabled(), WithConnectionDialer(mockDialer))
&ConnectionConfig{Retry: RetryConfig{Disabled: true}, Dialer: mockDialer}, mockHandler) conn, err := NewConnection(context.Background(), "ws://test", conf, mockHandler)
assert.NoError(t, err) assert.NoError(t, err)
err = conn.Connect(context.Background(), nil) err = conn.Connect(context.Background(), nil)
@@ -63,15 +63,13 @@ func TestConnectLogging(t *testing.T) {
return nil, nil, dialErr return nil, nil, dialErr
}, },
} }
config := &ConnectionConfig{ config, _ := NewConnectionConfig(
Retry: RetryConfig{ WithRetryMaxRetries(2),
MaxRetries: 2, WithRetryInitialDelay(1*time.Millisecond),
InitialDelay: 1 * time.Millisecond, WithRetryMaxDelay(5*time.Millisecond),
MaxDelay: 5 * time.Millisecond, WithRetryJitterFactor(0.0),
JitterFactor: 0.0, WithConnectionDialer(mockDialer),
}, )
Dialer: mockDialer,
}
conn, err := NewConnection(context.Background(), "ws://test", config, mockHandler) conn, err := NewConnection(context.Background(), "ws://test", config, mockHandler)
assert.NoError(t, err) assert.NoError(t, err)
@@ -109,15 +107,13 @@ func TestConnectLogging(t *testing.T) {
return honeybeetest.NewMockSocket(), nil, nil return honeybeetest.NewMockSocket(), nil, nil
}, },
} }
config := &ConnectionConfig{ config, _ := NewConnectionConfig(
Retry: RetryConfig{ WithRetryMaxRetries(3),
MaxRetries: 3, WithRetryInitialDelay(1*time.Millisecond),
InitialDelay: 1 * time.Millisecond, WithRetryMaxDelay(5*time.Millisecond),
MaxDelay: 5 * time.Millisecond, WithRetryJitterFactor(0.0),
JitterFactor: 0.0, WithConnectionDialer(mockDialer),
}, )
Dialer: mockDialer,
}
conn, err := NewConnection(context.Background(), "ws://test", config, mockHandler) conn, err := NewConnection(context.Background(), "ws://test", config, mockHandler)
assert.NoError(t, err) assert.NoError(t, err)
@@ -276,7 +272,7 @@ func TestWriterLogging(t *testing.T) {
t.Run("write deadline error", func(t *testing.T) { t.Run("write deadline error", func(t *testing.T) {
mockHandler := honeybeetest.NewMockSlogHandler() mockHandler := honeybeetest.NewMockSlogHandler()
config := &ConnectionConfig{WriteTimeout: 1 * time.Millisecond, Retry: RetryConfig{Disabled: true}} config, _ := NewConnectionConfig(WithWriteTimeout(1*time.Millisecond), WithRetryDisabled())
deadlineErr := fmt.Errorf("deadline error") deadlineErr := fmt.Errorf("deadline error")
mockSocket := honeybeetest.NewMockSocket() mockSocket := honeybeetest.NewMockSocket()
@@ -344,8 +340,8 @@ func TestLoggingDisabled(t *testing.T) {
return mockSocket, nil, nil return mockSocket, nil, nil
}, },
} }
conn, err := NewConnection(context.Background(), "ws://test", conf, _ := NewConnectionConfig(WithRetryDisabled(), WithConnectionDialer(mockDialer))
&ConnectionConfig{Retry: RetryConfig{Disabled: true}, Dialer: mockDialer}, nil) conn, err := NewConnection(context.Background(), "ws://test", conf, nil)
assert.NoError(t, err) assert.NoError(t, err)
err = conn.Connect(context.Background(), nil) err = conn.Connect(context.Background(), nil)