(t *testing.T, memcache *cache.Memcached)
| 111 | } |
| 112 | |
| 113 | func testMemcacheFailing(t *testing.T, memcache *cache.Memcached) { |
| 114 | numKeys := 1000 |
| 115 | |
| 116 | ctx := context.Background() |
| 117 | keysIncMissing := make([]string, 0, numKeys) |
| 118 | keys := make([]string, 0, numKeys) |
| 119 | bufs := make([][]byte, 0, numKeys) |
| 120 | // Insert 1000 keys skipping all multiples of 5. |
| 121 | for i := range numKeys { |
| 122 | keysIncMissing = append(keysIncMissing, fmt.Sprint(i)) |
| 123 | if i%5 == 0 { |
| 124 | continue |
| 125 | } |
| 126 | keys = append(keys, fmt.Sprint(i)) |
| 127 | bufs = append(bufs, fmt.Append(nil, i)) |
| 128 | } |
| 129 | memcache.Store(ctx, keys, bufs) |
| 130 | |
| 131 | for range 10 { |
| 132 | found, bufs, missing := memcache.Fetch(ctx, keysIncMissing) |
| 133 | |
| 134 | require.Equal(t, len(found), len(bufs)) |
| 135 | for i := range found { |
| 136 | require.Equal(t, found[i], string(bufs[i])) |
| 137 | } |
| 138 | |
| 139 | keysReturned := make(map[string]struct{}) |
| 140 | for _, key := range found { |
| 141 | _, ok := keysReturned[key] |
| 142 | require.False(t, ok, "duplicate key returned") |
| 143 | |
| 144 | keysReturned[key] = struct{}{} |
| 145 | } |
| 146 | for _, key := range missing { |
| 147 | _, ok := keysReturned[key] |
| 148 | require.False(t, ok, "duplicate key returned") |
| 149 | |
| 150 | keysReturned[key] = struct{}{} |
| 151 | } |
| 152 | |
| 153 | for _, key := range keys { |
| 154 | _, ok := keysReturned[key] |
| 155 | require.True(t, ok, "key missing %s", key) |
| 156 | } |
| 157 | } |
| 158 | } |
| 159 | |
| 160 | func TestMemcacheStop(t *testing.T) { |
| 161 | t.Run("unbatched", func(t *testing.T) { |
no test coverage detected