update storage template file

Change-Id: I159b4f996eee39c2e403ec13e182d22848fb0b36
This commit is contained in:
Xin 2016-03-11 15:59:31 -08:00
parent 73511dbf51
commit e41a056635
17 changed files with 212 additions and 2923 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1,4 +1,4 @@
<!--Copyright 2015 Cisco Systems, Inc. All rights reserved.--><!--Licensed under the Apache License, Version 2.0 (the "License"); you may--><!--not use this file except in compliance with the License. You may obtain--><!--a copy of the License at--><!--http://www.apache.org/licenses/LICENSE-2.0--><!--Unless required by applicable law or agreed to in writing, software--><!--distributed under the License is distributed on an "AS IS" BASIS, WITHOUT--><!--WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the--><!--License for the specific language governing permissions and limitations--><!--under the License.--><!doctype html> <html> <head> <meta charset="utf-8"> <title>KloudBuster</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width"> <!-- Place favicon.ico and apple-touch-icon.png in the root directory --> <link rel="stylesheet" href="styles/vendor.17ab9586.css"> <link rel="stylesheet" href="styles/main.29bdece9.css"> </head> <body ng-app="kbWebApp"> <!--<img class="background" src="images/back.8e3b7090.jpg">--> <!--[if lte IE 8]>
<!--Copyright 2015 Cisco Systems, Inc. All rights reserved.--><!--Licensed under the Apache License, Version 2.0 (the "License"); you may--><!--not use this file except in compliance with the License. You may obtain--><!--a copy of the License at--><!--http://www.apache.org/licenses/LICENSE-2.0--><!--Unless required by applicable law or agreed to in writing, software--><!--distributed under the License is distributed on an "AS IS" BASIS, WITHOUT--><!--WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the--><!--License for the specific language governing permissions and limitations--><!--under the License.--><!doctype html> <html> <head> <meta charset="utf-8"> <title>KloudBuster</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width"> <!-- Place favicon.ico and apple-touch-icon.png in the root directory --> <link rel="stylesheet" href="styles/vendor.17ab9586.css"> <link rel="stylesheet" href="styles/main.553a3486.css"> </head> <body ng-app="kbWebApp"> <!--<img class="background" src="images/back.jpg">--> <!--[if lte IE 8]>
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please upgrade your browser to improve your
experience.</p>
<![endif]--> <!-- Add your site or application content here --> <div class="header"> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> <!--<img class="background" src="images/back.8e3b7090.jpg">--> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#js-navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" ng-href="#/" style="font-family: Arial"> <span style="color:#DF314D">K</span>loudBuster <!--<img src="images/logo.d2085010.jpg" alt="LOGO" height="50"/>--> </a> </div> <div class="collapse navbar-collapse" id="js-navbar-collapse"> <ul class="nav navbar-nav"> <li class="dropdown" id="scaletestnav"> <a href="" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"> <span id="scaletestname">Scale/Performance</span> <span class="caret">&nbsp;&nbsp;</span> </a> <ul class="dropdown-menu" role="menu"> <li class="" id="interactivenav"><a ng-href="#/InteractiveMode">Interactive Mode</a></li> <li class="divider"></li> <li class="" id="monitoringnav"><a ng-href="#/MonitoringMode">Monitoring Mode</a></li> </ul> </li> <li class="" id="confignav"><a ng-href="#/Config">Configuration</a></li> <li class="" id="lognav"><a ng-href="#/Log">Log</a></li> <li class="" id="aboutnav"><a ng-href="#/About">About</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li id="loginnav"><a id="loginname" ng-href="#/Login">Log Out</a></li> </ul> </div> </div> </div> </div> <div class="container"> <div ng-view=""></div> </div> <!--<div class="footer">--> <!--<div class="container" style="text-align:center;">--> <!--&lt;!&ndash;<p><span class="glyphicon glyphicon-heart"></span>KloudBuster&ndash;&gt;--> <!--&lt;!&ndash;</p>&ndash;&gt;--> <!--</div>--> <!--</div>--> <!-- Google Analytics: change UA-XXXXX-X to be your site's ID --> <!--<script>--> <!--!function(A,n,g,u,l,a,r){A.GoogleAnalyticsObject=l,A[l]=A[l]||function(){--> <!--(A[l].q=A[l].q||[]).push(arguments)},A[l].l=+new Date,a=n.createElement(g),--> <!--r=n.getElementsByTagName(g)[0],a.src=u,r.parentNode.insertBefore(a,r)--> <!--}(window,document,'script','https://www.google-analytics.com/analytics.js','ga');--> <!--ga('create', 'UA-XXXXX-X');--> <!--ga('send', 'pageview');--> <!--</script>--> <script src="scripts/vendor.3054de46.js"></script> <script src="scripts/scripts.fa59335f.js"></script> </body> </html>
<![endif]--> <!-- Add your site or application content here --> <div class="header"> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> <!--<img class="background" src="images/back.jpg">--> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#js-navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" ng-href="#/" style="font-family: Arial"> <span style="color:#DF314D">K</span>loudBuster <!--<img src="images/logo.jpg" alt="LOGO" height="50"/>--> </a> </div> <div class="collapse navbar-collapse" id="js-navbar-collapse"> <ul class="nav navbar-nav"> <li class="dropdown forHttp" id="scaletestnav"> <a href="" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"> <span id="scaletestname">Scale/Performance</span> <span class="caret">&nbsp;&nbsp;</span> </a> <ul class="dropdown-menu" role="menu"> <li class="" id="interactivenav"><a ng-href="#/InteractiveMode">Interactive Mode</a></li> <li class="divider"></li> <li class="" id="monitoringnav"><a ng-href="#/MonitoringMode">Monitoring Mode</a></li> </ul> </li> <li class="forStorage" id="storagemodenav"><a ng-href="#/StorageMode">Storage Mode</a></li> <li class="forStorage" id="storageconfignav"><a ng-href="#/StorageConfig">Configuration</a></li> <li class="forHttp" id="confignav"><a ng-href="#/Config">Configuration</a></li> <li class="" id="lognav"><a ng-href="#/Log">Log</a></li> <li class="" id="aboutnav"><a ng-href="#/About">About</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li id="loginnav"><a id="loginname" ng-href="#/Login">Log Out</a></li> </ul> </div> </div> </div> </div> <div class="container"> <div ng-view=""></div> </div> <!--<div class="footer">--> <!--<div class="container" style="text-align:center;">--> <!--&lt;!&ndash;<p><span class="glyphicon glyphicon-heart"></span>KloudBuster&ndash;&gt;--> <!--&lt;!&ndash;</p>&ndash;&gt;--> <!--</div>--> <!--</div>--> <!-- Google Analytics: change UA-XXXXX-X to be your site's ID --> <!--<script>--> <!--!function(A,n,g,u,l,a,r){A.GoogleAnalyticsObject=l,A[l]=A[l]||function(){--> <!--(A[l].q=A[l].q||[]).push(arguments)},A[l].l=+new Date,a=n.createElement(g),--> <!--r=n.getElementsByTagName(g)[0],a.src=u,r.parentNode.insertBefore(a,r)--> <!--}(window,document,'script','https://www.google-analytics.com/analytics.js','ga');--> <!--ga('create', 'UA-XXXXX-X');--> <!--ga('send', 'pageview');--> <!--</script>--> <script src="scripts/vendor.3054de46.js"></script> <script src="scripts/scripts.c6db9ca3.js"></script> </body> </html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

