Merge "Add test detail page"

This commit is contained in:
Jenkins 2015-12-08 15:20:07 +00:00 committed by Gerrit Code Review
commit d9b25cca8a
11 changed files with 1161 additions and 9 deletions

130
app/js/controllers/test.js Normal file
View File

@ -0,0 +1,130 @@
'use strict';
var controllersModule = require('./_index');
/**
* @ngInject
*/
function TestController(healthService, testService, startDate, testId) {
// ViewModel
var vm = this;
vm.testName = testId;
vm.testShortName = testService.getShortName(testId);
vm.processData = function(data) {
var dates = {};
var passEntries = [];
var failEntries = [];
var skipEntries = [];
var runTimeEntries = [];
var avgRunTimeEntries = [];
var dateString, dateTimeString;
for (dateString in data.data) {
if (data.data.hasOwnProperty(dateString)) {
var date = dateString;
var test = data.data[dateString];
// parse dates and create data series
var date = new Date(date);
var date = new Date(date.getFullYear(), date.getMonth(),
date.getDate()).getTime();
if (!dates[date]) {
if (test.status == 'success' || test.status == 'xfail') {
var count = {
passes: 1,
fails: 0,
skips: 0
};
}
else if (test.status == 'fail' || test.status == 'unxsucess') {
var count = {
passes: 0,
fails: 1,
skips: 0
};
}
else if (test.status == 'skip') {
var count = {
passes: 0,
fails: 0,
skips: 1
};
}
dates[date] = count;
}
else {
if (test.status == 'success' || test.status == 'xfail') {
dates[date].passes += 1;
}
else if (test.status == 'fail' || test.status == 'unxsucess') {
dates[date].fails += 1;
}
else if (test.status == 'skip') {
dates[date].skips += 1;
}
}
}
}
for (date in dates) {
if (dates.hasOwnProperty(date)) {
passEntries.push({
x: date,
y: dates[date].passes
});
failEntries.push({
x: date,
y: dates[date].fails
});
skipEntries.push({
x: date,
y: dates[date].skips
});
}
}
vm.statusData = [
{ key: 'Passes', values: passEntries, color: "blue" },
{ key: 'Failures', values: failEntries, color: "red" },
{ key: 'Skips', values: skipEntries, color: "violet" }
];
for (dateTimeString in data.numeric) {
if (data.numeric.hasOwnProperty(dateTimeString)) {
var date = dateTimeString;
var test = data.numeric[dateTimeString];
// parse dates and create data series
var date = new Date(date).getTime();
runTimeEntries.push({
x: date,
y: parseFloat(test.run_time.toFixed(2))
});
avgRunTimeEntries.push({
x: date,
y: parseFloat(test.avg_run_time.toFixed(2))
});
}
}
vm.timeData = [
{key: 'Run Time (sec.)', values: runTimeEntries, color: "blue"},
{key: 'Avg. Run Time (sec.)', values: avgRunTimeEntries, color: "black"}
];
};
vm.loadData = function() {
var beginDate = new Date(startDate);
var stopDate = new Date(startDate);
beginDate.setDate(startDate.getDate() - 30);
healthService.getTestRunList(vm.testName, {
start_date: beginDate,
stop_date: stopDate
}).then(function(response) {
vm.processData(response.data);
});
};
vm.loadData();
}
controllersModule.controller('TestController', TestController);

View File

