public void testAddIP() throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); // try a ping which doesn't ask for ip PingRequest noRequest = pingRequestFactory.createPingRequest((byte) 1); assertFalse(noRequest.requestsIP()); noRequest.write(baos); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); PingRequest fromNet = (PingRequest) messageFactory.read(bais, Network.TCP); assertFalse(fromNet.requestsIP()); // try a ping without any other ggeps except the ip request byte[] guid = GUID.makeGuid(); PingRequest noPayload = pingRequestFactory.createPingRequest(guid, (byte) 1, (byte) 0); assertFalse(noPayload.requestsIP()); noPayload.addIPRequest(); assertTrue(noPayload.requestsIP()); baos = new ByteArrayOutputStream(); noPayload.write(baos); bais = new ByteArrayInputStream(baos.toByteArray()); fromNet = (PingRequest) messageFactory.read(bais, Network.TCP); assertTrue(fromNet.requestsIP()); // now try a ping with locale String original = ApplicationSettings.LANGUAGE.get(); ApplicationSettings.LANGUAGE.set("zz"); PingRequest withLocale = pingRequestFactory.createPingRequest((byte) 1); ApplicationSettings.LANGUAGE.set(original); withLocale.addIPRequest(); baos = new ByteArrayOutputStream(); withLocale.write(baos); bais = new ByteArrayInputStream(baos.toByteArray()); fromNet = (PingRequest) messageFactory.read(bais, Network.TCP); assertTrue(fromNet.requestsIP()); assertEquals("zz", fromNet.getLocale()); assertFalse(fromNet.supportsCachedPongs()); assertNull(fromNet.getSupportsCachedPongData()); }
public void testQueryKeyPing() throws Exception { PingRequest pr = pingRequestFactory.createQueryKeyRequest(); assertFalse(pr.isQueryKeyRequest()); // hasn't been hopped yet ByteArrayOutputStream baos = new ByteArrayOutputStream(); pr.write(baos); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); PingRequest prRead = (PingRequest) messageFactory.read(bais, Network.TCP); prRead.hop(); assertTrue(prRead.isQueryKeyRequest()); }
public void testBigPing() throws Exception { byte[] buffer = new byte[23 + 16]; // Headers plus payload(16 bytes) // Note: We choose a size of 16 to make sure it does not create a // group ping, byte[] guid = GUID.makeGuid(); // get a GUID System.arraycopy(guid, 0, buffer, 0, guid.length); // copy GUID int currByte = guid.length; buffer[currByte] = Message.F_PING; currByte++; buffer[currByte] = 0x0004; // TTL currByte++; buffer[currByte] = 0x0000; // Hops currByte++; buffer[currByte] = 0x0010; // 1st byte = 16, A thro' P currByte++; buffer[currByte] = 0x0000; // 2nd byte = 0 currByte++; buffer[currByte] = 0x0000; // 3rd byte = 0 currByte++; buffer[currByte] = 0x0000; // 4th byte = 0 - remember it's little endian currByte++; byte c = 65; // "A" byte[] payload = new byte[16]; // to be used to test constrcutor for (int i = 0; i < 16; i++) { buffer[currByte] = c; payload[i] = buffer[currByte]; currByte++; c++; } // OK, Big ping ready ByteArrayInputStream stream = new ByteArrayInputStream(buffer); Message m; m = messageFactory.read(stream, Network.TCP); PingRequest pr; pr = (PingRequest) m; ByteArrayOutputStream outBuffer = new ByteArrayOutputStream(); pr.write(outBuffer); byte[] outb = outBuffer.toByteArray(); String out = StringUtils.getASCIIString(outb, 23, outb.length - 23); assertEquals("Wrong payload", "ABCDEFGHIJKLMNOP", out); // Test the new constructor for big pings read from the network PingRequest bigPing = pingRequestFactory.createFromNetwork( GUID.makeGuid(), (byte) 7, (byte) 0, payload, Network.UNKNOWN); assertEquals(0, bigPing.getHops()); assertEquals(7, bigPing.getTTL()); assertEquals("bad length", 16, bigPing.getLength()); // Came this far means its all OK }
public void testUDPPingRequest() { PingRequest pr = pingRequestFactory.createUDPPing(); assertTrue(pr.supportsCachedPongs()); // Test +UP +TLS UltrapeerSettings.MIN_CONNECT_TIME.setValue(0); UltrapeerSettings.FORCE_ULTRAPEER_MODE.setValue(true); ConnectionSettings.EVER_ACCEPTED_INCOMING.setValue(true); ConnectionSettings.LOCAL_IS_PRIVATE.setValue(false); UltrapeerSettings.EVER_ULTRAPEER_CAPABLE.setValue(true); UltrapeerSettings.NEED_MIN_CONNECT_TIME.setValue(false); tlsManager.setIncomingTLSEnabled(true); assertTrue(connectionServices.isSupernode()); pr = pingRequestFactory.createUDPPing(); assertFalse(pr.requestsIP()); byte[] data = pr.getSupportsCachedPongData(); assertEquals(0x1, data[0] & 0x1); assertEquals(0x2, data[0] & 0x2); // +UP -TLS tlsManager.setIncomingTLSEnabled(false); assertTrue(connectionServices.isSupernode()); pr = pingRequestFactory.createUDPPing(); assertFalse(pr.requestsIP()); data = pr.getSupportsCachedPongData(); assertEquals(0x1, data[0] & 0x1); assertEquals(0x0, data[0] & 0x2); // Test -UP +TLS UltrapeerSettings.DISABLE_ULTRAPEER_MODE.setValue(true); UltrapeerSettings.FORCE_ULTRAPEER_MODE.setValue(false); tlsManager.setIncomingTLSEnabled(true); assertFalse(connectionServices.isSupernode()); pr = pingRequestFactory.createUDPPing(); assertFalse(pr.requestsIP()); data = pr.getSupportsCachedPongData(); assertEquals(0x0, data[0] & 0x1); assertEquals(0x2, data[0] & 0x2); // Test -UP -TLS tlsManager.setIncomingTLSEnabled(false); assertFalse(connectionServices.isSupernode()); pr = pingRequestFactory.createUDPPing(); assertFalse(pr.requestsIP()); data = pr.getSupportsCachedPongData(); assertEquals(0x0, data[0] & 0x1); assertEquals(0x0, data[0] & 0x2); ConnectionSettings.EVER_ACCEPTED_INCOMING.setValue(false); pr = pingRequestFactory.createUDPPing(); assertTrue(pr.requestsIP()); }