55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
package runtime
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
func TestCacheRuntimeRoundTrip(t *testing.T) {
|
|
c := NewCache()
|
|
gameID := uuid.New()
|
|
rec := RuntimeRecord{GameID: gameID, Status: RuntimeStatusRunning}
|
|
|
|
c.PutRuntime(rec)
|
|
got, ok := c.GetRuntime(gameID)
|
|
if !ok {
|
|
t.Fatal("expected cache hit")
|
|
}
|
|
if got.Status != RuntimeStatusRunning {
|
|
t.Fatalf("status = %s, want running", got.Status)
|
|
}
|
|
|
|
rec.Status = RuntimeStatusFinished
|
|
c.PutRuntime(rec)
|
|
if _, ok := c.GetRuntime(gameID); ok {
|
|
t.Fatal("terminal status must evict")
|
|
}
|
|
}
|
|
|
|
func TestCacheEngineVersionRoundTrip(t *testing.T) {
|
|
c := NewCache()
|
|
v := EngineVersion{Version: "0.1.0", ImageRef: "img", Enabled: true}
|
|
c.PutEngineVersion(v)
|
|
got, ok := c.GetEngineVersion("0.1.0")
|
|
if !ok {
|
|
t.Fatal("expected hit")
|
|
}
|
|
if got.ImageRef != "img" {
|
|
t.Fatalf("image_ref = %s, want img", got.ImageRef)
|
|
}
|
|
if list := c.ListEngineVersions(); len(list) != 1 {
|
|
t.Fatalf("list size = %d, want 1", len(list))
|
|
}
|
|
}
|
|
|
|
func TestCacheActiveRuntimes(t *testing.T) {
|
|
c := NewCache()
|
|
c.PutRuntime(RuntimeRecord{GameID: uuid.New(), Status: RuntimeStatusRunning})
|
|
c.PutRuntime(RuntimeRecord{GameID: uuid.New(), Status: RuntimeStatusStarting})
|
|
c.PutRuntime(RuntimeRecord{GameID: uuid.New(), Status: RuntimeStatusFinished}) // evicted
|
|
if got := c.ActiveRuntimes(); len(got) != 2 {
|
|
t.Fatalf("active = %d, want 2", len(got))
|
|
}
|
|
}
|