MCPcopy Create free account
hub / github.com/astercloud/aster / TestInMemoryStore_Prune

Function TestInMemoryStore_Prune

pkg/memory/logic/store_test.go:297–355  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

295}
296
297func TestInMemoryStore_Prune(t *testing.T) {
298 store := NewInMemoryStore()
299 defer func() { _ = store.Close() }()
300
301 ctx := context.Background()
302 namespace := "user:123"
303
304 // 创建一些 Memory
305 oldTime := time.Now().Add(-time.Hour * 24 * 100) // 100 天前
306 recentTime := time.Now().Add(-time.Hour) // 1 小时前
307
308 memories := []*LogicMemory{
309 {
310 Namespace: namespace,
311 Key: "low_confidence",
312 Provenance: &memory.MemoryProvenance{Confidence: 0.1},
313 LastAccessed: recentTime,
314 },
315 {
316 Namespace: namespace,
317 Key: "old_unused",
318 AccessCount: 1,
319 Provenance: &memory.MemoryProvenance{Confidence: 0.8},
320 LastAccessed: oldTime,
321 },
322 {
323 Namespace: namespace,
324 Key: "good",
325 AccessCount: 10,
326 Provenance: &memory.MemoryProvenance{Confidence: 0.9},
327 LastAccessed: recentTime,
328 },
329 }
330
331 for _, m := range memories {
332 require.NoError(t, store.Save(ctx, m))
333 // 手动设置 LastAccessed(因为 Save 会更新它)
334 store.mu.Lock()
335 stored := store.memories[makeKey(m.Namespace, m.Key)]
336 stored.LastAccessed = m.LastAccessed
337 stored.AccessCount = m.AccessCount
338 store.mu.Unlock()
339 }
340
341 // 清理低置信度
342 pruned, err := store.Prune(ctx, PruneCriteria{
343 MinConfidence: 0.2,
344 })
345 require.NoError(t, err)
346 assert.Equal(t, 1, pruned)
347
348 // 验证 low_confidence 被删除
349 _, err = store.Get(ctx, namespace, "low_confidence")
350 assert.ErrorIs(t, err, ErrMemoryNotFound)
351
352 // good 仍然存在
353 _, err = store.Get(ctx, namespace, "good")
354 require.NoError(t, err)

Callers

nothing calls this directly

Calls 7

CloseMethod · 0.95
SaveMethod · 0.95
PruneMethod · 0.95
GetMethod · 0.95
NewInMemoryStoreFunction · 0.70
makeKeyFunction · 0.70
AddMethod · 0.65

Tested by

no test coverage detected