You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

context_test.go 1.9KB

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