forked from I2P_Developers/i2p.i2p
more use of the computeAverages method
This commit is contained in:
@ -16,6 +16,7 @@ import net.i2p.router.peermanager.DBHistory;
|
|||||||
import net.i2p.router.peermanager.PeerProfile;
|
import net.i2p.router.peermanager.PeerProfile;
|
||||||
import net.i2p.router.peermanager.ProfileOrganizer;
|
import net.i2p.router.peermanager.ProfileOrganizer;
|
||||||
import net.i2p.stat.Rate;
|
import net.i2p.stat.Rate;
|
||||||
|
import net.i2p.stat.RateAverages;
|
||||||
import net.i2p.stat.RateStat;
|
import net.i2p.stat.RateStat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -218,6 +219,7 @@ class ProfileOrganizerRenderer {
|
|||||||
buf.append("<th class=\"smallhead\">").append(_("1h Fail Rate")).append("</th>");
|
buf.append("<th class=\"smallhead\">").append(_("1h Fail Rate")).append("</th>");
|
||||||
buf.append("<th class=\"smallhead\">").append(_("1d Fail Rate")).append("</th>");
|
buf.append("<th class=\"smallhead\">").append(_("1d Fail Rate")).append("</th>");
|
||||||
buf.append("</tr>");
|
buf.append("</tr>");
|
||||||
|
RateAverages ra = new RateAverages();
|
||||||
for (Iterator<PeerProfile> iter = integratedPeers.iterator(); iter.hasNext();) {
|
for (Iterator<PeerProfile> iter = integratedPeers.iterator(); iter.hasNext();) {
|
||||||
PeerProfile prof = iter.next();
|
PeerProfile prof = iter.next();
|
||||||
Hash peer = prof.getPeer();
|
Hash peer = prof.getPeer();
|
||||||
@ -240,9 +242,9 @@ class ProfileOrganizerRenderer {
|
|||||||
buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
|
buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
|
||||||
time = now - prof.getLastSendFailed();
|
time = now - prof.getLastSendFailed();
|
||||||
buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
|
buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
|
||||||
buf.append("<td align=\"right\">").append(avg(prof, 10*60*1000l)).append("</td>");
|
buf.append("<td align=\"right\">").append(avg(prof, 10*60*1000l, ra)).append("</td>");
|
||||||
buf.append("<td align=\"right\">").append(avg(prof, 60*60*1000l)).append("</td>");
|
buf.append("<td align=\"right\">").append(avg(prof, 60*60*1000l, ra)).append("</td>");
|
||||||
buf.append("<td align=\"right\">").append(avg(prof, 24*60*60*1000l)).append("</td>");
|
buf.append("<td align=\"right\">").append(avg(prof, 24*60*60*1000l, ra)).append("</td>");
|
||||||
DBHistory dbh = prof.getDBHistory();
|
DBHistory dbh = prof.getDBHistory();
|
||||||
if (dbh != null) {
|
if (dbh != null) {
|
||||||
time = now - dbh.getLastLookupSuccessful();
|
time = now - dbh.getLastLookupSuccessful();
|
||||||
@ -253,8 +255,8 @@ class ProfileOrganizerRenderer {
|
|||||||
buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
|
buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
|
||||||
time = now - dbh.getLastStoreFailed();
|
time = now - dbh.getLastStoreFailed();
|
||||||
buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
|
buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
|
||||||
buf.append("<td align=\"right\">").append(davg(dbh, 60*60*1000l)).append("</td>");
|
buf.append("<td align=\"right\">").append(davg(dbh, 60*60*1000l, ra)).append("</td>");
|
||||||
buf.append("<td align=\"right\">").append(davg(dbh, 24*60*60*1000l)).append("</td>");
|
buf.append("<td align=\"right\">").append(davg(dbh, 24*60*60*1000l, ra)).append("</td>");
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
buf.append("<td align=\"right\">").append(_(NA));
|
buf.append("<td align=\"right\">").append(_(NA));
|
||||||
@ -340,31 +342,32 @@ class ProfileOrganizerRenderer {
|
|||||||
private final static String num(double num) { synchronized (_fmt) { return _fmt.format(num); } }
|
private final static String num(double num) { synchronized (_fmt) { return _fmt.format(num); } }
|
||||||
private final static String NA = HelperBase._x("n/a");
|
private final static String NA = HelperBase._x("n/a");
|
||||||
|
|
||||||
private String avg (PeerProfile prof, long rate) {
|
private String avg (PeerProfile prof, long rate, RateAverages ra) {
|
||||||
RateStat rs = prof.getDbResponseTime();
|
RateStat rs = prof.getDbResponseTime();
|
||||||
if (rs == null)
|
if (rs == null)
|
||||||
return _(NA);
|
return _(NA);
|
||||||
Rate r = rs.getRate(rate);
|
Rate r = rs.getRate(rate);
|
||||||
if (r == null)
|
if (r == null)
|
||||||
return _(NA);
|
return _(NA);
|
||||||
long c = r.getCurrentEventCount() + r.getLastEventCount();
|
ra.reset();
|
||||||
if (c == 0)
|
r.computeAverages(ra, false);
|
||||||
|
if (ra.getTotalEventCount() == 0)
|
||||||
return _(NA);
|
return _(NA);
|
||||||
double d = r.getCurrentTotalValue() + r.getLastTotalValue();
|
return DataHelper.formatDuration2(Math.round(ra.getAverage()));
|
||||||
return DataHelper.formatDuration2(Math.round(d/c));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String davg (DBHistory dbh, long rate) {
|
private String davg (DBHistory dbh, long rate, RateAverages ra) {
|
||||||
RateStat rs = dbh.getFailedLookupRate();
|
RateStat rs = dbh.getFailedLookupRate();
|
||||||
if (rs == null)
|
if (rs == null)
|
||||||
return "0%";
|
return "0%";
|
||||||
Rate r = rs.getRate(rate);
|
Rate r = rs.getRate(rate);
|
||||||
if (r == null)
|
if (r == null)
|
||||||
return "0%";
|
return "0%";
|
||||||
long c = r.getCurrentEventCount() + r.getLastEventCount();
|
ra.reset();
|
||||||
if (c <= 0)
|
r.computeAverages(ra, false);
|
||||||
|
if (ra.getTotalEventCount() <= 0)
|
||||||
return "0%";
|
return "0%";
|
||||||
double avg = 0.5 + 100 * (r.getCurrentTotalValue() + r.getLastTotalValue()) / c;
|
double avg = 0.5 + 100 * ra.getAverage();
|
||||||
return ((int) avg) + "%";
|
return ((int) avg) + "%";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -422,6 +422,8 @@ public class Rate {
|
|||||||
public synchronized void computeAverages(RateAverages out, boolean useLifetime) {
|
public synchronized void computeAverages(RateAverages out, boolean useLifetime) {
|
||||||
|
|
||||||
final long total = _currentEventCount + _lastEventCount;
|
final long total = _currentEventCount + _lastEventCount;
|
||||||
|
out.setTotalEventCount(total);
|
||||||
|
|
||||||
if (total <= 0) {
|
if (total <= 0) {
|
||||||
final double avg = useLifetime ? getAvgOrLifetimeAvg() : getAverageValue();
|
final double avg = useLifetime ? getAvgOrLifetimeAvg() : getAverageValue();
|
||||||
out.setAverage(avg);
|
out.setAverage(avg);
|
||||||
|
@ -8,11 +8,13 @@ package net.i2p.stat;
|
|||||||
public class RateAverages {
|
public class RateAverages {
|
||||||
|
|
||||||
private double average, current, last;
|
private double average, current, last;
|
||||||
|
private long totalEventCount;
|
||||||
|
|
||||||
public void reset() {
|
public void reset() {
|
||||||
average = 0;
|
average = 0;
|
||||||
current = 0;
|
current = 0;
|
||||||
last = 0;
|
last = 0;
|
||||||
|
totalEventCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getAverage() {
|
public double getAverage() {
|
||||||
@ -39,4 +41,12 @@ public class RateAverages {
|
|||||||
this.last = last;
|
this.last = last;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getTotalEventCount() {
|
||||||
|
return totalEventCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTotalEventCount(long totalEventCount) {
|
||||||
|
this.totalEventCount = totalEventCount;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user