diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java index 12bfaee8f4..75907ff1b2 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java @@ -18,6 +18,7 @@ import java.util.Set; import net.i2p.time.Timestamper; import net.i2p.router.transport.udp.UDPTransport; import net.i2p.router.Router; +import net.i2p.router.LoadTestManager; import net.i2p.data.RouterInfo; import net.i2p.router.web.ConfigServiceHandler.UpdateWrapperManagerTask; import net.i2p.router.web.ConfigServiceHandler.UpdateWrapperManagerAndRekeyTask; @@ -46,6 +47,7 @@ public class ConfigNetHandler extends FormHandler { private String _outboundBurstRate; private String _outboundBurst; private String _reseedFrom; + private boolean _enableLoadTesting; private String _sharePct; private boolean _ratesOnly; @@ -72,6 +74,7 @@ public class ConfigNetHandler extends FormHandler { public void setHiddenMode(String moo) { _hiddenMode = true; } public void setDynamicKeys(String moo) { _dynamicKeys = true; } public void setUpdateratesonly(String moo) { _ratesOnly = true; } + public void setEnableloadtesting(String moo) { _enableLoadTesting = true; } public void setHostname(String hostname) { _hostname = (hostname != null ? hostname.trim() : null); @@ -313,6 +316,8 @@ public class ConfigNetHandler extends FormHandler { } else { _context.router().setConfigSetting(Timestamper.PROP_DISABLED, "true"); } + + LoadTestManager.setEnableLoadTesting(_context, _enableLoadTesting); } boolean saved = _context.router().saveConfig(); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java index de5b17d0c7..d47ae5caf6 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java @@ -4,6 +4,7 @@ import net.i2p.time.Timestamper; import net.i2p.router.RouterContext; import net.i2p.router.CommSystemFacade; import net.i2p.data.RouterAddress; +import net.i2p.router.LoadTestManager; import net.i2p.router.transport.udp.UDPAddress; import net.i2p.router.transport.udp.UDPTransport; import net.i2p.router.Router; @@ -195,6 +196,13 @@ public class ConfigNetHelper { return buf.toString(); } + public String getEnableLoadTesting() { + if (LoadTestManager.isEnabled(_context)) + return " checked "; + else + return ""; + } + public String getSharePercentageBox() { String pctStr = _context.getProperty(PROP_SHARE_PERCENTAGE); int pct = DEFAULT_SHARE_PERCENTAGE; diff --git a/apps/routerconsole/jsp/config.jsp b/apps/routerconsole/jsp/config.jsp index 6f0c21e2bc..f18d78bcd9 100644 --- a/apps/routerconsole/jsp/config.jsp +++ b/apps/routerconsole/jsp/config.jsp @@ -58,6 +58,14 @@
Sharing a higher percentage will improve your anonymity and help the network
+ Enable load testing: + /> +

If enabled, your router will periodically anonymously probe some of your peers + to see what sort of throughput they can handle. This improves your router's ability + to pick faster peers, but can cost substantial bandwidth. Relevent data from the + load testing is fed into the profiles as well as the + test.rtt and related stats.

+
Dynamic Router Keys: />

diff --git a/history.txt b/history.txt index 8100070b7b..c5be6989d4 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,7 @@ -$Id: history.txt,v 1.399 2006/02/16 03:24:23 jrandom Exp $ +$Id: history.txt,v 1.400 2006/02/16 04:45:23 jrandom Exp $ + +2006-02-16 jrandom + * Add a new toggle to the web config to enable/disable the load testing 2006-02-16 jrandom * Dropped much of the abandonware from the apps/ directory diff --git a/router/java/src/net/i2p/router/LoadTestManager.java b/router/java/src/net/i2p/router/LoadTestManager.java index 241245b217..f98774cbb7 100644 --- a/router/java/src/net/i2p/router/LoadTestManager.java +++ b/router/java/src/net/i2p/router/LoadTestManager.java @@ -2,6 +2,7 @@ package net.i2p.router; import java.io.*; import java.util.*; +import net.i2p.I2PAppContext; import net.i2p.util.*; import net.i2p.data.*; import net.i2p.data.i2np.*; @@ -75,7 +76,26 @@ public class LoadTestManager { /** 4 messages per peer at a time */ private static final int CONCURRENT_MESSAGES = 1;//4; + private static final boolean DEFAULT_ENABLE = true; + + public static boolean isEnabled(I2PAppContext ctx) { + String enable = ctx.getProperty("router.enableLoadTesting"); + if ( (DEFAULT_ENABLE) && (enable != null) && (!Boolean.valueOf(enable).booleanValue()) ) + return false; + else if ( (!DEFAULT_ENABLE) && ((enable == null) || (!Boolean.valueOf(enable).booleanValue()) ) ) + return false; + return true; + } + public static void setEnableLoadTesting(RouterContext ctx, boolean enable) { + if (enable) + ctx.router().setConfigSetting("router.enableLoadTesting", "true"); + else + ctx.router().setConfigSetting("router.enableLoadTesting", "false"); + } + private int getConcurrency() { + if (!isEnabled(_context)) return 0; + int rv = CONCURRENT_PEERS; try { rv = Integer.parseInt(_context.getProperty("router.loadTestConcurrency", CONCURRENT_PEERS+"")); diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index dc1d630b92..e265eefa68 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -15,9 +15,9 @@ import net.i2p.CoreVersion; * */ public class RouterVersion { - public final static String ID = "$Revision: 1.342 $ $Date: 2006/02/15 08:36:32 $"; + public final static String ID = "$Revision: 1.343 $ $Date: 2006/02/16 03:24:20 $"; public final static String VERSION = "0.6.1.9"; - public final static long BUILD = 27; + public final static long BUILD = 28; public static void main(String args[]) { System.out.println("I2P Router version: " + VERSION + "-" + BUILD); System.out.println("Router ID: " + RouterVersion.ID);