65 lines
2.1 KiB
Go
65 lines
2.1 KiB
Go
package lexicomai
|
|
|
|
import "testing"
|
|
|
|
func TestParsePortAndEngine(t *testing.T) {
|
|
cases := []struct {
|
|
name string
|
|
exec string
|
|
port int
|
|
engine string
|
|
}{
|
|
{"uvicorn per-svc", `ExecStart={ path=/opt/pve/ups/bin/uvicorn ; argv[]=/opt/pve/ups/bin/uvicorn main:app --host 0.0.0.0 --port 6182 ; }`, 6182, "uvicorn"},
|
|
{"ubicorn shared", `ExecStart={ path=/opt/pve/bin/uvicorn ; argv[]=/opt/pve/bin/uvicorn main:app --host 0.0.0.0 --port 6110 ; }`, 6110, "uvicorn"},
|
|
{"gunicorn", `ExecStart={ path=/opt/pve/bin/gunicorn ; argv[]=/opt/pve/bin/gunicorn --bind 0.0.0.0:6170 ; }`, 6170, "gunicorn"},
|
|
{"python api", `ExecStart={ path=/opt/pve/bin/python ; argv[]=/opt/pve/bin/python /opt/ses-sip-gateway-api/api.py ; }`, 0, "python"},
|
|
{"bwrap", `ExecStart={ path=/usr/bin/bwrap ; argv[]=/usr/bin/bwrap --bind /opt/ses-sip/image / --tmpfs /tmp ; }`, 0, "bwrap"},
|
|
}
|
|
for _, c := range cases {
|
|
t.Run(c.name, func(t *testing.T) {
|
|
port, engine, _ := parsePortAndEngine(c.exec)
|
|
if port != c.port {
|
|
t.Errorf("port = %d, want %d", port, c.port)
|
|
}
|
|
if engine != c.engine {
|
|
t.Errorf("engine = %q, want %q", engine, c.engine)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestVenvFromBinary(t *testing.T) {
|
|
cases := map[string]string{
|
|
"/opt/pve/ups/bin/uvicorn": "/opt/pve/ups",
|
|
"/opt/pve/bin/uvicorn": "/opt/pve",
|
|
"": "",
|
|
}
|
|
for in, want := range cases {
|
|
if got := venvFromBinary(in); got != want {
|
|
t.Errorf("venvFromBinary(%q) = %q, want %q", in, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestShellQuote(t *testing.T) {
|
|
if got := shellQuote("a'b"); got != "'a'\\''b'" {
|
|
t.Errorf("shellQuote(%q) = %q", "a'b", got)
|
|
}
|
|
if got := shellQuote("plain"); got != "'plain'" {
|
|
t.Errorf("shellQuote(%q) = %q", "plain", got)
|
|
}
|
|
}
|
|
|
|
func TestJSONString(t *testing.T) {
|
|
body := `{"info":{"version":"7.005 release","title":"Call List Service"}}`
|
|
if got := jsonString(body, "version"); got != "7.005 release" {
|
|
t.Errorf("jsonString(version) = %q", got)
|
|
}
|
|
if got := jsonString(body, "title"); got != "Call List Service" {
|
|
t.Errorf("jsonString(title) = %q", got)
|
|
}
|
|
if got := jsonString(body, "missing"); got != "" {
|
|
t.Errorf("jsonString(missing) = %q, want empty", got)
|
|
}
|
|
}
|