1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.server.ntp;
21
22
23 import java.net.InetAddress;
24
25 import junit.framework.Assert;
26 import junit.framework.TestCase;
27 import org.apache.commons.net.ntp.NTPUDPClient;
28 import org.apache.commons.net.ntp.TimeInfo;
29 import org.apache.directory.server.protocol.shared.DatagramAcceptor;
30 import org.apache.directory.server.unit.AbstractServerTest;
31 import org.apache.mina.util.AvailablePortFinder;
32
33
34
35
36
37
38
39
40 public class NtpITest extends TestCase
41 {
42 private NtpServer ntpConfig;
43 private int port;
44
45
46
47
48
49 public void setUp() throws Exception
50 {
51 DatagramAcceptor datagramAcceptor = new DatagramAcceptor( null );
52 ntpConfig = new NtpServer();
53 ntpConfig.setDatagramAcceptor( datagramAcceptor );
54 ntpConfig.setEnabled( true );
55 port = AvailablePortFinder.getNextAvailable( 10123 );
56 ntpConfig.setIpPort( port );
57 ntpConfig.start();
58
59 }
60
61
62
63
64
65
66 public void testNtp() throws Exception
67 {
68 long currentTime = System.currentTimeMillis();
69
70 InetAddress host = InetAddress.getByName( null );
71
72 NTPUDPClient ntp = new NTPUDPClient();
73 ntp.setDefaultTimeout( 5000 );
74
75 TimeInfo timeInfo = ntp.getTime( host, port );
76 long returnTime = timeInfo.getReturnTime();
77 Assert.assertTrue( currentTime - returnTime < 1000 );
78
79 timeInfo.computeDetails();
80
81 Assert.assertTrue( 0 < timeInfo.getOffset() && timeInfo.getOffset() < 1000 );
82 Assert.assertTrue( 0 < timeInfo.getDelay() && timeInfo.getDelay() < 1000 );
83 }
84
85
86
87
88
89 public void tearDown() throws Exception
90 {
91 ntpConfig.stop();
92 }
93 }