From 95e0492b329e3e6aab030b53a94ed19524fca410 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 24 Nov 2009 20:20:30 +0000 Subject: [PATCH] * Profiles: Record successes in the DB fail rate too, so we can calculate a percentage * profiles.jsp: - Change fail rate from count to percent - Hide standard profiles by default --- .../router/web/ProfileOrganizerRenderer.java | 30 ++++++++++++++----- .../net/i2p/router/web/ProfilesHelper.java | 8 ++++- apps/routerconsole/jsp/profiles.jsp | 1 + .../net/i2p/router/peermanager/DBHistory.java | 4 +++ 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java index 55939897aa..5e7ef4b94d 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java @@ -32,7 +32,7 @@ class ProfileOrganizerRenderer { _organizer = organizer; _comparator = new ProfileComparator(); } - public void renderStatusHTML(Writer out) throws IOException { + public void renderStatusHTML(Writer out, boolean full) throws IOException { Set peers = _organizer.selectAllPeers(); long now = _context.clock().now(); @@ -40,6 +40,8 @@ class ProfileOrganizerRenderer { TreeSet order = new TreeSet(_comparator); TreeSet integratedPeers = new TreeSet(_comparator); + int older = 0; + int standard = 0; for (Iterator iter = peers.iterator(); iter.hasNext();) { Hash peer = (Hash)iter.next(); if (_organizer.getUs().equals(peer)) continue; @@ -51,7 +53,14 @@ class ProfileOrganizerRenderer { if (info != null && info.getCapabilities().indexOf("f") >= 0) integratedPeers.add(prof); } - if (prof.getLastSendSuccessful() <= hideBefore) continue; + if (prof.getLastSendSuccessful() <= hideBefore) { + older++; + continue; + } + if ((!full) && !_organizer.isHighCapacity(peer)) { + standard++; + continue; + } order.add(prof); } @@ -62,7 +71,10 @@ class ProfileOrganizerRenderer { StringBuilder buf = new StringBuilder(16*1024); buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>"); buf.append(_("Showing {0} recent profiles.", order.size())).append('\n'); - buf.append(_("Hiding {0} older profiles.", peers.size()-order.size())); + if (older > 0) + buf.append(_("Hiding {0} older profiles.", older)).append('\n'); + if (standard > 0) + buf.append("<a href=\"/profiles.jsp?f=1\">").append(_("Hiding {0} standard profiles.", standard)).append("</a>\n"); buf.append("</p>"); buf.append("<table>"); buf.append("<tr>"); @@ -169,7 +181,7 @@ class ProfileOrganizerRenderer { } buf.append("</table>"); - buf.append("<h2>").append(_("Floodfill and Integrated Peers")).append("</h2>\n"); + buf.append("<h2><a name=\"flood\"></a>").append(_("Floodfill and Integrated Peers")).append("</h2>\n"); buf.append("<table>"); buf.append("<tr>"); buf.append("<th class=\"smallhead\">").append(_("Peer")).append("</th>"); @@ -231,6 +243,7 @@ class ProfileOrganizerRenderer { for (int i = 0; i < 6; i++) buf.append("<td align=\"right\">").append(_(NA)); } + buf.append("</tr>\n"); } buf.append("</table>"); @@ -324,12 +337,15 @@ class ProfileOrganizerRenderer { private String davg (DBHistory dbh, long rate) { RateStat rs = dbh.getFailedLookupRate(); if (rs == null) - return _(NA); + return "0%"; Rate r = rs.getRate(rate); if (r == null) - return _(NA); + return "0%"; long c = r.getCurrentEventCount() + r.getLastEventCount(); - return "" + c; + if (c <= 0) + return "0%"; + double avg = 0.5 + 100 * (r.getCurrentTotalValue() + r.getLastTotalValue()) / c; + return ((int) avg) + "%"; } /** translate a string */ diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java index ba7a6aa926..3e68c31693 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java @@ -4,13 +4,19 @@ import java.io.IOException; public class ProfilesHelper extends HelperBase { + private boolean _full; + public ProfilesHelper() {} + public void setFull(String f) { + _full = f != null; + } + /** @return empty string, writes directly to _out */ public String getProfileSummary() { try { ProfileOrganizerRenderer rend = new ProfileOrganizerRenderer(_context.profileOrganizer(), _context); - rend.renderStatusHTML(_out); + rend.renderStatusHTML(_out, _full); } catch (IOException ioe) { ioe.printStackTrace(); } diff --git a/apps/routerconsole/jsp/profiles.jsp b/apps/routerconsole/jsp/profiles.jsp index 035f50b5b3..69100e349b 100644 --- a/apps/routerconsole/jsp/profiles.jsp +++ b/apps/routerconsole/jsp/profiles.jsp @@ -11,6 +11,7 @@ <jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" /> <jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> <jsp:setProperty name="profilesHelper" property="writer" value="<%=out%>" /> + <jsp:setProperty name="profilesHelper" property="full" value="<%=request.getParameter("f")%>" /> <jsp:getProperty name="profilesHelper" property="profileSummary" /> <a name="shitlist"> </a><h2><%=intl._("Banned Peers")%></h2> <jsp:getProperty name="profilesHelper" property="shitlistSummary" /> diff --git a/router/java/src/net/i2p/router/peermanager/DBHistory.java b/router/java/src/net/i2p/router/peermanager/DBHistory.java index 38d06a8905..a8e084e491 100644 --- a/router/java/src/net/i2p/router/peermanager/DBHistory.java +++ b/router/java/src/net/i2p/router/peermanager/DBHistory.java @@ -114,6 +114,7 @@ public class DBHistory { */ public void lookupSuccessful() { _successfulLookups++; + _failedLookupRate.addData(0, 0); _lastLookupSuccessful = _context.clock().now(); } @@ -132,6 +133,9 @@ public class DBHistory { * */ public void storeSuccessful() { + // Fixme, redefined this to include both lookup and store fails, + // need to fix the javadocs + _failedLookupRate.addData(0, 0); _lastStoreSuccessful = _context.clock().now(); } -- GitLab