Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(90)

Side by Side Diff: tools/deep_memory_profiler/graph.py

Issue 567173002: graph.py in dmprof needs to support policies without l2 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2013 The Chromium Authors. All rights reserved. 3 # Copyright 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 import json 7 import json
8 import sys 8 import sys
9 from string import Template 9 from string import Template
10 10
11 11
12 _HTML_TEMPLATE = """<!DOCTYPE html> 12 _HTML_TEMPLATE = """<!DOCTYPE html>
13 <script src="https://www.google.com/jsapi"></script> 13 <script src="https://www.google.com/jsapi"></script>
14 <script> 14 <script>
15 var all_data = $ALL_DATA; 15 var all_data = $ALL_DATA;
16 google.load('visualization', '1', {packages:['corechart', 'table']}); 16 google.load('visualization', '1', {packages:['corechart', 'table']});
17 google.setOnLoadCallback(drawVisualization); 17 google.setOnLoadCallback(drawVisualization);
18 function drawVisualization() { 18 function drawVisualization() {
19 // Apply policy 'l2' by default. 19 // Apply policy 'l2' by default.
20 var default_policy = 'l2'; 20 var default_policy = '$DEF_POLICY';
21 document.getElementById(default_policy).style.fontWeight = 'bold'; 21 document.getElementById(default_policy).style.fontWeight = 'bold';
22 turnOn(default_policy); 22 turnOn(default_policy);
23 } 23 }
24 24
25 function turnOn(policy) { 25 function turnOn(policy) {
26 var data = google.visualization.arrayToDataTable(all_data[policy]); 26 var data = google.visualization.arrayToDataTable(all_data[policy]);
27 var charOptions = { 27 var charOptions = {
28 title: 'DMP Graph (Policy: ' + policy + ')', 28 title: 'DMP Graph (Policy: ' + policy + ')',
29 hAxis: {title: 'Timestamp', titleTextStyle: {color: 'red'}}, 29 hAxis: {title: 'Timestamp', titleTextStyle: {color: 'red'}},
30 isStacked : true 30 isStacked : true
(...skipping 28 matching lines...) Expand all
59 } 59 }
60 </style> 60 </style>
61 Click to change an applied policy. 61 Click to change an applied policy.
62 <ul id="policies">$POLICIES</ul> 62 <ul id="policies">$POLICIES</ul>
63 <div id="chart_div" style="width: 1024px; height: 640px;"></div> 63 <div id="chart_div" style="width: 1024px; height: 640px;"></div>
64 <div id="table_div" style="width: 1024px; height: 640px;"></div> 64 <div id="table_div" style="width: 1024px; height: 640px;"></div>
65 """ 65 """
66 66
67 def _GenerateGraph(json_data): 67 def _GenerateGraph(json_data):
68 policies = list(json_data['policies']) 68 policies = list(json_data['policies'])
69
70 default_policy = "l2"
71 if default_policy not in policies:
72 default_policy = policies[0]
73
69 policies = "".join(map(lambda x: '<li id="'+x+'">'+x+'</li>', policies)) 74 policies = "".join(map(lambda x: '<li id="'+x+'">'+x+'</li>', policies))
70 75
71 all_data = {} 76 all_data = {}
72 for policy in json_data['policies']: 77 for policy in json_data['policies']:
73 legends = list(json_data['policies'][policy]['legends']) 78 legends = list(json_data['policies'][policy]['legends'])
74 legends = ['second'] + legends[legends.index('FROM_HERE_FOR_TOTAL') + 1: 79 legends = ['second'] + legends[legends.index('FROM_HERE_FOR_TOTAL') + 1:
75 legends.index('UNTIL_HERE_FOR_TOTAL')] 80 legends.index('UNTIL_HERE_FOR_TOTAL')]
76 data = [] 81 data = []
77 for snapshot in json_data['policies'][policy]['snapshots']: 82 for snapshot in json_data['policies'][policy]['snapshots']:
78 data.append([0] * len(legends)) 83 data.append([0] * len(legends))
79 for k, v in snapshot.iteritems(): 84 for k, v in snapshot.iteritems():
80 if k in legends: 85 if k in legends:
81 data[-1][legends.index(k)] = v 86 data[-1][legends.index(k)] = v
82 all_data[policy] = [legends] + data 87 all_data[policy] = [legends] + data
83 88
84 print Template(_HTML_TEMPLATE).safe_substitute( 89 print Template(_HTML_TEMPLATE).safe_substitute(
85 {'POLICIES': policies, 90 {'POLICIES': policies,
91 'DEF_POLICY': default_policy,
86 'ALL_DATA': json.dumps(all_data)}) 92 'ALL_DATA': json.dumps(all_data)})
87 93
88 94
89 def main(argv): 95 def main(argv):
90 _GenerateGraph(json.load(file(argv[1], 'r'))) 96 _GenerateGraph(json.load(file(argv[1], 'r')))
91 97
92 98
93 if __name__ == '__main__': 99 if __name__ == '__main__':
94 sys.exit(main(sys.argv)) 100 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698