tailscale/tstest/chonktest/tailchonk_test.go
Alex Chan 1723cb83ed ipn/ipnlocal: use an in-memory TKA store if FS is unavailable
This requires making the internals of LocalBackend a bit more generic,
and implementing the `tka.CompactableChonk` interface for `tka.Mem`.

Signed-off-by: Alex Chan <alexc@tailscale.com>

Updates https://github.com/tailscale/corp/issues/33599
2025-11-17 18:12:33 +00:00

60 lines
1.1 KiB
Go

// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package chonktest
import (
"testing"
"tailscale.com/tka"
"tailscale.com/util/must"
)
func TestImplementsChonk(t *testing.T) {
for _, tt := range []struct {
name string
newChonk func(t *testing.T) tka.Chonk
}{
{
name: "Mem",
newChonk: func(t *testing.T) tka.Chonk {
return &tka.Mem{}
},
},
{
name: "FS",
newChonk: func(t *testing.T) tka.Chonk {
return must.Get(tka.ChonkDir(t.TempDir()))
},
},
} {
t.Run(tt.name, func(t *testing.T) {
RunChonkTests(t, tt.newChonk)
})
}
}
func TestImplementsCompactableChonk(t *testing.T) {
for _, tt := range []struct {
name string
newChonk func(t *testing.T) tka.CompactableChonk
}{
{
name: "Mem",
newChonk: func(t *testing.T) tka.CompactableChonk {
return &tka.Mem{}
},
},
{
name: "FS",
newChonk: func(t *testing.T) tka.CompactableChonk {
return must.Get(tka.ChonkDir(t.TempDir()))
},
},
} {
t.Run(tt.name, func(t *testing.T) {
RunCompactableChonkTests(t, tt.newChonk)
})
}
}