aboutsummaryrefslogtreecommitdiff
path: root/userdata_test.go
diff options
context:
space:
mode:
authorGravatar Aliaksandr Valialkin <valyala@gmail.com> 2016-02-05 12:50:58 +0200
committerGravatar Aliaksandr Valialkin <valyala@gmail.com> 2016-02-05 12:50:58 +0200
commiteafcb74ce5af1c198f9446c2ec3511169e0ebb14 (patch)
tree91cdb49a7e2f1eb845f1af7d96c446a8923fb81c /userdata_test.go
parentclient: use TLS session cache by default (diff)
downloadfasthttp-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.go33
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
+}