Skip to content

Commit 5254cae

Browse files
committed
Refactored realtime host tests and internet check code as per review comments
1 parent 049151c commit 5254cae

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

ably/options.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -604,8 +604,8 @@ func (opts *clientOptions) hasActiveInternetConnection() bool {
604604
if err != nil {
605605
return false
606606
}
607+
defer res.Body.Close()
607608
data, err := io.ReadAll(res.Body)
608-
res.Body.Close()
609609
if err != nil {
610610
return false
611611
}

ably/realtime_client_integration_test.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ func TestRealtime_RTN17_HostFallback(t *testing.T) {
148148
return &errTimeout{}
149149
}
150150

151-
setUpWithError := func(customErr error, opts ...ably.ClientOption) (visitedHosts []string) {
151+
initClientWithConnError := func(customErr error, opts ...ably.ClientOption) (visitedHosts []string) {
152152
client, err := ably.NewRealtime(append(opts, ably.WithAutoConnect(false), ably.WithKey("fake:key"),
153153
ably.WithDial(func(protocol string, u *url.URL, timeout time.Duration) (ably.Conn, error) {
154154
visitedHosts = append(visitedHosts, u.Hostname())
@@ -160,15 +160,15 @@ func TestRealtime_RTN17_HostFallback(t *testing.T) {
160160
}
161161

162162
t.Run("RTN17a: First attempt should be made on default primary host", func(t *testing.T) {
163-
visitedHosts := setUpWithError(errors.New("host url is wrong"))
163+
visitedHosts := initClientWithConnError(errors.New("host url is wrong"))
164164
assert.Equal(t, "realtime.ably.io", visitedHosts[0])
165165
})
166166

167167
t.Run("RTN17b: Fallback behaviour", func(t *testing.T) {
168168
t.Parallel()
169169

170170
t.Run("apply when default realtime endpoint is not overridden, port/tlsport not set", func(t *testing.T) {
171-
visitedHosts := setUpWithError(getTimeoutErr())
171+
visitedHosts := initClientWithConnError(getTimeoutErr())
172172
expectedPrimaryHost := "realtime.ably.io"
173173
expectedFallbackHosts := ably.DefaultFallbackHosts()
174174

@@ -178,7 +178,7 @@ func TestRealtime_RTN17_HostFallback(t *testing.T) {
178178
})
179179

180180
t.Run("does not apply when the custom realtime endpoint is used", func(t *testing.T) {
181-
visitedHosts := setUpWithError(getTimeoutErr(), ably.WithRealtimeHost("custom-realtime.ably.io"))
181+
visitedHosts := initClientWithConnError(getTimeoutErr(), ably.WithRealtimeHost("custom-realtime.ably.io"))
182182
expectedHost := "custom-realtime.ably.io"
183183

184184
require.Equal(t, 1, len(visitedHosts))
@@ -187,7 +187,7 @@ func TestRealtime_RTN17_HostFallback(t *testing.T) {
187187

188188
t.Run("apply when fallbacks are provided", func(t *testing.T) {
189189
fallbacks := []string{"fallback0", "fallback1", "fallback2"}
190-
visitedHosts := setUpWithError(getTimeoutErr(), ably.WithFallbackHosts(fallbacks))
190+
visitedHosts := initClientWithConnError(getTimeoutErr(), ably.WithFallbackHosts(fallbacks))
191191
expectedPrimaryHost := "realtime.ably.io"
192192

193193
assert.Equal(t, 4, len(visitedHosts))
@@ -196,7 +196,7 @@ func TestRealtime_RTN17_HostFallback(t *testing.T) {
196196
})
197197

198198
t.Run("apply when fallbackHostUseDefault is true, even if env. or host is set", func(t *testing.T) {
199-
visitedHosts := setUpWithError(
199+
visitedHosts := initClientWithConnError(
200200
getTimeoutErr(),
201201
ably.WithFallbackHostsUseDefault(true),
202202
ably.WithEnvironment("custom"),
@@ -215,7 +215,7 @@ func TestRealtime_RTN17_HostFallback(t *testing.T) {
215215
t.Parallel()
216216
const internetCheckUrl = "https://internet-up.ably-realtime.com/is-the-internet-up.txt"
217217
rec, optn := ablytest.NewHttpRecorder()
218-
visitedHosts := setUpWithError(getDNSErr(), optn...)
218+
visitedHosts := initClientWithConnError(getDNSErr(), optn...)
219219
assert.Equal(t, 6, len(visitedHosts)) // including primary host
220220
assert.Equal(t, 5, len(rec.Requests()))
221221
for _, request := range rec.Requests() {
@@ -224,11 +224,11 @@ func TestRealtime_RTN17_HostFallback(t *testing.T) {
224224
})
225225

226226
t.Run("RTN17d: Check for compatible errors before attempting to reconnect to a fallback host", func(t *testing.T) {
227-
visitedHosts := setUpWithError(fmt.Errorf("host url is wrong")) // non-dns or non-timeout error
227+
visitedHosts := initClientWithConnError(fmt.Errorf("host url is wrong")) // non-dns or non-timeout error
228228
assert.Equal(t, 1, len(visitedHosts))
229-
visitedHosts = setUpWithError(getDNSErr())
229+
visitedHosts = initClientWithConnError(getDNSErr())
230230
assert.Equal(t, 6, len(visitedHosts))
231-
visitedHosts = setUpWithError(getTimeoutErr())
231+
visitedHosts = initClientWithConnError(getTimeoutErr())
232232
assert.Equal(t, 6, len(visitedHosts))
233233
})
234234

0 commit comments

Comments
 (0)