diff options
author | Aliaksandr Valialkin <valyala@gmail.com> | 2016-02-05 12:50:58 +0200 |
---|---|---|
committer | Aliaksandr Valialkin <valyala@gmail.com> | 2016-02-05 12:50:58 +0200 |
commit | eafcb74ce5af1c198f9446c2ec3511169e0ebb14 (patch) | |
tree | 91cdb49a7e2f1eb845f1af7d96c446a8923fb81c /userdata_test.go | |
parent | client: use TLS session cache by default (diff) | |
download | fasthttp-eafcb74ce5af1c198f9446c2ec3511169e0ebb14.tar.gz fasthttp-eafcb74ce5af1c198f9446c2ec3511169e0ebb14.tar.bz2 fasthttp-eafcb74ce5af1c198f9446c2ec3511169e0ebb14.zip |
Call Close on user values stored via RequestCtx.SetUserValue if these values implement io.Closer
Diffstat (limited to 'userdata_test.go')
-rw-r--r-- | userdata_test.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/userdata_test.go b/userdata_test.go index 995bf81..ce14204 100644 --- a/userdata_test.go +++ b/userdata_test.go @@ -39,3 +39,36 @@ func testUserDataGet(t *testing.T, u *userData, key []byte, value interface{}) { t.Fatalf("unexpected value for key=%q: %d. Expecting %d", key, v, value) } } + +func TestUserDataValueClose(t *testing.T) { + var u userData + + closeCalls := 0 + + // store values implementing io.Closer + for i := 0; i < 5; i++ { + key := fmt.Sprintf("key_%d", i) + u.Set(key, &closerValue{&closeCalls}) + } + + // store values without io.Closer + for i := 0; i < 10; i++ { + key := fmt.Sprintf("key_noclose_%d", i) + u.Set(key, i) + } + + u.Reset() + + if closeCalls != 5 { + t.Fatalf("unexpected number of Close calls: %d. Expecting 10", closeCalls) + } +} + +type closerValue struct { + closeCalls *int +} + +func (cv *closerValue) Close() error { + (*cv.closeCalls)++ + return nil +} |