56 lines
1.8 KiB
Go
56 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestServiceCRUD(t *testing.T) {
|
|
store, err := openStore(":memory:")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer store.Close()
|
|
v, err := store.SaveService(MonitoredService{Name: "Test", URL: "https://example.test", CheckType: "http", ExpectedCode: 204, TimeoutSeconds: 2, Enabled: true})
|
|
if err != nil || v.ID == 0 {
|
|
t.Fatalf("save: %+v %v", v, err)
|
|
}
|
|
items, err := store.Services()
|
|
if err != nil || len(items) != 1 {
|
|
t.Fatalf("list: %+v %v", items, err)
|
|
}
|
|
if err := store.DeleteService(v.ID); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestValidateServiceAllowsLocalAddress(t *testing.T) {
|
|
v := MonitoredService{Name: "Host", LocalAddress: "192.168.0.12", CheckType: "ping", TimeoutSeconds: 5}
|
|
if err := validateService(v); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestValidateServiceChecksBothHTTPAddresses(t *testing.T) {
|
|
v := MonitoredService{Name: "Gitea", URL: "https://git.example.test", LocalAddress: "192.168.0.6:3000", CheckType: "http", TimeoutSeconds: 5}
|
|
if err := validateService(v); err == nil {
|
|
t.Fatal("expected invalid local HTTP address")
|
|
}
|
|
v.LocalAddress = "https://192.168.0.6:3000"
|
|
if err := validateService(v); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestHTTPServiceTransportHasBoundedIdlePool(t *testing.T) {
|
|
if serviceHTTPClient.Transport != serviceHTTPTransport {
|
|
t.Fatal("проверки сервисов должны использовать общий HTTP transport")
|
|
}
|
|
if serviceHTTPTransport.IdleConnTimeout < time.Second {
|
|
t.Fatal("idle-соединения должны автоматически закрываться")
|
|
}
|
|
if serviceHTTPTransport.MaxIdleConnsPerHost < 1 || serviceHTTPTransport.MaxIdleConnsPerHost > 4 {
|
|
t.Fatalf("небезопасный размер пула на хост: %d", serviceHTTPTransport.MaxIdleConnsPerHost)
|
|
}
|
|
}
|