public void testPacketWithAcks() { byte[] packet = new byte[] { (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //Sequence number 0 (byte)0x03, //3 ack ranges (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x05, (byte)0x01, //Ack for packet 5 (byte)0x05, (byte)0x02, //Ack range for packets [10..11] of size 2 (byte)0x00 /*Far-range marker*/, (byte)0x00, (byte)0x0F, (byte)0x57, (byte)0xF3 /*Ack id (1005555)*/, (byte) 0x05 /*Range size*/}; NPFPacket r = NPFPacket.create(packet, pn); assertEquals(0, r.getSequenceNumber()); assertEquals(8, r.getAcks().size()); assertTrue(r.getAcks().contains(Integer.valueOf(5))); assertTrue(r.getAcks().contains(Integer.valueOf(10))); assertTrue(r.getAcks().contains(Integer.valueOf(11))); assertTrue(r.getAcks().contains(Integer.valueOf(1005555))); assertTrue(r.getAcks().contains(Integer.valueOf(1005556))); assertTrue(r.getAcks().contains(Integer.valueOf(1005557))); assertTrue(r.getAcks().contains(Integer.valueOf(1005558))); assertTrue(r.getAcks().contains(Integer.valueOf(1005559))); assertEquals(0, r.getFragments().size()); assertFalse(r.getError()); }
public void testPacketWithAck() { byte[] packet = new byte[] { (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //Sequence number 0 (byte)0x01, //1 ack (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01}; //Ack for packet range [0..0] of length 1 NPFPacket r = NPFPacket.create(packet, pn); assertEquals(0, r.getSequenceNumber()); assertEquals(1, r.getAcks().size()); assertTrue(r.getAcks().contains(Integer.valueOf(0))); assertEquals(0, r.getFragments().size()); assertFalse(r.getError()); }
public void testEmptyPacket() { byte[] packet = new byte[] { (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //Sequence number 0 (byte)0x00}; // 0 acks NPFPacket r = NPFPacket.create(packet, pn); assertEquals(0, r.getSequenceNumber()); assertEquals(0, r.getAcks().size()); assertEquals(0, r.getFragments().size()); assertFalse(r.getError()); }
+ packet.getAcks().size() + " acks on "+this);
public void testReceiveSequenceNumber() { byte[] packet = new byte[] { (byte)0x01, (byte)0x02, (byte)0x04, (byte)0x08, //Sequence number (byte)0x00}; // 0 acks NPFPacket r = NPFPacket.create(packet, pn); assertEquals(16909320, r.getSequenceNumber()); assertEquals(0, r.getAcks().size()); assertEquals(0, r.getFragments().size()); assertFalse(r.getError()); }
for(int ack : packet.getAcks()) { keyContext.ack(ack, pn, sessionKey);
public void testAckOnlyCreation() throws BlockedTooLongException, InterruptedException { BasePeerNode pn = new NullBasePeerNode(); NewPacketFormat npf = new NewPacketFormat(pn, 0, 0); PeerMessageQueue pmq = new PeerMessageQueue(); SessionKey s = new SessionKey(null, null, null, null, null, null, null, null, new NewPacketFormatKeyContext(0, 0), 1); NPFPacket p = null; //Packet that should be acked p = new NPFPacket(); p.addMessageFragment(new MessageFragment(true, false, true, 0, 8, 8, 0, new byte[] {(byte) 0x01, (byte) 0x23, (byte) 0x45, (byte) 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }, null)); assertEquals(1, npf.handleDecryptedPacket(p, s).size()); Thread.sleep(NewPacketFormatKeyContext.MAX_ACK_DELAY*2); p = npf.createPacket(1400, pmq, s, false); assertEquals(1, p.getAcks().size()); }
assertEquals(2, ack1.getAcks().size()); assertEquals(0, (int)ack1.getAcks().first()); assertEquals(1, (int)ack1.getAcks().last()); sender.handleDecryptedPacket(ack1, senderKey); NPFPacket ack2 = receiver.createPacket(512, receiverQueue, receiverKey, false); assertNotNull(ack2); assertEquals(1, ack2.getAcks().size()); assertEquals(0, ack2.getFragments().size());
public void testReceiveLongFragmentedMessage() { byte[] packetNoData = new byte[] { (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //Sequence number (0) (byte)0x00, //0 acks (byte)0x50, (byte)0x00, (byte) 0x00, (byte) 0x00, // Flags (long, fragmented, not first) and messageID 0 (byte)0x01, (byte)0x01, //Fragment length (byte)0x01, (byte)0x01}; //Fragment offset byte[] packet = new byte[packetNoData.length + 257]; System.arraycopy(packetNoData, 0, packet, 0, packetNoData.length); NPFPacket r = NPFPacket.create(packet, pn); assertEquals(0, r.getSequenceNumber()); assertEquals(0, r.getAcks().size()); assertEquals(1, r.getFragments().size()); MessageFragment f = r.getFragments().get(0); assertFalse(f.shortMessage); assertFalse(f.firstFragment); assertTrue(f.isFragmented); assertEquals(257, f.fragmentLength); assertEquals(257, f.fragmentOffset); assertEquals(0, f.messageID); assertFalse(r.getError()); }
(byte) 0xCD, (byte) 0xEF }; NPFPacket r = NPFPacket.create(packet, pn); assertEquals(0, r.getAcks().size()); assertEquals(1, r.getFragments().size()); MessageFragment f = r.getFragments().get(0);
public void testPacketWithFragment() { byte[] packet = new byte[] { (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //Sequence number 0 (byte)0x00, // 0 acks (byte)0xB0, (byte)0x00, (byte)0x00, (byte)0x00,//Flags (short, first fragment and full id) and messageID 0 (byte)0x08, //Fragment length (byte)0x01, (byte)0x23, (byte)0x45, (byte)0x67, (byte)0x89, (byte)0xAB, (byte)0xCD, (byte)0xEF}; //Data NPFPacket r = NPFPacket.create(packet, pn); assertEquals(0, r.getSequenceNumber()); assertEquals(0, r.getAcks().size()); assertEquals(1, r.getFragments().size()); MessageFragment frag = r.getFragments().get(0); assertTrue(frag.shortMessage); assertFalse(frag.isFragmented); assertTrue(frag.firstFragment); assertEquals(0, frag.messageID); assertEquals(8, frag.fragmentLength); assertEquals(0, frag.fragmentOffset); assertEquals(8, frag.messageLength); assertTrue(Arrays.equals(frag.fragmentData, new byte[] { (byte)0x01, (byte)0x23, (byte)0x45, (byte)0x67, (byte)0x89, (byte)0xAB, (byte)0xCD, (byte)0xEF })); assertFalse(r.getError()); }
assertEquals(0, r.getAcks().size()); assertEquals(2, r.getFragments().size());