List of usage examples for org.apache.commons.net.ntp TimeStamp TimeStamp
public TimeStamp(Date d)
From source file:org.mandar.analysis.recsys2014.recsysMain.java
public void writeAlgoTestResults(double nDCG, DB db) { /*/* w w w. ja v a 2 s . c om*/ * Write the test configuration * parameters as well as test * results for nDCG @10 */ TimeStamp time1 = new TimeStamp(new Date()); algoConfig.append("timestamp", time1.getTime()); algoConfig.append("nDCG", nDCG); DBCollection eval_runs = db.getCollection(DBSettings.EVAL_COLLECTION); eval_runs.insert(algoConfig); }
From source file:org.mobicents.media.server.impl.rtcp.ntp.NtpUtilsTest.java
/** * Test correctness of RTCP SR timestamps based on the middle 32-bit of an * NTP timestamp.//from ww w .j a va2 s. c om * * Using the values of the example provided by RFC3550: * * [10 Nov 1995 11:33:25.125 UTC] [10 Nov 1995 11:33:36.5 UTC] * n SR(n) A=b710:8000 (46864.500 s) * ----------------------------------------------------------------> * v ^ * ntp_sec =0xb44db705 v ^ dlsr=0x0005:4000 ( 5.250s) * ntp_frac=0x20000000 v ^ lsr =0xb705:2000 (46853.125s) * (3024992005.125 s) v ^ * r v ^ RR(n) * ----------------------------------------------------------------> * |<-DLSR->| * (5.250 s) * * A 0xb710:8000 (46864.500 s) * DLSR -0x0005:4000 ( 5.250 s) * LSR -0xb705:2000 (46853.125 s) * ------------------------------- * delay 0x0006:2000 ( 6.125 s) * * @see <a href="http://tools.ietf.org/html/rfc3550#section-6.4.1">RFC3550</a> */ @Test public void testSrTimestamp() { // given String ntpSec = "b44db705"; String ntpFrac = "20000000"; TimeStamp ntp = new TimeStamp(ntpSec.concat(".").concat(ntpFrac)); // when long srTs = NtpUtils.calculateLastSrTimestamp(ntp.getSeconds(), ntp.getFraction()); long srMs = (srTs * 1000) >> 16; // then Assert.assertEquals(46853125, srMs); }
From source file:org.mobicents.media.server.impl.rtcp.RtcpHandlerTest.java
@Test public void testHandleSenderReport() throws PacketHandlerException { // given//from www. ja v a 2s .co m InetSocketAddress localPeer = new InetSocketAddress("127.0.0.1", 6100); InetSocketAddress remotePeer = new InetSocketAddress("127.0.0.1", 6200); long localSsrc = statistics.getSsrc(); long remoteSsrc = SsrcGenerator.generateSsrc(); String remoteCname = CnameGenerator.generateCname(); TimeStamp ntp = new TimeStamp(wallClock.getCurrentTime()); RtcpSenderReport sr = new RtcpSenderReport(false, remoteSsrc, ntp.getSeconds(), ntp.getFraction(), 200, 3, 3 * 200); RtcpReportBlock rrBlock = new RtcpReportBlock(localSsrc, 1, 1, 0, 10, 0, 398416412, 223412); sr.addReceiverReport(rrBlock); RtcpSdes sdes = new RtcpSdes(false); RtcpSdesChunk sdesChunk = new RtcpSdesChunk(remoteSsrc); RtcpSdesItem sdesCname = new RtcpSdesItem(RtcpSdesItem.RTCP_SDES_CNAME, remoteCname); sdesChunk.addRtcpSdesItem(sdesCname); sdes.addRtcpSdesChunk(sdesChunk); RtcpPacket rtcpPacket = new RtcpPacket(sr, sdes); byte[] rtcpData = new byte[300]; rtcpPacket.encode(rtcpData, 0); // when handler.joinRtpSession(); byte[] response = handler.handle(rtcpData, localPeer, remotePeer); // then // There are no responses in RTCP Assert.assertNull(response); /* * When an RTCP packet is received from a participant whose SSRC is not in the * member table, the SSRC is added to the table, and the value for * members is updated once the participant has been validated. */ RtpMember newMember = statistics.getMember(remoteSsrc); Assert.assertEquals(2, statistics.getMembers()); Assert.assertNotNull(newMember); Assert.assertEquals(remoteSsrc, newMember.getSsrc()); Assert.assertEquals(remoteCname, newMember.getCname()); Assert.assertEquals(sr.getNtpTs(), newMember.getLastSR()); Assert.assertEquals(0, newMember.getReceivedSinceSR()); // The average packet size is updated: // avg_rtcp_size = (1/16) * packet_size + (15/16) * avg_rtcp_size double expectedSize = (1.0 / 16.0) * rtcpPacket.getSize() + (15.0 / 16.0) * RtpStatistics.RTCP_DEFAULT_AVG_SIZE; Assert.assertEquals(expectedSize, statistics.getRtcpAvgSize(), 0.0); }
From source file:org.mobicents.media.server.impl.rtcp.RtcpPacketFactory.java
/** * Builds a packet containing an RTCP Sender Report. * // w w w . j a v a 2 s . c o m * @param statistics * The statistics of the RTP session * @return The RTCP packet */ private static RtcpSenderReport buildSenderReport(RtpStatistics statistics, boolean padding) { /* * 0 1 2 3 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * header |V=2|P| RC | PT=SR=200 | length | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | SSRC of sender | * +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ * sender | NTP timestamp, most significant word | * info +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | NTP timestamp, least significant word | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | RTP timestamp | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | sender's packet count | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | sender's octet count | * +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ * report | SSRC_1 (SSRC of first source) | * block +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * 1 | fraction lost | cumulative number of packets lost | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | extended highest sequence number received | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | interarrival jitter | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | last SR (LSR) | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | delay since last SR (DLSR) | * +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ * report | SSRC_2 (SSRC of second source) | * block +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * 2 : ... : * +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ * | profile-specific extensions | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */ long ssrc = statistics.getSsrc(); long currentTime = statistics.getCurrentTime(); TimeStamp ntpTs = new TimeStamp(new Date(currentTime)); long ntpSec = ntpTs.getSeconds(); long ntpFrac = ntpTs.getFraction(); long elapsedTime = statistics.getCurrentTime() - statistics.getRtpSentOn(); long rtpTs = statistics.getRtpTimestamp() + statistics.getRtpTime(elapsedTime); long psent = statistics.getRtpPacketsSent(); long osent = statistics.getRtpOctetsSent(); RtcpSenderReport senderReport = new RtcpSenderReport(padding, ssrc, ntpSec, ntpFrac, rtpTs, psent, osent); // Add receiver reports for each registered member List<Long> members = statistics.getMembersList(); for (Long memberSsrc : members) { if (ssrc != memberSsrc) { RtpMember memberStats = statistics.getMember(memberSsrc.longValue()); RtcpReportBlock rcvrReport = buildSubReceiverReport(memberStats); senderReport.addReceiverReport(rcvrReport); } } return senderReport; }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpMemberTest.java
@Test public void testOnReceiveSR() { // given/*from w w w . java 2 s .c o m*/ RtpMember member = new RtpMember(rtpClock, 123); TimeStamp ntp = new TimeStamp(new Date()); RtcpSenderReport sendReport = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 2, 100, 100 * 130); long receiveTime = this.wallClock.getCurrentTime(); // when member.onReceiveSR(sendReport); this.wallClock.tick(20000000L); // then long expectedSrTimestamp = NtpUtils.calculateLastSrTimestamp(ntp.getSeconds(), ntp.getFraction()); assertEquals(expectedSrTimestamp, member.getLastSR()); assertEquals(0, member.getReceivedSinceSR()); long expectedDelay = (long) ((this.wallClock.getCurrentTime() - receiveTime) * 65.536); assertEquals(expectedDelay, member.getLastSRdelay()); }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpMemberTest.java
@Test public void testOnReceiveRtpAndSR() { // given/*from ww w . j a v a 2 s .c om*/ RtpMember member = new RtpMember(rtpClock, 123); RtpPacket p1 = new RtpPacket(172, false); RtpPacket p2 = new RtpPacket(172, false); RtpPacket p3 = new RtpPacket(172, false); RtpPacket p4 = new RtpPacket(172, false); RtpPacket p5 = new RtpPacket(172, false); p1.wrap(false, 8, 1, 160 * 1, 123, new byte[160], 0, 160); p2.wrap(false, 8, 2, 160 * 2, 123, new byte[160], 0, 160); p3.wrap(false, 8, 3, 160 * 3, 123, new byte[160], 0, 160); p4.wrap(false, 8, 4, 160 * 4, 123, new byte[160], 0, 160); p5.wrap(false, 8, 5, 160 * 5, 123, new byte[160], 0, 160); TimeStamp ntp = new TimeStamp(new Date()); RtcpSenderReport sendReport = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 2, 100, 100 * 130); // when member.onReceiveRtp(p1); wallClock.tick(20000000L); member.onReceiveRtp(p2); wallClock.tick(20000000L); member.onReceiveRtp(p3); wallClock.tick(20000000L); member.onReceiveRtp(p4); wallClock.tick(20000000L); long receivedSrOn = this.wallClock.getCurrentTime(); member.onReceiveSR(sendReport); member.onReceiveRtp(p5); wallClock.tick(20000000L); // then assertEquals(0, member.getSequenceCycle()); long expectedHighSeq = (65536 * 0 + p5.getSeqNumber()); assertEquals(expectedHighSeq, member.getExtHighSequence()); assertEquals(3, member.getPacketsReceived()); assertEquals(sumOctets(p3, p4, p5), member.getOctetsReceived()); assertEquals(1, member.getReceivedSinceSR()); assertEquals(0, member.getPacketsLost()); assertEquals(0, member.getFractionLost()); // expected packets = received packets = no loss long expectedDelay = (long) ((wallClock.getCurrentTime() - receivedSrOn) * 65.536); assertEquals(expectedDelay, member.getLastSRdelay()); }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpMemberTest.java
@Test public void testLostPackets() { // given// w w w . j av a 2 s .c o m RtpMember member = new RtpMember(rtpClock, 123); RtpPacket p1 = new RtpPacket(172, false); RtpPacket p2 = new RtpPacket(172, false); RtpPacket p3 = new RtpPacket(172, false); RtpPacket p4 = new RtpPacket(172, false); RtpPacket p5 = new RtpPacket(172, false); p1.wrap(false, 8, 1, 160 * 1, 123, new byte[160], 0, 160); p2.wrap(false, 8, 2, 160 * 2, 123, new byte[160], 0, 160); p3.wrap(false, 8, 3, 160 * 3, 123, new byte[160], 0, 160); p4.wrap(false, 8, 4, 160 * 4, 123, new byte[160], 0, 160); p5.wrap(false, 8, 24, 160 * 5, 123, new byte[160], 0, 160); TimeStamp ntp = new TimeStamp(new Date()); RtcpSenderReport sendReport = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 2, 100, 100 * 130); // when member.onReceiveRtp(p1); wallClock.tick(20000000L); member.onReceiveRtp(p2); wallClock.tick(20000000L); member.onReceiveRtp(p3); wallClock.tick(20000000L); member.onReceiveRtp(p4); wallClock.tick(20000000L); member.onReceiveSR(sendReport); member.onReceiveRtp(p5); wallClock.tick(20000000L); // then int packetsReceived = 3; // 2 first packets were in probation period int expected = p5.getSeqNumber() - p3.getSeqNumber() + 1; // only considers valid sequence after 2 consecutive packets long expectedLostPackets = expected - packetsReceived; long lostInterval = expected - packetsReceived; long fractionLost = (lostInterval * 256) / expected; assertEquals(expectedLostPackets, member.getPacketsLost()); assertEquals(fractionLost, member.getFractionLost()); }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpStatisticsTest.java
@Test public void testOnRtcpReceiveReport() { // given/*from w w w . j av a2s. c om*/ RtpStatistics stats = new RtpStatistics(rtpClock, SSRC, CNAME); double initialAvgSize = stats.getRtcpAvgSize(); stats.setRtcpPacketType(RtcpPacketType.RTCP_REPORT); RtpPacket rtp1 = new RtpPacket(172, false); RtpPacket rtp2 = new RtpPacket(172, false); rtp1.wrap(false, 8, 1, 160 * 1, 123, new byte[160], 0, 160); rtp2.wrap(false, 8, 1, 160 * 2, 123, new byte[160], 0, 160); TimeStamp ntp = new TimeStamp(System.currentTimeMillis()); RtcpSenderReport sr = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 1, 5, 5 * 160); RtcpSdes sdes = new RtcpSdes(false); RtcpSdesChunk sdesChunk = new RtcpSdesChunk(123); sdesChunk.addRtcpSdesItem(new RtcpSdesItem(RtcpSdesItem.RTCP_SDES_CNAME, CNAME)); sdes.addRtcpSdesChunk(sdesChunk); RtcpPacket rtcp1 = new RtcpPacket(sr, sdes); // Need to encode the packets first (as required per sending over the network) // so that the RtcpPacket.size variable is initialized! rtcp1.encode(new byte[RtpPacket.RTP_PACKET_MAX_SIZE], 0); // when stats.onRtpReceive(rtp1); wallClock.tick(20000000L); stats.onRtpReceive(rtp2); wallClock.tick(20000000L); stats.onRtcpReceive(rtcp1); // then RtpMember member = stats.getMember(123); assertTrue(stats.isMember(sr.getSsrc())); assertNotNull(member); assertEquals(rtp2.getSeqNumber(), member.getExtHighSequence()); assertEquals(0, member.getReceivedSinceSR()); double avgSize = calculateAvgSize(initialAvgSize, rtcp1.getSize()); assertEquals(avgSize, stats.getRtcpAvgSize(), 0); }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpStatisticsTest.java
@Test public void testOnRtcpReceiveReportWithByeScheduled() { // given//from w ww .j a va2 s . c o m RtpStatistics stats = new RtpStatistics(rtpClock, SSRC, CNAME); double initialAvgSize = stats.getRtcpAvgSize(); stats.setRtcpPacketType(RtcpPacketType.RTCP_BYE); RtpPacket rtp1 = new RtpPacket(172, false); RtpPacket rtp2 = new RtpPacket(172, false); rtp1.wrap(false, 8, 1, 160 * 1, 123, new byte[160], 0, 160); rtp2.wrap(false, 8, 1, 160 * 2, 123, new byte[160], 0, 160); TimeStamp ntp = new TimeStamp(System.currentTimeMillis()); RtcpSenderReport sr = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 1, 5, 5 * 160); RtcpSdes sdes = new RtcpSdes(false); RtcpSdesChunk sdesChunk = new RtcpSdesChunk(123); sdesChunk.addRtcpSdesItem(new RtcpSdesItem(RtcpSdesItem.RTCP_SDES_CNAME, CNAME)); sdes.addRtcpSdesChunk(sdesChunk); RtcpPacket rtcp1 = new RtcpPacket(sr, sdes); // Need to encode the packets first (as required per sending over the network) // so that the RtcpPacket.size variable is initialized! rtcp1.encode(new byte[RtpPacket.RTP_PACKET_MAX_SIZE], 0); // when stats.onRtpReceive(rtp1); wallClock.tick(20000000L); stats.onRtpReceive(rtp2); wallClock.tick(20000000L); stats.onRtcpReceive(rtcp1); // then RtpMember member = stats.getMember(123); assertFalse(stats.isMember(sr.getSsrc())); assertNull(member); double avgSize = calculateAvgSize(initialAvgSize, rtcp1.getSize()); assertEquals(avgSize, stats.getRtcpAvgSize(), 0); }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpStatisticsTest.java
@Test public void testOnRtcpReceiveBye() { // given//from w ww.j a v a2 s.co m RtpStatistics stats = new RtpStatistics(rtpClock, SSRC, CNAME); double initialAvgSize = stats.getRtcpAvgSize(); stats.setRtcpPacketType(RtcpPacketType.RTCP_REPORT); RtpPacket rtp1 = new RtpPacket(172, false); RtpPacket rtp2 = new RtpPacket(172, false); RtpPacket rtp3 = new RtpPacket(172, false); rtp1.wrap(false, 8, 1, 160 * 1, 123, new byte[160], 0, 160); rtp2.wrap(false, 8, 2, 160 * 2, 123, new byte[160], 0, 160); rtp3.wrap(false, 8, 3, 160 * 2, 123, new byte[160], 0, 160); TimeStamp ntp = new TimeStamp(System.currentTimeMillis()); RtcpSenderReport sr = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 1, 5, 5 * 160); RtcpSdes sdes = new RtcpSdes(false); RtcpSdesChunk sdesChunk = new RtcpSdesChunk(123); sdesChunk.addRtcpSdesItem(new RtcpSdesItem(RtcpSdesItem.RTCP_SDES_CNAME, CNAME)); sdes.addRtcpSdesChunk(sdesChunk); RtcpPacket rtcp1 = new RtcpPacket(sr, sdes); RtcpBye bye = new RtcpBye(false); RtcpPacket rtcp2 = new RtcpPacket(sr, sdes, bye); // Need to encode the packets first (as required per sending over the network) // so that the RtcpPacket.size variable is initialized! rtcp1.encode(new byte[RtpPacket.RTP_PACKET_MAX_SIZE], 0); // when (1) - receive RTP and RTCP SR stats.onRtpReceive(rtp1); // Adds to the senders and members list wallClock.tick(20000000L); stats.onRtcpReceive(rtcp1); wallClock.tick(20000000L); stats.onRtpReceive(rtp2); wallClock.tick(20000000L); stats.onRtpReceive(rtp3); // then (1) - sender 123 is registered RtpMember member = stats.getMember(123); assertTrue(stats.isMember(sr.getSsrc())); assertNotNull(member); assertEquals(rtp3.getSeqNumber(), member.getExtHighSequence()); assertEquals(1, member.getReceivedSinceSR()); double avgSize = calculateAvgSize(initialAvgSize, rtcp1.getSize()); assertEquals(avgSize, stats.getRtcpAvgSize(), 0); // when (2) - receive RTCP BYE wallClock.tick(30000000L); stats.onRtcpReceive(rtcp2); // then (2) - sender is deregistered member = stats.getMember(123); assertFalse(stats.isMember(sr.getSsrc())); assertNull(member); assertFalse(stats.isSender(sr.getSsrc())); avgSize = calculateAvgSize(avgSize, rtcp2.getSize()); assertEquals(avgSize, stats.getRtcpAvgSize(), 0); }