Help us shape the future of Go! Take the 2026 Go Developer Survey

cachetest

package
v0.8.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package cachetest 是 data 门面子包:CacheAside 实现契约测试套件(8 场景,含 -race)。

re-export 自 github.com/oekit/pkg/cache/cachetest:类型为泛型 type alias(与源包**完全同一类型**, 双向赋值互通);非泛型函数/变量经 var 引用同一函数值。源包新增导出符号时 本壳需同步(门面跟版税,data 门面化决策已接受)。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Run

func Run[T any](t *testing.T, c Contract[T], factory func(t *testing.T, source pkgcache.SourceFunc[T]) pkgcache.CacheAside[T])

Run 跑完整契约场景(8 个子测试)。

func RunStaleIfError added in v0.8.2

func RunStaleIfError[T any](t *testing.T, c Contract[T], factory func(t *testing.T, source cache.SourceFuncWithTTL[T]) cache.TTLCacheAside[T])

RunStaleIfError 跑「fail-open stale-if-error」契约场景。

**factory 必须以 WithStaleIfError(true) 构造被测缓存**,否则场景必然失败 (stale-if-error 是构造期开关,套件不探测可选能力)。

每个子测试覆盖一条必须跨实现一致的语义:

  1. stale_serve_on_error 成功加载后 source 失败 → 返回陈旧值
  2. no_stale_propagates 无陈旧值时 source 失败 → 上抛错误
  3. null_marker_not_stale Source 成功 (nil,nil) 后 marker 短路 (nil,nil), 不回 stale 旧值(marker 不参与 stale)
  4. del_clears_stale Del 后 source 失败 → 上抛(写后失效不得复活)
  5. stale_no_refill stale 命中不回填缓存(下一跳仍回源)

func RunTTL added in v0.8.2

func RunTTL[T any](t *testing.T, c Contract[T], factory func(t *testing.T, source cache.SourceFuncWithTTL[T]) cache.TTLCacheAside[T])

RunTTL 跑「回源动态 TTL」契约场景。factory 每个场景调用一次,用套件给定 的 source 构造全新被测缓存(source 可能返回任意 ttl——包括 <=0,factory 原样注入即可);被测缓存的后台资源由 factory 经 t.Cleanup 清理。

每个子测试覆盖一条必须跨实现一致的语义:

  1. source_ttl_honored source 返回正 TTL → 到期后 miss(有界等待)
  2. source_ttl_fallback source 返回 ttl<=0 → 回退默认 TTL(回填后仍命中)
  3. get_or_load_with_ttl GetOrLoadWithTTL 与 GetOrLoad 同语义(回源计数恰 1)

Types

type Contract

type Contract[T any] = src.Contract[T]

func Comparable

func Comparable[T comparable]() Contract[T]

Comparable 返回可比较类型的现成 Contract。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL