diff options
Diffstat (limited to 'python')
-rw-r--r-- | python/gras/CMakeLists.txt | 21 | ||||
-rw-r--r-- | python/gras/stats/CMakeLists.txt | 22 | ||||
-rw-r--r-- | python/gras/stats/main.css | 2 | ||||
-rw-r--r-- | python/gras/stats/main.html | 6 | ||||
-rw-r--r-- | python/gras/stats/main.js | 71 | ||||
-rw-r--r-- | python/gras/stats/registry.js | 32 | ||||
-rw-r--r-- | python/gras/stats/utils.js | 35 |
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') + ' '); }); } -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); +} |