assert_test.go4
1:1format
assert_test.go:1:1
package bigcache- Fix (safe): run `strider fmt assert_test.go`
12:49use-any
assert_test.go:12:49
func assertEqual(t *testing.T, expected, actual interface{}, msgAndArgs ...interface{}) { if !objectsAreEqual(expected, actual) {12:76use-any
assert_test.go:12:76
func assertEqual(t *testing.T, expected, actual interface{}, msgAndArgs ...interface{}) { if !objectsAreEqual(expected, actual) {32:39use-any
assert_test.go:32:39
func objectsAreEqual(expected, actual interface{}) bool { if expected == nil || actual == nil {bigcache.go38
1:1format
bigcache.go:1:1
package bigcache- Fix (safe): run `strider fmt bigcache.go`
1:9package-comments
bigcache.go:1:9
package bigcache16:6exported-declaration-comment
bigcache.go:16:6
// therefore entries (de)serialization in front of the cache will be needed in most use cases.type BigCache struct { shards []*cacheShard23:2redefines-builtin-id
bigcache.go:23:2
shardMask uint64 close chan struct{}}23:18nested-structs
bigcache.go:23:18
shardMask uint64 close chan struct{}}26:1doc-comment-period
bigcache.go:26:1
// Response will contain metadata about the entry for which GetWithInfo(key) was calledtype Response struct {34:1top-level-declaration-order
bigcache.go:34:1
const ( _ RemoveReason = iota40:2exported-declaration-comment
bigcache.go:40:2
// entry exceeded the maximum shard size. NoSpace // Deleted means Delete was called and this key was removed as a result.45:1doc-comment-period
bigcache.go:45:1
// New initialize new instance of BigCachefunc New(ctx context.Context, config Config) (*BigCache, error) {50:1doc-comment-period
bigcache.go:50:1
// NewBigCache initialize new instance of BigCache//55:6exported-declaration-comment
bigcache.go:55:6
// shutdown with context cancellationsfunc NewBigCache(config Config) (*BigCache, error) { return newBigCache(context.Background(), config, &systemClock{})59:6cognitive-complexity
bigcache.go:59:6
func newBigCache(ctx context.Context, config Config, clock clock) (*BigCache, error) { if !isPowerOfTwo(config.Shards) {59:6confusing-naming
bigcache.go:59:6
func newBigCache(ctx context.Context, config Config, clock clock) (*BigCache, error) { if !isPowerOfTwo(config.Shards) {59:6cyclomatic-complexity
bigcache.go:59:6
func newBigCache(ctx context.Context, config Config, clock clock) (*BigCache, error) { if !isPowerOfTwo(config.Shards) {61:26error-strings
bigcache.go:61:26
if !isPowerOfTwo(config.Shards) { return nil, errors.New("Shards number must be power of two") //nolint:staticcheck // keep for backward compatibility }64:26error-strings
bigcache.go:64:26
if config.MaxEntrySize < 0 { return nil, errors.New("MaxEntrySize must be >= 0") }67:26error-strings
bigcache.go:67:26
if config.MaxEntriesInWindow < 0 { return nil, errors.New("MaxEntriesInWindow must be >= 0") }70:26error-strings
bigcache.go:70:26
if config.HardMaxCacheSize < 0 { return nil, errors.New("HardMaxCacheSize must be >= 0") }75:26error-strings
bigcache.go:75:26
if config.CleanWindow > 0 && lifeWindowSeconds == 0 { return nil, errors.New("LifeWindow must be >= 1s when CleanWindow is set") }79:3modifies-parameter
bigcache.go:79:3
if config.Hasher == nil { config.Hasher = newDefaultHasher() }89:25nested-structs
bigcache.go:89:25
shardMask: uint64(config.Shards - 1), close: make(chan struct{}), }130:20exported-declaration-comment
bigcache.go:130:20
// kept to the cache preventing GC of the entire cache.func (c *BigCache) Close() error { close(c.close)138:20exported-declaration-comment
bigcache.go:138:20
// no entry exists for the given key.func (c *BigCache) Get(key string) ([]byte, error) { hashedKey := c.hash.Sum64(key)147:20exported-declaration-comment
bigcache.go:147:20
// no entry exists for the given key.func (c *BigCache) GetWithInfo(key string) ([]byte, Response, error) { hashedKey := c.hash.Sum64(key)153:1doc-comment-period
bigcache.go:153:1
// Set saves entry under the keyfunc (c *BigCache) Set(key string, entry []byte) error {163:20exported-declaration-comment
bigcache.go:163:20
// concatenate multiple entries under the same key in a lock-optimized way.func (c *BigCache) Append(key string, entry []byte) error { hashedKey := c.hash.Sum64(key)169:1doc-comment-period
bigcache.go:169:1
// Delete removes the keyfunc (c *BigCache) Delete(key string) error {176:1doc-comment-period
bigcache.go:176:1
// Reset empties all cache shardsfunc (c *BigCache) Reset() error {184:1doc-comment-period
bigcache.go:184:1
// ResetStats resets cache statsfunc (c *BigCache) ResetStats() error {194:6redefines-builtin-id
bigcache.go:194:6
func (c *BigCache) Len() int { var len int for _, shard := range c.shards {203:6redefines-builtin-id
bigcache.go:203:6
func (c *BigCache) Capacity() int { var len int for _, shard := range c.shards {210:1doc-comment-period
bigcache.go:210:1
// Stats returns cache's statisticsfunc (c *BigCache) Stats() Stats {242:3discarded-error-result
bigcache.go:242:3
if currentTimestamp-oldestTimestamp > c.lifeWindow { evict(Expired) return true258:58unused-parameter
bigcache.go:258:58
func (c *BigCache) providedOnRemove(wrappedEntry []byte, reason RemoveReason) { c.config.OnRemove(readKeyFromEntry(wrappedEntry), readEntry(wrappedEntry))268:7unused-receiver
bigcache.go:268:7
func (c *BigCache) notProvidedOnRemove(wrappedEntry []byte, reason RemoveReason) {}268:40unused-parameter
bigcache.go:268:40
func (c *BigCache) notProvidedOnRemove(wrappedEntry []byte, reason RemoveReason) {}268:61unused-parameter
bigcache.go:268:61
func (c *BigCache) notProvidedOnRemove(wrappedEntry []byte, reason RemoveReason) {}271:70unused-parameter
bigcache.go:271:70
func (c *BigCache) providedOnRemoveWithMetadata(wrappedEntry []byte, reason RemoveReason) { key := readKeyFromEntry(wrappedEntry)bigcache_bench_test.go30
1:1format
bigcache_bench_test.go:1:1
package bigcache- Fix (safe): run `strider fmt bigcache_bench_test.go`
12:5no-package-var
bigcache_bench_test.go:12:5
var message = blob('a', 256)20:14discarded-error-result
bigcache_bench_test.go:20:14
m := blob('a', 1024) cache, _ := New(context.Background(), Config{ Shards: 1,30:3discarded-error-result
bigcache_bench_test.go:30:3
for i := 0; i < b.N; i++ { cache.Set(fmt.Sprintf("key-%d", i), m) }36:14discarded-error-result
bigcache_bench_test.go:36:14
m := blob('a', 1024) cache, _ := New(context.Background(), Config{ Shards: 1,45:3discarded-error-result
bigcache_bench_test.go:45:3
for i := 0; i < b.N; i++ { cache.Set(fmt.Sprintf("key-%d", i), m) }51:43range-value-capture
bigcache_bench_test.go:51:43
for _, shards := range []int{1, 512, 1024, 8192} { b.Run(fmt.Sprintf("%d-shards", shards), func(b *testing.B) { writeToCache(b, shards, 100*time.Second, b.N)58:43range-value-capture
bigcache_bench_test.go:58:43
for _, shards := range []int{1, 512, 1024, 8192} { b.Run(fmt.Sprintf("%d-shards", shards), func(b *testing.B) { appendToCache(b, shards, 100*time.Second, b.N)66:21add-constant
bigcache_bench_test.go:66:21
for _, shards := range []int{1, 512, 1024, 8192} { b.Run(fmt.Sprintf("%d-shards", shards), func(b *testing.B) { readFromCache(b, shards, false)66:43range-value-capture
bigcache_bench_test.go:66:43
for _, shards := range []int{1, 512, 1024, 8192} { b.Run(fmt.Sprintf("%d-shards", shards), func(b *testing.B) { readFromCache(b, shards, false)74:43range-value-capture
bigcache_bench_test.go:74:43
for _, shards := range []int{1, 512, 1024, 8192} { b.Run(fmt.Sprintf("%d-shards", shards), func(b *testing.B) { readFromCache(b, shards, true)79:6cognitive-complexity
bigcache_bench_test.go:79:6
}func BenchmarkIterateOverCache(b *testing.B) {84:43range-value-capture
bigcache_bench_test.go:84:43
for _, shards := range []int{512, 1024, 8192} { b.Run(fmt.Sprintf("%d-shards", shards), func(b *testing.B) { cache, _ := New(context.Background(), Config{85:16discarded-error-result
bigcache_bench_test.go:85:16
b.Run(fmt.Sprintf("%d-shards", shards), func(b *testing.B) { cache, _ := New(context.Background(), Config{ Shards: shards,93:5discarded-error-result
bigcache_bench_test.go:93:5
for i := 0; i < b.N; i++ { cache.Set(fmt.Sprintf("key-%d", i), m) }93:27add-constant
bigcache_bench_test.go:93:27
for i := 0; i < b.N; i++ { cache.Set(fmt.Sprintf("key-%d", i), m) }104:7discarded-error-result
bigcache_bench_test.go:104:7
if it.SetNext() { it.Value() }125:14discarded-error-result
bigcache_bench_test.go:125:14
func writeToCache(b *testing.B, shards int, lifeWindow time.Duration, requestsInLifeWindow int) { cache, _ := New(context.Background(), Config{ Shards: shards,139:4discarded-error-result
bigcache_bench_test.go:139:4
for pb.Next() { cache.Set(fmt.Sprintf("key-%d-%d", id, counter), message) counter = counter + 1140:4increment-decrement
bigcache_bench_test.go:140:4
cache.Set(fmt.Sprintf("key-%d-%d", id, counter), message) counter = counter + 1 }146:14discarded-error-result
bigcache_bench_test.go:146:14
func appendToCache(b *testing.B, shards int, lifeWindow time.Duration, requestsInLifeWindow int) { cache, _ := New(context.Background(), Config{ Shards: shards,162:5discarded-error-result
bigcache_bench_test.go:162:5
for j := 0; j < 7; j++ { cache.Append(key, message) }164:4increment-decrement
bigcache_bench_test.go:164:4
} counter = counter + 1 }169:46flag-parameter
bigcache_bench_test.go:169:46
func readFromCache(b *testing.B, shards int, info bool) { cache, _ := New(context.Background(), Config{170:14discarded-error-result
bigcache_bench_test.go:170:14
func readFromCache(b *testing.B, shards int, info bool) { cache, _ := New(context.Background(), Config{ Shards: shards,177:3discarded-error-result
bigcache_bench_test.go:177:3
for i := 0; i < b.N; i++ { cache.Set(strconv.Itoa(i), message) }186:5discarded-error-result
bigcache_bench_test.go:186:5
if info { cache.GetWithInfo(strconv.Itoa(rand.Intn(b.N))) } else {188:5discarded-error-result
bigcache_bench_test.go:188:5
} else { cache.Get(strconv.Itoa(rand.Intn(b.N))) }195:14discarded-error-result
bigcache_bench_test.go:195:14
func readFromCacheNonExistentKeys(b *testing.B, shards int) { cache, _ := New(context.Background(), Config{ Shards: shards,207:4discarded-error-result
bigcache_bench_test.go:207:4
for pb.Next() { cache.Get(strconv.Itoa(rand.Intn(b.N))) }bigcache_test.go183
1:1file-length-limit
bigcache_test.go:1:1
package bigcache1:1format
bigcache_test.go:1:1
package bigcache- Fix (safe): run `strider fmt bigcache_test.go`
20:14discarded-error-result
bigcache_test.go:20:14
// given cache, _ := New(context.Background(), DefaultConfig(5*time.Second)) value := []byte("value")24:2discarded-error-result
bigcache_test.go:24:2
// when cache.Set("key", value) cachedValue, err := cache.Get("key")36:14discarded-error-result
bigcache_test.go:36:14
// given cache, _ := New(context.Background(), DefaultConfig(5*time.Second)) key := "key"37:9add-constant
bigcache_test.go:37:9
cache, _ := New(context.Background(), DefaultConfig(5*time.Second)) key := "key" value1 := make([]byte, 50)39:2discarded-error-result
bigcache_test.go:39:2
value1 := make([]byte, 50) rand.Read(value1) value2 := make([]byte, 50)41:2discarded-error-result
bigcache_test.go:41:2
value2 := make([]byte, 50) rand.Read(value2) value3 := make([]byte, 50)43:2discarded-error-result
bigcache_test.go:43:2
value3 := make([]byte, 50) rand.Read(value3)52:2discarded-error-result
bigcache_test.go:52:2
// when cache.Append(key, value1) cachedValue, err := cache.Get(key)60:2discarded-error-result
bigcache_test.go:60:2
// when cache.Append(key, value2) cachedValue, err = cache.Get(key)66:24append-to-sized-slice
bigcache_test.go:66:24
expectedValue := value1 expectedValue = append(expectedValue, value2...) assertEqual(t, expectedValue, cachedValue)70:2discarded-error-result
bigcache_test.go:70:2
// when cache.Append(key, value3) cachedValue, err = cache.Get(key)82:6cognitive-complexity
bigcache_test.go:82:6
// TestAppendRandomly does simultaneous appends to check for corruption errors.func TestAppendRandomly(t *testing.T) { t.Parallel()128:5discarded-error-result
bigcache_test.go:128:5
} cache.Append(key, []byte(key)) }149:14discarded-error-result
bigcache_test.go:149:14
// given cache, _ := New(context.Background(), Config{ Shards: 1,155:23redundant-conversion
bigcache_test.go:155:23
Verbose: true, Hasher: hashStub(5), })159:2discarded-error-result
bigcache_test.go:159:2
//when cache.Append("a", []byte("1")) cachedValue, err := cache.Get("a")171:43redundant-conversion
bigcache_test.go:171:43
noError(t, err) assertEqual(t, cache.Stats().Collisions, int64(1)) cachedValue, err = cache.Get("b")182:14discarded-error-result
bigcache_test.go:182:14
// given cache, _ := New(context.Background(), Config{ Shards: 16,196:23nested-structs
bigcache_test.go:196:23
for _, tc := range []struct { cfg Config217:18range-value-capture
bigcache_test.go:217:18
} { t.Run(tc.want, func(t *testing.T) { cache, error := New(context.Background(), tc.cfg)217:18test-parallelism
bigcache_test.go:217:18
} { t.Run(tc.want, func(t *testing.T) { cache, error := New(context.Background(), tc.cfg)218:11redefines-builtin-id
bigcache_test.go:218:11
t.Run(tc.want, func(t *testing.T) { cache, error := New(context.Background(), tc.cfg)230:14discarded-error-result
bigcache_test.go:230:14
// given cache, _ := New(context.Background(), Config{ Shards: 16,249:14discarded-error-result
bigcache_test.go:249:14
clock := mockedClock{value: 0} cache, _ := newBigCache(context.Background(), Config{ Shards: 1,256:2discarded-error-result
bigcache_test.go:256:2
cache.Set("key", []byte("value"))259:2discarded-error-result
bigcache_test.go:259:2
// when cache.Set("key2", []byte("value2")) _, err := cache.Get("key")267:2discarded-error-result
bigcache_test.go:267:2
clock.set(5) cache.Set("key2", []byte("value2")) _, err = cache.Get("key")279:14discarded-error-result
bigcache_test.go:279:14
clock := mockedClock{value: 0} cache, _ := newBigCache(context.Background(), Config{ Shards: 4,287:2discarded-error-result
bigcache_test.go:287:2
// when cache.Set("key", []byte("value")) clock.set(5)287:26add-constant
bigcache_test.go:287:26
// when cache.Set("key", []byte("value")) clock.set(5)289:2discarded-error-result
bigcache_test.go:289:2
clock.set(5) cache.Set("key2", []byte("value 2")) value, err := cache.Get("key")289:12add-constant
bigcache_test.go:289:12
clock.set(5) cache.Set("key2", []byte("value 2")) value, err := cache.Get("key")301:14discarded-error-result
bigcache_test.go:301:14
// given cache, _ := New(context.Background(), Config{ Shards: 4,310:2discarded-error-result
bigcache_test.go:310:2
// when cache.Set("key", []byte("value")) <-time.After(3 * time.Second)334:14discarded-error-result
bigcache_test.go:334:14
} cache, _ := newBigCache(context.Background(), Config{ Shards: 1,344:2discarded-error-result
bigcache_test.go:344:2
// when cache.Set("key", []byte("value")) clock.set(5)346:2discarded-error-result
bigcache_test.go:346:2
clock.set(5) cache.Set("key2", []byte("value2"))346:27add-constant
bigcache_test.go:346:27
clock.set(5) cache.Set("key2", []byte("value2"))363:26redundant-conversion
bigcache_test.go:363:26
assertEqual(t, []byte("value"), entry) assertEqual(t, reason, RemoveReason(Expired)) }365:14discarded-error-result
bigcache_test.go:365:14
} cache, _ := newBigCache(context.Background(), Config{ Shards: 1,374:2discarded-error-result
bigcache_test.go:374:2
// when cache.Set("key", []byte("value")) clock.set(5)376:2discarded-error-result
bigcache_test.go:376:2
clock.set(5) cache.Set("key2", []byte("value2"))399:14discarded-error-result
bigcache_test.go:399:14
cache, _ := newBigCache(context.Background(), c, &clock)402:2discarded-error-result
bigcache_test.go:402:2
// when cache.Set("key", []byte("value")) clock.set(5)404:2discarded-error-result
bigcache_test.go:404:2
clock.set(5) cache.Set("key2", []byte("value2"))410:2discarded-error-result
bigcache_test.go:410:2
// and when cache.Delete("key2")416:6test-parallelism
bigcache_test.go:416:6
func TestOnRemoveFilterExpired(t *testing.T) { // t.Parallel()424:3single-case-switch
bigcache_test.go:424:3
onRemove := func(key string, entry []byte, reason RemoveReason) { switch reason {450:2discarded-error-result
bigcache_test.go:450:2
cache.Set("key", []byte("value")) clock.set(5)466:2discarded-error-result
bigcache_test.go:466:2
cache.Set("key2", []byte("value2")) err = cache.Delete("key2")482:11redundant-conversion
bigcache_test.go:482:11
clock := mockedClock{value: 0} count := uint32(0) onRemove := func(key string, entry []byte, keyMetadata Metadata) {495:14discarded-error-result
bigcache_test.go:495:14
cache, _ := newBigCache(context.Background(), c, &clock)498:2discarded-error-result
bigcache_test.go:498:2
// when cache.Set("key", []byte("value"))501:3discarded-error-result
bigcache_test.go:501:3
for i := 0; i < 100; i++ { cache.Get("key") }504:2discarded-error-result
bigcache_test.go:504:2
cache.Delete("key")507:17redundant-conversion
bigcache_test.go:507:17
// then assertEqual(t, uint32(100), count)}514:14discarded-error-result
bigcache_test.go:514:14
// given cache, _ := New(context.Background(), Config{ Shards: 8,524:3discarded-error-result
bigcache_test.go:524:3
for i := 0; i < keys; i++ { cache.Set(fmt.Sprintf("key%d", i), []byte("value")) }524:25add-constant
bigcache_test.go:524:25
for i := 0; i < keys; i++ { cache.Set(fmt.Sprintf("key%d", i), []byte("value")) }535:14discarded-error-result
bigcache_test.go:535:14
// given cache, _ := New(context.Background(), Config{ Shards: 8,545:3discarded-error-result
bigcache_test.go:545:3
for i := 0; i < keys; i++ { cache.Set(fmt.Sprintf("key%d", i), []byte("value")) }557:14discarded-error-result
bigcache_test.go:557:14
// given cache, _ := New(context.Background(), Config{ Shards: 1,572:3discarded-error-result
bigcache_test.go:572:3
for i := 0; i < keys; i++ { cache.Set(fmt.Sprintf("key%d", i), []byte("value")) }584:14discarded-error-result
bigcache_test.go:584:14
// given cache, _ := New(context.Background(), Config{ Shards: 1,595:2discarded-error-result
bigcache_test.go:595:2
// when cache.Set("key", value) cache.Set("key", value)596:2discarded-error-result
bigcache_test.go:596:2
cache.Set("key", value) cache.Set("key", value) cache.Set("key", value)597:2discarded-error-result
bigcache_test.go:597:2
cache.Set("key", value) cache.Set("key", value) cache.Set("key", value)598:2discarded-error-result
bigcache_test.go:598:2
cache.Set("key", value) cache.Set("key", value) cache.Set("key", value)599:2discarded-error-result
bigcache_test.go:599:2
cache.Set("key", value) cache.Set("key", value) cachedValue, err := cache.Get("key")611:14discarded-error-result
bigcache_test.go:611:14
// given cache, _ := New(context.Background(), Config{ Shards: 8,620:3discarded-error-result
bigcache_test.go:620:3
for i := 0; i < 100; i++ { cache.Set(fmt.Sprintf("key%d", i), []byte("value")) }643:29redundant-conversion
bigcache_test.go:643:29
stats := cache.Stats() assertEqual(t, stats.Hits, int64(10)) assertEqual(t, stats.Misses, int64(10))644:31redundant-conversion
bigcache_test.go:644:31
assertEqual(t, stats.Hits, int64(10)) assertEqual(t, stats.Misses, int64(10)) assertEqual(t, stats.DelHits, int64(10))645:32redundant-conversion
bigcache_test.go:645:32
assertEqual(t, stats.Misses, int64(10)) assertEqual(t, stats.DelHits, int64(10)) assertEqual(t, stats.DelMisses, int64(10))646:34redundant-conversion
bigcache_test.go:646:34
assertEqual(t, stats.DelHits, int64(10)) assertEqual(t, stats.DelMisses, int64(10))}652:14discarded-error-result
bigcache_test.go:652:14
// given cache, _ := New(context.Background(), Config{ Shards: 8,660:2discarded-error-result
bigcache_test.go:660:2
cache.Set("key0", []byte("value"))668:35add-constant
bigcache_test.go:668:35
// then keyMetadata := cache.KeyMetadata("key0") assertEqual(t, uint32(10), keyMetadata.RequestCount)669:17redundant-conversion
bigcache_test.go:669:17
keyMetadata := cache.KeyMetadata("key0") assertEqual(t, uint32(10), keyMetadata.RequestCount)}676:14discarded-error-result
bigcache_test.go:676:14
// given cache, _ := New(context.Background(), Config{ Shards: 8,685:3discarded-error-result
bigcache_test.go:685:3
for i := 0; i < 100; i++ { cache.Set(fmt.Sprintf("key%d", i), []byte("value")) }707:29redundant-conversion
bigcache_test.go:707:29
stats := cache.Stats() assertEqual(t, stats.Hits, int64(10)) assertEqual(t, stats.Misses, int64(10))708:31redundant-conversion
bigcache_test.go:708:31
assertEqual(t, stats.Hits, int64(10)) assertEqual(t, stats.Misses, int64(10)) assertEqual(t, stats.DelHits, int64(10))709:32redundant-conversion
bigcache_test.go:709:32
assertEqual(t, stats.Misses, int64(10)) assertEqual(t, stats.DelHits, int64(10)) assertEqual(t, stats.DelMisses, int64(10))710:34redundant-conversion
bigcache_test.go:710:34
assertEqual(t, stats.DelHits, int64(10)) assertEqual(t, stats.DelMisses, int64(10))713:2discarded-error-result
bigcache_test.go:713:2
//then cache.ResetStats() stats = cache.Stats()715:29redundant-conversion
bigcache_test.go:715:29
stats = cache.Stats() assertEqual(t, stats.Hits, int64(0)) assertEqual(t, stats.Misses, int64(0))716:31redundant-conversion
bigcache_test.go:716:31
assertEqual(t, stats.Hits, int64(0)) assertEqual(t, stats.Misses, int64(0)) assertEqual(t, stats.DelHits, int64(0))717:32redundant-conversion
bigcache_test.go:717:32
assertEqual(t, stats.Misses, int64(0)) assertEqual(t, stats.DelHits, int64(0)) assertEqual(t, stats.DelMisses, int64(0))718:34redundant-conversion
bigcache_test.go:718:34
assertEqual(t, stats.DelHits, int64(0)) assertEqual(t, stats.DelMisses, int64(0))}725:14discarded-error-result
bigcache_test.go:725:14
// given cache, _ := New(context.Background(), DefaultConfig(time.Second))734:2discarded-error-result
bigcache_test.go:734:2
// and when cache.Set("existingKey", nil) err = cache.Delete("existingKey")736:20discarded-error-result
bigcache_test.go:736:20
err = cache.Delete("existingKey") cachedValue, _ := cache.Get("existingKey")736:30add-constant
bigcache_test.go:736:30
err = cache.Delete("existingKey") cachedValue, _ := cache.Get("existingKey")744:6cognitive-complexity
bigcache_test.go:744:6
// TestCacheDelRandomly does simultaneous deletes, puts and gets, to check for corruption errors.func TestCacheDelRandomly(t *testing.T) { t.Parallel()760:14discarded-error-result
bigcache_test.go:760:14
cache, _ := New(context.Background(), c) var wg sync.WaitGroup769:4discarded-error-result
bigcache_test.go:769:4
cache.Delete(key) }783:4discarded-error-result
bigcache_test.go:783:4
} cache.Set(key, val) }791:23add-constant
bigcache_test.go:791:23
r := byte(rand.Int()) key := fmt.Sprintf("thekey%d", r)811:14discarded-error-result
bigcache_test.go:811:14
cache, _ := New(context.Background(), c) var wg sync.WaitGroup842:14discarded-error-result
bigcache_test.go:842:14
// given cache, _ := New(context.Background(), Config{ Shards: 8,852:3discarded-error-result
bigcache_test.go:852:3
for i := 0; i < keys; i++ { cache.Set(fmt.Sprintf("key%d", i), []byte("value")) }859:2discarded-error-result
bigcache_test.go:859:2
// and when cache.Reset()866:3discarded-error-result
bigcache_test.go:866:3
for i := 0; i < keys; i++ { cache.Set(fmt.Sprintf("key%d", i), []byte("value")) }877:14discarded-error-result
bigcache_test.go:877:14
// given cache, _ := New(context.Background(), Config{ Shards: 8,887:3discarded-error-result
bigcache_test.go:887:3
for i := 0; i < keys; i++ { cache.Set(fmt.Sprintf("key%d", i), []byte("value")) }889:2discarded-error-result
bigcache_test.go:889:2
} cache.Reset()901:14discarded-error-result
bigcache_test.go:901:14
// given cache, _ := New(context.Background(), Config{ Shards: 8,911:3discarded-error-result
bigcache_test.go:911:3
for i := 0; i < keys; i++ { cache.Set(fmt.Sprintf("key%d", i), []byte("value")) }914:2discarded-error-result
bigcache_test.go:914:2
cache.Reset()928:14discarded-error-result
bigcache_test.go:928:14
clock := mockedClock{value: 0} cache, _ := newBigCache(context.Background(), Config{ Shards: 1,936:2discarded-error-result
bigcache_test.go:936:2
// when cache.Set("key", []byte("value")) clock.set(5)938:2discarded-error-result
bigcache_test.go:938:2
clock.set(5) cache.Set("key", []byte("value2")) clock.set(7)940:2discarded-error-result
bigcache_test.go:940:2
clock.set(7) cache.Set("key2", []byte("value3")) cachedValue, _ := cache.Get("key")941:20discarded-error-result
bigcache_test.go:941:20
cache.Set("key2", []byte("value3")) cachedValue, _ := cache.Get("key")951:14discarded-error-result
bigcache_test.go:951:14
// given cache, _ := New(context.Background(), Config{ Shards: 1,960:2discarded-error-result
bigcache_test.go:960:2
// when cache.Set("key1", blob('a', 1024*400)) cache.Set("key2", blob('b', 1024*400))961:2discarded-error-result
bigcache_test.go:961:2
cache.Set("key1", blob('a', 1024*400)) cache.Set("key2", blob('b', 1024*400)) cache.Set("key3", blob('c', 1024*800))962:2discarded-error-result
bigcache_test.go:962:2
cache.Set("key2", blob('b', 1024*400)) cache.Set("key3", blob('c', 1024*800))964:26add-constant
bigcache_test.go:964:26
_, key1Err := cache.Get("key1") _, key2Err := cache.Get("key2")966:15discarded-error-result
bigcache_test.go:966:15
_, key2Err := cache.Get("key2") entry3, _ := cache.Get("key3")978:14discarded-error-result
bigcache_test.go:978:14
// given cache, _ := New(context.Background(), Config{ Shards: 1,985:2discarded-error-result
bigcache_test.go:985:2
}) cache.Set("key1", blob('a', 1024*400)) value, key1Err := cache.Get("key1")990:2discarded-error-result
bigcache_test.go:990:2
// override queue cache.Set("key2", blob('b', 1024*400)) cache.Set("key3", blob('c', 1024*400))991:2discarded-error-result
bigcache_test.go:991:2
cache.Set("key2", blob('b', 1024*400)) cache.Set("key3", blob('c', 1024*400)) cache.Set("key4", blob('d', 1024*400))991:12add-constant
bigcache_test.go:991:12
cache.Set("key2", blob('b', 1024*400)) cache.Set("key3", blob('c', 1024*400)) cache.Set("key4", blob('d', 1024*400))992:2discarded-error-result
bigcache_test.go:992:2
cache.Set("key3", blob('c', 1024*400)) cache.Set("key4", blob('d', 1024*400)) cache.Set("key5", blob('d', 1024*400))993:2discarded-error-result
bigcache_test.go:993:2
cache.Set("key4", blob('d', 1024*400)) cache.Set("key5", blob('d', 1024*400))1004:14discarded-error-result
bigcache_test.go:1004:14
// given cache, _ := New(context.Background(), Config{ Shards: 1,1024:14discarded-error-result
bigcache_test.go:1024:14
// given cache, _ := New(context.Background(), Config{ Shards: 16,1030:23redundant-conversion
bigcache_test.go:1030:23
Verbose: true, Hasher: hashStub(5), Logger: ml,1035:2discarded-error-result
bigcache_test.go:1035:2
// when cache.Set("liquid", []byte("value")) cachedValue, err := cache.Get("liquid")1043:2discarded-error-result
bigcache_test.go:1043:2
// when cache.Set("costarring", []byte("value 2")) cachedValue, err = cache.Get("costarring")1048:24add-constant
bigcache_test.go:1048:24
noError(t, err) assertEqual(t, []byte("value 2"), cachedValue)1051:31add-constant
bigcache_test.go:1051:31
// when cachedValue, err = cache.Get("liquid")1058:43redundant-conversion
bigcache_test.go:1058:43
assertEqual(t, "Collision detected. Both %q and %q have the same hash %x", ml.lastFormat) assertEqual(t, cache.Stats().Collisions, int64(1))}1065:14discarded-error-result
bigcache_test.go:1065:14
// given cache, _ := New(context.Background(), Config{ Shards: 1,1074:2discarded-error-result
bigcache_test.go:1074:2
// when cache.Set("Kierkegaard", []byte{}) cachedValue, err := cache.Get("Kierkegaard")1082:2discarded-error-result
bigcache_test.go:1082:2
// when cache.Set("Sartre", nil) cachedValue, err = cache.Get("Sartre")1090:2discarded-error-result
bigcache_test.go:1090:2
// when cache.Set("Nietzsche", []byte(nil)) cachedValue, err = cache.Get("Nietzsche")1098:6test-parallelism
bigcache_test.go:1098:6
func TestClosing(t *testing.T) { // given1109:15discarded-error-result
bigcache_test.go:1109:15
for i := 0; i < 100; i++ { cache, _ := New(context.Background(), config) cache.Close()1110:3discarded-error-result
bigcache_test.go:1110:3
cache, _ := New(context.Background(), config) cache.Close() }1127:14discarded-error-result
bigcache_test.go:1127:14
clock := mockedClock{value: 0} cache, _ := newBigCache(context.Background(), Config{ Shards: 1,1138:35redundant-conversion
bigcache_test.go:1138:35
assertEqual(t, ErrEntryNotFound, err) assertEqual(t, resp.EntryStatus, RemoveReason(0)) assertEqual(t, cache.Stats().Misses, int64(1))1139:39redundant-conversion
bigcache_test.go:1139:39
assertEqual(t, resp.EntryStatus, RemoveReason(0)) assertEqual(t, cache.Stats().Misses, int64(1)) assertEqual(t, []byte(nil), value)1148:14discarded-error-result
bigcache_test.go:1148:14
clock := mockedClock{value: 0} cache, _ := newBigCache(context.Background(), Config{ Shards: 1,1159:2discarded-error-result
bigcache_test.go:1159:2
value := "100" cache.Set(key, []byte(value))1161:23nested-structs
bigcache_test.go:1161:23
for _, tc := range []struct { name string1192:18range-value-capture
bigcache_test.go:1192:18
} { t.Run(tc.name, func(t *testing.T) { clock.set(tc.clock)1192:18test-parallelism
bigcache_test.go:1192:18
} { t.Run(tc.name, func(t *testing.T) { clock.set(tc.clock)1207:14discarded-error-result
bigcache_test.go:1207:14
// given cache, _ := New(context.Background(), Config{ Shards: 1,1213:23redundant-conversion
bigcache_test.go:1213:23
Verbose: true, Hasher: hashStub(5), })1217:2discarded-error-result
bigcache_test.go:1217:2
//when cache.Set("a", []byte("1")) cachedValue, resp, err := cache.GetWithInfo("a")1217:12add-constant
bigcache_test.go:1217:12
//when cache.Set("a", []byte("1")) cachedValue, resp, err := cache.GetWithInfo("a")1217:24add-constant
bigcache_test.go:1217:24
//when cache.Set("a", []byte("1")) cachedValue, resp, err := cache.GetWithInfo("a")1226:45add-constant
bigcache_test.go:1226:45
// when cachedValue, resp, err = cache.GetWithInfo("b")1232:43redundant-conversion
bigcache_test.go:1232:43
assertEqual(t, ErrEntryNotFound, err) assertEqual(t, cache.Stats().Collisions, int64(1))1236:1top-level-declaration-order
bigcache_test.go:1236:1
type mockedLogger struct { lastFormat string1238:15use-any
bigcache_test.go:1238:15
lastFormat string lastArgs []interface{}}1241:25exported-declaration-comment
bigcache_test.go:1241:25
func (ml *mockedLogger) Printf(format string, v ...interface{}) { ml.lastFormat = format1241:52use-any
bigcache_test.go:1241:52
func (ml *mockedLogger) Printf(format string, v ...interface{}) { ml.lastFormat = format1250:24exported-declaration-comment
bigcache_test.go:1250:24
func (mc *mockedClock) Epoch() int64 { return mc.value1258:22redefines-builtin-id
bigcache_test.go:1258:22
func blob(char byte, len int) []byte { return bytes.Repeat([]byte{char}, len)1262:6test-parallelism
bigcache_test.go:1262:6
func TestCache_SetWithoutCleanWindow(t *testing.T) {1267:11discarded-error-result
bigcache_test.go:1267:11
opt.HardMaxCacheSize = 1 bc, _ := New(context.Background(), opt)1276:6test-parallelism
bigcache_test.go:1276:6
func TestCache_RepeatedSetWithBiggerEntry(t *testing.T) {1283:11discarded-error-result
bigcache_test.go:1283:11
opt.HardMaxCacheSize = 1 bc, _ := New(context.Background(), opt)1308:15add-constant
bigcache_test.go:1308:15
err = bc.Set("8573", make([]byte, 200)) if nil != err {1316:1doc-comment-period
bigcache_test.go:1316:1
// TestBigCache_allocateAdditionalMemoryLeadPanic// The new commit 16df11e change the encoding method,it can fix issue #3001321:14discarded-error-result
bigcache_test.go:1321:14
clock := mockedClock{value: 0} cache, _ := newBigCache(context.Background(), Config{ Shards: 1,1328:2discarded-error-result
bigcache_test.go:1328:2
clock.set(ts) cache.Set("a", blob(0xff, 235)) ts += 21331:2discarded-error-result
bigcache_test.go:1331:2
clock.set(ts) cache.Set("b", blob(0xff, 235)) // expire the key "a"1336:2discarded-error-result
bigcache_test.go:1336:2
// move tail to leftMargin,insert before head cache.Set("c", blob(0xff, 108)) // reallocate memory,fill the tail to head with zero byte,move head to leftMargin1338:2discarded-error-result
bigcache_test.go:1338:2
// reallocate memory,fill the tail to head with zero byte,move head to leftMargin cache.Set("d", blob(0xff, 1024)) ts += 41342:2discarded-error-result
bigcache_test.go:1342:2
// expire the key "c" cache.Set("e", blob(0xff, 3)) // expire the zero bytes1344:2discarded-error-result
bigcache_test.go:1344:2
// expire the zero bytes cache.Set("f", blob(0xff, 3)) // expire the key "b"1346:2discarded-error-result
bigcache_test.go:1346:2
// expire the key "b" cache.Set("g", blob(0xff, 3)) _, err := cache.Get("b")1349:13discarded-error-result
bigcache_test.go:1349:13
assertEqual(t, err, ErrEntryNotFound) data, _ := cache.Get("g") assertEqual(t, []byte{0xff, 0xff, 0xff}, data)1353:6test-parallelism
bigcache_test.go:1353:6
func TestRemoveNonExpiredData(t *testing.T) { onRemove := func(key string, entry []byte, reason RemoveReason) {1357:14error-strings
bigcache_test.go:1357:14
if reason == Expired { t.Errorf("[%d]Expired OnRemove [%s]\n", reason, key) t.FailNow()bytes.go3
1:1format
bytes.go:1:1
//go:build !appengine// +build !appengine- Fix (safe): run `strider fmt bytes.go`
2:1redundant-build-tag
bytes.go:2:1
//go:build !appengine// +build !appengine4:9package-comments
bytes.go:4:9
package bigcachebytes_appengine.go1
3:9package-comments
bytes_appengine.go:3:9
package bigcacheclock.go4
1:1format
clock.go:1:1
package bigcache- Fix (safe): run `strider fmt clock.go`
1:9package-comments
clock.go:1:9
package bigcache12:7unused-receiver
clock.go:12:7
func (c systemClock) Epoch() int64 { return time.Now().Unix()12:22exported-declaration-comment
clock.go:12:22
func (c systemClock) Epoch() int64 { return time.Now().Unix()config.go6
1:9package-comments
config.go:1:9
package bigcache5:1doc-comment-period
config.go:5:1
// Config for BigCachetype Config struct {57:6exported-declaration-comment
config.go:57:6
// When load for BigCache can be predicted in advance then it is better to use custom config.func DefaultConfig(eviction time.Duration) Config { return Config{90:17exported-declaration-comment
config.go:90:17
// Filtering out reasons prevents bigcache from unwrapping them, which saves cpu.func (c Config) OnRemoveFilterSet(reasons ...RemoveReason) Config { c.onRemoveFilter = 091:2modifies-value-receiver
config.go:91:2
func (c Config) OnRemoveFilterSet(reasons ...RemoveReason) Config { c.onRemoveFilter = 0 for i := range reasons {93:3modifies-value-receiver
config.go:93:3
for i := range reasons { c.onRemoveFilter |= 1 << uint(reasons[i]) }encoding.go4
1:1format
encoding.go:1:1
package bigcache- Fix (safe): run `strider fmt encoding.go`
1:9package-comments
encoding.go:1:9
package bigcache19:3modifies-parameter
encoding.go:19:3
if blobLength > len(*buffer) { *buffer = make([]byte, blobLength) }35:3modifies-parameter
encoding.go:35:3
if blobLength > len(*buffer) { *buffer = make([]byte, blobLength) }encoding_test.go5
1:1format
encoding_test.go:1:1
package bigcache- Fix (safe): run `strider fmt encoding_test.go`
8:6test-parallelism
encoding_test.go:8:6
func TestEncodeDecode(t *testing.T) { // given11:10redundant-conversion
encoding_test.go:11:10
now := uint64(time.Now().Unix()) hash := uint64(42) key := "key"27:6test-parallelism
encoding_test.go:27:6
func TestAllocateBiggerBuffer(t *testing.T) { //given30:10redundant-conversion
encoding_test.go:30:10
now := uint64(time.Now().Unix()) hash := uint64(42) key := "1"entry_not_found_error.go4
1:9package-comments
entry_not_found_error.go:1:9
package bigcache6:2doc-comment-period
entry_not_found_error.go:6:2
var ( // ErrEntryNotFound is an error type struct which is returned when entry was not found for provided key ErrEntryNotFound = errors.New("Entry not found") //nolint:staticcheck // keep for backward compatibility7:2no-package-var
entry_not_found_error.go:7:2
// ErrEntryNotFound is an error type struct which is returned when entry was not found for provided key ErrEntryNotFound = errors.New("Entry not found") //nolint:staticcheck // keep for backward compatibility)7:32error-strings
entry_not_found_error.go:7:32
// ErrEntryNotFound is an error type struct which is returned when entry was not found for provided key ErrEntryNotFound = errors.New("Entry not found") //nolint:staticcheck // keep for backward compatibility)examples_test.go9
13:14discarded-error-result
examples_test.go:13:14
func Example() { cache, _ := bigcache.New(context.Background(), bigcache.DefaultConfig(10*time.Minute))15:2discarded-error-result
examples_test.go:15:2
cache.Set("my-unique-key", []byte("value"))17:14discarded-error-result
examples_test.go:17:14
entry, _ := cache.Get("my-unique-key") fmt.Println(string(entry))18:2discarded-error-result
examples_test.go:18:2
entry, _ := cache.Get("my-unique-key") fmt.Println(string(entry)) // Output: value65:3deep-exit
examples_test.go:65:3
if initErr != nil { log.Fatal(initErr) }68:19add-constant
examples_test.go:68:19
err := cache.Set("my-unique-key", []byte("value")) if err != nil {70:3deep-exit
examples_test.go:70:3
if err != nil { log.Fatal(err) }75:3deep-exit
examples_test.go:75:3
if err != nil { log.Fatal(err) }77:2discarded-error-result
examples_test.go:77:2
} fmt.Println(string(entry)) // Output: valuefnv.go4
1:1format
fnv.go:1:1
package bigcache- Fix (safe): run `strider fmt fnv.go`
1:9package-comments
fnv.go:1:9
package bigcache10:1top-level-declaration-order
fnv.go:10:1
type fnv64a struct{}20:7unused-receiver
fnv.go:20:7
// Sum64 gets the string and returns its uint64 hash value.func (f fnv64a) Sum64(key string) uint64 { var hash uint64 = offset64fnv_bench_test.go1
5:5no-package-var
fnv_bench_test.go:5:5
var text = "abcdefg"fnv_test.go4
1:1format
fnv_test.go:1:1
package bigcache- Fix (safe): run `strider fmt fnv_test.go`
13:1top-level-declaration-order
fnv_test.go:13:1
var testCases = []testCase{ {"", stdLibFnvSum64("")},13:5no-package-var
fnv_test.go:13:5
var testCases = []testCase{ {"", stdLibFnvSum64("")},21:6test-parallelism
fnv_test.go:21:6
func TestFnvHashSum64(t *testing.T) { h := newDefaultHasher()hash.go2
1:9package-comments
hash.go:1:9
package bigcache6:6exported-declaration-comment
hash.go:6:6
// you can use FarmHash family).type Hasher interface { Sum64(string) uint64hash_test.go1
5:22exported-declaration-comment
hash_test.go:5:22
func (stub hashStub) Sum64(_ string) uint64 { return uint64(stub)iterator.go20
1:1format
iterator.go:1:1
package bigcache- Fix (safe): run `strider fmt iterator.go`
1:9package-comments
iterator.go:1:9
package bigcache13:1doc-comment-period
iterator.go:13:1
// ErrInvalidIteratorState is reported when iterator is in invalid stateconst ErrInvalidIteratorState = iteratorError("Iterator is in invalid state. Use SetNext() to move to next position")14:1top-level-declaration-order
iterator.go:14:1
// ErrInvalidIteratorState is reported when iterator is in invalid stateconst ErrInvalidIteratorState = iteratorError("Iterator is in invalid state. Use SetNext() to move to next position")14:33redundant-conversion
iterator.go:14:33
// ErrInvalidIteratorState is reported when iterator is in invalid stateconst ErrInvalidIteratorState = iteratorError("Iterator is in invalid state. Use SetNext() to move to next position")16:1doc-comment-period
iterator.go:16:1
// ErrCannotRetrieveEntry is reported when entry cannot be retrieved from underlyingconst ErrCannotRetrieveEntry = iteratorError("Could not retrieve entry from cache")17:32redundant-conversion
iterator.go:17:32
// ErrCannotRetrieveEntry is reported when entry cannot be retrieved from underlyingconst ErrCannotRetrieveEntry = iteratorError("Could not retrieve entry from cache")19:5no-package-var
iterator.go:19:5
var emptyEntryInfo = EntryInfo{}21:1doc-comment-period
iterator.go:21:1
// EntryInfo holds informations about entry in the cachetype EntryInfo struct {30:1doc-comment-period
iterator.go:30:1
// Key returns entry's underlying keyfunc (e EntryInfo) Key() string {31:20confusing-naming
iterator.go:31:20
// Key returns entry's underlying keyfunc (e EntryInfo) Key() string { return e.key35:1doc-comment-period
iterator.go:35:1
// Hash returns entry's hash valuefunc (e EntryInfo) Hash() uint64 {36:20confusing-naming
iterator.go:36:20
// Hash returns entry's hash valuefunc (e EntryInfo) Hash() uint64 { return e.hash40:1doc-comment-period
iterator.go:40:1
// Timestamp returns entry's timestamp (time of insertion)func (e EntryInfo) Timestamp() uint64 {41:20confusing-naming
iterator.go:41:20
// Timestamp returns entry's timestamp (time of insertion)func (e EntryInfo) Timestamp() uint64 { return e.timestamp45:1doc-comment-period
iterator.go:45:1
// Value returns entry's underlying valuefunc (e EntryInfo) Value() []byte {46:20confusing-naming
iterator.go:46:20
// Value returns entry's underlying valuefunc (e EntryInfo) Value() []byte { return e.value50:1doc-comment-period
iterator.go:50:1
// EntryInfoIterator allows to iterate over entries in the cachetype EntryInfoIterator struct {63:30cognitive-complexity
iterator.go:63:30
// SetNext moves to next element and returns true if it exists.func (it *EntryInfoIterator) SetNext() bool { it.mutex.Lock()139:1doc-comment-period
iterator.go:139:1
// Value returns current value from the iteratorfunc (it *EntryInfoIterator) Value() (EntryInfo, error) {iterator_test.go23
1:1format
iterator_test.go:1:1
package bigcache- Fix (safe): run `strider fmt iterator_test.go`
19:14discarded-error-result
iterator_test.go:19:14
keysCount := 1000 cache, _ := New(context.Background(), Config{ Shards: 8,28:3discarded-error-result
iterator_test.go:28:3
for i := 0; i < keysCount; i++ { cache.Set(fmt.Sprintf("key%d", i), value) }32:26nested-structs
iterator_test.go:32:26
// when keys := make(map[string]struct{}) iterator := cache.Iterator()39:26nested-structs
iterator_test.go:39:26
if err == nil { keys[current.Key()] = struct{}{} }52:14discarded-error-result
iterator_test.go:52:14
clock := mockedClock{value: 0} cache, _ := newBigCache(context.Background(), Config{ Shards: 8,59:2discarded-error-result
iterator_test.go:59:2
cache.Set("key", []byte("value"))66:12error-strings
iterator_test.go:66:12
if !iterator.SetNext() { t.Errorf("Iterator should contain at least single element") }74:17redundant-conversion
iterator_test.go:74:17
assertEqual(t, "key", current.Key()) assertEqual(t, uint64(0x3dc94a19365b10ec), current.Hash()) assertEqual(t, []byte("value"), current.Value())75:24add-constant
iterator_test.go:75:24
assertEqual(t, uint64(0x3dc94a19365b10ec), current.Hash()) assertEqual(t, []byte("value"), current.Value()) assertEqual(t, uint64(0), current.Timestamp())76:17redundant-conversion
iterator_test.go:76:17
assertEqual(t, []byte("value"), current.Value()) assertEqual(t, uint64(0), current.Timestamp())}83:14discarded-error-result
iterator_test.go:83:14
// given cache, _ := New(context.Background(), Config{ Shards: 1,90:2discarded-error-result
iterator_test.go:90:2
cache.Set("key", []byte("value"))90:12add-constant
iterator_test.go:90:12
cache.Set("key", []byte("value"))97:12error-strings
iterator_test.go:97:12
if !iterator.SetNext() { t.Errorf("Iterator should contain at least single element") }125:14discarded-error-result
iterator_test.go:125:14
// given cache, _ := New(context.Background(), Config{ Shards: 1,137:12error-strings
iterator_test.go:137:12
if iterator.SetNext() { t.Errorf("Iterator should not contain any elements") }145:14discarded-error-result
iterator_test.go:145:14
// given cache, _ := New(context.Background(), Config{ Shards: 1,161:6test-parallelism
iterator_test.go:161:6
func TestEntriesIteratorParallelAdd(t *testing.T) { bc, err := New(context.Background(), DefaultConfig(1*time.Minute))161:37unused-parameter
iterator_test.go:161:37
func TestEntriesIteratorParallelAdd(t *testing.T) { bc, err := New(context.Background(), DefaultConfig(1*time.Minute))184:11discarded-error-result
iterator_test.go:184:11
for iter.SetNext() { _, _ = iter.Value() }190:6cognitive-complexity
iterator_test.go:190:6
func TestParallelSetAndIteration(t *testing.T) { t.Parallel()195:14discarded-error-result
iterator_test.go:195:14
cache, _ := New(context.Background(), Config{ Shards: 1,logger.go7
1:1format
logger.go:1:1
package bigcache- Fix (safe): run `strider fmt logger.go`
1:9package-comments
logger.go:1:9
package bigcache8:1doc-comment-period
logger.go:8:1
// Logger is invoked when `Config.Verbose=true`type Logger interface {10:29use-any
logger.go:10:29
type Logger interface { Printf(format string, v ...interface{})}16:1top-level-declaration-order
logger.go:16:1
// see https://golang.org/doc/faq#guarantee_satisfies_interfacevar _ Logger = &log.Logger{}18:1doc-comment-period
logger.go:18:1
// DefaultLogger returns a `Logger` implementation// backed by stdlib's log20:6exported-declaration-comment
logger.go:20:6
// backed by stdlib's logfunc DefaultLogger() *log.Logger { return log.New(os.Stdout, "", log.LstdFlags)queue/bytes_queue.go27
1:1format
queue/bytes_queue.go:1:1
package queue- Fix (safe): run `strider fmt queue/bytes_queue.go`
1:9package-comments
queue/bytes_queue.go:1:9
package queue17:2no-package-var
queue/bytes_queue.go:17:2
var ( errEmptyQueue = &queueError{"Empty queue"} errInvalidIndex = &queueError{"Index must be greater than zero. Invalid index."}18:2no-package-var
queue/bytes_queue.go:18:2
errEmptyQueue = &queueError{"Empty queue"} errInvalidIndex = &queueError{"Index must be greater than zero. Invalid index."} errIndexOutOfBounds = &queueError{"Index out of range"}19:2no-package-var
queue/bytes_queue.go:19:2
errInvalidIndex = &queueError{"Index must be greater than zero. Invalid index."} errIndexOutOfBounds = &queueError{"Index out of range"} errFullQueue = &queueError{"Full queue. Maximum size limit reached."}20:2no-package-var
queue/bytes_queue.go:20:2
errIndexOutOfBounds = &queueError{"Index out of range"} errFullQueue = &queueError{"Full queue. Maximum size limit reached."})23:1doc-comment-period
queue/bytes_queue.go:23:1
// BytesQueue is a non-thread safe queue type of fifo based on bytes array.// For every push operation index of entry is returned. It can be used to read the entry later25:6exported-declaration-comment
queue/bytes_queue.go:25:6
// For every push operation index of entry is returned. It can be used to read the entry latertype BytesQueue struct { full bool45:2single-case-switch
queue/bytes_queue.go:45:2
var header int switch { case length < 127: // 1<<7-161:1doc-comment-period
queue/bytes_queue.go:61:1
// NewBytesQueue initialize new bytes queue.// capacity is used in bytes array allocation64:6exported-declaration-comment
queue/bytes_queue.go:64:6
// When verbose flag is set then information about memory allocation are printedfunc NewBytesQueue(capacity int, maxCapacity int, verbose bool) *BytesQueue { return &BytesQueue{77:1doc-comment-period
queue/bytes_queue.go:77:1
// Reset removes all entries from queuefunc (q *BytesQueue) Reset() {89:22exported-declaration-comment
queue/bytes_queue.go:89:22
// Returns index for pushed data or error if maximum size queue limit is reached.func (q *BytesQueue) Push(data []byte) (int, error) { neededSize := getNeededSize(len(data))95:13optimize-operands-order
queue/bytes_queue.go:95:13
q.tail = leftMarginIndex } else if q.capacity+neededSize >= q.maxCapacity && q.maxCapacity > 0 { return -1, errFullQueue97:5no-else-after-return
queue/bytes_queue.go:97:5
return -1, errFullQueue } else { q.allocateAdditionalMemory(neededSize)109:22cognitive-complexity
queue/bytes_queue.go:109:22
func (q *BytesQueue) allocateAdditionalMemory(minimum int) { start := time.Now()143:22confusing-naming
queue/bytes_queue.go:143:22
func (q *BytesQueue) push(data []byte, len int) { headerEntrySize := binary.PutUvarint(q.headerBuffer, uint64(len))143:40redefines-builtin-id
queue/bytes_queue.go:143:40
func (q *BytesQueue) push(data []byte, len int) { headerEntrySize := binary.PutUvarint(q.headerBuffer, uint64(len))159:40redefines-builtin-id
queue/bytes_queue.go:159:40
func (q *BytesQueue) copy(data []byte, len int) { q.tail += copy(q.array[q.tail:], data[:len])163:1doc-comment-period
queue/bytes_queue.go:163:1
// Pop reads the oldest entry from queue and moves head pointer to the next onefunc (q *BytesQueue) Pop() ([]byte, error) {186:1doc-comment-period
queue/bytes_queue.go:186:1
// Peek reads the oldest entry from list without moving head pointerfunc (q *BytesQueue) Peek() ([]byte, error) {192:1doc-comment-period
queue/bytes_queue.go:192:1
// Get reads entry from indexfunc (q *BytesQueue) Get(index int) ([]byte, error) {198:1doc-comment-period
queue/bytes_queue.go:198:1
// CheckGet checks if an entry can be read from indexfunc (q *BytesQueue) CheckGet(index int) error {203:1doc-comment-period
queue/bytes_queue.go:203:1
// Capacity returns number of allocated bytes for queuefunc (q *BytesQueue) Capacity() int {208:1doc-comment-period
queue/bytes_queue.go:208:1
// Len returns number of entries kept in queuefunc (q *BytesQueue) Len() int {213:1doc-comment-period
queue/bytes_queue.go:213:1
// Error returns error messagefunc (e *queueError) Error() string {236:22confusing-naming
queue/bytes_queue.go:236:22
// peek returns the data from index and the number of bytes to encode the length of the data in uvarint formatfunc (q *BytesQueue) peek(index int) ([]byte, int, error) { err := q.peekCheckErr(index)queue/bytes_queue_test.go84
1:1file-length-limit
queue/bytes_queue_test.go:1:1
package queue1:1format
queue/bytes_queue_test.go:1:1
package queue- Fix (safe): run `strider fmt queue/bytes_queue_test.go`
26:2discarded-error-result
queue/bytes_queue_test.go:26:2
// when queue.Push(entry)41:2discarded-error-result
queue/bytes_queue_test.go:41:2
// when queue.Push(entry)52:18add-constant
queue/bytes_queue_test.go:52:18
queue := NewBytesQueue(100, 0, false) entry := []byte("hello")63:2discarded-error-result
queue/bytes_queue_test.go:63:2
// when queue.Push(entry) read, err = queue.Peek()81:2discarded-error-result
queue/bytes_queue_test.go:81:2
// when queue.Push(blob('a', 3)) queue.Push(blob('b', 4))82:2discarded-error-result
queue/bytes_queue_test.go:82:2
queue.Push(blob('a', 3)) queue.Push(blob('b', 4))93:2discarded-error-result
queue/bytes_queue_test.go:93:2
queue.Reset() queue.Push(blob('c', 8)) // should not trigger a re-allocation108:2discarded-error-result
queue/bytes_queue_test.go:108:2
// when queue.Push(entry) queue.Push(entry)109:2discarded-error-result
queue/bytes_queue_test.go:109:2
queue.Push(entry) queue.Push(entry) queue.Push(entry)110:2discarded-error-result
queue/bytes_queue_test.go:110:2
queue.Push(entry) queue.Push(entry)116:17add-constant
queue/bytes_queue_test.go:116:17
// then assertEqual(t, "Empty queue", err.Error()) assertEqual(t, 0, len(read))120:2discarded-error-result
queue/bytes_queue_test.go:120:2
// when queue.Push(entry) read, err = queue.Peek()143:2discarded-error-result
queue/bytes_queue_test.go:143:2
// when queue.Push(blob('a', 70)) queue.Push(blob('b', 20))144:2discarded-error-result
queue/bytes_queue_test.go:144:2
queue.Push(blob('a', 70)) queue.Push(blob('b', 20)) queue.Pop()145:2discarded-error-result
queue/bytes_queue_test.go:145:2
queue.Push(blob('b', 20)) queue.Pop() queue.Push(blob('c', 20))146:2discarded-error-result
queue/bytes_queue_test.go:146:2
queue.Pop() queue.Push(blob('c', 20))160:2discarded-error-result
queue/bytes_queue_test.go:160:2
// when queue.Push([]byte("hello1")) queue.Push([]byte("hello2"))161:2discarded-error-result
queue/bytes_queue_test.go:161:2
queue.Push([]byte("hello1")) queue.Push([]byte("hello2"))174:2discarded-error-result
queue/bytes_queue_test.go:174:2
// when queue.Push(blob('a', 3)) // header + entry + left margin = 5 bytes queue.Push(blob('b', 6)) // additional 7 bytes175:2discarded-error-result
queue/bytes_queue_test.go:175:2
queue.Push(blob('a', 3)) // header + entry + left margin = 5 bytes queue.Push(blob('b', 6)) // additional 7 bytes queue.Pop() // space freed, 4 bytes available at the beginning176:2discarded-error-result
queue/bytes_queue_test.go:176:2
queue.Push(blob('b', 6)) // additional 7 bytes queue.Pop() // space freed, 4 bytes available at the beginning queue.Push(blob('c', 6)) // 7 bytes needed, 13 bytes available at the tail177:2discarded-error-result
queue/bytes_queue_test.go:177:2
queue.Pop() // space freed, 4 bytes available at the beginning queue.Push(blob('c', 6)) // 7 bytes needed, 13 bytes available at the tail192:2discarded-error-result
queue/bytes_queue_test.go:192:2
// when queue.Push(blob('a', 3)) // header + entry + left margin = 5 bytes index, _ := queue.Push(blob('b', 6)) // additional 7 bytes193:14discarded-error-result
queue/bytes_queue_test.go:193:14
queue.Push(blob('a', 3)) // header + entry + left margin = 5 bytes index, _ := queue.Push(blob('b', 6)) // additional 7 bytes queue.Pop() // space freed, 4 bytes available at the beginning194:2discarded-error-result
queue/bytes_queue_test.go:194:2
index, _ := queue.Push(blob('b', 6)) // additional 7 bytes queue.Pop() // space freed, 4 bytes available at the beginning newestIndex, _ := queue.Push(blob('c', 6)) // 7 bytes needed, 13 available at the tail195:20discarded-error-result
queue/bytes_queue_test.go:195:20
queue.Pop() // space freed, 4 bytes available at the beginning newestIndex, _ := queue.Push(blob('c', 6)) // 7 bytes needed, 13 available at the tail210:2discarded-error-result
queue/bytes_queue_test.go:210:2
// when queue.Push(blob('a', 70)) // header + entry + left margin = 72 bytes queue.Push(blob('b', 10)) // 72 + 10 + 1 = 83 bytes211:2discarded-error-result
queue/bytes_queue_test.go:211:2
queue.Push(blob('a', 70)) // header + entry + left margin = 72 bytes queue.Push(blob('b', 10)) // 72 + 10 + 1 = 83 bytes queue.Pop() // space freed at the beginning212:2discarded-error-result
queue/bytes_queue_test.go:212:2
queue.Push(blob('b', 10)) // 72 + 10 + 1 = 83 bytes queue.Pop() // space freed at the beginning queue.Push(blob('c', 30)) // 31 bytes used at the beginning, tail pointer is before head pointer213:2discarded-error-result
queue/bytes_queue_test.go:213:2
queue.Pop() // space freed at the beginning queue.Push(blob('c', 30)) // 31 bytes used at the beginning, tail pointer is before head pointer queue.Push(blob('d', 40)) // 41 bytes needed but no available in one segment, allocate new memory214:2discarded-error-result
queue/bytes_queue_test.go:214:2
queue.Push(blob('c', 30)) // 31 bytes used at the beginning, tail pointer is before head pointer queue.Push(blob('d', 40)) // 41 bytes needed but no available in one segment, allocate new memory234:2discarded-error-result
queue/bytes_queue_test.go:234:2
// when queue.Push(blob('a', 30)) // header + entry + left margin = 32 bytes queue.Push(blob('b', 1)) // 32 + 128 + 1 = 161 bytes235:2discarded-error-result
queue/bytes_queue_test.go:235:2
queue.Push(blob('a', 30)) // header + entry + left margin = 32 bytes queue.Push(blob('b', 1)) // 32 + 128 + 1 = 161 bytes queue.Push(blob('b', 125)) // 32 + 128 + 1 = 161 bytes236:2discarded-error-result
queue/bytes_queue_test.go:236:2
queue.Push(blob('b', 1)) // 32 + 128 + 1 = 161 bytes queue.Push(blob('b', 125)) // 32 + 128 + 1 = 161 bytes queue.Push(blob('c', 20)) // 160 + 20 + 1 = 182237:2discarded-error-result
queue/bytes_queue_test.go:237:2
queue.Push(blob('b', 125)) // 32 + 128 + 1 = 161 bytes queue.Push(blob('c', 20)) // 160 + 20 + 1 = 182 queue.Pop() // space freed at the beginning238:2discarded-error-result
queue/bytes_queue_test.go:238:2
queue.Push(blob('c', 20)) // 160 + 20 + 1 = 182 queue.Pop() // space freed at the beginning queue.Pop() // free 2 bytes239:2discarded-error-result
queue/bytes_queue_test.go:239:2
queue.Pop() // space freed at the beginning queue.Pop() // free 2 bytes queue.Pop() // free 126240:2discarded-error-result
queue/bytes_queue_test.go:240:2
queue.Pop() // free 2 bytes queue.Pop() // free 126 queue.Push(blob('d', 30)) // 31 bytes used at the beginning, tail pointer is before head pointer, now free space is 128 bytes241:2discarded-error-result
queue/bytes_queue_test.go:241:2
queue.Pop() // free 126 queue.Push(blob('d', 30)) // 31 bytes used at the beginning, tail pointer is before head pointer, now free space is 128 bytes queue.Push(blob('e', 160)) // invoke allocateAdditionalMemory but fill 127 bytes free space (It should be 128 bytes, but 127 are filled, leaving one byte unfilled)242:2discarded-error-result
queue/bytes_queue_test.go:242:2
queue.Push(blob('d', 30)) // 31 bytes used at the beginning, tail pointer is before head pointer, now free space is 128 bytes queue.Push(blob('e', 160)) // invoke allocateAdditionalMemory but fill 127 bytes free space (It should be 128 bytes, but 127 are filled, leaving one byte unfilled)259:2discarded-error-result
queue/bytes_queue_test.go:259:2
// when queue.Push(blob('a', 70)) // header + entry + left margin = 72 bytes index, _ := queue.Push(blob('b', 10)) // 72 + 10 + 1 = 83 bytes260:14discarded-error-result
queue/bytes_queue_test.go:260:14
queue.Push(blob('a', 70)) // header + entry + left margin = 72 bytes index, _ := queue.Push(blob('b', 10)) // 72 + 10 + 1 = 83 bytes queue.Pop() // space freed at the beginning261:2discarded-error-result
queue/bytes_queue_test.go:261:2
index, _ := queue.Push(blob('b', 10)) // 72 + 10 + 1 = 83 bytes queue.Pop() // space freed at the beginning queue.Push(blob('c', 30)) // 31 bytes used at the beginning, tail pointer is before head pointer262:2discarded-error-result
queue/bytes_queue_test.go:262:2
queue.Pop() // space freed at the beginning queue.Push(blob('c', 30)) // 31 bytes used at the beginning, tail pointer is before head pointer newestIndex, _ := queue.Push(blob('d', 40)) // 41 bytes needed but no available in one segment, allocate new memory263:20discarded-error-result
queue/bytes_queue_test.go:263:20
queue.Push(blob('c', 30)) // 31 bytes used at the beginning, tail pointer is before head pointer newestIndex, _ := queue.Push(blob('d', 40)) // 41 bytes needed but no available in one segment, allocate new memory278:2discarded-error-result
queue/bytes_queue_test.go:278:2
// when queue.Push(blob('a', 100)) // then292:2discarded-error-result
queue/bytes_queue_test.go:292:2
// when queue.Push(make([]byte, 2)) queue.Push(make([]byte, 2))293:2discarded-error-result
queue/bytes_queue_test.go:293:2
queue.Push(make([]byte, 2)) queue.Push(make([]byte, 2)) queue.Push(make([]byte, 100))294:2discarded-error-result
queue/bytes_queue_test.go:294:2
queue.Push(make([]byte, 2)) queue.Push(make([]byte, 100))297:2discarded-error-result
queue/bytes_queue_test.go:297:2
// then queue.Pop() queue.Pop()298:2discarded-error-result
queue/bytes_queue_test.go:298:2
queue.Pop() queue.Pop() assertEqual(t, make([]byte, 100), pop(queue))311:2discarded-error-result
queue/bytes_queue_test.go:311:2
// when queue.Push([]byte("a")) queue.Push([]byte("b"))312:2discarded-error-result
queue/bytes_queue_test.go:312:2
queue.Push([]byte("a")) queue.Push([]byte("b")) queue.Pop()313:2discarded-error-result
queue/bytes_queue_test.go:313:2
queue.Push([]byte("b")) queue.Pop() queue.Pop()314:2discarded-error-result
queue/bytes_queue_test.go:314:2
queue.Pop() queue.Pop() queue.Push([]byte("c"))315:2discarded-error-result
queue/bytes_queue_test.go:315:2
queue.Pop() queue.Push([]byte("c"))329:2discarded-error-result
queue/bytes_queue_test.go:329:2
// when queue.Push([]byte("a")) index, _ := queue.Push([]byte("b"))330:14discarded-error-result
queue/bytes_queue_test.go:330:14
queue.Push([]byte("a")) index, _ := queue.Push([]byte("b")) queue.Push([]byte("c"))331:2discarded-error-result
queue/bytes_queue_test.go:331:2
index, _ := queue.Push([]byte("b")) queue.Push([]byte("c")) result, _ := queue.Get(index)331:20add-constant
queue/bytes_queue_test.go:331:20
index, _ := queue.Push([]byte("b")) queue.Push([]byte("c")) result, _ := queue.Get(index)332:15discarded-error-result
queue/bytes_queue_test.go:332:15
queue.Push([]byte("c")) result, _ := queue.Get(index)335:24add-constant
queue/bytes_queue_test.go:335:24
// then assertEqual(t, []byte("b"), result)}343:2discarded-error-result
queue/bytes_queue_test.go:343:2
queue := NewBytesQueue(1, 0, false) queue.Push([]byte("a"))343:20add-constant
queue/bytes_queue_test.go:343:20
queue := NewBytesQueue(1, 0, false) queue.Push([]byte("a"))360:2discarded-error-result
queue/bytes_queue_test.go:360:2
queue := NewBytesQueue(1, 0, false) queue.Push([]byte("a"))395:2discarded-error-result
queue/bytes_queue_test.go:395:2
// when queue.Push(blob('a', 25)) queue.Push(blob('b', 5))396:2discarded-error-result
queue/bytes_queue_test.go:396:2
queue.Push(blob('a', 25)) queue.Push(blob('b', 5)) capacity := queue.Capacity()414:2discarded-error-result
queue/bytes_queue_test.go:414:2
// when queue.Push([]byte("aaa")) queue.Push([]byte("bb"))415:2discarded-error-result
queue/bytes_queue_test.go:415:2
queue.Push([]byte("aaa")) queue.Push([]byte("bb")) queue.Pop()416:2discarded-error-result
queue/bytes_queue_test.go:416:2
queue.Push([]byte("bb")) queue.Pop()420:2discarded-error-result
queue/bytes_queue_test.go:420:2
assertEqual(t, 9, queue.Capacity()) queue.Push([]byte("c")) assertEqual(t, 18, queue.Capacity())435:2discarded-error-result
queue/bytes_queue_test.go:435:2
// when queue.Push([]byte("aaa")) queue.Push([]byte("bb"))436:2discarded-error-result
queue/bytes_queue_test.go:436:2
queue.Push([]byte("aaa")) queue.Push([]byte("bb")) _, err := queue.Pop()440:2discarded-error-result
queue/bytes_queue_test.go:440:2
queue.Push([]byte("c")) queue.Push([]byte("d"))441:2discarded-error-result
queue/bytes_queue_test.go:441:2
queue.Push([]byte("c")) queue.Push([]byte("d")) queue.Push([]byte("e"))442:2discarded-error-result
queue/bytes_queue_test.go:442:2
queue.Push([]byte("d")) queue.Push([]byte("e")) _, err = queue.Pop()447:2discarded-error-result
queue/bytes_queue_test.go:447:2
noError(t, err) queue.Push([]byte("fff")) _, err = queue.Pop()468:22redefines-builtin-id
queue/bytes_queue_test.go:468:22
func blob(char byte, len int) []byte { return bytes.Repeat([]byte{char}, len)472:49use-any
queue/bytes_queue_test.go:472:49
func assertEqual(t *testing.T, expected, actual interface{}, msgAndArgs ...interface{}) { if !objectsAreEqual(expected, actual) {472:76use-any
queue/bytes_queue_test.go:472:76
func assertEqual(t *testing.T, expected, actual interface{}, msgAndArgs ...interface{}) { if !objectsAreEqual(expected, actual) {487:3dynamic-printf
queue/bytes_queue_test.go:487:3
file = path.Base(file) t.Errorf(fmt.Sprintf("\n%s:%d: Error is not nil: \n"+ "actual : %T(%#v)\n", file, line, e, e))492:39use-any
queue/bytes_queue_test.go:492:39
func objectsAreEqual(expected, actual interface{}) bool { if expected == nil || actual == nil {server/cache_handlers.go9
1:1format
server/cache_handlers.go:1:1
package main- Fix (safe): run `strider fmt server/cache_handlers.go`
1:9package-comments
server/cache_handlers.go:1:9
package main12:3single-case-switch
server/cache_handlers.go:12:3
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet:29:40unused-parameter
server/cache_handlers.go:29:40
func clearCache(w http.ResponseWriter, r *http.Request) { if err := cache.Reset(); err != nil {39:6get-function-return-value
server/cache_handlers.go:39:6
// handles get requests.func getCacheHandler(w http.ResponseWriter, r *http.Request) { target := r.URL.Path[len(cachePath):]43:3discarded-error-result
server/cache_handlers.go:43:3
w.WriteHeader(http.StatusBadRequest) w.Write([]byte("can't get a key if there is no key.")) log.Print("empty request.")59:2discarded-error-result
server/cache_handlers.go:59:2
} w.Write(entry)}66:3discarded-error-result
server/cache_handlers.go:66:3
w.WriteHeader(http.StatusBadRequest) w.Write([]byte("can't put a key if there is no key.")) log.Print("empty request.")78:30redundant-conversion
server/cache_handlers.go:78:30
if err := cache.Set(target, []byte(entry)); err != nil { log.Print(err)server/middleware.go3
1:1format
server/middleware.go:1:1
package main- Fix (safe): run `strider fmt server/middleware.go`
1:9package-comments
server/middleware.go:1:9
package main15:3modifies-parameter
server/middleware.go:15:3
for _, svc := range svcs { h = svc(h) }server/middleware_test.go5
19:6test-parallelism
server/middleware_test.go:19:6
func TestServiceLoader(t *testing.T) { req, err := http.NewRequest("GET", "/api/v1/stats", nil)20:30standard-http-method-constant
server/middleware_test.go:20:30
func TestServiceLoader(t *testing.T) { req, err := http.NewRequest("GET", "/api/v1/stats", nil) if err != nil {32:6test-parallelism
server/middleware_test.go:32:6
func TestRequestMetrics(t *testing.T) { var b bytes.Buffer35:30standard-http-method-constant
server/middleware_test.go:35:30
logger := log.New(&b, "", log.LstdFlags) req, err := http.NewRequest("GET", "/api/v1/cache/empty", nil) if err != nil {44:12error-strings
server/middleware_test.go:44:12
if len(targetTestString) == 0 { t.Errorf("we are not logging request length strings.") }server/server.go8
1:9package-comments
server/server.go:1:9
package main29:2no-package-var
server/server.go:29:2
var ( port int logfile string30:2no-package-var
server/server.go:30:2
port int logfile string ver bool31:2no-package-var
server/server.go:31:2
logfile string ver bool34:2no-package-var
server/server.go:34:2
// cache-specific settings. cache *bigcache.BigCache config = bigcache.Config{}35:2no-package-var
server/server.go:35:2
cache *bigcache.BigCache config = bigcache.Config{})38:6no-init
server/server.go:38:6
func init() { flag.BoolVar(&config.Verbose, "v", false, "Verbose logging.")54:3discarded-error-result
server/server.go:54:3
if ver { fmt.Printf("BigCache HTTP Server v%s", version) os.Exit(0)server/server_test.go28
1:1format
server/server_test.go:1:1
package main- Fix (safe): run `strider fmt server/server_test.go`
17:19insecure-url-scheme
server/server_test.go:17:19
const ( testBaseString = "http://bigcache.org")21:13discarded-error-result
server/server_test.go:21:13
func testCacheSetup() { cache, _ = bigcache.New(context.Background(), bigcache.Config{ Shards: 1024,65:29add-constant
server/server_test.go:65:29
t.Parallel() req := httptest.NewRequest("GET", testBaseString+"/api/v1/cache/getKey", nil) rr := httptest.NewRecorder()69:2discarded-error-result
server/server_test.go:69:2
// set something. cache.Set("getKey", []byte("123"))80:12error-strings
server/server_test.go:80:12
if string(body) != "123" { t.Errorf("want: 123; got: %s.\n\tcan't get existing key getKey.", string(body)) }86:98add-constant
server/server_test.go:86:98
t.Parallel() req := httptest.NewRequest("PUT", testBaseString+"/api/v1/cache/putKey", bytes.NewBuffer([]byte("123"))) rr := httptest.NewRecorder()97:12error-strings
server/server_test.go:97:12
if string(testPutKeyResult) != "123" { t.Errorf("want: 123; got: %s.\n\tcan't get PUT key putKey.", string(testPutKeyResult)) }118:54add-constant
server/server_test.go:118:54
req := httptest.NewRequest("DELETE", testBaseString+"/api/v1/cache/", bytes.NewBuffer([]byte("123"))) rr := httptest.NewRecorder()125:12error-strings
server/server_test.go:125:12
if resp.StatusCode != 404 { t.Errorf("want: 404; got: %d.\n\tapparently we're trying to delete empty keys.", resp.StatusCode) }139:12error-strings
server/server_test.go:139:12
if resp.StatusCode != 404 { t.Errorf("want: 404; got: %d.\n\tapparently we're trying to delete invalid keys.", resp.StatusCode) }146:29add-constant
server/server_test.go:146:29
req := httptest.NewRequest("DELETE", testBaseString+"/api/v1/cache/testDeleteKey", bytes.NewBuffer([]byte("123"))) rr := httptest.NewRecorder()157:12error-strings
server/server_test.go:157:12
if resp.StatusCode != 200 { t.Errorf("want: 200; got: %d.\n\tcan't delete keys.", resp.StatusCode) }164:36add-constant
server/server_test.go:164:36
putRequest := httptest.NewRequest("PUT", testBaseString+"/api/v1/cache/putKey", bytes.NewBuffer([]byte("123"))) putResponseRecorder := httptest.NewRecorder()180:12error-strings
server/server_test.go:180:12
if resp.StatusCode != 200 { t.Errorf("want: 200; got: %d.\n\tcan't delete keys.", resp.StatusCode) }207:12error-strings
server/server_test.go:207:12
if testStats.Hits == 0 { t.Errorf("want: > 0; got: 0.\n\thandler not properly returning stats info.") }216:54add-constant
server/server_test.go:216:54
getreq := httptest.NewRequest("GET", testBaseString+"/api/v1/stats", nil) putreq := httptest.NewRequest("PUT", testBaseString+"/api/v1/stats", nil) rr := httptest.NewRecorder()220:22add-constant
server/server_test.go:220:22
// manually enter a key so there are some stats. get it so there's at least 1 hit. if err := cache.Set("incrementStats", []byte("123")); err != nil { t.Errorf("error setting cache value. error %s", err)237:12error-strings
server/server_test.go:237:12
if testStats.Hits == 0 { t.Errorf("want: > 0; got: 0.\n\thandler not properly returning stats info.") }249:6test-parallelism
server/server_test.go:249:6
func TestCacheIndexHandler(t *testing.T) { getreq := httptest.NewRequest("GET", testBaseString+"/api/v1/cache/testkey", nil)252:57add-constant
server/server_test.go:252:57
putreq := httptest.NewRequest("PUT", testBaseString+"/api/v1/cache/testkey", bytes.NewBuffer([]byte("123"))) delreq := httptest.NewRequest("DELETE", testBaseString+"/api/v1/cache/testkey", bytes.NewBuffer([]byte("123")))262:12error-strings
server/server_test.go:262:12
if resp.StatusCode != 201 { t.Errorf("want: 201; got: %d.\n\tcan't put keys.", resp.StatusCode) }267:12error-strings
server/server_test.go:267:12
if resp.StatusCode != 200 { t.Errorf("want: 200; got: %d.\n\tcan't get keys.", resp.StatusCode) }272:12add-constant
server/server_test.go:272:12
if resp.StatusCode != 200 { t.Errorf("want: 200; got: %d.\n\tcan't delete keys.", resp.StatusCode) }272:12error-strings
server/server_test.go:272:12
if resp.StatusCode != 200 { t.Errorf("want: 200; got: %d.\n\tcan't delete keys.", resp.StatusCode) }278:51add-constant
server/server_test.go:278:51
t.Parallel() req := httptest.NewRequest("PUT", testBaseString+"/api/v1/cache/putKey", bytes.NewBuffer(bytes.Repeat([]byte("a"), 8*1024*1024))) rr := httptest.NewRecorder()291:75redundant-conversion
server/server_test.go:291:75
t.Parallel() req := httptest.NewRequest("PUT", testBaseString+"/api/v1/cache/putKey", errReader(0)) rr := httptest.NewRecorder()302:1top-level-declaration-order
server/server_test.go:302:1
type errReader intserver/stats_handler.go6
1:1format
server/stats_handler.go:1:1
package main- Fix (safe): run `strider fmt server/stats_handler.go`
1:9package-comments
server/stats_handler.go:1:9
package main12:3single-case-switch
server/stats_handler.go:12:3
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet:22:6get-function-return-value
server/stats_handler.go:22:6
// returns the cache's statistics.func getCacheStatsHandler(w http.ResponseWriter, r *http.Request) { target, err := json.Marshal(cache.Stats())22:50unused-parameter
server/stats_handler.go:22:50
// returns the cache's statistics.func getCacheStatsHandler(w http.ResponseWriter, r *http.Request) { target, err := json.Marshal(cache.Stats())31:2discarded-error-result
server/stats_handler.go:31:2
w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Write(target)}shard.go10
1:1format
shard.go:1:1
package bigcache- Fix (safe): run `strider fmt shard.go`
1:9package-comments
shard.go:1:9
package bigcache13:1doc-comment-period
shard.go:13:1
// Metadata contains information of a specific entrytype Metadata struct {110:20add-constant
shard.go:110:20
if s.isVerbose { s.logger.Printf("Collision detected. Both %q and %q have the same hash %x", key, readKeyFromEntry(wrappedEntry), hashedKey) }120:22cognitive-complexity
shard.go:120:22
func (s *cacheShard) set(key string, hashedKey uint64, entry []byte) error { currentTimestamp := uint64(s.clock.Epoch())154:22cognitive-complexity
shard.go:154:22
func (s *cacheShard) addNewWithoutLock(key string, hashedKey uint64, entry []byte) error { currentTimestamp := uint64(s.clock.Epoch())176:22cognitive-complexity
shard.go:176:22
func (s *cacheShard) setWrappedEntryWithoutLock(currentTimestamp uint64, w []byte, hashedKey uint64) error { if previousIndex := s.hashmap[hashedKey]; previousIndex != 0 {195:22add-constant
shard.go:195:22
if s.removeOldestEntry(NoSpace) != nil { return errors.New("entry is bigger than max shard size") }278:3discarded-error-result
shard.go:278:3
if s.isExpired(oldestEntry, currentTimestamp) { evict(Expired) return true292:22cognitive-complexity
shard.go:292:22
func (s *cacheShard) cleanUp(currentTimestamp uint64) { s.lock.Lock()stats.go2
1:9package-comments
stats.go:1:9
package bigcache3:1doc-comment-period
stats.go:3:1
// Stats stores cache statisticstype Stats struct {utils.go1
1:9package-comments
utils.go:1:9
package bigcache