commit 9677fbdaa5c0892bd54364277654264b6dd51480 Author: Karsten Loesing karsten.loesing@gmx.net Date: Wed Sep 14 21:14:25 2011 +0200
Add an option to not cut off the last day(s) in a graph.
Note that we cut off the last day(s) for a reason. The data may be wrong. Whatever you do there, it's your own risk. Don't blame the metrics guy! --- rserve/graphs.R | 6 +++- .../ernie/web/GraphParameterChecker.java | 23 +++++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/rserve/graphs.R b/rserve/graphs.R index 7f417a0..1b5fd43 100644 --- a/rserve/graphs.R +++ b/rserve/graphs.R @@ -617,12 +617,14 @@ plot_relayflags <- function(start, end, flags, granularity, path, dpi) { ggsave(filename = path, width = 8, height = 5, dpi = as.numeric(dpi)) }
-plot_direct_users <- function(start, end, country, events, path, dpi) { +plot_direct_users <- function(start, end, country, events, path, nocutoff, + dpi) { drv <- dbDriver("PostgreSQL") con <- dbConnect(drv, user = dbuser, password = dbpassword, dbname = db) q <- paste("SELECT date, r, bwp, brn, bwn, brp, bwr, brr ", "FROM user_stats WHERE date >= '", start, "' AND date <= '", end, - "' AND date < (SELECT MAX(date) FROM user_stats) - 1 ", + "' ", ifelse(nocutoff == "off", + " AND date < (SELECT MAX(date) FROM user_stats) - 1 ", ""), " AND country = '", ifelse(country == "all", "zy", country), "'", sep = "") rs <- dbSendQuery(con, q) diff --git a/src/org/torproject/ernie/web/GraphParameterChecker.java b/src/org/torproject/ernie/web/GraphParameterChecker.java index 8189f19..81091e4 100644 --- a/src/org/torproject/ernie/web/GraphParameterChecker.java +++ b/src/org/torproject/ernie/web/GraphParameterChecker.java @@ -50,7 +50,7 @@ public class GraphParameterChecker { this.availableGraphs.put("bwhist-flags", "start,end,filename,dpi"); this.availableGraphs.put("dirbytes", "start,end,filename,dpi"); this.availableGraphs.put("direct-users", - "start,end,country,events,filename,dpi"); + "start,end,country,events,filename,nocutoff,dpi"); this.availableGraphs.put("bridge-users", "start,end,country,filename,dpi"); this.availableGraphs.put("gettor", "start,end,language,filename,dpi"); @@ -74,6 +74,7 @@ public class GraphParameterChecker { this.knownParameterValues.put("language", "all,en,zh_CN,fa"); this.knownParameterValues.put("source", "all,siv,moria,torperf"); this.knownParameterValues.put("filesize", "50kb,1mb,5mb"); + this.knownParameterValues.put("nocutoff", "on,off"); this.knownParameterValues.put("dpi", "72,150,300"); }
@@ -301,6 +302,26 @@ public class GraphParameterChecker { } }
+ /* Parse whether the last day(s) of a time series should be cut off. + * This parameter can either be "on" or "off," where "off" is the + * default. */ + if (supportedGraphParameters.contains("nocutoff")) { + String[] nocutoffParameter = (String[]) requestParameters.get( + "nocutoff"); + List<String> knownValues = Arrays.asList( + this.knownParameterValues.get("nocutoff").split(",")); + if (nocutoffParameter != null) { + if (nocutoffParameter.length != 1 || + nocutoffParameter[0].length() == 0 || + !knownValues.contains(nocutoffParameter[0])) { + return null; + } + } else { + nocutoffParameter = new String[] { "off" }; + } + recognizedGraphParameters.put("nocutoff", nocutoffParameter); + } + /* Parse graph resolution in dpi. The default is 72. */ if (supportedGraphParameters.contains("dpi")) { String[] dpiParameter = (String[]) requestParameters.get("dpi");
tor-commits@lists.torproject.org