@ -6,7 +6,7 @@ var _ = require('underscore');
/**
* @ngInject
*/
function TestsController(healthService) {
function TestsController(healthService, testService) {
// ViewModel
var vm = this;
@ -15,12 +15,8 @@ function TestsController(healthService) {
vm.processData = function(data) {
vm.chartData = {};
var removeIdNoise = function(testId) {
return testId.replace('setUpClass (', '').replace('tearDownClass (', '').replace(' )', '');
};
var testsByHierarchy = _.groupBy(data.tests, function(test) {
var testId = removeIdNoise(test.test_id);
var testId = testService.removeIdNoise(test.test_id);
var keyMatcher = /^(\w*\.\w*\.\w*)\./g;
var matches = keyMatcher.exec(testId);

View File

@ -0,0 +1,66 @@
'use strict';
var directivesModule = require('./_index.js');
var d3 = require('d3');
var nv = require('nvd3');
/**
* @ngInject
*/
function chartStackArea() {
var link = function(scope, el, attrs) {
scope.$on("loading-started", function() {
el.css({"display" : "none"});
});
scope.$on("loading-complete", function() {
el.css({"display" : "block"});
});
var chart = null;
var svg = d3.select(el[0]).append('svg')
.attr('width', attrs.width)
.attr('height', attrs.height);
var update = function(data) {
if (typeof data === "undefined") {
return;
}
chart = nv.models.stackedAreaChart()
.margin({right: 100})
.x(function(d) { return d.x; })
.y(function(d) { return d.y; })
.useInteractiveGuideline(true)
.rightAlignYAxis(true)
.showControls(true)
.clipEdge(true);
chart.xAxis.tickFormat(function(d) { return d3.time.format("%x")(new Date(d)); });
chart.yAxis.tickFormat(d3.format(',.2f'));
svg.datum(data).call(chart);
};
scope.$on('windowResize', function() {
if (chart !== null) {
chart.update();
}
});
scope.$watch('data', update);
};
return {
restrict: 'EA',
scope: {
'data': '=',
'width': '@',
'height': '@'
},
link: link
};
}
directivesModule.directive('chartStackArea', chartStackArea);

View File

@ -52,6 +52,20 @@ function OnConfig($stateProvider, $locationProvider, $urlRouterProvider) {
return new Date();
}
}
})
.state('test', {
url: '/test/:testId',
controller: 'TestController as testCtrl',
templateUrl: 'test.html',
title: 'Test',
resolve: /*@ngInject*/ {
'testId': function($stateParams) {
return $stateParams.testId;
},
'startDate': function() {
return new Date();
}
}
});
$urlRouterProvider.otherwise('/');

View File

@ -107,6 +107,14 @@ function HealthService($http, config) {
});
};
service.getTestRunList = function(testId, options) {
return config.get().then(function(config) {
return $http.jsonp(config.apiRoot + '/test_runs/' + testId, {
params: angular.extend(options, { callback: 'JSON_CALLBACK' })
});
});
};
return service;
}

22
app/js/services/test.js Normal file
View File

@ -0,0 +1,22 @@
'use strict';
var angular = require('angular');
var servicesModule = require('./_index.js');
function TestService() {
var service = {};
service.removeIdNoise = function(testId) {
return testId.replace('setUpClass (', '').replace('tearDownClass (', '').replace(')', '');
};
service.getShortName = function(testId) {
var denoisedTestName = service.removeIdNoise(testId);
return denoisedTestName.split('.').slice(-2).join('.');
};
return service;
}
servicesModule.service('testService', TestService);

View File

@ -61,7 +61,7 @@
</thead>
<tbody>
<tr table-ref="table" ng-repeat="test in table.dataSorted | filter:job.searchTest">
<td><a ui-sref="test({ testName: test.name })">{{ test.name|limitTo:110 }}</a></td>
<td><a ui-sref="test({ testId: test.name })">{{ test.name|limitTo:110 }}</a></td>
<td>{{ test.passes|number }}</td>
<td>{{ test.failures|number }}</td>
<td>{{ test.failuresRate|number:2 }}</td>

39
app/views/test.html Normal file
View File

