aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/app/state/state_test.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-10-28 23:04:17 +0900
committerOphestra <cat@gensokyo.uk>2025-10-29 03:21:00 +0900
commit65342d588ff061d2130e6379d86a26be90c908ae (patch)
treefb876d53aebe594fe153d1e40aa225508a92a9ef /internal/app/state/state_test.go
parent5e5826459ed744fc0bd717e0136614365c7a96f3 (diff)
internal/app/state: improve store internals
This fully exposes the store internals for #19 and are final preparations for removing the legacy store interface. This change also fixes a potential deadlock in the handle initialisation mkdir failure path. This however is never reachable in hakurei as the store is never accessed concurrently. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/app/state/state_test.go')
-rw-r--r--internal/app/state/state_test.go25
1 files changed, 13 insertions, 12 deletions
diff --git a/internal/app/state/state_test.go b/internal/app/state/state_test.go
index a334c348..c387b2ec 100644
--- a/internal/app/state/state_test.go
+++ b/internal/app/state/state_test.go
@@ -1,17 +1,22 @@
package state_test
import (
- "math/rand/v2"
+ "log"
+ "math/rand"
"reflect"
"slices"
"testing"
"time"
+ "hakurei.app/container/check"
"hakurei.app/hst"
"hakurei.app/internal/app/state"
+ "hakurei.app/message"
)
-func testStore(t *testing.T, s state.Store) {
+func TestMulti(t *testing.T) {
+ s := state.NewMulti(message.NewMsg(log.New(log.Writer(), "multi: ", 0)), check.MustAbs(t.TempDir()))
+
t.Run("list empty store", func(t *testing.T) {
if identities, err := s.List(); err != nil {
t.Fatalf("List: error = %v", err)
@@ -30,7 +35,12 @@ func testStore(t *testing.T, s state.Store) {
var tc [tl]hst.State
for i := 0; i < tl; i++ {
- makeState(t, &tc[i])
+ if err := hst.NewInstanceID(&tc[i].ID); err != nil {
+ t.Fatalf("cannot create dummy state: %v", err)
+ }
+ tc[i].PID = rand.Int()
+ tc[i].Config = hst.Template()
+ tc[i].Time = time.Now()
}
do := func(identity int, f func(c state.Cursor)) {
@@ -108,12 +118,3 @@ func testStore(t *testing.T, s state.Store) {
}
})
}
-
-func makeState(t *testing.T, s *hst.State) {
- if err := hst.NewInstanceID(&s.ID); err != nil {
- t.Fatalf("cannot create dummy state: %v", err)
- }
- s.PID = rand.Int()
- s.Config = hst.Template()
- s.Time = time.Now()
-}