public void testSendEmptyPacket() { NPFPacket p = new NPFPacket(); p.setSequenceNumber(0); byte[] correctData = new byte[] {(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //Sequence number (0) (byte)0x00}; //Number of acks (0) checkPacket(p, correctData); }
public static NPFPacket create(byte[] plaintext, BasePeerNode pn) { NPFPacket packet = new NPFPacket(); if (pn == null) throw new IllegalArgumentException("Can't estimate an ack type of received packet"); int offset = 0;
public void testSendPacketWithAck() { NPFPacket p = new NPFPacket(); p.setSequenceNumber(0); p.addAck(0, MAX_PACKET_SIZE); byte[] correctData = new byte[] {(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01}; checkPacket(p, correctData); }
public void testSendPacketWithTwoAcksLong() { NPFPacket p = new NPFPacket(); p.setSequenceNumber(0); p.addAck(0, MAX_PACKET_SIZE); p.addAck(1000000, MAX_PACKET_SIZE); byte[] correctData = new byte[] {(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x02, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x00 /* marker */, (byte)0x00, (byte)0x0F, (byte)0x42, (byte)0x40, (byte)0x01}; checkPacket(p, correctData); }
public void testSendPacketWithFragment() { NPFPacket p = new NPFPacket(); p.setSequenceNumber(100); 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)); byte[] correctData = new byte[] {(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x64, //Sequence number (100) (byte)0x00, (byte)0xB0, (byte)0x00, (byte)0x00, (byte)0x00, //Flags + messageID (byte)0x08, //Fragment length (byte)0x01, (byte)0x23, (byte)0x45, (byte)0x67, (byte)0x89, (byte)0xAB, (byte)0xCD, (byte)0xEF}; checkPacket(p, correctData); }
public void testSendPacketWithTwoAcks() { NPFPacket p = new NPFPacket(); p.setSequenceNumber(0); p.addAck(0, MAX_PACKET_SIZE); p.addAck(5, MAX_PACKET_SIZE); byte[] correctData = new byte[] {(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x02, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x05, (byte) 0x01}; checkPacket(p, correctData); }
public void testSendPacketWithAckRange() { NPFPacket p = new NPFPacket(); p.setSequenceNumber(0); p.addAck(0, MAX_PACKET_SIZE); p.addAck(1, MAX_PACKET_SIZE); p.addAck(2, MAX_PACKET_SIZE); byte[] correctData = new byte[] {(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x03}; checkPacket(p, correctData); }
public void testSendPacketWithAcks() { NPFPacket p = new NPFPacket(); p.setSequenceNumber(0); p.addAck(0, MAX_PACKET_SIZE); p.addAck(5, MAX_PACKET_SIZE); p.addAck(10, MAX_PACKET_SIZE); byte[] correctData = new byte[] {(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x03, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x05, (byte) 0x01, (byte)0x05, (byte) 0x01}; checkPacket(p, correctData); }
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()); }
public void testEncodeDecodeLossyPerPacketMessages2Padded() { NPFPacket p = new NPFPacket(); byte[] fragData = new byte[] {(byte)0x01, (byte)0x23, (byte)0x45, (byte)0x67, (byte)0x89, (byte)0xAB, (byte)0xCD, (byte)0xEF}; p.addMessageFragment(new MessageFragment(true, false, true, 0, 8, 8, 0, fragData, null)); byte[] lossyFragment = new byte[] { (byte)0xFF, (byte)0xEE, (byte)0xDD, (byte)0xCC, (byte)0xBB, (byte)0xAA}; byte[] lossyFragment2 = new byte[] { (byte)0xAA, (byte)0x99, (byte)0x88, (byte)0x77, (byte)0x66, (byte)0x55}; p.addLossyMessage(lossyFragment); p.addLossyMessage(lossyFragment2); byte[] encoded = new byte[p.getLength() + 20]; int randomSeed = new Random().nextInt(); p.toBytes(encoded, 0, new Random(randomSeed)); NPFPacket received = NPFPacket.create(encoded, pn); assertEquals(1, received.getFragments().size()); assertEquals(0, received.countAcks()); assertEquals("Seed was "+randomSeed, 2, received.getLossyMessages().size()); assertEquals(p.getLength(), received.getLength()); assertEquals(encoded.length - 20, received.getLength()); byte[] decodedFragData = received.getFragments().get(0).fragmentData; checkEquals(fragData, decodedFragData); byte[] decodedLossyMessage = received.getLossyMessages().get(0); checkEquals(lossyFragment, decodedLossyMessage); decodedLossyMessage = received.getLossyMessages().get(1); checkEquals(lossyFragment2, decodedLossyMessage); }
public void testEncodeDecodeLossyPerPacketMessages() { NPFPacket p = new NPFPacket(); byte[] fragData = new byte[] {(byte)0x01, (byte)0x23, (byte)0x45, (byte)0x67, (byte)0x89, (byte)0xAB, (byte)0xCD, (byte)0xEF}; p.addMessageFragment(new MessageFragment(true, false, true, 0, 8, 8, 0, fragData, null)); byte[] lossyFragment = new byte[] { (byte)0xFF, (byte)0xEE, (byte)0xDD, (byte)0xCC, (byte)0xBB, (byte)0xAA}; p.addLossyMessage(lossyFragment); byte[] encoded = new byte[p.getLength()]; p.toBytes(encoded, 0, null); NPFPacket received = NPFPacket.create(encoded, pn); assertEquals(1, received.getFragments().size()); assertEquals(0, received.countAcks()); assertEquals(1, received.getLossyMessages().size()); assertEquals(encoded.length, received.getLength()); byte[] decodedFragData = received.getFragments().get(0).fragmentData; checkEquals(fragData, decodedFragData); byte[] decodedLossyMessage = received.getLossyMessages().get(0); checkEquals(lossyFragment, decodedLossyMessage); }
public void testEncodeDecodeLossyPerPacketMessages2() { NPFPacket p = new NPFPacket(); byte[] fragData = new byte[] {(byte)0x01, (byte)0x23, (byte)0x45, (byte)0x67, (byte)0x89, (byte)0xAB, (byte)0xCD, (byte)0xEF}; p.addMessageFragment(new MessageFragment(true, false, true, 0, 8, 8, 0, fragData, null)); byte[] lossyFragment = new byte[] { (byte)0xFF, (byte)0xEE, (byte)0xDD, (byte)0xCC, (byte)0xBB, (byte)0xAA}; byte[] lossyFragment2 = new byte[] { (byte)0xAA, (byte)0x99, (byte)0x88, (byte)0x77, (byte)0x66, (byte)0x55}; p.addLossyMessage(lossyFragment); p.addLossyMessage(lossyFragment2); byte[] encoded = new byte[p.getLength()]; p.toBytes(encoded, 0, null); NPFPacket received = NPFPacket.create(encoded, pn); assertEquals(1, received.getFragments().size()); assertEquals(0, received.countAcks()); assertEquals(2, received.getLossyMessages().size()); assertEquals(encoded.length, received.getLength()); byte[] decodedFragData = received.getFragments().get(0).fragmentData; checkEquals(fragData, decodedFragData); byte[] decodedLossyMessage = received.getLossyMessages().get(0); checkEquals(lossyFragment, decodedLossyMessage); decodedLossyMessage = received.getLossyMessages().get(1); checkEquals(lossyFragment2, decodedLossyMessage); }
public void testLength() { NPFPacket p = new NPFPacket(); p.addMessageFragment(new MessageFragment(true, false, true, 0, 10, 10, 0, new byte[10], null)); assertEquals(20, p.getLength()); //Seqnum (4), numAcks (1), msgID (4), length (1), data (10) p.addMessageFragment(new MessageFragment(true, false, true, 5000, 10, 10, 0, new byte[10], null)); assertEquals(35, p.getLength()); // + msgID (4), length (1), data (10) //This fragment adds 13, but the next won't need a full message id anymore, so this should only add 11 //bytes p.addMessageFragment(new MessageFragment(true, false, true, 2500, 10, 10, 0, new byte[10], null)); assertEquals(46, p.getLength()); }
NPFPacket packet = new NPFPacket(); SentPacket sentPacket = new SentPacket(this, sessionKey);
public void testSendCompletePacket() { NPFPacket p = new NPFPacket(); p.setSequenceNumber(2130706432);