@ -0,0 +1,39 @@
<header class="bs-header">
<div class="container">
<h1 class="page-header">{{ testCtrl.testShortName }}</h1>
<crumb-menu>
<li>Test: {{testCtrl.testShortName }}</li>
</crumb-menu>
</div>
</header>
<div class="container">
<div class="row">
<div class="col-lg-12">
<loading-indicator></loading-indicator>
</div>
</div>
<div class=row>
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Run Time</h3>
</div>
<div class="panel-body">
<chart-line data="testCtrl.timeData" width="100%" height="450" force-y="[0]" ></chart-line>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Success and Failures</h3>
</div>
<div class="panel-body">
<chart-stack-area data="testCtrl.statusData" width="100%" height="450"></chart-stack-area>
</div>
</div>
</div>
</div>

View File

@ -52,7 +52,7 @@
<tbody>
<tr table-ref="table" ng-repeat="test in table.dataSorted | filter:tests.searchTest">
<td class="text-left">
<a href="#">{{ test.test_id | limitTo: 110 }}</a>
<a ui-sref="test({ testId: test.test_id })"> {{test.test_id | limitTo: 110}}</a>
</td>
<td class="text-right">{{ test.success | number }}</td>
<td class="text-right">{{ test.failure | number:2 }}</td>
@ -67,3 +67,4 @@
</accordion>
</div>
</div>
</div>

View File

