summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Blum2013-03-03 17:56:18 -0600
committerJosh Blum2013-03-03 17:56:18 -0600
commita8d2f5e32fee06f0ddecb618878ac9e2c0cbd169 (patch)
tree81c3435175ed41a6d7f38c8e7b9365c230e4da9e
parent8073c2d24e86f8e2360de2b776b495b5e486e91d (diff)
downloadsandhi-a8d2f5e32fee06f0ddecb618878ac9e2c0cbd169.tar.gz
sandhi-a8d2f5e32fee06f0ddecb618878ac9e2c0cbd169.tar.bz2
sandhi-a8d2f5e32fee06f0ddecb618878ac9e2c0cbd169.zip
stats: split files, cleanup for expansion
-rw-r--r--python/gras/CMakeLists.txt21
-rw-r--r--python/gras/stats/CMakeLists.txt22
-rw-r--r--python/gras/stats/main.css2
-rw-r--r--python/gras/stats/main.html6
-rw-r--r--python/gras/stats/main.js71
-rw-r--r--python/gras/stats/registry.js32
-rw-r--r--python/gras/stats/utils.js35
7 files changed, 114 insertions, 75 deletions
diff --git a/python/gras/CMakeLists.txt b/python/gras/CMakeLists.txt
index 4c72e9b..f3ef329 100644
--- a/python/gras/CMakeLists.txt
+++ b/python/gras/CMakeLists.txt
@@ -1,4 +1,9 @@
########################################################################
+# add subdirs
+########################################################################
+add_subdirectory(stats)
+
+########################################################################
# Include swig generation macros
########################################################################
find_package(SWIG)
@@ -42,19 +47,3 @@ GR_PYTHON_INSTALL(
DESTINATION ${GR_PYTHON_DIR}/gras
COMPONENT ${GRAS_COMP_PYTHON}
)
-
-GR_PYTHON_INSTALL(
- FILES
- stats/__init__.py
- DESTINATION ${GR_PYTHON_DIR}/gras/stats
- COMPONENT ${GRAS_COMP_PYTHON}
-)
-
-INSTALL(
- FILES
- stats/main.html
- stats/main.js
- stats/main.css
- DESTINATION ${GR_PYTHON_DIR}/gras/stats
- COMPONENT ${GRAS_COMP_PYTHON}
-)
diff --git a/python/gras/stats/CMakeLists.txt b/python/gras/stats/CMakeLists.txt
new file mode 100644
index 0000000..4510f5b
--- /dev/null
+++ b/python/gras/stats/CMakeLists.txt
@@ -0,0 +1,22 @@
+########################################################################
+# Install rules
+########################################################################
+include(GrPython)
+
+GR_PYTHON_INSTALL(
+ FILES
+ __init__.py
+ DESTINATION ${GR_PYTHON_DIR}/gras/stats
+ COMPONENT ${GRAS_COMP_PYTHON}
+)
+
+INSTALL(
+ FILES
+ main.html
+ main.js
+ registry.js
+ utils.js
+ main.css
+ DESTINATION ${GR_PYTHON_DIR}/gras/stats
+ COMPONENT ${GRAS_COMP_PYTHON}
+)
diff --git a/python/gras/stats/main.css b/python/gras/stats/main.css
index 6d28bcb..0fc5db7 100644
--- a/python/gras/stats/main.css
+++ b/python/gras/stats/main.css
@@ -13,7 +13,7 @@ background-color:white;
#page{
padding:10px;
color:inherit;
-background-color:#F0FFF0;
+/*background-color:#F0FFF0;*/
}
#page h1{
diff --git a/python/gras/stats/main.html b/python/gras/stats/main.html
index cd66534..e434192 100644
--- a/python/gras/stats/main.html
+++ b/python/gras/stats/main.html
@@ -3,10 +3,12 @@
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<meta http-equiv="Content-Style-Type" content="text/css" />
- <title>GRAS status monitor</title>
+ <title>GRAS Status Monitor</title>
<link rel="stylesheet" type="text/css" href="/main.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
+ <script type="text/javascript" src="/registry.js"></script>
+ <script type="text/javascript" src="/utils.js"></script>
<script type="text/javascript" src="/main.js"></script>
<script type="text/javascript">
google.load('visualization', '1.0', {'packages':['corechart']});
@@ -18,7 +20,7 @@
<div id='page'>
<h1>GRAS Status Monitor</h1>
<form id="individual_charts"></form>
- <div id="overall_charts" style="width:1000px;height:700px;"></div>
+ <div id="overall_charts" style="width:1000px;height:500px;"></div>
</div>
</body>
diff --git a/python/gras/stats/main.js b/python/gras/stats/main.js
index 4658f03..696c061 100644
--- a/python/gras/stats/main.js
+++ b/python/gras/stats/main.js
@@ -1,48 +1,6 @@
/***********************************************************************
- * Utility functions for stats
+ * visuals
**********************************************************************/
-var gras_extract_block_ids = function(point)
-{
- var ids = new Array();
- $('block', point).each(function()
- {
- ids.push($(this).attr('id'));
- });
- return ids;
-}
-
-var gras_extract_total_items = function(point, id)
-{
- var block_data = $('block[id="' + id + '"]', point);
- var total_items = 0;
- $('items_consumed,items_produced', block_data).each(function()
- {
- total_items += parseInt($(this).text());
- });
- return total_items;
-}
-
-var gras_extract_throughput_delta = function(p0, p1, id)
-{
- var d0 = $('block[id="' + id + '"]', p0);
- var d1 = $('block[id="' + id + '"]', p1);
- var t0 = parseInt($('stats_time', d0).text());
- var t1 = parseInt($('stats_time', d1).text());
- var tps = parseInt($('tps', d0).text());
- var items0 = gras_extract_total_items(p0, id);
- var items1 = gras_extract_total_items(p1, id);
- return ((items1-items0)*tps)/(t1-t0);
-}
-
-var gras_extract_throughput = function(point, id)
-{
- var block_data = $('block[id="' + id + '"]', point);
- var start_time = parseInt($('start_time', block_data).text());
- var stats_time = parseInt($('stats_time', block_data).text());
- var tps = parseInt($('tps', block_data).text());
- var total_items = gras_extract_total_items(point, id);
- return (total_items*tps)/(stats_time-start_time);
-}
var gras_setup_individual_charts = function(point)
{
@@ -59,24 +17,25 @@ var gras_setup_individual_charts = function(point)
}
}).appendTo(charts);
- $(charts).append($(this).attr('id') + '<br />');
+ $(charts).append($(this).attr('id') + '&nbsp;');
});
}
-var gras_update_throughput_chart = function(history)
+
+var gras_update_throughput_chart = function(data)
{
- if (history.length == 1) return gras_setup_individual_charts(history[0]);
- if (history.length < 2) return;
+ if (data.history.length == 1) return gras_setup_individual_charts(data.history[0]);
+ if (data.history.length < 2) return;
- var ids = gras_extract_block_ids(history[0]);
+ var ids = data.getBlockIds();
var data_set = [['Throughput'].concat(ids)];
- for (var i = Math.max(history.length-10, 1); i < history.length; i++)
+ for (var i = Math.max(data.history.length-10, 1); i < data.history.length; i++)
{
var row = new Array();
row.push(i.toString());
for (var j = 0; j < ids.length; j++)
{
- row.push(gras_extract_throughput_delta(history[i-1], history[i], ids[j])/1e6);
+ row.push(gras_extract_throughput_delta(data.history[i-1], data.history[i], ids[j])/1e6);
}
data_set.push(row);
}
@@ -98,7 +57,7 @@ var gras_update_throughput_chart = function(history)
/***********************************************************************
* Query stats
**********************************************************************/
-var gras_query_stats = function(history)
+var gras_query_stats = function(data)
{
$.ajax({
type: "GET",
@@ -109,11 +68,11 @@ var gras_query_stats = function(history)
{
if ($(xml, "gras_stats") !== undefined)
{
- history.push(xml);
- gras_update_throughput_chart(history);
+ data.appendPoint(xml);
+ gras_update_throughput_chart(data);
}
var onceHandle = window.setTimeout(function() {
- gras_query_stats(history);
+ gras_query_stats(data);
}, 500);
}
});
@@ -124,6 +83,6 @@ var gras_query_stats = function(history)
**********************************************************************/
var gras_stats_main = function()
{
- var history = new Array();
- gras_query_stats(history);
+ var data = new GrasStatsRegistry();
+ gras_query_stats(data);
}
diff --git a/python/gras/stats/registry.js b/python/gras/stats/registry.js
new file mode 100644
index 0000000..4b5f2e2
--- /dev/null
+++ b/python/gras/stats/registry.js
@@ -0,0 +1,32 @@
+/***********************************************************************
+ * Stats registry data structure
+ **********************************************************************/
+var GrasStatsRegistry = function()
+{
+ this.ids = new Array();
+ this.enables = new Array();
+ this.history = new Array();
+}
+
+GrasStatsRegistry.prototype.appendPoint = function(point)
+{
+ this.history.push(point);
+ var self = this;
+ if (this.history.length == 1)
+ {
+ $('block', this.history[0]).each(function()
+ {
+ self.ids.push($(this).attr('id'));
+ });
+ }
+};
+
+GrasStatsRegistry.prototype.getBlockIds = function()
+{
+ var ids = new Array();
+ $('block', this.history[0]).each(function()
+ {
+ ids.push($(this).attr('id'));
+ });
+ return ids;
+};
diff --git a/python/gras/stats/utils.js b/python/gras/stats/utils.js
new file mode 100644
index 0000000..952e76b
--- /dev/null
+++ b/python/gras/stats/utils.js
@@ -0,0 +1,35 @@
+/***********************************************************************
+ * Utility functions for stats
+ **********************************************************************/
+var gras_extract_total_items = function(point, id)
+{
+ var block_data = $('block[id="' + id + '"]', point);
+ var total_items = 0;
+ $('items_consumed,items_produced', block_data).each(function()
+ {
+ total_items += parseInt($(this).text());
+ });
+ return total_items;
+}
+
+var gras_extract_throughput_delta = function(p0, p1, id)
+{
+ var d0 = $('block[id="' + id + '"]', p0);
+ var d1 = $('block[id="' + id + '"]', p1);
+ var t0 = parseInt($('stats_time', d0).text());
+ var t1 = parseInt($('stats_time', d1).text());
+ var tps = parseInt($('tps', d0).text());
+ var items0 = gras_extract_total_items(p0, id);
+ var items1 = gras_extract_total_items(p1, id);
+ return ((items1-items0)*tps)/(t1-t0);
+}
+
+var gras_extract_throughput = function(point, id)
+{
+ var block_data = $('block[id="' + id + '"]', point);
+ var start_time = parseInt($('start_time', block_data).text());
+ var stats_time = parseInt($('stats_time', block_data).text());
+ var tps = parseInt($('tps', block_data).text());
+ var total_items = gras_extract_total_items(point, id);
+ return (total_items*tps)/(stats_time-start_time);
+}