File diff suppressed because one or more lines are too long

View File

@ -174,7 +174,6 @@
<span id="littleglyph" class="bar glyphicon glyphicon-triangle-right" style="color:white"></span>
</a>
<div class="content" id="content">
<div class="row">
<div class="my-chart" style="">
@ -227,7 +226,6 @@
<button type="submit" class="btn btn-default btn-xs" ng-click="saveResult()">Save Result</button>
</div>
<br/>
<table ng-table="tableParams" class="table table-responsive table-condensed table-bordered table-striped">
<tr ng-repeat="row in tableParams.data" style="text-align:center;">
<!--<td title="cols[0].title" ng-if="cols[0].show" style="margin:0 auto;padding:0;">-->

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -668,12 +668,10 @@ def create_html(hfp, template, task_re):
cur_time = time.strftime('%Y-%m-%d %A %X %Z', time.localtime(time.time()))
for line in template:
line = line.replace('[[time]]', cur_time)
if CONF.label and CONF.storage:
line = line.replace('[[label]]', ' - ' + CONF.label)
elif CONF.label:
if CONF.label:
line = line.replace('[[label]]', CONF.label)
else:
line = line.replace('[[label]]', '')
line = line.replace('[[label]]', 'Report')
line = line.replace('[[result]]', task_re)
hfp.write(line)
if not CONF.headless:

