* New buildTest and prepTest targets

* Fix UDPEndpoint usage in unit tests:
  - Restore receive()
  - Handle null UDPTransport
* Fix UDPEndpointTestStandalone compilation
This commit is contained in:
zzz
2013-05-16 17:57:33 +00:00
parent febc0a5237
commit fcdf837f33
5 changed files with 47 additions and 6 deletions

View File

@ -1292,20 +1292,29 @@
<!-- end custom installers --> <!-- end custom installers -->
<!-- unit tests --> <!-- unit tests -->
<target name="updateTest" depends="prepupdate"> <target name="buildTest">
<ant dir="core/java/" target="jarTest" /> <ant dir="core/java/" target="jarTest" />
<copy file="core/java/build/i2ptest.jar" todir="pkg-temp/lib" /> <ant dir="router/java/" target="jarTest" />
<zip destfile="i2pupdate.zip" basedir="pkg-temp" /> <copy file="core/java/build/i2ptest.jar" todir="build" />
<copy file="router/java/build/routertest.jar" todir="build" />
</target> </target>
<target name="prepTest" depends="prepupdate, buildTest">
<!-- overwrite i2p.jar and router.jar with the test versions -->
<copy file="build/i2ptest.jar" tofile="pkg-temp/lib/i2p.jar" overwrite="true" />
<copy file="build/routertest.jar" tofile="pkg-temp/lib/router.jar" overwrite="true" />
</target>
<target name="updateTest" depends="prepTest, zipit" />
<target name="junit.test" depends="buildProperties, jbigi" > <target name="junit.test" depends="buildProperties, jbigi" >
<ant dir="core/java/" target="junit.test" /> <ant dir="core/java/" target="junit.test" />
<ant dir="router/java/" target="junit.test" /> <ant dir="router/java/" target="junit.test" />
</target> </target>
<target name="scalatest.test" depends="buildProperties, jbigi" > <target name="scalatest.test" depends="buildProperties, jbigi" >
<ant dir="core/java/" target="scalatest.test" /> <ant dir="core/java/" target="scalatest.test" />
<!-- note there are no router scala tests yet -->
<ant dir="router/java/" target="scalatest.test" /> <ant dir="router/java/" target="scalatest.test" />
</target> </target>
<target name="test" depends="buildProperties, jbigi" > <target name="test" depends="buildProperties, jbigi" >
<!-- both junit and scala -->
<ant dir="core/java/" target="test" /> <ant dir="core/java/" target="test" />
<ant dir="router/java/" target="test" /> <ant dir="router/java/" target="test" />
</target> </target>

View File

@ -258,7 +258,10 @@
<fileset dir="../../reports/router/junit/" /> <fileset dir="../../reports/router/junit/" />
</replaceregexp> </replaceregexp>
</target> </target>
<!-- both junit and scala, but we have no scala tests yet -->
<target name="test" depends="junit.test"/> <target name="test" depends="junit.test"/>
<!-- test reports --> <!-- test reports -->
<target name="scalatest.report"> <target name="scalatest.report">
<junitreport todir="../../reports/router/scalatest"> <junitreport todir="../../reports/router/scalatest">

View File

@ -31,6 +31,8 @@ import net.i2p.util.Log;
/** /**
* Generate compressed geoipv6.dat.gz file, and * Generate compressed geoipv6.dat.gz file, and
* lookup entries in it. * lookup entries in it.
*
* @since IPv6
*/ */
class GeoIPv6 { class GeoIPv6 {

View File

@ -1,5 +1,6 @@
package net.i2p.router.transport.udp; package net.i2p.router.transport.udp;
import java.io.IOException;
import java.net.DatagramSocket; import java.net.DatagramSocket;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.Inet4Address; import java.net.Inet4Address;
@ -25,6 +26,7 @@ class UDPEndpoint {
private final boolean _isIPv4, _isIPv6; private final boolean _isIPv4, _isIPv6;
/** /**
* @param transport may be null for unit testing ONLY
* @param listenPort -1 or the requested port, may not be honored * @param listenPort -1 or the requested port, may not be honored
* @param bindAddress null ok * @param bindAddress null ok
*/ */
@ -49,9 +51,11 @@ class UDPEndpoint {
throw new SocketException("SSU Unable to bind to a port on " + _bindAddress); throw new SocketException("SSU Unable to bind to a port on " + _bindAddress);
} }
_sender = new UDPSender(_context, _socket, "UDPSender"); _sender = new UDPSender(_context, _socket, "UDPSender");
_receiver = new UDPReceiver(_context, _transport, _socket, "UDPReceiver");
_sender.startup(); _sender.startup();
_receiver.startup(); if (_transport != null) {
_receiver = new UDPReceiver(_context, _transport, _socket, "UDPReceiver");
_receiver.startup();
}
} }
public synchronized void shutdown() { public synchronized void shutdown() {
@ -158,6 +162,25 @@ class UDPEndpoint {
_sender.add(packet); _sender.add(packet);
} }
/**
* Blocking call to receive the next inbound UDP packet from any peer.
*
* UNIT TESTING ONLY. Direct from the socket.
* In normal operation, UDPReceiver thread injects to PacketHandler queue.
*
* @return null if we have shut down, or on failure
*/
public UDPPacket receive() {
UDPPacket packet = UDPPacket.acquire(_context, true);
try {
_socket.receive(packet.getPacket());
return packet;
} catch (IOException ioe) {
packet.release();
return null;
}
}
/** /**
* Clear outbound queue, probably in preparation for sending destroy() to everybody. * Clear outbound queue, probably in preparation for sending destroy() to everybody.
* @since 0.9.2 * @since 0.9.2

View File

@ -38,7 +38,11 @@ public class UDPEndpointTestStandalone {
_log.debug("Building " + i); _log.debug("Building " + i);
UDPEndpoint endpoint = new UDPEndpoint(_context, null, base + i, null); UDPEndpoint endpoint = new UDPEndpoint(_context, null, base + i, null);
_endpoints[i] = endpoint; _endpoints[i] = endpoint;
endpoint.startup(); try {
endpoint.startup();
} catch (SocketException se) {
throw new RuntimeException(se);
}
I2PThread read = new I2PThread(new TestRead(endpoint), "Test read " + i); I2PThread read = new I2PThread(new TestRead(endpoint), "Test read " + i);
I2PThread write = new I2PThread(new TestWrite(endpoint), "Test write " + i); I2PThread write = new I2PThread(new TestWrite(endpoint), "Test write " + i);
//read.setDaemon(true); //read.setDaemon(true);