code.gitea.io/gitea@v1.22.3/modules/cache/context_test.go (about) 1 // Copyright 2022 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package cache 5 6 import ( 7 "context" 8 "testing" 9 "time" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestWithCacheContext(t *testing.T) { 15 ctx := WithCacheContext(context.Background()) 16 17 v := GetContextData(ctx, "empty_field", "my_config1") 18 assert.Nil(t, v) 19 20 const field = "system_setting" 21 v = GetContextData(ctx, field, "my_config1") 22 assert.Nil(t, v) 23 SetContextData(ctx, field, "my_config1", 1) 24 v = GetContextData(ctx, field, "my_config1") 25 assert.NotNil(t, v) 26 assert.EqualValues(t, 1, v.(int)) 27 28 RemoveContextData(ctx, field, "my_config1") 29 RemoveContextData(ctx, field, "my_config2") // remove a non-exist key 30 31 v = GetContextData(ctx, field, "my_config1") 32 assert.Nil(t, v) 33 34 vInt, err := GetWithContextCache(ctx, field, "my_config1", func() (int, error) { 35 return 1, nil 36 }) 37 assert.NoError(t, err) 38 assert.EqualValues(t, 1, vInt) 39 40 v = GetContextData(ctx, field, "my_config1") 41 assert.EqualValues(t, 1, v) 42 43 now := timeNow 44 defer func() { 45 timeNow = now 46 }() 47 timeNow = func() time.Time { 48 return now().Add(5 * time.Minute) 49 } 50 v = GetContextData(ctx, field, "my_config1") 51 assert.Nil(t, v) 52 } 53 54 func TestWithNoCacheContext(t *testing.T) { 55 ctx := context.Background() 56 57 const field = "system_setting" 58 59 v := GetContextData(ctx, field, "my_config1") 60 assert.Nil(t, v) 61 SetContextData(ctx, field, "my_config1", 1) 62 v = GetContextData(ctx, field, "my_config1") 63 assert.Nil(t, v) // still no cache 64 65 ctx = WithCacheContext(ctx) 66 v = GetContextData(ctx, field, "my_config1") 67 assert.Nil(t, v) 68 SetContextData(ctx, field, "my_config1", 1) 69 v = GetContextData(ctx, field, "my_config1") 70 assert.NotNil(t, v) 71 72 ctx = WithNoCacheContext(ctx) 73 v = GetContextData(ctx, field, "my_config1") 74 assert.Nil(t, v) 75 SetContextData(ctx, field, "my_config1", 1) 76 v = GetContextData(ctx, field, "my_config1") 77 assert.Nil(t, v) // still no cache 78 }