View File

@ -34,15 +34,14 @@
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">KloudBuster Report</a>
</div>
<a class="navbar-brand" ng-href="#/" style="font-family: Arial">
<span style="color:#DF314D">K</span>loudBuster
</a>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li ng-repeat="mode in modes" ng-class="{active: current_index==$index}"
ng-click="handleEvent($event, $index)">
<a href="#"><span class="glyphicon" aria-hidden="true"></span>&nbsp;{{mode.title}}</a>
<li class="active">
<a><span class="glyphicon" aria-hidden="true" ></span>[[label]]</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
@ -53,33 +52,58 @@
</nav>
<div class="container">
<h3>{{current_mode["title"]}}[[label]] </h3>
<ul class="nav nav-tabs">
<li ng-repeat="title in titleList" ng-class="{active: current_index==$index}" ng-click="handleEvent($event, $index,'')">
<a data-toggle="tab" aria-expanded="true">
{{title["description"]}} <span class="{{modes[title['mode']]['span']}}"></span>
</a>
</li>
</ul>
<ul class="nav nav-tabs" style="margin-top: 5px" ng-style="{height:current_mode_name =='rw' || current_mode_name =='randrw'?'':0, width:current_mode_name =='rw' || current_mode_name =='randrw'?'30%':0}">
<li ng-show="current_mode_name =='rw' || current_mode_name =='randrw'" ng-class="{active:current_mode['name']=='read' || current_mode['name']=='randread'}">
<a ng-click="handleEvent($event, current_index,'read')">Read</a>
</li>
<li ng-show="current_mode_name =='rw' || current_mode_name =='randrw'" ng-class="{active:current_mode['name']=='write' || current_mode['name']=='randwrite'}">
<a ng-click="handleEvent($event, current_index,'write')">Write</a>
</li>
</ul>
<h4 style="text-align: center">{{modes[current_mode_name]["title"]}} {{current_title}} ({{current_mode_description}})</h4>
<div class="my-chart" style="height: 550px;margin-bottom: 5%">
<h6 style="margin-bottom:0"><span>{{current_mode["y_axis"]}}</span><span style="float:right">Latency(ms)</span></h6>
<linechart data="data" options="options"></linechart>
</div>
<table ng-table="tableParams" class="table table-responsive table-condensed table-bordered table-striped">
<tr ng-repeat="row in tableParams.data" style="text-align:center;">
<!--<td title="cols[0].title" ng-if="cols[0].show" style="margin:0 auto;padding:0;">-->
<!--<button class="btn btn-default btn-xs {{row.seq}}" ng-click=""-->
<!--style="height: 22px;width: 24px;"></button>-->
<!--</td>-->
<!--<td title="cols[1].title" data-sortable="cols[1].field">{{row.mode}}</td>-->
<td title="cols[2].title" data-sortable="cols[2].field">{{row.total_client_vms}}</td>
<td title="cols[3].title" data-sortable="cols[3].field">{{row.block_size}}b</td>
<td title="cols[4].title" data-sortable="cols[4].field">{{row.iodepth}}</td>
<td title="cols[5].title" data-sortable="cols[5].field" ng-if="current_index == 0 || current_index ==1">{{row.rate_iops}}</td>
<td title="cols[6].title" data-sortable="cols[6].field" ng-if="current_index == 0 || current_index ==2">{{row.read_iops}}</td>
<td title="cols[7].title" data-sortable="cols[7].field" ng-if="current_index == 1 || current_index ==3">{{row.write_iops}}</td>
<td title="cols[8].title" data-sortable="cols[8].field" ng-if="current_index == 2 || current_index ==3">{{row.rate}} KB/s</td>
<td title="cols[9].title" data-sortable="cols[9].field" ng-if="current_index == 0 || current_index ==2">{{row.read_bw}} KB/s</td>
<td title="cols[10].title" data-sortable="cols[10].field" ng-if="current_index == 1 || current_index ==3">{{row.write_bw}} KB/s</td>
<td title="cols[5].title" data-sortable="cols[5].field" ng-if="current_mode.group[0] == 'rand'">
{{row.rate_iops}}
</td>
<td title="cols[6].title" data-sortable="cols[6].field" ng-if="current_mode.group[1] == 'read'">
{{row.read_iops}}
</td>
<td title="cols[7].title" data-sortable="cols[7].field" ng-if="current_mode.group[1] == 'write'">
{{row.write_iops}}
</td>
<td title="cols[8].title" data-sortable="cols[8].field" ng-if="current_mode.group[0] == 'seq'">
{{row.rate}} KB/s
</td>
<td title="cols[9].title" data-sortable="cols[9].field" ng-if="current_mode.group[1] == 'read'">
{{row.read_bw}} KB/s
</td>
<td title="cols[10].title" data-sortable="cols[10].field" ng-if="current_mode.group[1] == 'write'">
{{row.write_bw}} KB/s
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var json_data = "res.json";
var num = -1;
var colorList = ["#F44336", "#673AB7", "#03A9F4", "#4CAF50", "#FFEB3B", "#BF360C", "#795548", "#E91E63", "#3F51B5", "#00BCD4", "#CDDC39", "#FF9800", "#9E9E9E", "#9C27B0", "#009688"];
var length = colorList.length;
@ -88,51 +112,127 @@
return colorList[num];
}
var modes = [
{title: "Rand Read", icon: "", id: "randread", init: "",y_axis:"IOPs/VM",y_label:"RATE IOPs Per VM"},
{title: "Rand Write", icon: "", id: "randwrite", init: "",y_axis:"IOPs/VM",y_label:"RATE IOPs Per VM"},
{title: "Seq Read", icon: "", id: "read", init: "",y_axis: "BW/VM(KB/s)",y_label:"RATE BW Per VM"},
{title: "Seq Write", icon: "", id: "write", init: "",y_axis: "BW/VM(KB/s)",y_label:"RATE BW Per VM"}
];
var modes = {
"randread": {
name:"randread",
title: "Rand Read",
group: ["rand", "read"],
y_axis: "IOPs/VM",
y_label: "RATE IOPs Per VM"
},
"randwrite": {
name:"randwrite",
title: "Rand Write",
group: ["rand", "write"],
y_axis: "IOPs/VM",
y_label: "RATE IOPs Per VM"
},
"read": {
name:"read",
title: "Seq Read",
group: ["seq", "read"],
y_axis: "BW/VM(KB/s)",
y_label: "RATE BW Per VM"
},
"write": {
name:"write",
title: "Seq Write",
group: ["seq", "write"],
y_axis: "BW/VM(KB/s)",
y_label: "RATE BW Per VM"
},
"randrw": {
name:"randrw",
title: "Rand Read/Write",
span:"caret",
group: ["rand", "mix"],
y_axis: "IOPs/VM",
y_label: "RATE IOPs Per VM"
},
"rw": {
name:"rw",
title: "Seq Read/Write",
span:"caret",
group: ["seq", "mix"],
y_axis: "BW/VM(KB/s)",
y_label: "RATE BW Per VM"
}
};
var content;
angular.module("app", ["n3-line-chart", "ngTable"]).controller("MainCtrl", function ($scope, ngTableParams) {
$scope.current_index = 0;
$scope.modes = modes;
$scope.current_mode = $scope.modes[0];
content = [[result]];
$scope.titleList = [];
get_title($scope,content);
draw_chart($scope, ngTableParams, content);
$scope.handleEvent = function(event, index) {
$scope.handleEvent = function(event, index, formix) {
$scope.current_index = index;
$scope.current_mode = $scope.modes[index];
$scope.current_mode_name = $scope.titleList[index]["mode"];
$scope.current_mode_description = $scope.titleList[index]["description"];
getCurrentMode($scope, $scope.current_mode_name, formix, content[0][index]["rwmixread"]);
draw_chart($scope, ngTableParams, content);
};
});
function get_title($scope, content){
for( var item in content[0])
{
$scope.titleList.push({"mode": content[0][item]["mode"], "description": content[0][item]["description"]});
}
$scope.current_mode_name = $scope.titleList[0]["mode"];
$scope.current_mode_description = $scope.titleList[0]["description"];
$scope.current_mode = $scope.modes[$scope.current_mode_name];
getCurrentMode($scope, $scope.current_mode_name, "",content[0][0]["rwmixread"]);
}
function getCurrentMode($scope, modeName, formix, readpct){
if (modeName == "rw"){
if(formix == "") formix="read";
$scope.current_mode = $scope.modes[formix];
if (formix=="read") $scope.current_title = "- " +readpct +"% Read";
else $scope.current_title = "- " +(100-readpct) +"% Write";
}
else if (modeName == "randrw"){
if(formix == "") formix="read";
$scope.current_mode = $scope.modes["rand"+formix];
if (formix=="read") $scope.current_title = "- " +readpct +"% Read";
else $scope.current_title = "- " +(100-readpct) +"% Write";
}
else{
$scope.current_mode = $scope.modes[$scope.current_mode_name];
$scope.current_title = "";
}
}
function get_min_hist(results) {
var min = Number.POSITIVE_INFINITY;
results.forEach(function (rr) {
rr.forEach(function (d) {
if ('write_hist' in d) {
if ("write_hist" in d) {
min = Math.min(min, d.write_hist[0][1]);
}
if ('read_hist' in d) {
if ("read_hist" in d) {
min = Math.min(min, d.read_hist[0][1]);
}
});
});
return min;
}
function draw_chart($scope, ngTableParams, results) {
$scope.results = results;
var countRep = $scope.results.length;
var countRep2 = $scope.results[0].length;
var mode = $scope.current_mode["id"];
//table config
var mode = $scope.current_mode["name"];
$scope.tabledata = [];
$scope.cols = [
{
@ -151,7 +251,7 @@
field: "iodepth", title: "IO Depth", sortable: "iodepth", show: true
},
{
field: "rate_iops", title: "Rate IOPS", sortable: "rate_iops", show: true
field: "rate_iops", title: "Requested IOPS", sortable: "rate_iops", show: true
},
{
field: "read_iops", title: "Read IOPS", sortable: "read_iops", show: true
@ -160,7 +260,7 @@
field: "write_iops", title: "Write IOPS", sortable: "write_iops", show: true
},
{
field: "rate", title: "Rate BW", sortable: "rate", show: true
field: "rate", title: "Requested BW", sortable: "rate", show: true
},
{
field: "read_bw", title: "Read BW", sortable: "read_bw", show: true
@ -190,16 +290,21 @@
$scope.tableParams.reload()
};
//chart config $scope.current_mode
var max;
$scope.xaxisList = [];
$scope.data = [];
for (var i = 0; i < countRep; i++) {
for (var k = 0; k < countRep2; k++) {
$scope.perrow = $scope.results[i][k];
if ($scope.perrow["mode"] == mode) {
if ($scope.perrow["mode"] == $scope.current_mode_name && $scope.perrow["description"] == $scope.current_mode_description) {
if($scope.perrow.total_client_vms == 1 && countRep!=1) $scope.xaxis = 0;
else $scope.xaxis = $scope.perrow.total_client_vms;
$scope.xaxisList.push($scope.xaxis);
if (mode == "randread") {
$scope.data.push({
x: $scope.perrow.total_client_vms,
x: $scope.xaxis,
"IOPS": $scope.perrow.read_iops / $scope.perrow.total_client_vms,
"latency1": $scope.perrow.read_hist[2][1] / 1000,
"latency2": $scope.perrow.read_hist[3][1] / 1000,
@ -210,7 +315,7 @@
}
if (mode == "randwrite") {
$scope.data.push({
x: $scope.perrow.total_client_vms,
x: $scope.xaxis,
"IOPS": $scope.perrow.write_iops / $scope.perrow.total_client_vms,
"latency1": $scope.perrow.write_hist[2][1] / 1000,
"latency2": $scope.perrow.write_hist[3][1] / 1000,
@ -222,7 +327,7 @@
}
if (mode == "read") {
$scope.data.push({
x: $scope.perrow.total_client_vms,
x: $scope.xaxis,
"IOPS": $scope.perrow.read_bw / $scope.perrow.total_client_vms,
"latency1": $scope.perrow.read_hist[2][1] / 1000,
"latency2": $scope.perrow.read_hist[3][1] / 1000,
@ -234,7 +339,7 @@
}
if (mode == "write") {
$scope.data.push({
x: $scope.perrow.total_client_vms,
x: $scope.xaxis,
"IOPS": $scope.perrow.write_bw / $scope.perrow.total_client_vms,
"latency1": $scope.perrow.write_hist[2][1] / 1000,
"latency2": $scope.perrow.write_hist[3][1] / 1000,
@ -242,10 +347,9 @@
"requested_rate": $scope.perrow.rate / $scope.perrow.total_client_vms
});
max = $scope.perrow.rate / $scope.perrow.total_client_vms;
}
var pickColor = get_color();
chName = "mode-" + $scope.perrow.mode + "_VM-" + $scope.perrow.total_client_vms;
var chName = "mode-" + $scope.perrow.mode + "_VM-" + $scope.perrow.total_client_vms;
$scope.pushTableData(chName, $scope.perrow, pickColor)
}
@ -253,62 +357,68 @@
}
$scope.options = {
series: [
{y: 'IOPS', color: '#F44336', type: 'column', striped: true, label: $scope.current_mode["y_label"]},
{y: "IOPS", color: "#F44336", type: "column", striped: true, label: $scope.current_mode["y_label"]},
{
y: 'requested_rate',
color: '#696969',
y: "requested_rate",
color: "#696969",
drawDots: false,
thickness: '1px',
label: 'Requested Rate',
thickness: "1px",
label: "Requested Rate",
lineMode: "dashed"
},
{
y: 'latency1',
axis: 'y2',
color: '#673AB7',
y: "latency1",
axis: "y2",
color: "#673AB7",
drawDots: true,
dotSize: 4,
thickness: '3px',
label: 'Latency(ms)--90%'
thickness: "3px",
label: "Latency(ms)--90%"
},
{
y: 'latency2',
axis: 'y2',
color: '#03A9F4',
y: "latency2",
axis: "y2",
color: "#03A9F4",
drawDots: true,
dotSize: 4,
thickness: '3px',
label: 'Latency(ms)--99%'
thickness: "3px",
label: "Latency(ms)--99%"
},
{
y: 'latency3',
axis: 'y2',
color: '#E91E63',
y: "latency3",
axis: "y2",
color: "#E91E63",
drawDots: true,
dotSize: 4,
thickness: '3px',
label: 'Latency(ms)--99.9%'
thickness: "3px",
label: "Latency(ms)--99.9%"
}
],
axes: {
x: {key: 'x', type: 'linear', ticksFormat: 'd'},
y: {type: 'linear', ticksFormat: 'd', innerTicks: true, max: max * 1.0005, min: 0},
x: {key: "x", type: "linear",ticksFormatter: function(x) {
if($.inArray(x, $scope.xaxisList)!=-1) {
if (x == 0) return "1";
else return x;
}
else return "";
}},
y: {type: "linear", ticksFormat: "d", innerTicks: true, max: max * 1.0005, min: 0},
y2: {
type: 'log',
ticksFormat: 'd',
type: "log",
ticksFormat: "d",
innerTicks: false,
grid: true,
min: get_min_hist($scope.results) / 1000
}
},
tooltip: {
mode: 'scrubber', formatter: function (x, y, series) {
mode: "scrubber", formatter: function (x, y, series) {
return series.label + ":" + y;
}
},
tension: 0.8,
lineMode: "cardinal",
columnsHGap: 35
columnsHGap: 45
};
}
</script>