@ -0,0 +1,862 @@
module.exports = {
request: {
method: 'JSONP',
path: '/test_runs/tempest.api.volume.test_qos.QosSpecsV2TestJSON.test_get_qos'
},
response: {
data: {
"test_runs": {
"2015-11-01T08:08:49.035211": {
"run_id": 76869,
"run_time": 0.015618,
"status": "success"
},
"2015-11-01T08:09:17.964174": {
"run_id": 78112,
"run_time": 0.016056,
"status": "success"
},
"2015-11-01T09:22:04.044210": {
"run_id": 132687,
"run_time": 0.018179,
"status": "success"
},
"2015-11-01T16:00:43.051799": {
"run_id": 203520,
"run_time": 0.020488,
"status": "success"
},
"2015-11-01T16:07:03.632876": {
"run_id": 144316,
"run_time": 0.024086,
"status": "success"
},
"2015-11-01T16:11:31.619705": {
"run_id": 87896,
"run_time": 0.014398,
"status": "success"
},
"2015-11-01T16:14:49.484077": {
"run_id": 1482,
"run_time": 0.020054,
"status": "success"
},
"2015-11-01T23:43:17.962117": {
"run_id": 123440,
"run_time": 0.019932,
"status": "success"
},
"2015-11-01T23:46:37.713662": {
"run_id": 188360,
"run_time": 0.021598,
"status": "success"
},
"2015-11-02T02:11:34.550398": {
"run_id": 71866,
"run_time": 0.013558,
"status": "success"
},
"2015-11-02T02:16:03.049329": {
"run_id": 191693,
"run_time": 0.022511,
"status": "success"
},
"2015-11-02T02:22:51.152276": {
"run_id": 8469,
"run_time": 0.018899,
"status": "success"
},
"2015-11-02T02:23:12.421702": {
"run_id": 162675,
"run_time": 0.026132,
"status": "success"
},
"2015-11-02T02:49:38.573835": {
"run_id": 64377,
"run_time": 0.020959,
"status": "success"
},
"2015-11-02T02:49:48.999416": {
"run_id": 105940,
"run_time": 0.020126,
"status": "success"
},
"2015-11-02T02:51:34.005085": {
"run_id": 133181,
"run_time": 0.016826,
"status": "success"
},
"2015-11-02T03:07:01.015165": {
"run_id": 196930,
"run_time": 0.014044,
"status": "success"
},
"2015-11-02T04:07:25.133249": {
"run_id": 164716,
"run_time": 0.026805,
"status": "success"
},
"2015-11-02T04:33:10.887952": {
"run_id": 181261,
"run_time": 0.013324,
"status": "success"
},
"2015-11-02T06:33:21.559052": {
"run_id": 101005,
"run_time": 0.024039,
"status": "success"
},
"2015-11-02T06:42:37.663809": {
"run_id": 34069,
"run_time": 0.017489,
"status": "success"
},
"2015-11-02T06:58:57.690055": {
"run_id": 141251,
"run_time": 0.026118,
"status": "success"
},
"2015-11-02T07:14:28.678193": {
"run_id": 149783,
"run_time": 0.016628,
"status": "success"
},
"2015-11-02T07:14:50.473016": {
"run_id": 83621,
"run_time": 0.019381,
"status": "success"
},
"2015-11-02T07:20:28.572440": {
"run_id": 7546,
"run_time": 0.016645,
"status": "success"
},
"2015-11-02T07:21:50.046523": {
"run_id": 117516,
"run_time": 0.016203,
"status": "success"
},
"2015-11-02T07:26:59.190658": {
"run_id": 2131,
"run_time": 0.054914,
"status": "success"
},
"2015-11-02T07:30:15.723823": {
"run_id": 124955,
"run_time": 0.018861,
"status": "success"
},
"2015-11-02T07:30:57.415524": {
"run_id": 171082,
"run_time": 0.015379,
"status": "success"
},
"2015-11-02T07:36:40.430840": {
"run_id": 43305,
"run_time": 0.027897,
"status": "success"
},
"2015-11-02T07:36:47.141898": {
"run_id": 189929,
"run_time": 0.015209,
"status": "success"
},
"2015-11-02T08:03:26.020152": {
"run_id": 108006,
"run_time": 0.020233,
"status": "success"
},
"2015-11-02T08:04:27.573191": {
"run_id": 195803,
"run_time": 0.02616,
"status": "success"
},
"2015-11-02T08:11:32.325353": {
"run_id": 178463,
"run_time": 0.02221,
"status": "success"
},
"2015-11-02T08:26:07.771437": {
"run_id": 143509,
"run_time": 0.02139,
"status": "success"
},
"2015-11-02T08:41:25.735202": {
"run_id": 159036,
"run_time": 0.016715,
"status": "success"
},
"2015-11-02T09:12:00.830422": {
"run_id": 25060,
"run_time": 0.023631,
"status": "success"
},
"2015-11-02T09:16:15.520333": {
"run_id": 130322,
"run_time": 0.03652,
"status": "success"
},
"2015-11-02T09:17:31.963035": {
"run_id": 119297,
"run_time": 0.022164,
"status": "success"
},
"2015-11-02T09:17:33.937683": {
"run_id": 141525,
"run_time": 0.014269,
"status": "success"
},
"2015-11-02T09:23:01.514370": {
"run_id": 171309,
"run_time": 0.01259,
"status": "success"
},
"2015-11-02T09:27:54.976154": {
"run_id": 119126,
"run_time": 0.013371,
"status": "success"
},
"2015-11-02T09:29:54.559126": {
"run_id": 125059,
"run_time": 0.013762,
"status": "success"
},
"2015-11-02T09:31:09.726305": {
"run_id": 71722,
"run_time": 0.012565,
"status": "success"
},
"2015-11-02T09:34:44.596509": {
"run_id": 29348,
"run_time": 0.015015,
"status": "success"
},
"2015-11-02T09:35:12.602743": {
"run_id": 177325,
"run_time": 0.018385,
"status": "success"
},
"2015-11-02T09:41:02.845800": {
"run_id": 99987,
"run_time": 0.013543,
"status": "success"
},
"2015-11-02T10:34:37.987872": {
"run_id": 99042,
"run_time": 0.019691,
"status": "success"
},
"2015-11-02T10:48:26.901560": {
"run_id": 207320,
"run_time": 0.021985,
"status": "success"
},
"2015-11-02T10:58:53.273128": {
"run_id": 85317,
"run_time": 0.015492,
"status": "success"
},
"2015-11-02T11:05:19.596522": {
"run_id": 108927,
"run_time": 0.017494,
"status": "success"
},
"2015-11-02T11:56:04.948180": {
"run_id": 156119,
"run_time": 0.015302,
"status": "success"
},
"2015-11-02T13:23:35.614099": {
"run_id": 106178,
"run_time": 0.017887,
"status": "success"
},
"2015-11-02T13:23:39.718837": {
"run_id": 86633,
"run_time": 0.02081,
"status": "success"
},
"2015-11-02T13:32:04.369087": {
"run_id": 16276,
"run_time": 0.021102,
"status": "success"
},
"2015-11-02T13:34:13.661198": {
"run_id": 57460,
"run_time": 0.022075,
"status": "success"
},
"2015-11-02T13:38:25.946878": {
"run_id": 92566,
"run_time": 0.019312,
"status": "success"
},
"2015-11-02T13:43:58.228929": {
"run_id": 115237,
"run_time": 0.058536,
"status": "success"
},
"2015-11-02T13:49:10.836496": {
"run_id": 118108,
"run_time": 0.069969,
"status": "success"
},
"2015-11-02T14:06:18.625258": {
"run_id": 158346,
"run_time": 0.012928,
"status": "success"
},
"2015-11-02T14:14:58.097067": {
"run_id": 59975,
"run_time": 0.013438,
"status": "success"
},
"2015-11-02T14:17:49.449379": {
"run_id": 55506,
"run_time": 0.013609,
"status": "success"
},
"2015-11-02T14:22:05.712563": {
"run_id": 46554,
"run_time": 0.023182,
"status": "success"
},
"2015-11-02T14:33:30.487910": {
"run_id": 599,
"run_time": 0.018991,
"status": "success"
},
"2015-11-02T14:43:25.502026": {
"run_id": 12514,
"run_time": 0.031398,
"status": "success"
},
"2015-11-02T14:44:22.676896": {
"run_id": 161001,
"run_time": 0.116917,
"status": "success"
},
"2015-11-02T15:46:11.449058": {
"run_id": 71330,
"run_time": 0.017796,
"status": "success"
},
"2015-11-02T16:42:01.962719": {
"run_id": 80307,
"run_time": 0.016806,
"status": "success"
},
"2015-11-02T16:45:53.780516": {
"run_id": 63984,
"run_time": 0.016583,
"status": "success"
},
"2015-11-02T16:53:48.431066": {
"run_id": 31018,
"run_time": 0.015082,
"status": "success"
},
"2015-11-02T16:53:55.290351": {
"run_id": 162963,
"run_time": 0.015735,
"status": "success"
},
"2015-11-02T16:55:14.979653": {
"run_id": 14083,
"run_time": 0.032282,
"status": "success"
},
"2015-11-02T17:01:01.282831": {
"run_id": 106601,
"run_time": 0.013443,
"status": "success"
},
"2015-11-02T17:08:40.703509": {
"run_id": 92504,
"run_time": 0.018598,
"status": "success"
},
"2015-11-02T17:38:11.036868": {
"run_id": 121501,
"run_time": 0.034067,
"status": "success"
},
"2015-11-02T18:33:42.123968": {
"run_id": 154149,
"run_time": 0.017088,
"status": "success"
},
"2015-11-02T18:38:08.406395": {
"run_id": 122021,
"run_time": 0.021967,
"status": "success"
},
"2015-11-02T18:38:43.469517": {
"run_id": 155118,
"run_time": 0.042394,
"status": "success"
},
"2015-11-02T18:39:24.415214": {
"run_id": 61434,
"run_time": 0.015306,
"status": "success"
},
"2015-11-02T19:31:07.663173": {
"run_id": 72665,
"run_time": 0.01735,
"status": "success"
},
"2015-11-02T19:41:15.503530": {
"run_id": 192883,
"run_time": 0.014081,
"status": "success"
},
"2015-11-02T20:04:03.725369": {
"run_id": 22034,
"run_time": 0.016241,
"status": "success"
},
"2015-11-02T20:10:44.169290": {
"run_id": 85666,
"run_time": 0.020533,
"status": "success"
},
"2015-11-02T20:11:32.451023": {
"run_id": 34396,
"run_time": 0.015341,
"status": "success"
},
"2015-11-02T20:18:37.400257": {
"run_id": 131621,
"run_time": 0.014312,
"status": "success"
},
"2015-11-02T20:19:59.759422": {
"run_id": 97553,
"run_time": 0.023146,
"status": "success"
},
"2015-11-02T20:22:31.440839": {
"run_id": 162355,
"run_time": 0.01791,
"status": "success"
},
"2015-11-02T20:23:02.124251": {
"run_id": 83893,
"run_time": 0.01618,
"status": "success"
},
"2015-11-02T20:26:16.035012": {
"run_id": 23575,
"run_time": 0.045818,
"status": "success"
},
"2015-11-02T21:26:54.656497": {
"run_id": 41077,
"run_time": 0.023523,
"status": "success"
},
"2015-11-02T21:54:10.596232": {
"run_id": 38493,
"run_time": 0.014847,
"status": "success"
},
"2015-11-02T21:57:45.216474": {
"run_id": 120429,
"run_time": 0.015238,
"status": "success"
},
"2015-11-02T22:01:51.437871": {
"run_id": 199434,
"run_time": 0.0177,
"status": "success"
},
"2015-11-02T23:14:11.106709": {
"run_id": 172444,
"run_time": 0.021441,
"status": "success"
},
"2015-11-03T01:55:28.506993": {
"run_id": 129762,
"run_time": 0.020201,
"status": "success"
},
"2015-11-03T03:39:36.589137": {
"run_id": 95749,
"run_time": 0.018903,
"status": "success"
},
"2015-11-03T03:41:12.563281": {
"run_id": 103042,
"run_time": 0.020127,
"status": "success"
},
"2015-11-03T03:51:56.225424": {
"run_id": 131119,
"run_time": 0.014433,
"status": "success"
},
"2015-11-03T03:54:39.499312": {
"run_id": 181899,
"run_time": 0.014116,
"status": "success"
},
"2015-11-03T03:55:17.861858": {
"run_id": 10998,
"run_time": 0.025004,
"status": "success"
},
"2015-11-03T04:03:55.526098": {
"run_id": 182062,
"run_time": 0.028803,
"status": "success"
},
"2015-11-03T04:05:58.315794": {
"run_id": 168321,
"run_time": 0.015644,
"status": "success"
},
"2015-11-03T04:08:58.127949": {
"run_id": 91538,
"run_time": 0.014831,
"status": "success"
},
"2015-11-03T04:25:19.767468": {
"run_id": 15448,
"run_time": 0.017014,
"status": "success"
},
"2015-11-03T04:30:33.181113": {
"run_id": 36184,
"run_time": 0.022527,
"status": "success"
},
"2015-11-03T04:31:31.477353": {
"run_id": 39357,
"run_time": 0.025355,
"status": "success"
},
"2015-11-03T04:32:00.665192": {
"run_id": 97960,
"run_time": 0.057353,
"status": "success"
},
"2015-11-03T05:50:08.163248": {
"run_id": 107759,
"run_time": 0.019159,
"status": "success"
},
"2015-11-03T05:54:24.671860": {
"run_id": 52817,
"run_time": 0.019954,
"status": "success"
},
"2015-11-03T05:56:32.810519": {
"run_id": 102524,
"run_time": 0.020218,
"status": "success"
},
"2015-11-03T06:04:45.906773": {
"run_id": 195744,
"run_time": 0.018326,
"status": "success"
},
"2015-11-03T06:09:37.574811": {
"run_id": 23657,
"run_time": 0.013177,
"status": "success"
},
"2015-11-03T06:12:13.747453": {
"run_id": 118887,
"run_time": 0.018813,
"status": "success"
},
"2015-11-03T06:15:47.237307": {
"run_id": 181329,
"run_time": 0.016679,
"status": "success"
},
"2015-11-03T07:29:10.025522": {
"run_id": 201291,
"run_time": 0.021449,
"status": "success"
},
"2015-11-03T07:35:34.205409": {
"run_id": 132286,
"run_time": 0.017252,
"status": "success"
},
"2015-11-03T07:42:53.707987": {
"run_id": 69496,
"run_time": 0.013556,
"status": "success"
},
"2015-11-03T07:46:46.336541": {
"run_id": 180341,
"run_time": 0.054122,
"status": "success"
},
"2015-11-03T08:10:24.634094": {
"run_id": 16412,
"run_time": 0.019053,
"status": "success"
},
"2015-11-03T08:34:50.675936": {
"run_id": 101477,
"run_time": 0.013883,
"status": "success"
},
"2015-11-03T09:00:31.808132": {
"run_id": 148665,
"run_time": 0.018268,
"status": "success"
},
"2015-11-03T09:18:43.394218": {
"run_id": 185587,
"run_time": 0.059416,
"status": "success"
},
"2015-11-03T09:22:28.400289": {
"run_id": 76945,
"run_time": 0.025145,
"status": "success"
},
"2015-11-03T09:27:15.679960": {
"run_id": 97261,
"run_time": 0.014526,
"status": "success"
},
"2015-11-03T09:35:02.628764": {
"run_id": 67952,
"run_time": 0.020944,
"status": "success"
},
"2015-11-03T09:57:34.905081": {
"run_id": 78685,
"run_time": 0.012768,
"status": "success"
},
"2015-11-03T10:00:32.490034": {
"run_id": 28595,
"run_time": 0.014158,
"status": "success"
},
"2015-11-03T10:01:26.971477": {
"run_id": 140094,
"run_time": 0.016267,
"status": "success"
},
"2015-11-03T10:04:35.688114": {
"run_id": 139786,
"run_time": 0.038287,
"status": "success"
},
"2015-11-03T10:11:49.791995": {
"run_id": 193717,
"run_time": 0.018484,
"status": "success"
},
"2015-11-03T10:15:05.760876": {
"run_id": 83089,
"run_time": 0.020801,
"status": "success"
},
"2015-11-03T10:15:21.956085": {
"run_id": 62546,
"run_time": 0.01775,
"status": "success"
},
"2015-11-03T10:57:01.512602": {
"run_id": 194498,
"run_time": 0.016412,
"status": "success"
},
"2015-11-03T10:57:48.425003": {
"run_id": 110810,
"run_time": 0.024954,
"status": "success"
},
"2015-11-03T11:01:29.137476": {
"run_id": 87102,
"run_time": 0.012801,
"status": "success"
},
"2015-11-03T11:04:37.643810": {
"run_id": 60972,
"run_time": 0.019069,
"status": "success"
},
"2015-11-03T12:34:30.897672": {
"run_id": 165405,
"run_time": 0.016476,
"status": "success"
},
"2015-11-03T12:39:21.374857": {
"run_id": 10530,
"run_time": 0.016794,
"status": "success"
},
"2015-11-03T12:41:12.916698": {
"run_id": 110916,
"run_time": 0.02208,
"status": "success"
},
"2015-11-03T12:42:46.857261": {
"run_id": 81160,
"run_time": 0.018877,
"status": "success"
},
"2015-11-03T12:43:12.507827": {
"run_id": 11804,
"run_time": 0.014681,
"status": "success"
},
"2015-11-03T14:43:30.019390": {
"run_id": 63952,
"run_time": 0.02087,
"status": "success"
},
"2015-11-03T14:43:48.540687": {
"run_id": 13796,
"run_time": 0.016039,
"status": "success"
},
"2015-11-03T14:45:06.369415": {
"run_id": 11275,
"run_time": 0.022614,
"status": "success"
},
"2015-11-03T14:46:43.896246": {
"run_id": 52460,
"run_time": 0.021359,
"status": "success"
},
"2015-11-03T14:50:28.101158": {
"run_id": 93685,
"run_time": 0.01493,
"status": "success"
},
"2015-11-03T14:55:55.947335": {
"run_id": 57133,
"run_time": 0.01425,
"status": "success"
},
"2015-11-03T15:05:24.164350": {
"run_id": 18078,
"run_time": 0.01625,
"status": "success"
},
"2015-11-03T15:07:08.534488": {
"run_id": 59372,
"run_time": 0.027877,
"status": "success"
},
"2015-11-03T15:09:22.890091": {
"run_id": 23359,
"run_time": 0.017697,
"status": "success"
},
"2015-11-03T15:10:29.480401": {
"run_id": 63121,
"run_time": 0.016415,
"status": "success"
},
"2015-11-03T15:16:05.852811": {
"run_id": 202160,
"run_time": 0.05509,
"status": "success"
},
"2015-11-03T15:21:50.985273": {
"run_id": 141944,
"run_time": 0.014155,
"status": "success"
},
"2015-11-03T15:22:29.186902": {
"run_id": 139688,
"run_time": 0.019822,
"status": "success"
},
"2015-11-03T15:22:37.539778": {
"run_id": 9571,
"run_time": 0.016629,
"status": "success"
},
"2015-11-03T15:23:53.595471": {
"run_id": 190988,
"run_time": 0.048468,
"status": "success"
},
"2015-11-03T15:24:04.019090": {
"run_id": 124183,
"run_time": 0.029403,
"status": "success"
},
"2015-11-03T15:27:15.516271": {
"run_id": 174303,
"run_time": 0.018184,
"status": "success"
},
"2015-11-03T15:27:43.282353": {
"run_id": 154442,
"run_time": 0.0218,
"status": "success"
},
"2015-11-03T15:29:51.005086": {
"run_id": 47251,
"run_time": 0.038698,
"status": "success"
},
"2015-11-03T15:30:12.128262": {
"run_id": 80943,
"run_time": 0.016783,
"status": "success"
},
"2015-11-03T15:31:01.689603": {
"run_id": 71316,
"run_time": 0.016032,
"status": "success"
},
"2015-11-03T15:31:34.008205": {
"run_id": 161033,
"run_time": 0.020854,
"status": "success"
},
"2015-11-03T15:32:16.297289": {
"run_id": 102911,
"run_time": 0.01468,
"status": "success"
},
"2015-11-03T15:32:51.302916": {
"run_id": 203616,
"run_time": 0.017706,
"status": "success"
},
"2015-11-03T15:39:38.353772": {
"run_id": 200742,
"run_time": 0.068364,
"status": "success"
},
"2015-11-03T15:41:06.705236": {
"run_id": 148320,
"run_time": 0.020857,
"status": "success"
},
"2015-11-03T15:42:04.599467": {
"run_id": 9951,
"run_time": 0.018137,
"status": "success"
},
"2015-11-03T15:45:51.002130": {
"run_id": 2153,
"run_time": 0.020568,
"status": "success"
},
"2015-11-03T15:50:54.137488": {
"run_id": 127138,
"run_time": 0.023681,
"status": "success"
}
}
}
}
};

View File

@ -49,8 +49,22 @@ describe('E2E: Routes', function() {
expect(element(by.css(selector)).isPresent()).toBe(true);
});
it('should have a single test route', function() {
mock(['config', 'test_project']);
browser.get('#/test/tempest.api.volume.test_qos.QosSpecsV2TestJSON.test_get_qos');
// route should be defined (will redirect to / if not)
expect(browser.getLocationAbsUrl()).toMatch('/test/tempest.api.volume.' +
'test_qos.QosSpecsV2TestJSON.test_get_qos');
// data should actually be requested (no request if error)
expect(mock.requestsMade()).toContain(jasmine.objectContaining({
url: 'http://localhost:5000/test_runs/tempest.api.volume.test_qos.' +
'QosSpecsV2TestJSON.test_get_qos',
method: 'JSONP'
}));
});
afterEach(function() {
mock.teardown();
});
});