111 lines
2.8 KiB
Go
111 lines
2.8 KiB
Go
package go_ntp_test
|
|
|
|
import (
|
|
"fmt"
|
|
"regexp"
|
|
"testing"
|
|
|
|
ntp "git.sa-roci.de/oss/go_ntp"
|
|
server "github.com/coreos/mantle/network/ntp"
|
|
)
|
|
|
|
var (
|
|
testCases = []struct {
|
|
ntpServers []string
|
|
expectedError string
|
|
createLocal bool
|
|
}{
|
|
{
|
|
ntpServers: []string{},
|
|
expectedError: `no time servers defined`,
|
|
},
|
|
{
|
|
ntpServers: []string{
|
|
"127.0.0.1",
|
|
},
|
|
expectedError: `read udp 127\.0\.0\.1:\d+->127\.0\.0\.1:123:`,
|
|
},
|
|
{
|
|
ntpServers: ntp.GetDefaultServers(),
|
|
},
|
|
{
|
|
ntpServers: []string{
|
|
"127.0.0.1:1880",
|
|
},
|
|
createLocal: true,
|
|
},
|
|
}
|
|
)
|
|
|
|
func TestGetCurrentTime(t *testing.T) {
|
|
for i, testCase := range testCases {
|
|
var srv *server.Server
|
|
if testCase.createLocal {
|
|
var err error
|
|
if srv, err = server.NewServer("127.0.0.1:1880"); err == nil {
|
|
go srv.Serve()
|
|
} else {
|
|
t.Errorf("TestGetCurrentTime: test case %d: could not create local NTP server: %s", i+1, err)
|
|
continue
|
|
}
|
|
}
|
|
|
|
if synced, err := ntp.GetCurrentTime(testCase.ntpServers...); err == nil {
|
|
if testCase.expectedError == "" {
|
|
fmt.Printf("TestGetCurrentTime: test case %d: retrieved NTP time: %s\n", i+1, synced)
|
|
} else {
|
|
t.Errorf("TestGetCurrentTime: test case %d: expected error (%s) did not occur", i+1, testCase.expectedError)
|
|
}
|
|
} else {
|
|
if testCase.expectedError == "" {
|
|
t.Errorf("TestGetCurrentTime: test case %d: got unexpected error (%s)", i+1, err.Error())
|
|
} else {
|
|
tester := regexp.MustCompile(testCase.expectedError)
|
|
if !tester.MatchString(err.Error()) {
|
|
t.Errorf("TestGetCurrentTime: test case %d: expected error to match '%s' but got '%s'", i+1, testCase.expectedError, err.Error())
|
|
}
|
|
}
|
|
}
|
|
|
|
if srv != nil {
|
|
srv.Close()
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestGetLocalOffset(t *testing.T) {
|
|
for i, testCase := range testCases {
|
|
var srv *server.Server
|
|
if testCase.createLocal {
|
|
var err error
|
|
if srv, err = server.NewServer("127.0.0.1:1880"); err == nil {
|
|
go srv.Serve()
|
|
} else {
|
|
t.Errorf("TestGetLocalOffset: test case %d: could not create local NTP server: %s", i+1, err)
|
|
continue
|
|
}
|
|
}
|
|
|
|
if offset, err := ntp.GetLocalOffset(testCase.ntpServers...); err == nil {
|
|
if testCase.expectedError == "" {
|
|
fmt.Printf("TestGetCurrentTime: test case %d: retrieved NTP time offset: %s\n", i+1, offset)
|
|
} else {
|
|
t.Errorf("TestGetCurrentTime: test case %d: expected error (%s) did not occur", i+1, testCase.expectedError)
|
|
}
|
|
} else {
|
|
if testCase.expectedError == "" {
|
|
t.Errorf("TestGetCurrentTime: test case %d: got unexpected error (%s)", i+1, err.Error())
|
|
} else {
|
|
tester := regexp.MustCompile(testCase.expectedError)
|
|
if !tester.MatchString(err.Error()) {
|
|
t.Errorf("TestGetCurrentTime: test case %d: expected error to match '%s' but got '%s'", i+1, testCase.expectedError, err.Error())
|
|
}
|
|
}
|
|
}
|
|
|
|
if srv != nil {
|
|
srv.Close()
|
|
}
|
|
}
|
|
}
|