mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
	
	
		
			85 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
		
		
			
		
	
	
			85 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
|  | #!/usr/bin/env bash
 | ||
|  | 
 | ||
|  | COMMIT_HASH=$(git log -n 1 | grep -Po "(?<=commit )[0-9a-z]{40}") | ||
|  | COMMIT_HASH=${COMMIT_HASH::7} | ||
|  | BENCH_FILE="tmp/bench_${COMMIT_HASH}.txt" | ||
|  | BENCH_GRAPH="tmp/bench_${COMMIT_HASH}.html" | ||
|  | 
 | ||
|  | # Run benchmark | ||
|  | go test -benchmem -run=^$ -bench . github.com/grafana/grafana/pkg/services/accesscontrol/database | tee "${BENCH_FILE}" | ||
|  | 
 | ||
|  | CHART_DATA_USERS=$(grep -oP "^BenchmarkRolesUsers([^[:blank:]]+)[[:blank:]]+[0-9]+[[:blank:]]+[0-9]+" "${BENCH_FILE}" | | ||
|  |   sed -E 's/Benchmark([^[:blank:]]+)[[:blank:]]+[0-9]+[[:blank:]]+([0-9]+)/\1 \2/' | | ||
|  |   sed -E 's/^[[:alpha:]]+([0-9]+)_([0-9]+)-[0-9]+[[:blank:]]+(.*)/\2 \3/' | | ||
|  |   sed -E 's/([^[:blank:]]+)[[:blank:]]+([^[:blank:]]+)/\[\1, \2],\n/' | ||
|  | ) | ||
|  | 
 | ||
|  | CHART_DATA_ROLES=$(grep -oP "^BenchmarkRolesPerUser([^[:blank:]]+)[[:blank:]]+[0-9]+[[:blank:]]+[0-9]+" "${BENCH_FILE}" | | ||
|  |   sed -E 's/Benchmark([^[:blank:]]+)[[:blank:]]+[0-9]+[[:blank:]]+([0-9]+)/\1 \2/' | | ||
|  |   sed -E 's/^[[:alpha:]]+([0-9]+)_([0-9]+)-[0-9]+[[:blank:]]+(.*)/\1 \3/' | | ||
|  |   sed -E 's/([^[:blank:]]+)[[:blank:]]+([^[:blank:]]+)/\[\1, \2],\n/' | ||
|  | ) | ||
|  | 
 | ||
|  | HTML_CHART="<html>
 | ||
|  |   <head> | ||
|  |     <script type='text/javascript' src='https://www.gstatic.com/charts/loader.js'></script> | ||
|  |     <script type='text/javascript'> | ||
|  |       google.charts.load('current', {'packages':['corechart']}); | ||
|  |       google.charts.setOnLoadCallback(drawChart); | ||
|  | 
 | ||
|  |       function drawChart() { | ||
|  |         var dataUsers = google.visualization.arrayToDataTable([ | ||
|  |           ['case', 'time'], | ||
|  |           ${CHART_DATA_USERS} | ||
|  |         ]); | ||
|  | 
 | ||
|  |         var dataPolicies = google.visualization.arrayToDataTable([ | ||
|  |           ['case', 'time'], | ||
|  |           ${CHART_DATA_ROLES} | ||
|  |         ]); | ||
|  | 
 | ||
|  |         var options = { | ||
|  |           title: 'Roles Performance (commit ${COMMIT_HASH})', | ||
|  |           legend: 'none', | ||
|  |           vAxis: { | ||
|  |             title: 'Execution time (ns)', | ||
|  |             minValue: 0, | ||
|  |           }, | ||
|  |           hAxis: { | ||
|  |             title: 'Number of users', | ||
|  |             minValue: 0, | ||
|  |           }, | ||
|  |           trendlines: { | ||
|  |             0: { | ||
|  |               type: 'polynomial', | ||
|  |               degree: 3, | ||
|  |               color: 'purple', | ||
|  |               lineWidth: 10, | ||
|  |               opacity: 0.2, | ||
|  |             }, | ||
|  |           } | ||
|  |         }; | ||
|  | 
 | ||
|  |         var chartUsers = new google.visualization.ScatterChart(document.getElementById('chart_users')); | ||
|  |         var chartPolicies = new google.visualization.ScatterChart(document.getElementById('chart_policies')); | ||
|  | 
 | ||
|  |         chartUsers.draw(dataUsers, options); | ||
|  | 
 | ||
|  |         var chartPoliciesOptions = options; | ||
|  |         chartPoliciesOptions.hAxis.title = 'Number of policies per user'; | ||
|  |         chartPoliciesOptions.trendlines[0].color = 'red'; | ||
|  |         chartPolicies.draw(dataPolicies, options); | ||
|  |       } | ||
|  |     </script> | ||
|  |   </head> | ||
|  |   <body> | ||
|  |     <div style='display: flex'> | ||
|  |       <div id='chart_users' style='width: 900px; height: 500px'></div> | ||
|  |       <div id='chart_policies' style='width: 900px; height: 500px'></div> | ||
|  |     </div> | ||
|  |   </body> | ||
|  | </html> | ||
|  | "
 | ||
|  | 
 | ||
|  | echo "${HTML_CHART}" | tee "${BENCH_GRAPH}" |