Files
go-i2p/lib/util/time/sntp/verification_test.go
Haris Khan ade80e577c added sntp verification
-Leap Indicator
-Stratum level check
-Round-trip Delay
-Clock offset
-simple non-zero time
-Root Dispersion and Root Delay
2024-10-20 00:07:40 -04:00

49 lines
1.3 KiB
Go

package sntp
import (
"github.com/beevik/ntp"
"testing"
"time"
)
func TestValidateResponse(t *testing.T) {
rt := &RouterTimestamper{}
// Valid response
validResponse := &ntp.Response{
Leap: ntp.LeapNoWarning,
Stratum: 2,
RTT: 50 * time.Millisecond,
ClockOffset: 100 * time.Millisecond,
Time: time.Now(),
RootDispersion: 500 * time.Millisecond,
RootDelay: 10 * time.Millisecond,
KissCode: "",
}
if !rt.validateResponse(validResponse) {
t.Error("Expected valid response to pass validation")
}
// Invalid Leap Indicator
invalidLeapResponse := *validResponse
invalidLeapResponse.Leap = ntp.LeapNotInSync
if rt.validateResponse(&invalidLeapResponse) {
t.Error("Expected response with invalid leap indicator to fail validation")
}
// Invalid Stratum
invalidStratumResponse := *validResponse
invalidStratumResponse.Stratum = 0
if rt.validateResponse(&invalidStratumResponse) {
t.Error("Expected response with invalid stratum to fail validation")
}
// High Root Dispersion
highRootDispersionResponse := *validResponse
highRootDispersionResponse.RootDispersion = 2 * time.Second
if rt.validateResponse(&highRootDispersionResponse) {
t.Error("Expected response with high root dispersion to fail validation")
}
}