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

Unified Diff: gm/viewer/module.js

Issue 20526007: Create AJAX live-viewer of expected-vs-actual GM results (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: change_tabs_to_spaces Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: gm/viewer/module.js
===================================================================
--- gm/viewer/module.js (revision 0)
+++ gm/viewer/module.js (revision 0)
@@ -0,0 +1,75 @@
+/*
+ * JsonDataModule:
+ * Reads an actual-results.json file, and imports its data into $scope.
+ */
+var JsonDataModule = angular.module(
Zach Reizner 2013/07/30 22:02:01 The name of this module is very generic. Maybe som
epoger 2013/08/02 14:59:27 Changed to GMActualResultsLoader. You dig?
Zach Reizner 2013/08/02 15:17:57 Like Shia LeBeouf in Holes.
+ 'JsonDataModule',
+ [],
+ function($httpProvider) {
+ /* Override transformResponse so that the numeric checksums are interpreted as
+ * strings instead, since Javascript cannot handle 64-bit integers. */
+ $httpProvider.defaults.transformResponse = function(data, headersGetter) {
+ return JSON.parse(data.replace(/\s(\d+)\s/g, " \"$1\" "));
+ }
+ }
+);
+JsonDataModule.controller(
+ 'JsonDataModule.Controller',
+ function($scope, $http) {
+ /* When the changePlatformPath function is called, download actual-results.json
+ * from the desired platform directory.
+ *
+ * When the JSON is received, predigest it (combining actual and expected results for each
+ * test) and return it to the frontend as $scope.jsonResults like so:
+ *
+ * [
+ * {"resultType": "failed",
+ * "resultsOfThisType": [
+ * {"test":"bigmatrix", "config":"gpu",
+ * "actualHashType": "bitmap-64bitMD5", "actualHashValue": "1234",
+ * "expectedHashType": "bitmap-64bitMD5", "actualHashValue": "6789"},
+ * {"test":"bigmatrix", "config":"8888",
+ * "actualHashType": "bitmap-64bitMD5", "actualHashValue": "5678",
+ * "expectedHashType": "bitmap-64bitMD5", "actualHashValue": "6789"},
+ * more tests...
+ * ]},
+ * {"resultType": "no-comparison",
+ * "resultsOfThisType": [
+ * {"test":"aaclip", "config":"gpu",
+ * "actualHashType": "bitmap-64bitMD5", "actualHashValue": "8765"},
+ * {"test":"aaclip", "config":"8888",
+ * "actualHashType": "bitmap-64bitMD5", "actualHashValue": "4321"},
+ * more tests...
+ * ]},
+ * more result types...
+ * ]
+ */
+ $scope.changePlatformPath = function() {
+ $http.get($scope.platformPath + "/actual-results.json").success(
+ function(response) {
+ var jsonResults = [];
+ var imageNameRegex = /^(.+)_([^_]+).png/;
+ angular.forEach(response['actual-results'], function(resultsOfThisType, resultType) {
+ var resultCollection = [];
+ angular.forEach(resultsOfThisType, function(hashTypeAndValue, imageName) {
+ var matched = imageNameRegex.exec(imageName);
+ var thisResult = {
+ test: matched[1], config: matched[2],
+ actualHashType: hashTypeAndValue[0], actualHashValue: hashTypeAndValue[1] };
+ var expectations = response['expected-results'][imageName]['allowed-digests'];
+ if (expectations != null) {
+ thisResult.expectedHashType = expectations[0][0];
+ thisResult.expectedHashValue = expectations[0][1];
+ }
+ resultCollection.push(thisResult);
+ });
+ var resultTypeAndCollection = { resultType: resultType,
+ resultsOfThisType: resultCollection };
+ jsonResults.push(resultTypeAndCollection);
+ });
+ $scope.jsonResults = jsonResults;
Zach Reizner 2013/07/30 22:02:01 The name of this scope variable is very vague. How
epoger 2013/08/02 14:59:27 How does gmActualResults sound to YOU???
Zach Reizner 2013/08/02 15:17:57 It sounds like sweet sweet music.
+ }
+ );
+ };
+ }
+);

Powered by Google App Engine
This is Rietveld 408576698