mirror of
https://github.com/TwiN/gatus.git
synced 2024-11-28 19:03:24 +01:00
63 lines
1.9 KiB
Go
63 lines
1.9 KiB
Go
|
package connectivity
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
func TestConfig(t *testing.T) {
|
||
|
scenarios := []struct {
|
||
|
name string
|
||
|
cfg *Config
|
||
|
expectedErr error
|
||
|
expectedInterval time.Duration
|
||
|
}{
|
||
|
{
|
||
|
name: "good-config",
|
||
|
cfg: &Config{Checker: &Checker{Target: "1.1.1.1:53", Interval: 10 * time.Second}},
|
||
|
expectedInterval: 10 * time.Second,
|
||
|
},
|
||
|
{
|
||
|
name: "good-config-with-default-interval",
|
||
|
cfg: &Config{Checker: &Checker{Target: "8.8.8.8:53", Interval: 0}},
|
||
|
expectedInterval: 60 * time.Second,
|
||
|
},
|
||
|
{
|
||
|
name: "config-with-interval-too-low",
|
||
|
cfg: &Config{Checker: &Checker{Target: "1.1.1.1:53", Interval: 4 * time.Second}},
|
||
|
expectedErr: ErrInvalidInterval,
|
||
|
},
|
||
|
{
|
||
|
name: "config-with-invalid-target-due-to-missing-port",
|
||
|
cfg: &Config{Checker: &Checker{Target: "1.1.1.1", Interval: 15 * time.Second}},
|
||
|
expectedErr: ErrInvalidDNSTarget,
|
||
|
},
|
||
|
{
|
||
|
name: "config-with-invalid-target-due-to-invalid-dns-port",
|
||
|
cfg: &Config{Checker: &Checker{Target: "1.1.1.1:52", Interval: 15 * time.Second}},
|
||
|
expectedErr: ErrInvalidDNSTarget,
|
||
|
},
|
||
|
}
|
||
|
for _, scenario := range scenarios {
|
||
|
t.Run(scenario.name, func(t *testing.T) {
|
||
|
err := scenario.cfg.ValidateAndSetDefaults()
|
||
|
if fmt.Sprintf("%s", err) != fmt.Sprintf("%s", scenario.expectedErr) {
|
||
|
t.Errorf("expected error %v, got %v", scenario.expectedErr, err)
|
||
|
}
|
||
|
if err == nil && scenario.expectedErr == nil {
|
||
|
if scenario.cfg.Checker.Interval != scenario.expectedInterval {
|
||
|
t.Errorf("expected interval %v, got %v", scenario.expectedInterval, scenario.cfg.Checker.Interval)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestChecker_IsConnected(t *testing.T) {
|
||
|
checker := &Checker{Target: "1.1.1.1:53", Interval: 10 * time.Second}
|
||
|
if !checker.IsConnected() {
|
||
|
t.Error("expected checker.IsConnected() to be true")
|
||
|
}
|
||
|
}
|