Files
onyx/tools/ods/internal/devstack/local_model_test.go

57 lines
1.5 KiB
Go

//go:build !windows
package devstack
import (
"fmt"
"testing"
)
type modelEnvProvider struct {
*fakeProvider
}
func (p *modelEnvProvider) InfraEnv(ports map[string]int) map[string]string {
values := p.fakeProvider.InfraEnv(ports)
values["MODEL_SERVER_PORT"] = fmt.Sprint(ports["MODEL_SERVER_HOST_PORT"])
return values
}
func TestModelServerModeUsesActivePortAndRetainsLocalAssignment(t *testing.T) {
stack := newTestStack(t, t.TempDir())
provider := &modelEnvProvider{fakeProvider: &fakeProvider{}}
state := &State{Ports: map[string]int{"model": 19001, "MODEL_SERVER_HOST_PORT": 19002}}
if err := stack.WriteState(state); err != nil {
t.Fatal(err)
}
for _, tc := range []struct {
name string
local bool
want string
}{
{"initial local mode", true, "19001"},
{"switch to Docker mode", false, "19002"},
{"switch back to local mode", true, "19001"},
} {
t.Run(tc.name, func(t *testing.T) {
env, fileEnv, err := stack.serviceEnv(provider, state.Ports, Options{LocalModelServer: tc.local})
if err != nil {
t.Fatal(err)
}
if got := EnvValue(env.With(fileEnv), "MODEL_SERVER_PORT"); got != tc.want {
t.Fatalf("active model port = %s, want %s", got, tc.want)
}
if state.Ports["model"] != 19001 {
t.Fatal("mode transition discarded durable local model assignment")
}
persisted, err := stack.ReadState()
if err != nil {
t.Fatal(err)
}
if persisted.Ports["model"] != 19001 {
t.Fatal("persisted local model assignment changed")
}
})
}
}