summaryrefslogtreecommitdiff
path: root/python/gras
diff options
context:
space:
mode:
Diffstat (limited to 'python/gras')
-rw-r--r--python/gras/stats/CMakeLists.txt1
-rw-r--r--python/gras/stats/chart_factory.js23
-rw-r--r--python/gras/stats/chart_handler_breakdown.js5
-rw-r--r--python/gras/stats/chart_overall_throughput.js18
-rw-r--r--python/gras/stats/chart_overhead_compare.js5
-rw-r--r--python/gras/stats/main.html1
-rw-r--r--python/gras/stats/main.js23
-rw-r--r--python/gras/stats/registry.js36
-rw-r--r--python/gras/stats/utils.js8
9 files changed, 58 insertions, 62 deletions
diff --git a/python/gras/stats/CMakeLists.txt b/python/gras/stats/CMakeLists.txt
index fe07f55..0b91cee 100644
--- a/python/gras/stats/CMakeLists.txt
+++ b/python/gras/stats/CMakeLists.txt
@@ -14,7 +14,6 @@ INSTALL(
FILES
main.html
main.js
- registry.js
utils.js
chart_factory.js
chart_overhead_compare.js
diff --git a/python/gras/stats/chart_factory.js b/python/gras/stats/chart_factory.js
index cd096a5..4f9a789 100644
--- a/python/gras/stats/chart_factory.js
+++ b/python/gras/stats/chart_factory.js
@@ -1,13 +1,13 @@
/***********************************************************************
* One time setup
**********************************************************************/
-function gras_chart_factory_setup(registry)
+function gras_chart_factory_setup(point)
{
- if (registry.history.length != 1) return;
- var id = $('gras_stats:first', registry.history[0]).attr('id');
+ var id = $('gras_stats:first', point).attr('id');
$('#top_name').append(' - ' + id);
- $.each(registry.getBlockIds(), function(index, id)
+ $('block', point).each(function(index, block)
{
+ var id = $(block).attr('id');
var div = $('.chart_designer_blocks').get(index%2);
$(div).append('<label>' + id + '</label>');
var input = $('<input />').attr({
@@ -53,10 +53,17 @@ function gras_chart_factory_dispatcher()
tr.append(td);
//call into the factory
- var chart = new gras_chart_factory_registry[chart_type]({
- block_ids:selected_blocks,
- panel:td.get(0),
- });
+ try
+ {
+ var chart = new gras_chart_factory_registry[chart_type]({
+ block_ids:selected_blocks,
+ panel:td.get(0),
+ });
+ }
+ catch(err)
+ {
+ return;
+ }
//setup the title
var tr_title = $('<tr />');
diff --git a/python/gras/stats/chart_handler_breakdown.js b/python/gras/stats/chart_handler_breakdown.js
index a8d7b15..cd7e048 100644
--- a/python/gras/stats/chart_handler_breakdown.js
+++ b/python/gras/stats/chart_handler_breakdown.js
@@ -1,7 +1,7 @@
function GrasChartHandlerBreakdown(args)
{
//input checking
- if (args.block_ids.length != 1) gras_error_dialog(
+ if (args.block_ids.length != 1) throw gras_error_dialog(
"GrasChartHandlerBreakdown",
"Error making handler breakdown chart.\n"+
"Specify only one block for this chart."
@@ -16,9 +16,8 @@ function GrasChartHandlerBreakdown(args)
this.title = "Handler Breakdown - " + this.block_id;
}
-GrasChartHandlerBreakdown.prototype.update = function(history)
+GrasChartHandlerBreakdown.prototype.update = function(point)
{
- var point = history[history.length-1];
var percents = gras_extract_percent_times(point, this.block_id);
var data = google.visualization.arrayToDataTable([
['Task', 'Percent'],
diff --git a/python/gras/stats/chart_overall_throughput.js b/python/gras/stats/chart_overall_throughput.js
index d9c6730..55a8241 100644
--- a/python/gras/stats/chart_overall_throughput.js
+++ b/python/gras/stats/chart_overall_throughput.js
@@ -4,30 +4,34 @@ function GrasChartOverallThroughput(args)
this.ids = args.block_ids;
//input checking
- if (this.ids.length <= 1) gras_error_dialog(
+ if (this.ids.length == 0) throw gras_error_dialog(
"GrasChartOverallThroughput",
"Error making overall thoughput chart.\n"+
- "Specify at least 2 blocks for this chart."
+ "Specify at least 1 block for this chart."
);
//make new chart
this.chart = new google.visualization.LineChart(args.panel);
this.title = "Overall Throughput vs Time";
+ this.history = new Array();
}
-GrasChartOverallThroughput.prototype.update = function(history)
+GrasChartOverallThroughput.prototype.update = function(point)
{
- if (history.length < 2) return;
+ this.history.push(point);
+ if (this.history.length == 1) this.p0 = point;
+ if (this.history.length < 2) return;
+ if (this.history.length > 10) this.history.splice(0, 1);
var data_set = [['Throughput'].concat(this.ids)];
- for (var i = Math.max(history.length-10, 1); i < history.length; i++)
+ for (var i = 1; i < this.history.length; i++)
{
var row = new Array();
- row.push(i.toString());
+ row.push(gras_extract_stat_time_delta(this.p0, this.history[i]).toFixed(2).toString());
for (var j = 0; j < this.ids.length; j++)
{
- row.push(gras_extract_throughput_delta(history[i-1], history[i], this.ids[j])/1e6);
+ row.push(gras_extract_throughput_delta(this.history[i-1], this.history[i], this.ids[j])/1e6);
}
data_set.push(row);
}
diff --git a/python/gras/stats/chart_overhead_compare.js b/python/gras/stats/chart_overhead_compare.js
index 278ae7a..37a1350 100644
--- a/python/gras/stats/chart_overhead_compare.js
+++ b/python/gras/stats/chart_overhead_compare.js
@@ -4,7 +4,7 @@ function GrasChartOverheadCompare(args)
this.ids = args.block_ids;
//input checking
- if (this.ids.length <= 1) gras_error_dialog(
+ if (this.ids.length <= 1) throw gras_error_dialog(
"GrasChartOverheadCompare",
"Error making overhead compare chart.\n"+
"Specify at least 2 blocks for this chart."
@@ -16,9 +16,8 @@ function GrasChartOverheadCompare(args)
this.title = "Overhead Comparison";
}
-GrasChartOverheadCompare.prototype.update = function(history)
+GrasChartOverheadCompare.prototype.update = function(point)
{
- var point = history[history.length-1];
var data_set = new Array();
data_set.push(['Task', 'Percent']);
$.each(this.ids, function(index, id)
diff --git a/python/gras/stats/main.html b/python/gras/stats/main.html
index 1f91f90..21034d1 100644
--- a/python/gras/stats/main.html
+++ b/python/gras/stats/main.html
@@ -9,7 +9,6 @@
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.2/jquery-ui.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="/chart_factory.js"></script>
<script type="text/javascript" src="/chart_overhead_compare.js"></script>
diff --git a/python/gras/stats/main.js b/python/gras/stats/main.js
index 99ed152..e0f32e6 100644
--- a/python/gras/stats/main.js
+++ b/python/gras/stats/main.js
@@ -1,4 +1,18 @@
/***********************************************************************
+ * Stats registry data structure
+ **********************************************************************/
+var GrasStatsRegistry = function()
+{
+ this.init = false;
+ this.ids = new Array();
+ this.enables = new Array();
+ this.block_enables = new Array();
+ this.overall_rate = 2.0;
+ this.overall_active = true;
+ this.block_charts = new Array();
+}
+
+/***********************************************************************
* Query stats
**********************************************************************/
var gras_query_stats = function(registry)
@@ -14,11 +28,14 @@ var gras_query_stats = function(registry)
{
if ($(xml, "gras_stats") !== undefined)
{
- registry.appendPoint(xml);
- gras_chart_factory_setup(registry);
+ if (!registry.init)
+ {
+ gras_chart_factory_setup(xml);
+ registry.init = true;
+ }
$.each(gras_chart_active_registry, function(index, chart)
{
- chart.update(registry.history);
+ chart.update(xml);
});
}
diff --git a/python/gras/stats/registry.js b/python/gras/stats/registry.js
deleted file mode 100644
index e663583..0000000
--- a/python/gras/stats/registry.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/***********************************************************************
- * Stats registry data structure
- **********************************************************************/
-var GrasStatsRegistry = function()
-{
- this.ids = new Array();
- this.enables = new Array();
- this.history = new Array();
- this.block_enables = new Array();
- this.overall_rate = 2.0;
- this.overall_active = true;
- this.block_charts = 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
index 425b7c6..f5e5ee8 100644
--- a/python/gras/stats/utils.js
+++ b/python/gras/stats/utils.js
@@ -34,6 +34,14 @@ var gras_extract_throughput = function(point, id)
return (total_items*tps)/(stats_time-start_time);
}
+var gras_extract_stat_time_delta = function(p0, p1)
+{
+ var t0 = parseInt($('now', p0).text());
+ var t1 = parseInt($('now', p1).text());
+ var tps = parseInt($('tps', p0).first().text());
+ return (t1-t0)/(tps);
+}
+
var gras_extract_percent_times = function(point, id)
{
var block_data = $('block[id="' + id + '"]', point);