Example usage for org.apache.commons.net.ntp TimeStamp TimeStamp

List of usage examples for org.apache.commons.net.ntp TimeStamp TimeStamp

Introduction

In this page you can find the example usage for org.apache.commons.net.ntp TimeStamp TimeStamp.

Prototype

public TimeStamp(Date d) 

Source Link

Document

Constructs a newly allocated NTP timestamp object that represents the Java Date argument.

Usage

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);
}