[tor-commits] [metrics-web/master] Put #6498 graphs on a new page on the metrics website.
karsten at torproject.org
karsten at torproject.org
Fri Aug 3 13:37:20 UTC 2012
commit f0c1411185567bc8bbae9db7fefc75930df6979a
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date: Fri Aug 3 15:28:04 2012 +0200
Put #6498 graphs on a new page on the metrics website.
Requires running metrics-tasks.git/task-6498 locally.
---
etc/web.xml | 12 ++++
rserve/graphs.R | 59 ++++++++++++++++++++
.../ernie/web/GraphsSubpagesServlet.java | 2 +
src/org/torproject/ernie/web/RObjectGenerator.java | 3 +
web/WEB-INF/banner.jsp | 4 +
5 files changed, 80 insertions(+), 0 deletions(-)
diff --git a/etc/web.xml b/etc/web.xml
index cc9c3d5..1425d2b 100644
--- a/etc/web.xml
+++ b/etc/web.xml
@@ -40,6 +40,10 @@
</servlet-mapping>
<servlet-mapping>
<servlet-name>GraphsSubpages</servlet-name>
+ <url-pattern>/fast-exits.html</url-pattern>
+ </servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>GraphsSubpages</servlet-name>
<url-pattern>/users.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
@@ -217,6 +221,14 @@
<servlet-name>GraphImage</servlet-name>
<url-pattern>/connbidirect.png</url-pattern>
</servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>GraphImage</servlet-name>
+ <url-pattern>/fast-exits.png</url-pattern>
+ </servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>GraphImage</servlet-name>
+ <url-pattern>/almost-fast-exits.png</url-pattern>
+ </servlet-mapping>
<servlet>
<servlet-name>Csv</servlet-name>
diff --git a/rserve/graphs.R b/rserve/graphs.R
index fac88a7..a441d86 100644
--- a/rserve/graphs.R
+++ b/rserve/graphs.R
@@ -957,3 +957,62 @@ plot_connbidirect <- function(start, end, path, dpi) {
ggsave(filename = path, width = 8, height = 5, dpi = as.numeric(dpi))
}
+plot_fast_exits <- function(start, end, path, dpi) {
+ r <- read.csv(paste("/srv/metrics.torproject.org/task-6498-graphs/",
+ "task-6498/task-6498-results.csv", sep = ""),
+ stringsAsFactors = FALSE)
+ r <- r[r$valid_after >= paste(start, "00:00:00") &
+ r$valid_after <= paste(end, "23:59:59") &
+ r$valid_after < paste(Sys.Date() - 1, "23:59:59"), ]
+ r <- r[r$min_rate == 11875 & r$ports == "80-443-554-1755" &
+ r$min_advbw == 5000, ]
+ r <- aggregate(list(relays = r$relays, P_exit = 100 * r$exit_prob),
+ by = list(date = as.Date(cut.Date(as.Date(r$valid_after), "day"))),
+ FUN = median)
+ r <- melt(r, id.vars = c("date"))
+ r <- data.frame(r, type = ifelse(r$variable == "P_exit",
+ "Total exit probability (in %)", "Number of relays"))
+ ggplot(r, aes(x = date, y = value)) +
+ geom_line(colour = "purple", size = 0.75) +
+ facet_grid(type ~ ., scales = "free_y") +
+ scale_x_date(name = "") +
+ scale_y_continuous(name = "") +
+ scale_colour_manual(values = c("purple", "orange")) +
+ opts(title = paste("Fast exits (95+ Mbit/s configured bandwidth",
+ "rate,\n5000+ KB/s advertised bandwidth capacity,\n",
+ "exit to ports 80, 443, 554, and 1755,\n",
+ "at most 2 relays per /24 network)\n", sep = ""))
+ ggsave(filename = path, width = 8, height = 6, dpi = as.numeric(dpi))
+}
+
+plot_almost_fast_exits <- function(start, end, path, dpi) {
+ t <- read.csv(paste("/srv/metrics.torproject.org/task-6498-graphs/",
+ "task-6498/task-6498-results.csv", sep = ""),
+ stringsAsFactors = FALSE)
+ t <- t[t$valid_after >= paste(start, "00:00:00") &
+ t$valid_after <= paste(end, "23:59:59") &
+ t$valid_after < paste(Sys.Date() - 1, "23:59:59"), ]
+ t1 <- t[t$min_rate == 11875 & t$ports == "80-443-554-1755" &
+ t$min_advbw == 5000, ]
+ t2 <- t[t$min_rate == 10000 & t$ports == "80-443" &
+ t$min_advbw == 2000, ]
+ t <- rbind(
+ data.frame(t1, var = "95+ Mbit/s, 5000+ KB/s, 80/443/554/1755"),
+ data.frame(t2, var = "80+ Mbit/s, 2000+ KB/s, 80/443"))
+ t <- aggregate(list(relays = t$relays, P_exit = 100 * t$exit_prob),
+ by = list(date = as.Date(cut.Date(as.Date(t$valid_after), "day")),
+ var = t$var), FUN = median)
+ t <- melt(t, id.vars = c("date", "var"))
+ t <- data.frame(t, type = ifelse(t$variable == "P_exit",
+ "Total exit probability (in %)", "Number of relays"))
+ ggplot(t, aes(x = date, y = value, colour = var)) +
+ geom_line(size = 0.75) +
+ facet_grid(type ~ ., scales = "free_y") +
+ scale_x_date(name = "") +
+ scale_y_continuous(name = "") +
+ scale_colour_manual(name = "", values = c("purple", "orange")) +
+ opts(title = "Relays almost meeting the fast-exit requirements",
+ legend.position = "top")
+ ggsave(filename = path, width = 8, height = 6, dpi = as.numeric(dpi))
+}
+
diff --git a/src/org/torproject/ernie/web/GraphsSubpagesServlet.java b/src/org/torproject/ernie/web/GraphsSubpagesServlet.java
index d557ce5..b7172f2 100644
--- a/src/org/torproject/ernie/web/GraphsSubpagesServlet.java
+++ b/src/org/torproject/ernie/web/GraphsSubpagesServlet.java
@@ -39,6 +39,8 @@ public class GraphsSubpagesServlet extends HttpServlet {
this.availableGraphsSubpages = new HashMap<String, String>();
this.availableGraphsSubpages.put("network.html",
"WEB-INF/network.jsp");
+ this.availableGraphsSubpages.put("fast-exits.html",
+ "WEB-INF/fast-exits.jsp");
this.availableGraphsSubpages.put("users.html", "WEB-INF/users.jsp");
this.availableGraphsSubpages.put("packages.html",
"WEB-INF/packages.jsp");
diff --git a/src/org/torproject/ernie/web/RObjectGenerator.java b/src/org/torproject/ernie/web/RObjectGenerator.java
index aea9389..3a856c6 100644
--- a/src/org/torproject/ernie/web/RObjectGenerator.java
+++ b/src/org/torproject/ernie/web/RObjectGenerator.java
@@ -101,6 +101,9 @@ public class RObjectGenerator implements ServletContextListener {
this.availableGraphs.put("torperf-failures",
"start,end,source,filesize,filename,dpi");
this.availableGraphs.put("connbidirect", "start,end,filename,dpi");
+ this.availableGraphs.put("fast-exits", "start,end,filename,dpi");
+ this.availableGraphs.put("almost-fast-exits",
+ "start,end,filename,dpi");
GraphParameterChecker.getInstance().setAvailableGraphs(
availableGraphs);
diff --git a/web/WEB-INF/banner.jsp b/web/WEB-INF/banner.jsp
index 38ed77f..21d6bfb 100644
--- a/web/WEB-INF/banner.jsp
+++ b/web/WEB-INF/banner.jsp
@@ -16,6 +16,7 @@
%>class="current"<%} else {%>href="/status.html"<%}%>>Status</a>
<%if (currentPage.endsWith("graphs.jsp") ||
currentPage.endsWith("network.jsp") ||
+ currentPage.endsWith("fast-exits.jsp") ||
currentPage.endsWith("users.jsp") ||
currentPage.endsWith("performance.jsp")) {
%><br>
@@ -23,6 +24,9 @@
<a <%if (currentPage.endsWith("network.jsp")){
%>class="current"<%} else {%>href="/network.html"<%}
%>>Network</a>
+ <a <%if (currentPage.endsWith("fast-exits.jsp")){
+ %>class="current"<%} else {%>href="/fast-exits.html"<%}
+ %>>Fast Exits</a>
<a <%if (currentPage.endsWith("users.jsp")) {
%>class="current"<%} else {%>href="/users.html"<%}
%>>Users</a>
More information about the tor-commits
mailing list