- agent-readable-repository-refactor 완료: 기존 테스트 파일 아카이브 이동 - 새 테스트 파일 추가 (edge, node, client, config, readability) - readability_audit 스크립트 및 baseline 추가 - roadmap/SDD 문서 갱신 - agent-client/pi/extensions/openai-sampling-parameters 추가
90 lines
2.2 KiB
Go
90 lines
2.2 KiB
Go
package configrefresh_test
|
||
|
||
import (
|
||
"os"
|
||
"path/filepath"
|
||
"testing"
|
||
|
||
"iop/packages/go/config"
|
||
)
|
||
|
||
func writeYAML(t *testing.T, dir, name, content string) string {
|
||
t.Helper()
|
||
path := filepath.Join(dir, name)
|
||
if err := os.WriteFile(path, []byte(content), 0o600); err != nil {
|
||
t.Fatalf("write %s: %v", name, err)
|
||
}
|
||
return path
|
||
}
|
||
|
||
// buildNormalizedCurrent creates a current config that mimics what a running
|
||
// serve process holds after loadRuntimeConfig normalization. Empty logging
|
||
// paths are resolved, explicit logging paths are preserved, and bootstrap
|
||
// artifact_dir is resolved to the effective runtime path.
|
||
func buildNormalizedCurrent(t *testing.T, path string) *config.EdgeConfig {
|
||
t.Helper()
|
||
cfg, err := config.LoadEdge(path)
|
||
if err != nil {
|
||
t.Fatalf("load current: %v", err)
|
||
}
|
||
// Apply the same normalization that loadRuntimeConfig performs.
|
||
// NOTE: explicit relative logging.path is preserved exactly to match
|
||
// edgecmd.ResolveEdgeLogPath – only empty paths are resolved.
|
||
if cfg.Logging.Path == "" {
|
||
cfg.Logging.Path = _normalizedLogPath()
|
||
}
|
||
// Explicit absolute / relative paths are intentionally left untouched.
|
||
cfg.Bootstrap.ArtifactDir = _normalizeArtifactDir(cfg.Bootstrap.ArtifactDir)
|
||
return cfg
|
||
}
|
||
|
||
func _normalizedLogPath() string {
|
||
if exe, err := os.Executable(); err == nil {
|
||
return filepath.Join(filepath.Dir(exe), "logs", "edge.log")
|
||
}
|
||
if wd, err := os.Getwd(); err == nil {
|
||
return filepath.Join(wd, "logs", "edge.log")
|
||
}
|
||
return "logs/edge.log"
|
||
}
|
||
|
||
func _normalizeArtifactDir(dir string) string {
|
||
if dir == "" {
|
||
dir = "artifacts"
|
||
}
|
||
if filepath.IsAbs(dir) {
|
||
return dir
|
||
}
|
||
return filepath.Join(binaryDirForTesting(), dir)
|
||
}
|
||
|
||
func binaryDirForTesting() string {
|
||
if exe, err := os.Executable(); err == nil {
|
||
return filepath.Dir(exe)
|
||
}
|
||
if wd, err := os.Getwd(); err == nil {
|
||
return wd
|
||
}
|
||
return "."
|
||
}
|
||
|
||
const baseEdgeYAML = `
|
||
server:
|
||
listen: "0.0.0.0:9090"
|
||
nodes:
|
||
- id: "node-1"
|
||
alias: "n1"
|
||
token: "tok-1"
|
||
adapters:
|
||
cli:
|
||
enabled: true
|
||
providers:
|
||
- id: "prov-a"
|
||
type: "ollama"
|
||
category: "local_inference"
|
||
adapter: "cli"
|
||
models: ["llama3.1"]
|
||
capacity: 2
|
||
max_queue: 4
|
||
queue_timeout_ms: 5000
|
||
`
|