Browse Source

util/lru: add Clear method

Updates tailscale/corp#20109

Signed-off-by: Andrew Dunham <[email protected]>
Change-Id: I751a669251a70f0134dd1540c19b274a97608a93
Andrew Dunham 1 year ago
parent
commit
47b3476eb7
2 changed files with 10 additions and 0 deletions
  1. 6 0
      util/lru/lru.go
  2. 4 0
      util/lru/lru_test.go

+ 6 - 0
util/lru/lru.go

@@ -68,6 +68,12 @@ func (c *Cache[K, V]) Set(key K, value V) {
 	}
 	}
 }
 }
 
 
+// Clear removes all items from the cache.
+func (c *Cache[K, V]) Clear() {
+	c.head = nil
+	c.lookup = nil
+}
+
 // Get looks up a key's value from the cache, returning either
 // Get looks up a key's value from the cache, returning either
 // the value or the zero value if it not present.
 // the value or the zero value if it not present.
 //
 //

+ 4 - 0
util/lru/lru_test.go

@@ -47,6 +47,10 @@ func TestLRU(t *testing.T) {
 	if c.Contains(3) {
 	if c.Contains(3) {
 		t.Errorf("contains 3; should not")
 		t.Errorf("contains 3; should not")
 	}
 	}
+	c.Clear()
+	if g, w := c.Len(), 0; g != w {
+		t.Errorf("Len = %d; want %d", g, w)
+	}
 }
 }
 
 
 func TestLRUDeleteCorruption(t *testing.T) {
 func TestLRUDeleteCorruption(t *testing.T) {