Skip to content

Commit cc3d361

Browse files
authored
Improved http error tests (#61)
1 parent 9f417fb commit cc3d361

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

errors.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ func (e *ErrNotFound) Is(target error) bool {
1717
return ok
1818
}
1919

20-
// ErrRemoteCall is returned from `group.Get()` when an error that is not a `ErrNotFound`
21-
// is returned during a remote HTTP instance call
20+
// ErrRemoteCall is returned from `group.Get()` when a remote GetterFunc returns an
21+
// error. When this happens `group.Get()` does not attempt to retrieve the value
22+
// via our local GetterFunc.
2223
type ErrRemoteCall struct {
2324
Msg string
2425
}

http_test.go

+16-9
Original file line numberDiff line numberDiff line change
@@ -187,21 +187,24 @@ func TestHTTPPool(t *testing.T) {
187187
}
188188

189189
// Get a key that does not exist
190-
err := g.Get(ctx, "IDoNotExist", StringSink(&value))
190+
err := g.Get(ctx, "IReturnErrNotFound", StringSink(&value))
191191
errNotFound := &ErrNotFound{}
192192
if !errors.As(err, &errNotFound) {
193193
t.Fatal(errors.New("expected error to be 'ErrNotFound'"))
194194
}
195-
assert.Equal(t, "I do not exist error", errNotFound.Error())
195+
assert.Equal(t, "I am a ErrNotFound error", errNotFound.Error())
196196

197-
// Get a key that is guaranteed to return an error
198-
err = g.Get(ctx, "IAlwaysReturnAnError", StringSink(&value))
197+
// Get a key that is guaranteed to return a remote error.
198+
err = g.Get(ctx, "IReturnErrRemoteCall", StringSink(&value))
199199
errRemoteCall := &ErrRemoteCall{}
200200
if !errors.As(err, &errRemoteCall) {
201201
t.Fatal(errors.New("expected error to be 'ErrRemoteCall'"))
202202
}
203+
assert.Equal(t, "I am a ErrRemoteCall error", errRemoteCall.Error())
203204

204-
assert.Equal(t, "I am a GetterFunc error", errRemoteCall.Error())
205+
// Get a key that is guaranteed to return an internal (500) error
206+
err = g.Get(ctx, "IReturnInternalError", StringSink(&value))
207+
assert.Equal(t, "I am a errors.New() error", err.Error())
205208

206209
}
207210

@@ -220,12 +223,16 @@ func beChildForTestHTTPPool(t *testing.T) {
220223
p.Set(addrToURL(addrs)...)
221224

222225
getter := GetterFunc(func(ctx context.Context, key string, dest Sink) error {
223-
if key == "IDoNotExist" {
224-
return &ErrNotFound{Msg: "I do not exist error"}
226+
if key == "IReturnErrNotFound" {
227+
return &ErrNotFound{Msg: "I am a ErrNotFound error"}
225228
}
226229

227-
if key == "IAlwaysReturnAnError" {
228-
return &ErrRemoteCall{Msg: "I am a GetterFunc error"}
230+
if key == "IReturnErrRemoteCall" {
231+
return &ErrRemoteCall{Msg: "I am a ErrRemoteCall error"}
232+
}
233+
234+
if key == "IReturnInternalError" {
235+
return errors.New("I am a errors.New() error")
229236
}
230237

231238
if _, err := http.Get(*serverAddr); err != nil {

0 commit comments

Comments
 (0)