#!/usr/bin/perl =head1 NAME sites-ok.t - check web sites =head SYNOPSIS cat >> test-server.yaml << __YAML_END__ time-sync: tolerance: 5 ntp-servers: - pool.ntp.org __YAML_END__ =cut use strict; use warnings; use Test::More; use Test::Differences; use YAML::Syck 'LoadFile'; use FindBin '$Bin'; eval "use Net::NTP"; plan 'skip_all' => "need Net::NTP to run web tests" if $@; # optional for highier precision then seconds eval "use Time::HiRes"; my @ntp_servers = qw{ pool.ntp.org }; my $tolerance = 5; my $config = LoadFile($Bin.'/test-server.yaml'); exit main(); sub main { # get config values if ($config and $config->{'time-sync'}) { @ntp_servers = @{$config->{'time-sync'}->{'ntp-servers'}} if $config->{'time-sync'}->{'ntp-servers'}; $tolerance = $config->{'time-sync'}->{'tolerance'} if $config->{'time-sync'}->{'tolerance'}; } plan 'tests' => scalar @ntp_servers; foreach my $ntp_server (@ntp_servers) { my $res; eval { $res = { get_ntp_response($ntp_server) }; }; SKIP: { skip 'failed to reach '.$ntp_server, 1 if not defined $res; my $ntp_time = $res->{'Transmit Timestamp'}; diag 'server time (GMT): '.gmtime(); diag 'ntp server time (GMT): '.gmtime($ntp_time); cmp_ok( abs($ntp_time - time()), '<=', $tolerance, 'does the current time - ntp server ('.$ntp_server.') time fit to the tolerance' ); } } return 0; } __END__ =head1 NOTE Time checking depends on L. =head1 AUTHOR Jozef Kutej for the idea thanks to Emmanuel Rodriguez Santiago. =cut