diff --git a/.travis-ui.yml b/.travis-ui.yml new file mode 100755 index 000000000..71207682b --- /dev/null +++ b/.travis-ui.yml @@ -0,0 +1,22 @@ +language: node_js +node_js: + - 0.8 + +before_script: + - export DISPLAY=:99.0 + - sh -e /etc/init.d/xvfb start + - npm install --quiet -g karma + - cd ./webapp + - ./scripts/web-server.js > /dev/null & + - sleep 1 # give server time to start + +script: + - karma start config/karma.conf.js --no-auto-watch --single-run --reporters=dots --browsers=Firefox + +# Do not run these on the travis server at this time. +# The end to end tests require the service to be running, but travis can't +# start the service for us. So we would have to have the default point to +# a dedicated dev service instance that is reach-able by travis. However, we +# require /etc/hosts to have an entry at this point to reach our current dev +# server. So these tests should be run only locally for now. +# - karma start config/karma-e2e.conf.js --reporters=dots --browsers=Firefox diff --git a/tests/ui/config/karma-e2e.conf.js b/tests/ui/config/karma-e2e.conf.js index 51f51d2ee..c7df81554 100755 --- a/tests/ui/config/karma-e2e.conf.js +++ b/tests/ui/config/karma-e2e.conf.js @@ -1,22 +1,35 @@ -basePath = '../'; +module.exports = function (config) { + config.set({ + frameworks: ['ng-scenario'], -files = [ - ANGULAR_SCENARIO, - ANGULAR_SCENARIO_ADAPTER, - 'test/e2e/**/*.js' -]; + basePath: '../', -autoWatch = false; + files: [ + 'test/e2e/**/*.js', -browsers = ['Chrome']; + // fixtures + {pattern: 'test/mock/*.json', watched: true, served: true, included: false} + ], -singleRun = true; + autoWatch: false, + singleRun: true, -proxies = { - '/': 'http://localhost:8000/' -}; - -junitReporter = { - outputFile: 'test_out/e2e.xml', - suite: 'e2e' + browsers: ['Firefox'], + + proxies: { + '/': 'http://localhost:8000/' + }, + urlRoot: '/', + plugins : [ + 'karma-junit-reporter', + 'karma-chrome-launcher', + 'karma-firefox-launcher', + 'karma-jasmine', + 'karma-ng-scenario' + ], + junitReporter: { + outputFile: 'test_out/e2e.xml', + suite: 'e2e' + } + }); }; diff --git a/tests/ui/config/karma.conf.js b/tests/ui/config/karma.conf.js index b6b928327..7a4ec8492 100755 --- a/tests/ui/config/karma.conf.js +++ b/tests/ui/config/karma.conf.js @@ -1,30 +1,37 @@ -frameworks = ['jasmine']; +module.exports = function (config) { + config.set({ + frameworks: ['jasmine'], -basePath = '../'; + basePath: '../', -files = [ - JASMINE, - JASMINE_ADAPTER, - 'app/vendor/angular/angular.js', - 'app/vendor/angular/angular-*.js', - 'app/vendor/*.js', - 'app/js/**/*.js', - 'app/js/controllers/**/*.js', - 'test/vendor/angular/angular-mocks.js', - 'test/vendor/jquery-2.0.3.js', - 'test/vendor/jasmine-jquery.js', - 'test/unit/**/*.js', + files: [ + 'app/vendor/angular/angular.js', + 'app/vendor/angular/angular-*.js', + 'app/vendor/*.js', + 'app/js/**/*.js', + 'app/js/controllers/**/*.js', + 'test/vendor/angular/angular-mocks.js', + 'test/vendor/jquery-2.0.3.js', + 'test/vendor/jasmine-jquery.js', + 'test/unit/**/*.js', - // fixtures - {pattern: 'app/resources/*.json', watched: true, served: true, included: false} -]; + // fixtures + {pattern: 'test/mock/*.json', watched: true, served: true, included: false} + ], -autoWatch = false; -singleRun = true; + autoWatch: false, + singleRun: true, -browsers = ['Firefox']; + browsers: ['Firefox'], -junitReporter = { - outputFile: 'test_out/unit.xml', - suite: 'unit' + junitReporter: { + outputFile: 'test_out/unit.xml', + suite: 'unit' + }, + + reporters: ['progress', 'coverage'], + preprocessors: { + 'app/js/**/*.js': ['coverage'] + } + }); }; diff --git a/tests/ui/e2e/runner.html b/tests/ui/e2e/runner.html index 859c90e3d..1f188b07b 100755 --- a/tests/ui/e2e/runner.html +++ b/tests/ui/e2e/runner.html @@ -3,7 +3,7 @@ End2end Test Runner - + diff --git a/tests/ui/e2e/scenarios.js b/tests/ui/e2e/scenarios.js index 26e174a40..0a7fcdd64 100755 --- a/tests/ui/e2e/scenarios.js +++ b/tests/ui/e2e/scenarios.js @@ -2,44 +2,29 @@ /* http://docs.angularjs.org/guide/dev_guide.e2e-testing */ -describe('my app', function() { +describe('treeherder', function() { beforeEach(function() { - browser().navigateTo('../../app/index.html'); + browser().navigateTo('app/index.html'); }); - it('should automatically redirect to /view1 when location hash/fragment is empty', function() { - expect(browser().location().url()).toBe("/view1"); + it('should automatically redirect to /jobs when location hash/fragment is empty', function() { + expect(browser().location().url()).toBe("/jobs"); }); describe('view1', function() { beforeEach(function() { - browser().navigateTo('#/view1'); + browser().navigateTo('#/jobs'); }); - it('should render view1 when user navigates to /view1', function() { - expect(element('[ng-view] p:first').text()). - toMatch(/partial for view 1/); + it('should render jobs when user navigates to /jobs', function() { + expect(repeater('.result-set').count()).toBe(10); }); }); - - describe('view2', function() { - - beforeEach(function() { - browser().navigateTo('#/view2'); - }); - - - it('should render view2 when user navigates to /view2', function() { - expect(element('[ng-view] p:first').text()). - toMatch(/partial for view 2/); - }); - - }); }); diff --git a/tests/ui/mock/artifact_519.json b/tests/ui/mock/artifact_519.json new file mode 100644 index 000000000..40c5533d3 --- /dev/null +++ b/tests/ui/mock/artifact_519.json @@ -0,0 +1,16 @@ +{ + + "name": "Unknown Builder Job Artifact", + "active_status": "active", + "blob": { + "errors": [ ], + "tinderbox_printlines": [ + "mochitest-plain
895/0/128" + ], + "logurl": "http://ftp.mozilla.org/pub/mozilla.org/mobile/tinderbox-builds/mozilla-inbound-android-armv6/1377289258/mozilla-inbound_tegra_android-armv6_test-mochitest-5-bm10-tests1-tegra-build1958.txt.gz" + }, + "type": "json", + "id": 519, + "job_id": 260 + +} \ No newline at end of file diff --git a/tests/ui/mock/job_260.json b/tests/ui/mock/job_260.json new file mode 100644 index 000000000..aea080c68 --- /dev/null +++ b/tests/ui/mock/job_260.json @@ -0,0 +1,43 @@ +{ + + "end_timestamp": 1377294159, + "submit_timestamp": 1377292078, + "start_timestamp": 1377318435, + "result_set_id": 3, + "product_id": 1, + "machine_platform_id": 1, + "active_status": "active", + "artifacts": [ + { + "resource_uri": "/api/project/mozilla-inbound/artifact/519/", + "type": "json", + "id": 519, + "name": "Unknown Builder Job Artifact" + }, + { + "resource_uri": "/api/project/mozilla-inbound/artifact/520/", + "type": "json", + "id": 520, + "name": "Structured Log" + } + ], + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "machine_name": "tegra-363", + "state": "finished", + "who": "sendchange-unittest", + "logs": [ + { + "url": "http://ftp.mozilla.org/pub/mozilla.org/mobile/tinderbox-builds/mozilla-inbound-android-armv6/1377289258/mozilla-inbound_tegra_android-armv6_test-mochitest-5-bm10-tests1-tegra-build1958.txt.gz", + "name": "unittest" + } + ], + "reason": "scheduler", + "machine_id": 465, + "result": "success", + "build_platform_id": 1, + "job_coalesced_to_guid": "", + "job_guid": "19e993f5b0a717185083fb9eacb2d422b36d6bd1", + "id": 260, + "job_type_id": 11 + +} \ No newline at end of file diff --git a/tests/ui/mock/job_groups.json b/tests/ui/mock/job_groups.json new file mode 100644 index 000000000..80d9703b3 --- /dev/null +++ b/tests/ui/mock/job_groups.json @@ -0,0 +1,368 @@ +{ + "build": [ + { + "description": "", + "jobtype__name": "asan", + "jobtype__symbol": "A", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "asan nightly", + "jobtype__symbol": "An", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "b2g.*_stable_dep", + "jobtype__symbol": "BiB", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "b2g.*_stable_nightly", + "jobtype__symbol": "NiB", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "b2g.*_dep", + "jobtype__symbol": "Bi", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "b2g.*_nightly", + "jobtype__symbol": "Ni", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "b2g.*gecko build", + "jobtype__symbol": "Bg", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "b2g.*gecko-debug build", + "jobtype__symbol": "Bg", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "b2g.*gecko_localizer nightly", + "jobtype__symbol": "NgL", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "b2g.*gecko nightly", + "jobtype__symbol": "Ng", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "b2g.*_eng_dep", + "jobtype__symbol": "BiM", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "b2g.*_eng_nightly", + "jobtype__symbol": "NiM", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "build", + "jobtype__symbol": "B", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "nightly", + "jobtype__symbol": "N", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "valgrind", + "jobtype__symbol": "V", + "symbol": "B" + }, + { + "description": "", + "jobtype__name": "xulrunner", + "jobtype__symbol": "Xr", + "symbol": "B" + } + ], + "mochitest": [ + { + "description": "", + "jobtype__name": "mochitest", + "jobtype__symbol": "M", + "symbol": "M" + }, + { + "description": "", + "jobtype__name": "mochitest-browser-chrome", + "jobtype__symbol": "bc", + "symbol": "M" + }, + { + "description": "", + "jobtype__name": "mochitest-other", + "jobtype__symbol": "oth", + "symbol": "M" + }, + { + "description": "", + "jobtype__name": "robocop", + "jobtype__symbol": "rc", + "symbol": "M" + } + ], + "reftest": [ + { + "description": "", + "jobtype__name": "crashtest", + "jobtype__symbol": "C", + "symbol": "R" + }, + { + "description": "", + "jobtype__name": "crashtest-ipc", + "jobtype__symbol": "Cipc", + "symbol": "R" + }, + { + "description": "", + "jobtype__name": "jsreftest", + "jobtype__symbol": "J", + "symbol": "R" + }, + { + "description": "", + "jobtype__name": "reftest", + "jobtype__symbol": "R", + "symbol": "R" + }, + { + "description": "", + "jobtype__name": "reftest-no-accel", + "jobtype__symbol": "Ru", + "symbol": "R" + }, + { + "description": "", + "jobtype__name": "reftest-ipc", + "jobtype__symbol": "Ripc", + "symbol": "R" + } + ], + "spidermonkey": [ + { + "description": "", + "jobtype__name": "spidermonkey.*-rootanalysis", + "jobtype__symbol": "r", + "symbol": "SM" + }, + { + "description": "", + "jobtype__name": "spidermonkey.*-warnaserr", + "jobtype__symbol": "e", + "symbol": "SM" + }, + { + "description": "", + "jobtype__name": "spidermonkey.*-dtrace", + "jobtype__symbol": "d", + "symbol": "SM" + }, + { + "description": "", + "jobtype__name": "spidermonkey.*-exactroot", + "jobtype__symbol": "exr", + "symbol": "SM" + }, + { + "description": "", + "jobtype__name": "spidermonkey.*-generational", + "jobtype__symbol": "ggc", + "symbol": "SM" + } + ], + "talos": [ + { + "description": "", + "jobtype__name": "talos chrome", + "jobtype__symbol": "c", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos chromez", + "jobtype__symbol": "c", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos dromaeo", + "jobtype__symbol": "dr", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos dromaeojs", + "jobtype__symbol": "d", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos nochrome", + "jobtype__symbol": "n", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos other", + "jobtype__symbol": "o", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos dirtypaint", + "jobtype__symbol": "p", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos remote-trobocheck", + "jobtype__symbol": "rck", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos remote-trobocheck2", + "jobtype__symbol": "rck2", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos remote-trobopan", + "jobtype__symbol": "rp", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos remote-troboprovider", + "jobtype__symbol": "rpr", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos svgr", + "jobtype__symbol": "s", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos remote-tsvgr", + "jobtype__symbol": "s", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos remote-tp4m", + "jobtype__symbol": "tp", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos tp", + "jobtype__symbol": "tp", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos remote-tp4m_nochrome", + "jobtype__symbol": "tpn", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos remote-ts", + "jobtype__symbol": "ts", + "symbol": "T" + }, + { + "description": "", + "jobtype__name": "talos xperf", + "jobtype__symbol": "x", + "symbol": "T" + } + ], + "unknown": [ + { + "description": "", + "jobtype__name": "dxr", + "jobtype__symbol": "Dxr", + "symbol": "?" + }, + { + "description": "", + "jobtype__name": "gaia-ui-test", + "jobtype__symbol": "G", + "symbol": "?" + }, + { + "description": "", + "jobtype__name": "jetpack-mozilla-aurora", + "jobtype__symbol": "m-a", + "symbol": "?" + }, + { + "description": "", + "jobtype__name": "jetpack-mozilla-beta", + "jobtype__symbol": "m-b", + "symbol": "?" + }, + { + "description": "", + "jobtype__name": "jetpack-mozilla-central", + "jobtype__symbol": "m-c", + "symbol": "?" + }, + { + "description": "", + "jobtype__name": "jetpack-mozilla-release", + "jobtype__symbol": "m-r", + "symbol": "?" + }, + { + "description": "", + "jobtype__name": "jetpack", + "jobtype__symbol": "JP", + "symbol": "?" + }, + { + "description": "", + "jobtype__name": "marionette", + "jobtype__symbol": "Mn", + "symbol": "?" + }, + { + "description": "", + "jobtype__name": "mozmill", + "jobtype__symbol": "Z", + "symbol": "?" + }, + { + "description": "", + "jobtype__name": "xpcshell", + "jobtype__symbol": "X", + "symbol": "?" + } + ] +} diff --git a/tests/ui/mock/resultset_1.json b/tests/ui/mock/resultset_1.json new file mode 100644 index 000000000..05f95f2d4 --- /dev/null +++ b/tests/ui/mock/resultset_1.json @@ -0,0 +1,5897 @@ +{ + + "repository_id": 2, + "revision_hash": "ec486f38935b2c8869ce77adb90257987de6ef53", + "author": "sendchange-unittest", + "comments": "", + "platforms": [ + { + "warning_level": "green", + "name": "4.0 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377291901, + "machine_name": "panda-0790", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293643, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 96, + "job_type_name": "robocop-3", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "?", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "1f682fd1dfb2c3f869742b8110b217554dbc3a67", + "start_timestamp": 1377317104, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/96/" + } + ], + "name": null + }, + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377291901, + "machine_name": "panda-0776", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293470, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 31, + "job_type_name": "mochitest-2", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "fdac27239bbc5abcda6c97f8d7192b5d17a50cb5", + "start_timestamp": 1377317104, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/31/" + }, + { + "submit_timestamp": 1377291901, + "machine_name": "panda-0807", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293980, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 206, + "job_type_name": "mochitest-4", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "dd0ae2b6d0394856497147d4bf9ac4008f55f595", + "start_timestamp": 1377318025, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/206/" + }, + { + "submit_timestamp": 1377293108, + "machine_name": "panda-0787", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294049, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 227, + "job_type_name": "mochitest-4", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "b90c5418cb82b6af0fc7c298c74bad34746fa614", + "start_timestamp": 1377318317, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/227/" + }, + { + "submit_timestamp": 1377291901, + "machine_name": "panda-0057", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293901, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 174, + "job_type_name": "mochitest-6", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "6", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "bd35b7ab6b6267cc6d9fc0c524c6166ec3b411f7", + "start_timestamp": 1377318055, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/174/" + }, + { + "submit_timestamp": 1377291901, + "machine_name": "panda-0822", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293898, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 173, + "job_type_name": "mochitest-7", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "7", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "e0e5cf3e4e5c5e2f8c18b18f856b156548c2166b", + "start_timestamp": 1377318010, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/173/" + }, + { + "submit_timestamp": 1377293108, + "machine_name": "panda-0814", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294151, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 257, + "job_type_name": "mochitest-gl", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "gl", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "086bae17d1b34c76cd38dbb445b02eed2e1bf200", + "start_timestamp": 1377318319, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/257/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377291901, + "machine_name": "panda-0759", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293495, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 43, + "job_type_name": "jsreftest-1", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "8af0f39b85e4283bfe04fb9fbc6cfc50e592e338", + "start_timestamp": 1377317105, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/43/" + }, + { + "submit_timestamp": 1377290347, + "machine_name": "panda-0056", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293603, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 84, + "job_type_name": "jsreftest-1", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "80199020ee408486d5ebefbb5ac613560b6e07fe", + "start_timestamp": 1377317229, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/84/" + }, + { + "submit_timestamp": 1377291901, + "machine_name": "panda-0847", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293813, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 145, + "job_type_name": "jsreftest-3", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "4f293c00c63b3ba12bc4ffde05a682ae02aeeae8", + "start_timestamp": 1377317106, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/145/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "red", + "name": "Fedora 12 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377293523, + "machine_name": "tst-linux64-ec2-388", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293909, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 178, + "job_type_name": "gaia-ui-test", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "?", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "e08c976414a0c787c732af2adbd1b749557b3f90", + "start_timestamp": 1377318724, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/178/" + }, + { + "submit_timestamp": 1377293824, + "machine_name": "tst-linux64-ec2-437", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294199, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 272, + "job_type_name": "gaia-ui-test", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "?", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "702cd1139e11ac872f8a8ec9034efd77f041a70b", + "start_timestamp": 1377319027, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/272/" + }, + { + "submit_timestamp": 1377293523, + "machine_name": "tst-linux64-ec2-370", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "busted", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293661, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 100, + "job_type_name": "gaia-unit", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "G", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "42aad1cc6476792cc95c003a0e89731e5bc24877", + "start_timestamp": 1377318724, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/100/" + }, + { + "submit_timestamp": 1377293824, + "machine_name": "tst-linux64-ec2-365", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "busted", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293968, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 199, + "job_type_name": "gaia-unit", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "G", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "3347d21137ccc8fb2eba9d079f741f17c9104ef3", + "start_timestamp": 1377319030, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/199/" + }, + { + "submit_timestamp": 1377292197, + "machine_name": "talos-r3-fed-035", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293626, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 92, + "job_type_name": "marionette-webapi", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "Mn", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "2953c1eb79b1165b8aa58f5400b7a7e10c7d0e44", + "start_timestamp": 1377317418, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/92/" + }, + { + "submit_timestamp": 1377293160, + "machine_name": "tst-linux64-ec2-008", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293532, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 55, + "job_type_name": "xpcshell", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "jmaher@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "X", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "eb0f3cfa1909e95c9d7791a4fca9011246f66b6b", + "start_timestamp": 1377318374, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/55/" + }, + { + "submit_timestamp": 1377293700, + "machine_name": "tst-linux64-ec2-045", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294071, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 237, + "job_type_name": "xpcshell", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "ryanvm@gmail.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "X", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "cd2c2a7127ff8f3ed870776728cacc634150d591", + "start_timestamp": 1377318925, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/237/" + } + ], + "name": null + }, + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377292023, + "machine_name": "tst-linux64-ec2-417", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293700, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 115, + "job_type_name": "mochitest-1", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "8c646ab87200c31e9ec38df751b8c0376e2dc1b6", + "start_timestamp": 1377317255, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/115/" + }, + { + "submit_timestamp": 1377292201, + "machine_name": "tst-linux64-ec2-124", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293911, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 179, + "job_type_name": "mochitest-1", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "6579aeb5cdd8d51266b0f3e5edcf8053f5a6c2b5", + "start_timestamp": 1377317421, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/179/" + }, + { + "submit_timestamp": 1377292023, + "machine_name": "tst-linux64-ec2-067", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293524, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 51, + "job_type_name": "mochitest-2", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "bfba36100eb1df2c890baacc5b19e697a72b4bb6", + "start_timestamp": 1377317224, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/51/" + }, + { + "submit_timestamp": 1377292201, + "machine_name": "tst-linux64-ec2-414", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293747, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 132, + "job_type_name": "mochitest-2", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "16cd5e165a1b02da32d808f236ef1eafcd3f978b", + "start_timestamp": 1377317417, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/132/" + }, + { + "submit_timestamp": 1377290883, + "machine_name": "tst-linux64-ec2-351", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293901, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 175, + "job_type_name": "mochitest-3", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "dzbarsky@gmail.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "1f3bdc3de8ddbefb7ef649cdeea4cc055601324c", + "start_timestamp": 1377316386, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/175/" + }, + { + "submit_timestamp": 1377292023, + "machine_name": "tst-linux64-ec2-105", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293588, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 79, + "job_type_name": "mochitest-4", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c96fd2440bb7458e993697b9ca29f53ec3d5e52e", + "start_timestamp": 1377317225, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/79/" + }, + { + "submit_timestamp": 1377292201, + "machine_name": "tst-linux64-ec2-075", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294108, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 247, + "job_type_name": "mochitest-4", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "38b8ce61f6b5367050d71bc7d49c89d4f9a690ff", + "start_timestamp": 1377317443, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/247/" + }, + { + "submit_timestamp": 1377292023, + "machine_name": "tst-linux64-ec2-086", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293702, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 116, + "job_type_name": "mochitest-5", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "6ec2ddb8eb87abbf6fb7518ee2dde0f3a3d2dea7", + "start_timestamp": 1377317313, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/116/" + }, + { + "submit_timestamp": 1377292201, + "machine_name": "tst-linux64-ec2-114", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293931, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 188, + "job_type_name": "mochitest-5", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "6599871f61fac32c01680d219c0838070c1a194b", + "start_timestamp": 1377317442, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/188/" + }, + { + "submit_timestamp": 1377292201, + "machine_name": "tst-linux64-ec2-028", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293665, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 102, + "job_type_name": "mochitest-6", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "6", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "a492065a7249e980293ebcf02fb25e095c1a4c9a", + "start_timestamp": 1377317443, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/102/" + }, + { + "submit_timestamp": 1377292201, + "machine_name": "tst-linux64-ec2-119", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293452, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 24, + "job_type_name": "mochitest-7", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "7", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "033141b2039bbe5f40d88e9c052b29071ca41a13", + "start_timestamp": 1377317420, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/24/" + }, + { + "submit_timestamp": 1377292023, + "machine_name": "tst-linux64-ec2-065", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293410, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 13, + "job_type_name": "mochitest-8", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "8", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "ab891352a1ff93071353208518c3e5c31ea6e7b0", + "start_timestamp": 1377317292, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/13/" + }, + { + "submit_timestamp": 1377292201, + "machine_name": "tst-linux64-ec2-091", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293486, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 39, + "job_type_name": "mochitest-8", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "8", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f683fdd6f504c43a2fa963b4eeed3fa44318fa8a", + "start_timestamp": 1377317441, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/39/" + }, + { + "submit_timestamp": 1377292023, + "machine_name": "tst-linux64-ec2-090", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293975, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 204, + "job_type_name": "mochitest-9", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "9", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "8ecf177b3d71d881ea2f52342c5a32073948e56a", + "start_timestamp": 1377317276, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/204/" + }, + { + "submit_timestamp": 1377292201, + "machine_name": "tst-linux64-ec2-053", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294092, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 241, + "job_type_name": "mochitest-9", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "9", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "09a3a69bedb71dd72cb0843534095393fa0be552", + "start_timestamp": 1377317452, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/241/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377290883, + "machine_name": "tst-linux64-ec2-092", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294151, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 256, + "job_type_name": "crashtest-1", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "dzbarsky@gmail.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "C1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "9c0ca0bf98297bed4a451b9a8087f8538a73a4e2", + "start_timestamp": 1377316312, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/256/" + }, + { + "submit_timestamp": 1377290883, + "machine_name": "tst-linux64-ec2-061", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293660, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 99, + "job_type_name": "crashtest-2", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "dzbarsky@gmail.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "C2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "b24a0936f17c68af34717ef5a31f2e102fb331ac", + "start_timestamp": 1377316311, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/99/" + }, + { + "submit_timestamp": 1377290883, + "machine_name": "tst-linux64-ec2-413", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293679, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 109, + "job_type_name": "crashtest-3", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "dzbarsky@gmail.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "C3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c81b084f49e9566e4cdb95e52ce4edf0c4a79113", + "start_timestamp": 1377316370, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/109/" + }, + { + "submit_timestamp": 1377292019, + "machine_name": "talos-r3-fed-076", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293738, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 128, + "job_type_name": "reftest-1", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "7f6990ad4536f7c72d38a1731154951d4504ba6a", + "start_timestamp": 1377317220, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/128/" + }, + { + "submit_timestamp": 1377292197, + "machine_name": "talos-r3-fed-099", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293929, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 186, + "job_type_name": "reftest-1", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "4cef0707c38535adf2b3af83227ade1752609527", + "start_timestamp": 1377317414, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/186/" + }, + { + "submit_timestamp": 1377292019, + "machine_name": "talos-r3-fed-096", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293789, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 141, + "job_type_name": "reftest-10", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R10", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "fdacb659802928a5b3c18d68a96f97ee46b0bbed", + "start_timestamp": 1377317220, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/141/" + }, + { + "submit_timestamp": 1377292197, + "machine_name": "talos-r3-fed-030", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293983, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 210, + "job_type_name": "reftest-10", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R10", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "5e97d6088a2e26f847d1bfd12bdc8e8df787ab7b", + "start_timestamp": 1377317415, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/210/" + }, + { + "submit_timestamp": 1377292019, + "machine_name": "talos-r3-fed-062", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293736, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 127, + "job_type_name": "reftest-2", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "8425850d7d1cd10ca140e45c0faf182d3eabfbfe", + "start_timestamp": 1377317221, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/127/" + }, + { + "submit_timestamp": 1377292197, + "machine_name": "talos-r3-fed-086", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293918, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 181, + "job_type_name": "reftest-2", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "a7ca64703fb3a71609f016deb55ef12c530fa8f0", + "start_timestamp": 1377317415, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/181/" + }, + { + "submit_timestamp": 1377292019, + "machine_name": "talos-r3-fed-094", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293823, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 147, + "job_type_name": "reftest-3", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f382535acaa9ee903d90676e671f5e304bb95555", + "start_timestamp": 1377317222, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/147/" + }, + { + "submit_timestamp": 1377292019, + "machine_name": "talos-r3-fed-067", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293835, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 150, + "job_type_name": "reftest-4", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "1beadecd8fef428772a207dd28247a947146ab86", + "start_timestamp": 1377317220, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/150/" + }, + { + "submit_timestamp": 1377292197, + "machine_name": "talos-r3-fed-011", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294210, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 279, + "job_type_name": "reftest-4", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "ec19d206e246a7a8cc4925e5d3679554307dbfff", + "start_timestamp": 1377317416, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/279/" + }, + { + "submit_timestamp": 1377292019, + "machine_name": "talos-r3-fed-058", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293981, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 208, + "job_type_name": "reftest-5", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "4fc869843736e9a56dd2e306eb1f023eb5a106ce", + "start_timestamp": 1377317221, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/208/" + }, + { + "submit_timestamp": 1377292197, + "machine_name": "talos-r3-fed-102", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294147, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 254, + "job_type_name": "reftest-5", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "104a149be628a4ee671cd1335c59a94e815915c9", + "start_timestamp": 1377317414, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/254/" + }, + { + "submit_timestamp": 1377292019, + "machine_name": "talos-r3-fed-028", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294125, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 250, + "job_type_name": "reftest-6", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R6", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c14006c5d81e744abd02c5b09d52f101f76d36a0", + "start_timestamp": 1377317223, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/250/" + }, + { + "submit_timestamp": 1377290160, + "machine_name": "talos-r3-fed-074", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294153, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 258, + "job_type_name": "reftest-7", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "dminor@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R7", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "93a4731e7122f1390e137be5984bbe066d0a4acd", + "start_timestamp": 1377315484, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/258/" + }, + { + "submit_timestamp": 1377292019, + "machine_name": "talos-r3-fed-080", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293569, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 70, + "job_type_name": "reftest-8", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R8", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "7c8164caa1a0444e8202bb51ebf9296bccaca428", + "start_timestamp": 1377317220, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/70/" + }, + { + "submit_timestamp": 1377292197, + "machine_name": "talos-r3-fed-033", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293840, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 151, + "job_type_name": "reftest-8", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R8", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "0ca2de7700082b10c8a41a5c6a709142005093f6", + "start_timestamp": 1377317417, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/151/" + }, + { + "submit_timestamp": 1377292019, + "machine_name": "talos-r3-fed-026", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293934, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 191, + "job_type_name": "reftest-9", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "danderson@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R9", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "aa9eb2ef6d2b1437a7d4ee4e94ac278a0da68e6b", + "start_timestamp": 1377317253, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/191/" + }, + { + "submit_timestamp": 1377292197, + "machine_name": "talos-r3-fed-046", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293992, + "build_platform": "Fedora 12", + "machine_platform_os": "linux", + "job_id": 212, + "job_type_name": "reftest-9", + "platform": "Fedora 12", + "state": "finished", + "build_os": "linux", + "who": "wtc@google.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R9", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "9ec534ba36b66260d5a250df3e207babf1ddadc9", + "start_timestamp": 1377317415, + "build_architecture": "x86", + "build_platform_id": 11, + "resource_uri": "/api/project/mozilla-inbound/jobs/212/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "green", + "name": "OS X 10.6 debug", + "groups": [ + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377291600, + "machine_name": "talos-r4-lion-012", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293416, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 18, + "job_type_name": "mochitest-2", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "44490c7527741161f33548f89195bfe412a5cac3", + "start_timestamp": 1377317206, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/18/" + }, + { + "submit_timestamp": 1377291600, + "machine_name": "talos-r4-snow-038", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293671, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 104, + "job_type_name": "mochitest-2", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "58097c99462899221a3e7d9a4e9274e3aa2992ff", + "start_timestamp": 1377317533, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/104/" + }, + { + "submit_timestamp": 1377291600, + "machine_name": "talos-r4-lion-041", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293913, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 180, + "job_type_name": "mochitest-4", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "d72bfc94d8c954fda534f656dc75c344908b0205", + "start_timestamp": 1377318362, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/180/" + }, + { + "submit_timestamp": 1377291600, + "machine_name": "talos-r4-snow-029", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293922, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 183, + "job_type_name": "mochitest-4", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "fea0c5f97f384ef458cfd0cce313ee59fb0a91a0", + "start_timestamp": 1377318397, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/183/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377291600, + "machine_name": "talos-r4-lion-050", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294031, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 221, + "job_type_name": "crashtest", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "C", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f5db2a15f700c28766bce87649167854a5eb0144", + "start_timestamp": 1377318385, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/221/" + }, + { + "submit_timestamp": 1377291600, + "machine_name": "talos-r4-lion-019", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293740, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 130, + "job_type_name": "jsreftest", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "1a418dff7d74bf5bdedd64e50444d3311669edd7", + "start_timestamp": 1377317417, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/130/" + }, + { + "submit_timestamp": 1377291600, + "machine_name": "talos-r4-snow-036", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293880, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 167, + "job_type_name": "jsreftest", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "dd11416a9546152149ffb074904498ddece6c5e9", + "start_timestamp": 1377317455, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/167/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "green", + "name": "OS X 10.6 opt", + "groups": [ + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377291658, + "machine_name": "talos-r4-lion-054", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293806, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 144, + "job_type_name": "mochitest-5", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "95b882ea66d532ed55f9f55a96e38aa2fff7760d", + "start_timestamp": 1377318449, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/144/" + }, + { + "submit_timestamp": 1377289137, + "machine_name": "talos-r4-lion-072", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293581, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 77, + "job_type_name": "mochitest-browser-chrome", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "bc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "e6673438a7ede430ccc924ca009209a53d696fe2", + "start_timestamp": 1377316656, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/77/" + } + ], + "name": "mochitest" + }, + { + "symbol": "T", + "jobs": [ + { + "submit_timestamp": 1377289734, + "machine_name": "talos-r4-lion-061", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294038, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 223, + "job_type_name": "chromez", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "c", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f5d439930a13e74dc19c60e469c81848a09b2b8d", + "start_timestamp": 1377318246, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/223/" + }, + { + "submit_timestamp": 1377291654, + "machine_name": "talos-r4-lion-022", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294001, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 215, + "job_type_name": "dirtypaint", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "p", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "a52167c3037a00c917f9bb7f001c2889ecdc5078", + "start_timestamp": 1377318422, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/215/" + }, + { + "submit_timestamp": 1377289734, + "machine_name": "talos-r4-lion-082", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293582, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 78, + "job_type_name": "svgr", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "s", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "a0876a7207a21350164d96af9e4fdd8fd34891cf", + "start_timestamp": 1377318179, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/78/" + }, + { + "submit_timestamp": 1377289734, + "machine_name": "talos-r4-lion-080", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293949, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 197, + "job_type_name": "tp5o", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "tp", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "25b372b66554c23f1932a5f049c6d9ffcdb1d320", + "start_timestamp": 1377318178, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/197/" + } + ], + "name": "talos" + } + ] + }, + { + "warning_level": "green", + "name": "OS X 10.8 debug", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377291597, + "machine_name": "talos-mtnlion-r5-044", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293494, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 42, + "job_type_name": "xpcshell", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "X", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "97f1500f5e509d8d42cd7275ffe0319475cbc385", + "start_timestamp": 1377316949, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/42/" + } + ], + "name": null + }, + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377291597, + "machine_name": "talos-mtnlion-r5-055", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293661, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 101, + "job_type_name": "mochitest-1", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "9689eb1ebc2f5a73a2a4f32947db131263be0619", + "start_timestamp": 1377316831, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/101/" + }, + { + "submit_timestamp": 1377291959, + "machine_name": "talos-mtnlion-r5-047", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294162, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 261, + "job_type_name": "mochitest-2", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "e710a327e3a191fd26bddf37310bb55c40efd6ad", + "start_timestamp": 1377318204, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/261/" + }, + { + "submit_timestamp": 1377291597, + "machine_name": "talos-mtnlion-r5-015", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293612, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 88, + "job_type_name": "mochitest-3", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "d7991325cc4e0be51c1d63ae152f9999c40f1755", + "start_timestamp": 1377316897, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/88/" + }, + { + "submit_timestamp": 1377291959, + "machine_name": "talos-mtnlion-r5-069", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293461, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 26, + "job_type_name": "mochitest-4", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "3e8719c70015fdce7e1ff867983ee27864c123de", + "start_timestamp": 1377318022, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/26/" + }, + { + "submit_timestamp": 1377291959, + "machine_name": "talos-mtnlion-r5-003", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293901, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 176, + "job_type_name": "mochitest-5", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f499a39bb7635d72ae7fdc281a0f7c42dd397adb", + "start_timestamp": 1377318191, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/176/" + }, + { + "submit_timestamp": 1377291597, + "machine_name": "talos-mtnlion-r5-080", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293525, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 52, + "job_type_name": "mochitest-other", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "oth", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "6c7d46e071ef459659b2cb8a8356b1fd058d6538", + "start_timestamp": 1377316904, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/52/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377291959, + "machine_name": "talos-mtnlion-r5-070", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293570, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 71, + "job_type_name": "crashtest", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "C", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "ddac5081533e41967fadf0270fd427546d91afc4", + "start_timestamp": 1377318080, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/71/" + }, + { + "submit_timestamp": 1377291959, + "machine_name": "talos-mtnlion-r5-025", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294103, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 243, + "job_type_name": "jsreftest", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "ae688c56c55fbdf757a77b16876116f18c880d57", + "start_timestamp": 1377318027, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/243/" + }, + { + "submit_timestamp": 1377291597, + "machine_name": "talos-mtnlion-r5-083", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294061, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 232, + "job_type_name": "reftest", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "R", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "cec1dae2088551e970c7711cf3cea672738a8e30", + "start_timestamp": 1377316919, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/232/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "green", + "name": "OS X 10.8 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377290932, + "machine_name": "talos-mtnlion-r5-082", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293873, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 165, + "job_type_name": "xpcshell", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "X", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "326432408bf1401eb0e373049f03a318cf62768d", + "start_timestamp": 1377317593, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/165/" + } + ], + "name": null + }, + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377290932, + "machine_name": "talos-mtnlion-r5-031", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293400, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 10, + "job_type_name": "mochitest-1", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f1f945984bd98dc18d9c89a9227856a17110ddbf", + "start_timestamp": 1377317564, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/10/" + }, + { + "submit_timestamp": 1377292253, + "machine_name": "talos-mtnlion-r5-049", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293677, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 107, + "job_type_name": "mochitest-2", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "2db9539610c132026d225c0e24aa2938074a3993", + "start_timestamp": 1377318352, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/107/" + }, + { + "submit_timestamp": 1377292253, + "machine_name": "talos-mtnlion-r5-061", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294208, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 276, + "job_type_name": "mochitest-3", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "53348cae4a62208c444d2e4fb20cae5a01a8c2c7", + "start_timestamp": 1377318356, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/276/" + }, + { + "submit_timestamp": 1377292253, + "machine_name": "talos-mtnlion-r5-026", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293533, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 56, + "job_type_name": "mochitest-4", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "b350f03e812ced75d2b6bd0ddde6ff21da5e8871", + "start_timestamp": 1377318347, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/56/" + }, + { + "submit_timestamp": 1377292253, + "machine_name": "talos-mtnlion-r5-062", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293674, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 106, + "job_type_name": "mochitest-5", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "0d84b087f13ccb31d53fe5d5544025b713059182", + "start_timestamp": 1377318366, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/106/" + }, + { + "submit_timestamp": 1377289732, + "machine_name": "talos-mtnlion-r5-045", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293872, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 164, + "job_type_name": "mochitest-browser-chrome", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "bc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "10019f0d973ad7be6194713ba15e8aaf271bdce5", + "start_timestamp": 1377317363, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/164/" + }, + { + "submit_timestamp": 1377292253, + "machine_name": "talos-mtnlion-r5-039", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294173, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 264, + "job_type_name": "mochitest-other", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "oth", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "93f893c5365e5e24fb88ae68a4d5e0f298b6a5bf", + "start_timestamp": 1377318446, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/264/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377292253, + "machine_name": "talos-mtnlion-r5-058", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293766, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 137, + "job_type_name": "jsreftest", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "88af06b9c9674f8ed72da59fd549198cf475d7e0", + "start_timestamp": 1377318398, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/137/" + } + ], + "name": "reftest" + }, + { + "symbol": "T", + "jobs": [ + { + "submit_timestamp": 1377290874, + "machine_name": "talos-mtnlion-r5-052", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293367, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 3, + "job_type_name": "chromez", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "c", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "ef966471cf7325436ef2c078fc2c3248e5338762", + "start_timestamp": 1377317558, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/3/" + }, + { + "submit_timestamp": 1377290874, + "machine_name": "talos-mtnlion-r5-042", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293936, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 192, + "job_type_name": "dromaeojs", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "d", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "925867b4a99238362be3632e40f85f17bd3a2d44", + "start_timestamp": 1377317548, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/192/" + }, + { + "submit_timestamp": 1377291654, + "machine_name": "talos-mtnlion-r5-088", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293529, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 54, + "job_type_name": "dirtypaint", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "p", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "5d900dad10f79c5cbe8fa7e6ea1500a536eba304", + "start_timestamp": 1377317924, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/54/" + } + ], + "name": "talos" + } + ] + }, + { + "warning_level": "green", + "name": "Rev3 WINNT 6.1 debug", + "groups": [ + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377292020, + "machine_name": "t-w732-ix-037", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294087, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 240, + "job_type_name": "mochitest-2", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "454cc060a3235eb672586cdf148f228feccc9a48", + "start_timestamp": 1377318111, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/240/" + }, + { + "submit_timestamp": 1377292020, + "machine_name": "t-w732-ix-034", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293552, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 63, + "job_type_name": "mochitest-4", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "0bb0138ab31674e9291cf8b78b7a2dbc90c89f23", + "start_timestamp": 1377318112, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/63/" + }, + { + "submit_timestamp": 1377292020, + "machine_name": "t-w732-ix-053", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293866, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 162, + "job_type_name": "mochitest-5", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "13da2ff301db708cedd8a28b621353a7583de5a1", + "start_timestamp": 1377318131, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/162/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377292020, + "machine_name": "t-w732-ix-097", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293765, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 134, + "job_type_name": "crashtest", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "C", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c377c566b608eadea388c10a2b5cb8c9992df1aa", + "start_timestamp": 1377318108, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/134/" + }, + { + "submit_timestamp": 1377290700, + "machine_name": "t-w732-ix-074", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293578, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 75, + "job_type_name": "reftest", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "R", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "66c807970086df3ede4b6c1d5d13e69d16093293", + "start_timestamp": 1377316404, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/75/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "green", + "name": "Rev3 WINNT 6.1 opt", + "groups": [ + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377291416, + "machine_name": "t-w732-ix-071", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293636, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 94, + "job_type_name": "mochitest-1", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c8b3caf3b0b7898d63600eaf6b6419e05f9ec8ed", + "start_timestamp": 1377317513, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/94/" + }, + { + "submit_timestamp": 1377291471, + "machine_name": "t-w732-ix-028", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294192, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 269, + "job_type_name": "mochitest-1", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "2fc9445d34492d57102bafd4ec90e7facb383e39", + "start_timestamp": 1377318027, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/269/" + }, + { + "submit_timestamp": 1377291471, + "machine_name": "t-w732-ix-020", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293360, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 1, + "job_type_name": "mochitest-2", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "e721f5ca774565f358d2eaa77cfe5f0c8669b402", + "start_timestamp": 1377318001, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/1/" + }, + { + "submit_timestamp": 1377293391, + "machine_name": "t-w732-ix-018", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294034, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 222, + "job_type_name": "mochitest-2", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "8aaac951c34e07afab08d42dad45ab9a8876dc5b", + "start_timestamp": 1377318616, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/222/" + }, + { + "submit_timestamp": 1377291416, + "machine_name": "t-w732-ix-073", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293719, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 122, + "job_type_name": "mochitest-3", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "e64224cc79060789ed54707a08e79287a8ed17bd", + "start_timestamp": 1377317615, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/122/" + }, + { + "submit_timestamp": 1377291471, + "machine_name": "t-w732-ix-126", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294074, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 239, + "job_type_name": "mochitest-3", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "420cfdb5df0a2036a3a85d7d00156562072c2fe4", + "start_timestamp": 1377318002, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/239/" + }, + { + "submit_timestamp": 1377293391, + "machine_name": "t-w732-ix-124", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294018, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 219, + "job_type_name": "mochitest-4", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "8822d10ae457e34b7a3122e504ede28caf4f3344", + "start_timestamp": 1377318766, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/219/" + }, + { + "submit_timestamp": 1377293391, + "machine_name": "t-w732-ix-042", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294062, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 233, + "job_type_name": "mochitest-5", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "38b161ddef08722f8163ba37adcc9bc4eaf71bde", + "start_timestamp": 1377318752, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/233/" + }, + { + "submit_timestamp": 1377291416, + "machine_name": "t-w732-ix-025", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294135, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 252, + "job_type_name": "mochitest-browser-chrome", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "bc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "960377c2ee4eb28b947c8c2516616a6c093d55e5", + "start_timestamp": 1377317543, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/252/" + }, + { + "submit_timestamp": 1377291471, + "machine_name": "t-w732-ix-092", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293725, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 125, + "job_type_name": "mochitest-other", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "oth", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "495c251f4c353c0363b0631c9d5563ba9e2a2af5", + "start_timestamp": 1377318021, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/125/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377293391, + "machine_name": "t-w732-ix-125", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293973, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 202, + "job_type_name": "crashtest", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "C", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "be464820a9d7c950dedf694b0ccc6c1d60e581d3", + "start_timestamp": 1377318597, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/202/" + }, + { + "submit_timestamp": 1377291471, + "machine_name": "t-w732-ix-124", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293509, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 47, + "job_type_name": "jsreftest", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "4898723d6e28e774b42ab655d441079fb831fd08", + "start_timestamp": 1377318065, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/47/" + }, + { + "submit_timestamp": 1377293391, + "machine_name": "t-w732-ix-020", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294041, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 225, + "job_type_name": "jsreftest", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "96186245b9c7a3e154c68ef97103d8f4dad6aa31", + "start_timestamp": 1377318619, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/225/" + }, + { + "submit_timestamp": 1377291416, + "machine_name": "t-w732-ix-019", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293550, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 62, + "job_type_name": "reftest", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "982cbc15c19001f4b2593ee465d168d3410de9fb", + "start_timestamp": 1377317505, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/62/" + }, + { + "submit_timestamp": 1377291471, + "machine_name": "t-w732-ix-061", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293703, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 117, + "job_type_name": "reftest", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "4646fe1bd430aa28ba6f4f672125944e2553246c", + "start_timestamp": 1377317875, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/117/" + }, + { + "submit_timestamp": 1377291416, + "machine_name": "t-w732-ix-029", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293566, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 68, + "job_type_name": "reftest-no-accel", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "Ru", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "699b39858fde39403e2b38f920fb6d8d547bb348", + "start_timestamp": 1377317520, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/68/" + }, + { + "submit_timestamp": 1377291471, + "machine_name": "t-w732-ix-081", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293865, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 161, + "job_type_name": "reftest-no-accel", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "Ru", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "35dd880bcee21a6db97367bdfe854885f96d6a60", + "start_timestamp": 1377317965, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/161/" + } + ], + "name": "reftest" + }, + { + "symbol": "T", + "jobs": [ + { + "submit_timestamp": 1377291421, + "machine_name": "t-w732-ix-082", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293559, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 65, + "job_type_name": "chromez", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "c", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c1621492f9af427648fee571341b94c433fc5de9", + "start_timestamp": 1377317791, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/65/" + }, + { + "submit_timestamp": 1377291419, + "machine_name": "t-w732-ix-080", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293607, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 85, + "job_type_name": "chromez", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "c", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "1e4c9f9777116ec19babb02a12a1126a3e5a96f6", + "start_timestamp": 1377317736, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/85/" + }, + { + "submit_timestamp": 1377291419, + "machine_name": "t-w732-ix-054", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294194, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 270, + "job_type_name": "dromaeojs", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "d", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "dac8bd11cc985b9581d4269fa82e2e41d2fcbee6", + "start_timestamp": 1377317684, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/270/" + }, + { + "submit_timestamp": 1377291421, + "machine_name": "t-w732-ix-039", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293508, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 46, + "job_type_name": "other", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "o", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "b5028ea69a3af3f20c880fb9b84818076e3bd719", + "start_timestamp": 1377317763, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/46/" + }, + { + "submit_timestamp": 1377291419, + "machine_name": "t-w732-ix-048", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293563, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 66, + "job_type_name": "other", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "o", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "e5ad14e6c21dfe3b6159dfee90ad7f949b1aba46", + "start_timestamp": 1377317675, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/66/" + }, + { + "submit_timestamp": 1377291421, + "machine_name": "t-w732-ix-042", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293492, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 40, + "job_type_name": "dirtypaint", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "p", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "79f03edbaf8f1fd2a73dda39b8e93bb09dac556a", + "start_timestamp": 1377317828, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/40/" + }, + { + "submit_timestamp": 1377293401, + "machine_name": "t-w732-ix-083", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294166, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 262, + "job_type_name": "svgr", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "s", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "e3eeafb9e6c751d8a8f57104073c75ff6b7993a2", + "start_timestamp": 1377318824, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/262/" + }, + { + "submit_timestamp": 1377291419, + "machine_name": "t-w732-ix-109", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293462, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 27, + "job_type_name": "tp5o", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "tp", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "5807b0509d4fa5823d0ce6db5d9b379702a079ed", + "start_timestamp": 1377317673, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/27/" + }, + { + "submit_timestamp": 1377291421, + "machine_name": "t-w732-ix-007", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293535, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 57, + "job_type_name": "tp5o", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "tp", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "668fd4edaa9c8b751409ac0bc5a5b3b3903d8bb2", + "start_timestamp": 1377317823, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/57/" + }, + { + "submit_timestamp": 1377293401, + "machine_name": "t-w732-ix-105", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294073, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 238, + "job_type_name": "xperf", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "x", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "fb87eebdeb2139843ebd3b3cc9b42d27a928e62c", + "start_timestamp": 1377318828, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/238/" + } + ], + "name": "talos" + } + ] + }, + { + "warning_level": "red", + "name": "Ubuntu 12.04 debug", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377293036, + "machine_name": "tst-linux32-ec2-303", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293443, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 23, + "job_type_name": "marionette", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "Mn", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "db3e23027cd330903969db536d8fa36ed1fe8d81", + "start_timestamp": 1377318250, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/23/" + }, + { + "submit_timestamp": 1377293216, + "machine_name": "tst-linux32-ec2-062", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293687, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 113, + "job_type_name": "marionette", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "Mn", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "7012738f1cd74c6d776622f5e478ca78893a977f", + "start_timestamp": 1377318420, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/113/" + }, + { + "submit_timestamp": 1377289436, + "machine_name": "tst-linux32-ec2-327", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293614, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 90, + "job_type_name": "xpcshell", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "X", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "ccbb0df69e3b5bd4b692d9f7142a5db156a895f8", + "start_timestamp": 1377314643, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/90/" + } + ], + "name": null + }, + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377289857, + "machine_name": "tst-linux32-ec2-110", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293651, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 98, + "job_type_name": "mochitest-1", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "cf0e6f337d2c56e438ff7e3ce8f6a2aa2c55b48a", + "start_timestamp": 1377315176, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/98/" + }, + { + "submit_timestamp": 1377289976, + "machine_name": "tst-linux32-ec2-398", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293919, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 182, + "job_type_name": "mochitest-1", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "6ad5fe58f4f626cc3c290fe435f163c728f1786f", + "start_timestamp": 1377315390, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/182/" + }, + { + "submit_timestamp": 1377290936, + "machine_name": "tst-linux32-ec2-309", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293541, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 59, + "job_type_name": "mochitest-3", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "84261f7f68bc360545501df77b783592ac0063dd", + "start_timestamp": 1377316147, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/59/" + }, + { + "submit_timestamp": 1377293036, + "machine_name": "tst-linux32-ec2-304", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293979, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 205, + "job_type_name": "mochitest-4", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "2fc5a2bff118d076f85e9f3020b03357fe58cb1d", + "start_timestamp": 1377318247, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/205/" + }, + { + "submit_timestamp": 1377289436, + "machine_name": "tst-linux32-ec2-369", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "testfailed", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293570, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 72, + "job_type_name": "mochitest-other", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "oth", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "43be34aa64d2f04c136126f7db775403bbf2b524", + "start_timestamp": 1377314640, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/72/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377290936, + "machine_name": "tst-linux32-ec2-056", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293556, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 64, + "job_type_name": "jsreftest", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "b58c84b2874f628321503c6465e2899626a72b29", + "start_timestamp": 1377316141, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/64/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "red", + "name": "Ubuntu 12.04 opt", + "groups": [ + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377293451, + "machine_name": "tst-linux32-ec2-056", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294192, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 268, + "job_type_name": "mochitest-2", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c0a4922398ce7f55dfcfb288e6b1eea9ff204944", + "start_timestamp": 1377318688, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/268/" + }, + { + "submit_timestamp": 1377292376, + "machine_name": "tst-linux32-ec2-145", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293765, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 135, + "job_type_name": "mochitest-3", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "83c06874d00e103f1814bdd8a357723c1eb42989", + "start_timestamp": 1377317580, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/135/" + }, + { + "submit_timestamp": 1377293451, + "machine_name": "tst-linux32-ec2-122", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293998, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 214, + "job_type_name": "mochitest-4", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "2c101fa538956dd9dc213ccac490c72e3d5770c4", + "start_timestamp": 1377318679, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/214/" + }, + { + "submit_timestamp": 1377292376, + "machine_name": "tst-linux32-ec2-046", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293432, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 21, + "job_type_name": "mochitest-5", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "8f9156426a8601380c86465bf4d36f8023f83df6", + "start_timestamp": 1377317586, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/21/" + }, + { + "submit_timestamp": 1377290457, + "machine_name": "tst-linux32-ec2-137", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293395, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 8, + "job_type_name": "mochitest-browser-chrome", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "bc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "37067663699850d35cc620a540650ec18db633e0", + "start_timestamp": 1377315768, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/8/" + }, + { + "submit_timestamp": 1377290511, + "machine_name": "tst-linux32-ec2-354", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293395, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 9, + "job_type_name": "mochitest-browser-chrome", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "bc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "107322743171f42c2693d6be67003b7d09c49abd", + "start_timestamp": 1377316001, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/9/" + }, + { + "submit_timestamp": 1377292376, + "machine_name": "tst-linux32-ec2-343", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293711, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 119, + "job_type_name": "mochitest-other", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "oth", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "65ecfc97230e05a1907807609004355feef821d8", + "start_timestamp": 1377317585, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/119/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377293451, + "machine_name": "tst-linux32-ec2-069", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293966, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 198, + "job_type_name": "crashtest", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "C", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "a08d7ec03e97d25d2f8cfa99980a70c1425dd107", + "start_timestamp": 1377318679, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/198/" + }, + { + "submit_timestamp": 1377293451, + "machine_name": "tst-linux32-ec2-120", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294007, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 217, + "job_type_name": "crashtest-ipc", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "Cipc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "1d234de724441781fba5b58f31e7a815318fcb63", + "start_timestamp": 1377318683, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/217/" + }, + { + "submit_timestamp": 1377292376, + "machine_name": "tst-linux32-ec2-086", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293550, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 61, + "job_type_name": "jsreftest", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "ccefcc9a80d99e74cadaa204c9bad86ccfb2803a", + "start_timestamp": 1377317588, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/61/" + }, + { + "submit_timestamp": 1377288895, + "machine_name": "tst-linux32-ec2-377", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "testfailed", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293492, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 41, + "job_type_name": "reftest", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "50579868525aed67cd05f7c6c1b8d7b1a97731d8", + "start_timestamp": 1377314128, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/41/" + }, + { + "submit_timestamp": 1377289797, + "machine_name": "tst-linux32-ec2-093", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294155, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 259, + "job_type_name": "reftest", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "R", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "710f5ac3edd834332da3f8ae945a7f787c49bac8", + "start_timestamp": 1377315003, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/259/" + }, + { + "submit_timestamp": 1377293451, + "machine_name": "tst-linux32-ec2-111", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293721, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 123, + "job_type_name": "reftest-ipc", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "Ripc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "cac4a0b3ac812c035ad290a88fa02e5ed4750bb3", + "start_timestamp": 1377318681, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/123/" + }, + { + "submit_timestamp": 1377289797, + "machine_name": "tst-linux32-ec2-007", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293775, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 138, + "job_type_name": "reftest-no-accel", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "Ru", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "dd1c7596c35877f094140aba55ad525a41fe24ed", + "start_timestamp": 1377315014, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/138/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "green", + "name": "Ubuntu HW 12.04 opt", + "groups": [ + { + "symbol": "T", + "jobs": [ + { + "submit_timestamp": 1377292673, + "machine_name": "talos-linux64-ix-010", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293620, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 91, + "job_type_name": "chromez", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "c", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "3b3d51537eb6ea94a658e70c51008de6ded46219", + "start_timestamp": 1377317877, + "build_architecture": "x86_64", + "build_platform_id": 13, + "resource_uri": "/api/project/mozilla-inbound/jobs/91/" + }, + { + "submit_timestamp": 1377292914, + "machine_name": "talos-linux64-ix-045", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293934, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 190, + "job_type_name": "chromez", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "c", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "24077676a35a297760306c7e8e976afe03420481", + "start_timestamp": 1377318156, + "build_architecture": "x86_64", + "build_platform_id": 13, + "resource_uri": "/api/project/mozilla-inbound/jobs/190/" + }, + { + "submit_timestamp": 1377292320, + "machine_name": "talos-linux32-ix-014", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293860, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 159, + "job_type_name": "dromaeojs", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "d", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "9f72680b1faa2d73b8ed14219df07a608cc76680", + "start_timestamp": 1377317546, + "build_architecture": "x86", + "build_platform_id": 15, + "resource_uri": "/api/project/mozilla-inbound/jobs/159/" + }, + { + "submit_timestamp": 1377292673, + "machine_name": "talos-linux64-ix-050", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294175, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 265, + "job_type_name": "dromaeojs", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "d", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "392db08145226e3f7bf60c1b1f850ce3a030c8d3", + "start_timestamp": 1377317881, + "build_architecture": "x86_64", + "build_platform_id": 13, + "resource_uri": "/api/project/mozilla-inbound/jobs/265/" + }, + { + "submit_timestamp": 1377292320, + "machine_name": "talos-linux32-ix-022", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293466, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 29, + "job_type_name": "other", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "o", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "914879b8675ba45c8f119ef8a1b72ebef89fac26", + "start_timestamp": 1377317549, + "build_architecture": "x86", + "build_platform_id": 15, + "resource_uri": "/api/project/mozilla-inbound/jobs/29/" + }, + { + "submit_timestamp": 1377292673, + "machine_name": "talos-linux64-ix-047", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293673, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 105, + "job_type_name": "other", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "o", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "ca2f6e500bb3b85f879733f36c4cd91837b5f337", + "start_timestamp": 1377317878, + "build_architecture": "x86_64", + "build_platform_id": 13, + "resource_uri": "/api/project/mozilla-inbound/jobs/105/" + }, + { + "submit_timestamp": 1377292914, + "machine_name": "talos-linux64-ix-016", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293924, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 184, + "job_type_name": "other", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "o", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "93416c53f29f456f6c95a063ac1f6c2d7a9c2fbb", + "start_timestamp": 1377318167, + "build_architecture": "x86_64", + "build_platform_id": 13, + "resource_uri": "/api/project/mozilla-inbound/jobs/184/" + }, + { + "submit_timestamp": 1377292673, + "machine_name": "talos-linux64-ix-020", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293413, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 16, + "job_type_name": "dirtypaint", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "p", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "e0aef0c216f476da6738cc54897abe57ed34095c", + "start_timestamp": 1377317881, + "build_architecture": "x86_64", + "build_platform_id": 13, + "resource_uri": "/api/project/mozilla-inbound/jobs/16/" + }, + { + "submit_timestamp": 1377292914, + "machine_name": "talos-linux64-ix-012", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293715, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 121, + "job_type_name": "dirtypaint", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "p", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "b8553a077c94fdb4c2a79ef4302a3290dcbbc53f", + "start_timestamp": 1377318169, + "build_architecture": "x86_64", + "build_platform_id": 13, + "resource_uri": "/api/project/mozilla-inbound/jobs/121/" + }, + { + "submit_timestamp": 1377292914, + "machine_name": "talos-linux64-ix-042", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293480, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 36, + "job_type_name": "svgr", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "s", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "d870915f6c0d54948430855ddd00d35f3680f925", + "start_timestamp": 1377318167, + "build_architecture": "x86_64", + "build_platform_id": 13, + "resource_uri": "/api/project/mozilla-inbound/jobs/36/" + }, + { + "submit_timestamp": 1377292673, + "machine_name": "talos-linux64-ix-002", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293508, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 45, + "job_type_name": "svgr", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "s", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "980323accfaac231abea8b83458d8770b92d7dd6", + "start_timestamp": 1377317883, + "build_architecture": "x86_64", + "build_platform_id": 13, + "resource_uri": "/api/project/mozilla-inbound/jobs/45/" + }, + { + "submit_timestamp": 1377293450, + "machine_name": "talos-linux32-ix-003", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294069, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 236, + "job_type_name": "svgr", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "s", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "46f70566b3496d077fe260f64131b93d25e3481b", + "start_timestamp": 1377318668, + "build_architecture": "x86", + "build_platform_id": 15, + "resource_uri": "/api/project/mozilla-inbound/jobs/236/" + }, + { + "submit_timestamp": 1377292673, + "machine_name": "talos-linux64-ix-014", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293509, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 48, + "job_type_name": "tp5o", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "tp", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "5410c1742832876e3391e34e221b14930b2953e6", + "start_timestamp": 1377317879, + "build_architecture": "x86_64", + "build_platform_id": 13, + "resource_uri": "/api/project/mozilla-inbound/jobs/48/" + }, + { + "submit_timestamp": 1377292914, + "machine_name": "talos-linux64-ix-048", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293747, + "build_platform": "Ubuntu HW 12.04", + "machine_platform_os": "linux", + "job_id": 131, + "job_type_name": "tp5o", + "platform": "Ubuntu HW 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "tp", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "5ec4a2b318c838d8e03ce1a28a53d03b4e4d6f44", + "start_timestamp": 1377318168, + "build_architecture": "x86_64", + "build_platform_id": 13, + "resource_uri": "/api/project/mozilla-inbound/jobs/131/" + } + ], + "name": "talos" + } + ] + }, + { + "warning_level": "red", + "name": "Ubuntu VM 12.04 debug", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377293572, + "machine_name": "tst-linux64-ec2-134", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293987, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 211, + "job_type_name": "marionette", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "Mn", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "eaf4b826fe62729033c4212c4912859ab7c76617", + "start_timestamp": 1377318776, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/211/" + }, + { + "submit_timestamp": 1377290213, + "machine_name": "tst-linux64-ec2-365", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293707, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 118, + "job_type_name": "xpcshell", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "X", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "579cd7dab216deddc682c7837bfb9f1ca8321a67", + "start_timestamp": 1377315421, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/118/" + }, + { + "submit_timestamp": 1377290632, + "machine_name": "tst-linux64-ec2-070", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294103, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 244, + "job_type_name": "xpcshell", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "X", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "fa3c149a0dd97f3fe0a2b964d392c34e904a2d7b", + "start_timestamp": 1377315847, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/244/" + } + ], + "name": null + }, + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377290632, + "machine_name": "tst-linux64-ec2-388", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293391, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 7, + "job_type_name": "mochitest-1", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "99ecf19cc2745474afb89310390d45751835c4e2", + "start_timestamp": 1377315844, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/7/" + }, + { + "submit_timestamp": 1377291412, + "machine_name": "tst-linux64-ec2-438", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293996, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 213, + "job_type_name": "mochitest-1", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c390ddaa8675f9c1f0cd18918424a1e5ca79092e", + "start_timestamp": 1377316617, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/213/" + }, + { + "submit_timestamp": 1377291412, + "machine_name": "tst-linux64-ec2-449", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293784, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 140, + "job_type_name": "mochitest-3", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "987d7ad9c57254dc1783ebc966b2d36b4b63de3c", + "start_timestamp": 1377316906, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/140/" + }, + { + "submit_timestamp": 1377291412, + "machine_name": "tst-linux64-ec2-095", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293403, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 11, + "job_type_name": "mochitest-other", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "oth", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "bfdd94dbd07b57a3524b50b8061d277a31718d49", + "start_timestamp": 1377316632, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/11/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377290213, + "machine_name": "tst-linux64-ec2-350", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "testfailed", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293373, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 4, + "job_type_name": "reftest", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "R", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "1d79afee45e64b26a68de59ec365b8e3cf04bbb8", + "start_timestamp": 1377315422, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/4/" + }, + { + "submit_timestamp": 1377290632, + "machine_name": "tst-linux64-ec2-087", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "testfailed", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293851, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 155, + "job_type_name": "reftest", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "R", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "6621516957d532960343022b6334835fd24f2391", + "start_timestamp": 1377315845, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/155/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "green", + "name": "Ubuntu VM 12.04 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377291776, + "machine_name": "tst-linux64-ec2-375", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294104, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 245, + "job_type_name": "xpcshell", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "X", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "db59d6e8409b869f70dd4f9cb46d232b2730e4a4", + "start_timestamp": 1377317188, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/245/" + } + ], + "name": null + }, + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377291776, + "machine_name": "tst-linux64-ec2-035", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293738, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 129, + "job_type_name": "mochitest-1", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "a367c29e6d6a78caa30fda045d9afb955aaefeeb", + "start_timestamp": 1377317199, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/129/" + }, + { + "submit_timestamp": 1377292913, + "machine_name": "tst-linux64-ec2-441", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293528, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 53, + "job_type_name": "mochitest-2", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "479cb755bd142b2fadb364a9c24e7812e5d6c7a9", + "start_timestamp": 1377318115, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/53/" + }, + { + "submit_timestamp": 1377292673, + "machine_name": "tst-linux64-ec2-419", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293944, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 194, + "job_type_name": "mochitest-3", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "342e6312400152a9f500f66a99e55d26f9bae657", + "start_timestamp": 1377317882, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/194/" + }, + { + "submit_timestamp": 1377292913, + "machine_name": "tst-linux64-ec2-017", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294131, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 251, + "job_type_name": "mochitest-3", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "697f32189c95ff1bbb68ec44ce2baac6bbf82501", + "start_timestamp": 1377318126, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/251/" + }, + { + "submit_timestamp": 1377292913, + "machine_name": "tst-linux64-ec2-066", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293545, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 60, + "job_type_name": "mochitest-5", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "2db193fbec65f2f714069f03b2b377f4eb60a1e8", + "start_timestamp": 1377318124, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/60/" + }, + { + "submit_timestamp": 1377292673, + "machine_name": "tst-linux64-ec2-036", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293832, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 149, + "job_type_name": "mochitest-other", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "oth", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "58ad5f78c077bdbaf612ef38ab62ea0f49eca3f6", + "start_timestamp": 1377317879, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/149/" + }, + { + "submit_timestamp": 1377292913, + "machine_name": "tst-linux64-ec2-411", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293980, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 207, + "job_type_name": "mochitest-other", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "oth", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "27be4fc5fd6e5712dcfc64c80bd82c6e7c1313d7", + "start_timestamp": 1377318114, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/207/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377292673, + "machine_name": "tst-linux64-ec2-437", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293690, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 114, + "job_type_name": "jsreftest", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "a2835fda004f287a0c1160086c98837f30ff96a8", + "start_timestamp": 1377317885, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/114/" + }, + { + "submit_timestamp": 1377292913, + "machine_name": "tst-linux64-ec2-131", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293896, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 172, + "job_type_name": "jsreftest", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "54467a64417340a9c27b2b520bf0ae6b3409384f", + "start_timestamp": 1377318129, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/172/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "green", + "name": "WINNT 5.1 debug", + "groups": [ + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377292072, + "machine_name": "t-xp32-ix-101", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293384, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 6, + "job_type_name": "mochitest-2", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "1b7447918328e16ff01f0fb5bf8a832cc70627e8", + "start_timestamp": 1377317538, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/6/" + }, + { + "submit_timestamp": 1377292372, + "machine_name": "t-xp32-ix-128", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293681, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 110, + "job_type_name": "mochitest-2", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "2456fd80359da6f73f5c13cc27e23b8fb078b07b", + "start_timestamp": 1377317837, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/110/" + }, + { + "submit_timestamp": 1377292072, + "machine_name": "t-xp32-ix-105", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294209, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 277, + "job_type_name": "mochitest-3", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "6af1d01cb33c322a2bf2b438e78735047cd0e67c", + "start_timestamp": 1377317653, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/277/" + }, + { + "submit_timestamp": 1377292372, + "machine_name": "t-xp32-ix-016", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293460, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 25, + "job_type_name": "mochitest-5", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "0254e689ac6c164220558a4b5a75d0ab765e4c60", + "start_timestamp": 1377317844, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/25/" + }, + { + "submit_timestamp": 1377288952, + "machine_name": "t-xp32-ix-095", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293757, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 133, + "job_type_name": "mochitest-browser-chrome", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "bc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c0d92c356d2f15160d9333a5aa98289501f9e863", + "start_timestamp": 1377314290, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/133/" + }, + { + "submit_timestamp": 1377292072, + "machine_name": "t-xp32-ix-015", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293974, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 203, + "job_type_name": "mochitest-other", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "oth", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "186f4aea1c5efcf1414c932cb4dd099e88fd72c0", + "start_timestamp": 1377317630, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/203/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377292072, + "machine_name": "t-xp32-ix-042", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293822, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 146, + "job_type_name": "jsreftest", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "0fceffb28cda7eb51c46f0ed152969596ff85b7c", + "start_timestamp": 1377317625, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/146/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "green", + "name": "WINNT 5.1 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377291410, + "machine_name": "t-xp32-ix-118", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293597, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 81, + "job_type_name": "xpcshell", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "X", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "5442ed6ddb2c65f27d4cd5843cb03c08d8952568", + "start_timestamp": 1377317160, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/81/" + }, + { + "submit_timestamp": 1377291470, + "machine_name": "t-xp32-ix-058", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293884, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 168, + "job_type_name": "xpcshell", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "X", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "7c0c0abb56510a89055cc9793863e741162d174d", + "start_timestamp": 1377317510, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/168/" + } + ], + "name": null + }, + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377291470, + "machine_name": "t-xp32-ix-071", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293360, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 2, + "job_type_name": "mochitest-1", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "e1309c63a1966730aa5904c67310bd8ce7152e2d", + "start_timestamp": 1377317445, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/2/" + }, + { + "submit_timestamp": 1377293390, + "machine_name": "t-xp32-ix-071", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293845, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 154, + "job_type_name": "mochitest-4", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "dbb7f43bd802dbdf767e82e46f9ba8d4722ebe01", + "start_timestamp": 1377318709, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/154/" + }, + { + "submit_timestamp": 1377293390, + "machine_name": "t-xp32-ix-101", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293949, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 196, + "job_type_name": "mochitest-5", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "0b29ca51fcd21de776f764baaf7e80e2ab9de906", + "start_timestamp": 1377318740, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/196/" + }, + { + "submit_timestamp": 1377291410, + "machine_name": "t-xp32-ix-053", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293684, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 112, + "job_type_name": "mochitest-browser-chrome", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "bc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "bf573b090694d8b767a5dc49c697ff7d223ab843", + "start_timestamp": 1377317197, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/112/" + }, + { + "submit_timestamp": 1377291470, + "machine_name": "t-xp32-ix-093", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293828, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 148, + "job_type_name": "mochitest-browser-chrome", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "bc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "15d32e59220fe8e1fa3a3508c89a605c2935be40", + "start_timestamp": 1377317491, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/148/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377293390, + "machine_name": "t-xp32-ix-027", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293793, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 142, + "job_type_name": "crashtest", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "C", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f322019edc453a202814a8b87d7a0fa9ea3744cb", + "start_timestamp": 1377318651, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/142/" + }, + { + "submit_timestamp": 1377293390, + "machine_name": "t-xp32-ix-110", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293946, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 195, + "job_type_name": "jsreftest", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c908402043fe5d52da85e45c318e6eed35fa9815", + "start_timestamp": 1377318622, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/195/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "green", + "name": "WINNT 6.3 debug", + "groups": [ + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377292071, + "machine_name": "t-w864-ix-028", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293766, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 136, + "job_type_name": "mochitest-2", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f7316825d4e46b6b6d92ec9929b78937784209ed", + "start_timestamp": 1377317836, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/136/" + }, + { + "submit_timestamp": 1377292071, + "machine_name": "t-w864-ix-091", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293611, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 87, + "job_type_name": "mochitest-5", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "3a497b295daa7c373e57844b4d19abfa965a45f5", + "start_timestamp": 1377317916, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/87/" + }, + { + "submit_timestamp": 1377288951, + "machine_name": "t-w864-ix-113", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294120, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 249, + "job_type_name": "mochitest-browser-chrome", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "bc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "900711efc4ca38811456c73c9d4a608edcfb760f", + "start_timestamp": 1377314265, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/249/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377292071, + "machine_name": "t-w864-ix-067", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293476, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 33, + "job_type_name": "crashtest", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "C", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "46abe5a1be74a3ea98afd053c29f15f3a812febb", + "start_timestamp": 1377317910, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/33/" + }, + { + "submit_timestamp": 1377292071, + "machine_name": "t-w864-ix-024", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294119, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 248, + "job_type_name": "jsreftest", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "1e64582a9725066ab6cd32eefb3f6947735f552f", + "start_timestamp": 1377317860, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/248/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "green", + "name": "WINNT 6.3 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377290215, + "machine_name": "t-w864-ix-111", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293843, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 152, + "job_type_name": "xpcshell", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "X", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "ab79c150c0fe8be2e03b49e052b32fd93a01b7a0", + "start_timestamp": 1377315908, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/152/" + } + ], + "name": null + }, + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377291472, + "machine_name": "t-w864-ix-001", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293566, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 69, + "job_type_name": "mochitest-1", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "9842cf09674d021fc55ec6b2dd9037dc86ce61f4", + "start_timestamp": 1377317562, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/69/" + }, + { + "submit_timestamp": 1377293391, + "machine_name": "t-w864-ix-076", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294141, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 253, + "job_type_name": "mochitest-2", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "bd001609d02bea55858bbe70cba9ad530a63353b", + "start_timestamp": 1377318654, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/253/" + }, + { + "submit_timestamp": 1377291472, + "machine_name": "t-w864-ix-102", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293647, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 97, + "job_type_name": "mochitest-3", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "aa4a9866d31f498253d204882a8fd2498605ebf1", + "start_timestamp": 1377317560, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/97/" + }, + { + "submit_timestamp": 1377293391, + "machine_name": "t-w864-ix-005", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294055, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 230, + "job_type_name": "mochitest-4", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "9bff60716e21d9efea8b6daede3a216143ded796", + "start_timestamp": 1377318851, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/230/" + }, + { + "submit_timestamp": 1377293391, + "machine_name": "t-w864-ix-010", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294057, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 231, + "job_type_name": "mochitest-5", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c32dffccf62d93ae6c8a6d512099e91c5bb86484", + "start_timestamp": 1377318709, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/231/" + }, + { + "submit_timestamp": 1377291413, + "machine_name": "t-w864-ix-103", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293888, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 169, + "job_type_name": "mochitest-browser-chrome", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "bc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "671532f61f464614866e607f2dd58c152644398a", + "start_timestamp": 1377317183, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/169/" + }, + { + "submit_timestamp": 1377293391, + "machine_name": "t-w864-ix-001", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294040, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 224, + "job_type_name": "mochitest-metro-chrome", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "mc", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "9e18c6d87c25664adc890f5901f8e225149e613c", + "start_timestamp": 1377318860, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/224/" + }, + { + "submit_timestamp": 1377291472, + "machine_name": "t-w864-ix-045", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293482, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 37, + "job_type_name": "mochitest-other", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "oth", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "fc2719b89bbf070d14ef5a09371e932718c7f39a", + "start_timestamp": 1377317705, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/37/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377293391, + "machine_name": "t-w864-ix-039", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293969, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 200, + "job_type_name": "crashtest", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "C", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f6d09d34e6c94d9a2e08b76c1614920f16414933", + "start_timestamp": 1377318722, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/200/" + }, + { + "submit_timestamp": 1377293391, + "machine_name": "t-w864-ix-067", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294200, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 273, + "job_type_name": "jsreftest", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "747bfe96257f301de056fcc1750ab0b08f79300c", + "start_timestamp": 1377318730, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/273/" + }, + { + "submit_timestamp": 1377291472, + "machine_name": "t-w864-ix-010", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293415, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 17, + "job_type_name": "reftest-no-accel", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "Ru", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "11d9caa1cd3d076afdb2f63955a8315c8f5b964c", + "start_timestamp": 1377317670, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/17/" + } + ], + "name": "reftest" + }, + { + "symbol": "T", + "jobs": [ + { + "submit_timestamp": 1377291421, + "machine_name": "t-w864-ix-084", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293510, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 49, + "job_type_name": "chromez", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "c", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "ec76fc0f6244b626ce4dfeefb0c88cdf3be2d4c6", + "start_timestamp": 1377317520, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/49/" + }, + { + "submit_timestamp": 1377291419, + "machine_name": "t-w864-ix-071", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293878, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 166, + "job_type_name": "dromaeojs", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "d", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c88f0534430fb00876004af4377bfb90b96b935d", + "start_timestamp": 1377317325, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/166/" + }, + { + "submit_timestamp": 1377291421, + "machine_name": "t-w864-ix-070", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294185, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 267, + "job_type_name": "dromaeojs", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "d", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "ba87d7144b702b4442b0eca0e04b283fca24fee5", + "start_timestamp": 1377317390, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/267/" + }, + { + "submit_timestamp": 1377293401, + "machine_name": "t-w864-ix-012", + "job_type_description": "fill me", + "result_set_id": 1, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294210, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 278, + "job_type_name": "svgr", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "s", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "9aa72d6d136a48abab4ce4cff55d560460b041e0", + "start_timestamp": 1377318896, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/278/" + } + ], + "name": "talos" + } + ] + } + ], + "push_timestamp": 1377291417, + "id": 1, + "revision": "5af70b2d4f1d" + +} \ No newline at end of file diff --git a/tests/ui/mock/resultset_11.json b/tests/ui/mock/resultset_11.json new file mode 100644 index 000000000..9bc626535 --- /dev/null +++ b/tests/ui/mock/resultset_11.json @@ -0,0 +1,165 @@ +{ + + "repository_id": 2, + "revision_hash": "9dd584cca791878d8060a5f17b3fa14cd277534a", + "author": "sendchange-unittest", + "comments": "", + "platforms": [ + { + "warning_level": "green", + "name": "Rev3 WINNT 6.1 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377293391, + "machine_name": "t-w732-ix-113", + "job_type_description": "fill me", + "result_set_id": 11, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294171, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 263, + "job_type_name": "jetpack", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "JP", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "2be461e3564535ed7e0766a5906f5d29ae79fcd6", + "start_timestamp": 1377318712, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/263/" + } + ], + "name": null + } + ] + }, + { + "warning_level": "green", + "name": "Ubuntu 12.04 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377293451, + "machine_name": "tst-linux32-ec2-061", + "job_type_description": "fill me", + "result_set_id": 11, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294212, + "build_platform": "Ubuntu 12.04", + "machine_platform_os": "linux", + "job_id": 280, + "job_type_name": "jetpack", + "platform": "Ubuntu 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "JP", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "31d4ddb9f26e9517d85c3c07c71124a068dc5f02", + "start_timestamp": 1377318682, + "build_architecture": "x86", + "build_platform_id": 3, + "resource_uri": "/api/project/mozilla-inbound/jobs/280/" + } + ], + "name": null + } + ] + }, + { + "warning_level": "green", + "name": "Ubuntu VM 12.04 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377292913, + "machine_name": "tst-linux64-ec2-068", + "job_type_description": "fill me", + "result_set_id": 11, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293637, + "build_platform": "Ubuntu VM 12.04", + "machine_platform_os": "linux", + "job_id": 95, + "job_type_name": "jetpack", + "platform": "Ubuntu VM 12.04", + "state": "finished", + "build_os": "linux", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "JP", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "4ced0b82eefa0fcba2db23e0adb2685924b56323", + "start_timestamp": 1377318125, + "build_architecture": "x86_64", + "build_platform_id": 8, + "resource_uri": "/api/project/mozilla-inbound/jobs/95/" + } + ], + "name": null + } + ] + }, + { + "warning_level": "green", + "name": "WINNT 5.1 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377293390, + "machine_name": "t-xp32-ix-115", + "job_type_description": "fill me", + "result_set_id": 11, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293871, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 163, + "job_type_name": "jetpack", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "JP", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "2967fc9e8c8bae06174d29501e63fbca6856f6fb", + "start_timestamp": 1377318663, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/163/" + } + ], + "name": null + } + ] + } + ], + "push_timestamp": 1377292891, + "id": 11, + "revision": "c619171e0070" + +} \ No newline at end of file diff --git a/tests/ui/mock/resultset_13.json b/tests/ui/mock/resultset_13.json new file mode 100644 index 000000000..02298253a --- /dev/null +++ b/tests/ui/mock/resultset_13.json @@ -0,0 +1,89 @@ +{ + + "repository_id": 2, + "revision_hash": "a91254227216fda2772c8d2c2cb772cbbadafc46", + "author": "gabadie@mozilla.com", + "comments": "bug 908662 - [WebGL 2.0] refactor WebIDL - r=jgilbert", + "platforms": [ + { + "warning_level": "green", + "name": "OS X 10.6 opt", + "groups": [ + { + "symbol": "B", + "jobs": [ + { + "submit_timestamp": 1377290578, + "machine_name": "bld-lion-r5-059", + "job_type_description": "fill me", + "result_set_id": 13, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293713, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 120, + "job_type_name": "build", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "gabadie@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "B", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "7022420dc230f3e6f2fa6c56fab30352994a30e5", + "start_timestamp": 1377315800, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/120/" + } + ], + "name": "build" + } + ] + }, + { + "warning_level": "green", + "name": "gecko opt", + "groups": [ + { + "symbol": "B", + "jobs": [ + { + "submit_timestamp": 1377290578, + "machine_name": "bld-linux64-ec2-101", + "job_type_description": "fill me", + "result_set_id": 13, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377294006, + "build_platform": "gecko", + "machine_platform_os": "linux", + "job_id": 216, + "job_type_name": "build", + "platform": "gecko", + "state": "finished", + "build_os": "linux", + "who": "gabadie@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "B", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "9734a09f61320f5216f6ecc753795d95d4a5d8e6", + "start_timestamp": 1377315799, + "build_architecture": "ARMv7", + "build_platform_id": 10, + "resource_uri": "/api/project/mozilla-inbound/jobs/216/" + } + ], + "name": "build" + } + ] + } + ], + "push_timestamp": 1377290520, + "id": 13, + "revision": "b44c22c84132502664dcb52e2b1a737aa09e6fd0" + +} \ No newline at end of file diff --git a/tests/ui/mock/resultset_14.json b/tests/ui/mock/resultset_14.json new file mode 100644 index 000000000..75c379495 --- /dev/null +++ b/tests/ui/mock/resultset_14.json @@ -0,0 +1,89 @@ +{ + + "repository_id": 2, + "revision_hash": "0e9748a6326feaa6994f80d3fd8765ef050abb43", + "author": "sendchange-unittest", + "comments": "Bug 908644 - Add a global result summary to cppunittest output_r=ted", + "platforms": [ + { + "warning_level": "green", + "name": "OS X 10.6 debug", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377291600, + "machine_name": "talos-r4-snow-068", + "job_type_description": "fill me", + "result_set_id": 14, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293844, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 153, + "job_type_name": "jetpack", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "JP", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "3f49add77813cd8e7a0d7e455197ba6d20353552", + "start_timestamp": 1377317554, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/153/" + } + ], + "name": null + } + ] + }, + { + "warning_level": "green", + "name": "OS X 10.8 debug", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377291959, + "machine_name": "talos-mtnlion-r5-020", + "job_type_description": "fill me", + "result_set_id": 14, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294051, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 228, + "job_type_name": "jetpack", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "JP", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "5da67576b5b081689383a11580e914fc277ae8d7", + "start_timestamp": 1377317982, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/228/" + } + ], + "name": null + } + ] + } + ], + "push_timestamp": 1377291560, + "id": 14, + "revision": "be4a241c1cf3" + +} \ No newline at end of file diff --git a/tests/ui/mock/resultset_17.json b/tests/ui/mock/resultset_17.json new file mode 100644 index 000000000..7ff38bf9e --- /dev/null +++ b/tests/ui/mock/resultset_17.json @@ -0,0 +1,51 @@ +{ + + "repository_id": 2, + "revision_hash": "25b6841ee6e4223e3a32011e324e2fba2cc96ae2", + "author": "sendchange", + "comments": "Bug 908724 - Avoid #including nsPresContext.h in nsIScrollableFrame.h_ r=mats", + "platforms": [ + { + "warning_level": "green", + "name": "2.2 opt", + "groups": [ + { + "symbol": "T", + "jobs": [ + { + "submit_timestamp": 1377293098, + "machine_name": "tegra-089", + "job_type_description": "fill me", + "result_set_id": 17, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377294196, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 271, + "job_type_name": "remote-ts", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "ts", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "d67e6c7fa903dd8ccec32c8f3a9566d2cfaf7d88", + "start_timestamp": 1377318762, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/271/" + } + ], + "name": "talos" + } + ] + } + ], + "push_timestamp": 1377293081, + "id": 17, + "revision": "481ba42bbc8a" + +} \ No newline at end of file diff --git a/tests/ui/mock/resultset_2.json b/tests/ui/mock/resultset_2.json new file mode 100644 index 000000000..d073d94d5 --- /dev/null +++ b/tests/ui/mock/resultset_2.json @@ -0,0 +1,769 @@ +{ + + "repository_id": 2, + "revision_hash": "13d728cc21866e4da424bd90a7ec9927f82452b5", + "author": "sendchange", + "comments": "Backed out changesets aed22a2d8353 and c61fe8e1f887 (bug 908006) for OSX reftest failures.", + "platforms": [ + { + "warning_level": "green", + "name": "2.2 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377291292, + "machine_name": "tegra-216", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293631, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 93, + "job_type_name": "xpcshell", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "X", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "978c970d7bc175ddfcc97b4bcee5dcd4ed239bc8", + "start_timestamp": 1377317540, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/93/" + } + ], + "name": null + }, + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377291292, + "machine_name": "tegra-257", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293464, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 28, + "job_type_name": "mochitest-1", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "511d0743c1fbe2302562a9aed950c4b68042a0cf", + "start_timestamp": 1377317651, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/28/" + }, + { + "submit_timestamp": 1377292078, + "machine_name": "tegra-255", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293803, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 143, + "job_type_name": "mochitest-1", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "543e3ddd9a3d6a9df1e5aa14a9977be2d4bb6acb", + "start_timestamp": 1377317955, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/143/" + }, + { + "submit_timestamp": 1377291292, + "machine_name": "tegra-277", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377294183, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 266, + "job_type_name": "mochitest-2", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "285a2d625835a6af244df765f3bc39249b52b010", + "start_timestamp": 1377317554, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/266/" + }, + { + "submit_timestamp": 1377291292, + "machine_name": "tegra-105", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293512, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 50, + "job_type_name": "mochitest-3", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "922fe6da290c650cdd05ce2baced9acb427090ca", + "start_timestamp": 1377317543, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/50/" + }, + { + "submit_timestamp": 1377291292, + "machine_name": "tegra-112", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293441, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 22, + "job_type_name": "mochitest-4", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "c76a56a4d39323d39cfedc2ba3a5bd2e6d3b5238", + "start_timestamp": 1377317544, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/22/" + }, + { + "submit_timestamp": 1377292078, + "machine_name": "tegra-117", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377294207, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 275, + "job_type_name": "mochitest-4", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "4", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "533c15c161d9d4b9f129f9fcfc5282dc67755ef5", + "start_timestamp": 1377318157, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/275/" + }, + { + "submit_timestamp": 1377291292, + "machine_name": "tegra-253", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293413, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 15, + "job_type_name": "mochitest-5", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "930c90bd2f062a0cd07736a3583015cc5f428c79", + "start_timestamp": 1377317676, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/15/" + }, + { + "submit_timestamp": 1377292078, + "machine_name": "tegra-209", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293931, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 187, + "job_type_name": "mochitest-6", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "6", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "47d47766d5f448e8b69e028f55c59093663dd81a", + "start_timestamp": 1377318138, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/187/" + }, + { + "submit_timestamp": 1377291292, + "machine_name": "tegra-041", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293613, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 89, + "job_type_name": "mochitest-7", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "7", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "94dd53653b35f10411edc3ce3a4d7164138baf94", + "start_timestamp": 1377317554, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/89/" + }, + { + "submit_timestamp": 1377292078, + "machine_name": "tegra-258", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293678, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 108, + "job_type_name": "mochitest-7", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "7", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "19c8e45b31a8a0bd624f0b6e553f028e49386660", + "start_timestamp": 1377317857, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/108/" + }, + { + "submit_timestamp": 1377291292, + "machine_name": "tegra-090", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293478, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 34, + "job_type_name": "mochitest-8", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "8", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "d113c6cead3ca291c3c82b2f1656071b4bcd47ef", + "start_timestamp": 1377317556, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/34/" + }, + { + "submit_timestamp": 1377292078, + "machine_name": "tegra-252", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293733, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 126, + "job_type_name": "mochitest-8", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "8", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "5619f65b28f589d40b8b652d9509c426d75465eb", + "start_timestamp": 1377317857, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/126/" + }, + { + "submit_timestamp": 1377291292, + "machine_name": "tegra-173", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377294063, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 234, + "job_type_name": "robocop-1", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "rc1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "b5d9c3d83c55acbb64c31501c29d3e4280776a84", + "start_timestamp": 1377317663, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/234/" + }, + { + "submit_timestamp": 1377292078, + "machine_name": "tegra-182", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377294148, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 255, + "job_type_name": "robocop-1", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "rc1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "58608e67ac84252aabd70719b62bd8a2ffef89c9", + "start_timestamp": 1377318157, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/255/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377291292, + "machine_name": "tegra-164", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293501, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 44, + "job_type_name": "crashtest", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "C", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "d63119b4305369f58a56b6d4a2df0b6a410e4a19", + "start_timestamp": 1377317536, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/44/" + }, + { + "submit_timestamp": 1377292078, + "machine_name": "tegra-283", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293890, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 171, + "job_type_name": "crashtest", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "C", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "01e5a23c6a71a0d0b4c0ecad318360916e3c63c0", + "start_timestamp": 1377317953, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/171/" + }, + { + "submit_timestamp": 1377291292, + "machine_name": "tegra-244", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293969, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 201, + "job_type_name": "jsreftest-1", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J1", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "bc78da4666d44eac11302e21930904bf30468f58", + "start_timestamp": 1377317540, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/201/" + }, + { + "submit_timestamp": 1377291292, + "machine_name": "tegra-168", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377294008, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 218, + "job_type_name": "jsreftest-2", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "068d956de2111f4e1fcfd8044152da3795ebd219", + "start_timestamp": 1377317547, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/218/" + } + ], + "name": "reftest" + }, + { + "symbol": "T", + "jobs": [ + { + "submit_timestamp": 1377291295, + "machine_name": "tegra-247", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293579, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 76, + "job_type_name": "remote-trobocheck2", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "rck2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "7c3015cbe5cb5f373e9fadd27fd42b1b5fb6d323", + "start_timestamp": 1377317847, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/76/" + }, + { + "submit_timestamp": 1377291295, + "machine_name": "tegra-148", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293563, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 67, + "job_type_name": "remote-trobopan", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "rp", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "8762bd926fdd529689f8947b5a9e7fec698e55df", + "start_timestamp": 1377317841, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/67/" + }, + { + "submit_timestamp": 1377291295, + "machine_name": "tegra-066", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293859, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 158, + "job_type_name": "remote-troboprovider", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "rpr", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "bed165c4407653732b81edd6c905c30878c52519", + "start_timestamp": 1377317841, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/158/" + }, + { + "submit_timestamp": 1377291295, + "machine_name": "tegra-136", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293409, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 12, + "job_type_name": "remote-tsvg", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "s", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "a330e4549adf8e91f393e80fbc5b7af74760862e", + "start_timestamp": 1377317848, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/12/" + }, + { + "submit_timestamp": 1377291295, + "machine_name": "tegra-096", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293377, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 5, + "job_type_name": "remote-ts", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "ts", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f7f3d26cdfe8413f6a58d7ed7c668c275abf9413", + "start_timestamp": 1377317848, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/5/" + } + ], + "name": "talos" + } + ] + }, + { + "warning_level": "green", + "name": "4.0 opt", + "groups": [ + { + "symbol": "T", + "jobs": [ + { + "submit_timestamp": 1377291295, + "machine_name": "panda-0727", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293480, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 35, + "job_type_name": "remote-trobocheck2", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "rck2", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "164ac36f912130e662ec123585a3f25ba6642d5c", + "start_timestamp": 1377317494, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/35/" + }, + { + "submit_timestamp": 1377291295, + "machine_name": "panda-0715", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293412, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 14, + "job_type_name": "remote-troboprovider", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "rpr", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "ac2f41b1c362980cb18de4950a980b8e7f83791a", + "start_timestamp": 1377317199, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/14/" + } + ], + "name": "talos" + } + ] + }, + { + "warning_level": "green", + "name": "OS X 10.8 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377292253, + "machine_name": "talos-mtnlion-r5-066", + "job_type_description": "fill me", + "result_set_id": 2, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293574, + "build_platform": "OS X 10.8", + "machine_platform_os": "mac", + "job_id": 73, + "job_type_name": "jetpack", + "platform": "OS X 10.8", + "state": "finished", + "build_os": "mac", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "JP", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "640ad6eb7ac856aca57f8787f64a4a5562684a07", + "start_timestamp": 1377318279, + "build_architecture": "x86_64", + "build_platform_id": 7, + "resource_uri": "/api/project/mozilla-inbound/jobs/73/" + } + ], + "name": null + } + ] + } + ], + "push_timestamp": 1377291272, + "id": 2, + "revision": "4d3ad5e15b8c" + +} \ No newline at end of file diff --git a/tests/ui/mock/resultset_3.json b/tests/ui/mock/resultset_3.json new file mode 100644 index 000000000..6e66ed048 --- /dev/null +++ b/tests/ui/mock/resultset_3.json @@ -0,0 +1,261 @@ +{ + + "repository_id": 2, + "revision_hash": "f6a5bb84cf67ac35d670e90810b1306b77f4c1bf", + "author": "sendchange-unittest", + "comments": "Backed out changesets aed22a2d8353 and c61fe8e1f887 (bug 908006) for OSX reftest failures.", + "platforms": [ + { + "warning_level": "green", + "name": "2.2 opt", + "groups": [ + { + "symbol": "M", + "jobs": [ + { + "submit_timestamp": 1377292078, + "machine_name": "tegra-363", + "job_type_description": "fill me", + "result_set_id": 3, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377294159, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 260, + "job_type_name": "mochitest-5", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "5", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "19e993f5b0a717185083fb9eacb2d422b36d6bd1", + "start_timestamp": 1377318435, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/260/" + } + ], + "name": "mochitest" + }, + { + "symbol": "R", + "jobs": [ + { + "submit_timestamp": 1377291719, + "machine_name": "tegra-179", + "job_type_description": "fill me", + "result_set_id": 3, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293860, + "build_platform": "2.2", + "machine_platform_os": "android", + "job_id": 160, + "job_type_name": "jsreftest-3", + "platform": "2.2", + "state": "finished", + "build_os": "android", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "J3", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f0fc662d19a0fee08341e8359b5f393b622bb670", + "start_timestamp": 1377317850, + "build_architecture": "ARMv7", + "build_platform_id": 1, + "resource_uri": "/api/project/mozilla-inbound/jobs/160/" + } + ], + "name": "reftest" + } + ] + }, + { + "warning_level": "red", + "name": "4.0 opt", + "groups": [ + { + "symbol": "T", + "jobs": [ + { + "submit_timestamp": 1377293098, + "machine_name": "panda-0725", + "job_type_description": "fill me", + "result_set_id": 3, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293925, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 185, + "job_type_name": "remote-tp4m_nochrome", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "tpn", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f3588fc606d8a88b1c9c8b83b539ff0665f88e63", + "start_timestamp": 1377318300, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/185/" + }, + { + "submit_timestamp": 1377293098, + "machine_name": "panda-0716", + "job_type_description": "fill me", + "result_set_id": 3, + "result": "busted", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294105, + "build_platform": "4.0", + "machine_platform_os": "android", + "job_id": 246, + "job_type_name": "remote-ts", + "platform": "4.0", + "state": "finished", + "build_os": "android", + "who": "sendchange", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "ts", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "22ac437a5d413772a0585ad8c14e49a7a9f46a62", + "start_timestamp": 1377318300, + "build_architecture": "x86", + "build_platform_id": 12, + "resource_uri": "/api/project/mozilla-inbound/jobs/246/" + } + ], + "name": "talos" + } + ] + }, + { + "warning_level": "green", + "name": "Rev3 WINNT 6.1 debug", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377292020, + "machine_name": "t-w732-ix-089", + "job_type_description": "fill me", + "result_set_id": 3, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377294053, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 229, + "job_type_name": "jetpack", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "JP", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "6f2bb004c43032afdf7ad0a088ba8c3b8ccbb58e", + "start_timestamp": 1377318140, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/229/" + } + ], + "name": null + } + ] + }, + { + "warning_level": "green", + "name": "WINNT 5.1 debug", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377292072, + "machine_name": "t-xp32-ix-089", + "job_type_description": "fill me", + "result_set_id": 3, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293418, + "build_platform": "WINNT 5.1", + "machine_platform_os": "win", + "job_id": 19, + "job_type_name": "jetpack", + "platform": "WINNT 5.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "JP", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "c5a04c16b139cce857510f1f737ad520ec81805d", + "start_timestamp": 1377317625, + "build_architecture": "x86", + "build_platform_id": 6, + "resource_uri": "/api/project/mozilla-inbound/jobs/19/" + } + ], + "name": null + } + ] + }, + { + "warning_level": "green", + "name": "WINNT 6.3 debug", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377292071, + "machine_name": "t-w864-ix-114", + "job_type_description": "fill me", + "result_set_id": 3, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293668, + "build_platform": "WINNT 6.3", + "machine_platform_os": "win", + "job_id": 103, + "job_type_name": "jetpack", + "platform": "WINNT 6.3", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "JP", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "9dbfdb3a01f77e316f9d0dd4bb9ddb579a7633ae", + "start_timestamp": 1377317817, + "build_architecture": "x86_64", + "build_platform_id": 14, + "resource_uri": "/api/project/mozilla-inbound/jobs/103/" + } + ], + "name": null + } + ] + } + ], + "push_timestamp": 1377292017, + "id": 3, + "revision": "5a9fb1ce1de5" + +} \ No newline at end of file diff --git a/tests/ui/mock/resultset_6.json b/tests/ui/mock/resultset_6.json new file mode 100644 index 000000000..ac50fc100 --- /dev/null +++ b/tests/ui/mock/resultset_6.json @@ -0,0 +1,51 @@ +{ + + "repository_id": 2, + "revision_hash": "c435bd25d5eabf8b2f286384e8859a2f52b459ba", + "author": "sendchange-unittest", + "comments": "", + "platforms": [ + { + "warning_level": "green", + "name": "Rev3 WINNT 6.1 opt", + "groups": [ + { + "symbol": null, + "jobs": [ + { + "submit_timestamp": 1377291471, + "machine_name": "t-w732-ix-052", + "job_type_description": "fill me", + "result_set_id": 6, + "result": "success", + "machine_platform_architecture": "x86", + "end_timestamp": 1377293471, + "build_platform": "Rev3 WINNT 6.1", + "machine_platform_os": "win", + "job_id": 32, + "job_type_name": "jetpack", + "platform": "Rev3 WINNT 6.1", + "state": "finished", + "build_os": "win", + "who": "sendchange-unittest", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "JP", + "reason": "scheduler", + "job_group_description": null, + "job_guid": "9386493fbea9880712b317ddc8af80f57a9aafd0", + "start_timestamp": 1377318048, + "build_architecture": "x86", + "build_platform_id": 5, + "resource_uri": "/api/project/mozilla-inbound/jobs/32/" + } + ], + "name": null + } + ] + } + ], + "push_timestamp": 1377291417, + "id": 6, + "revision": "d84b8ecb416c" + +} \ No newline at end of file diff --git a/tests/ui/mock/resultset_7.json b/tests/ui/mock/resultset_7.json new file mode 100644 index 000000000..0483c19de --- /dev/null +++ b/tests/ui/mock/resultset_7.json @@ -0,0 +1,167 @@ +{ + + "repository_id": 2, + "revision_hash": "84c37546999e879c8ba81184a39bd71bc2e2253e", + "author": "tschneidereit@gmail.com", + "comments": "Bug 905370 - Move SelfHostedClass list to JSRuntime. r=bhackett,shu", + "platforms": [ + { + "warning_level": "green", + "name": "OS X 10.6 debug", + "groups": [ + { + "symbol": "B", + "jobs": [ + { + "submit_timestamp": 1377289379, + "machine_name": "bld-lion-r5-049", + "job_type_description": "fill me", + "result_set_id": 7, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377293575, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 74, + "job_type_name": "build", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "tschneidereit@gmail.com", + "option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b", + "job_type_symbol": "B", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "35ac41aeefe6d4c0311b13f69129aa84e1e78655", + "start_timestamp": 1377314595, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/74/" + } + ], + "name": "build" + } + ] + }, + { + "warning_level": "green", + "name": "gecko opt", + "groups": [ + { + "symbol": "B", + "jobs": [ + { + "submit_timestamp": 1377289378, + "machine_name": "bld-linux64-ix-031", + "job_type_description": "fill me", + "result_set_id": 7, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293486, + "build_platform": "gecko", + "machine_platform_os": "linux", + "job_id": 38, + "job_type_name": "build", + "platform": "gecko", + "state": "finished", + "build_os": "linux", + "who": "tschneidereit@gmail.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "B", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "dc811c72ff2e2c3cce02b4e4764af5bf0bce503d", + "start_timestamp": 1377314597, + "build_architecture": "ARMv7", + "build_platform_id": 10, + "resource_uri": "/api/project/mozilla-inbound/jobs/38/" + }, + { + "submit_timestamp": 1377289379, + "machine_name": "bld-linux64-ec2-448", + "job_type_description": "fill me", + "result_set_id": 7, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293857, + "build_platform": "gecko", + "machine_platform_os": "linux", + "job_id": 157, + "job_type_name": "build", + "platform": "gecko", + "state": "finished", + "build_os": "linux", + "who": "tschneidereit@gmail.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "B", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "ae5a7ea00255454e346b5c22ccf070a9f52937cb", + "start_timestamp": 1377314631, + "build_architecture": "ARMv7", + "build_platform_id": 10, + "resource_uri": "/api/project/mozilla-inbound/jobs/157/" + }, + { + "submit_timestamp": 1377289379, + "machine_name": "bld-linux64-ec2-362", + "job_type_description": "fill me", + "result_set_id": 7, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377294101, + "build_platform": "gecko", + "machine_platform_os": "linux", + "job_id": 242, + "job_type_name": "build", + "platform": "gecko", + "state": "finished", + "build_os": "linux", + "who": "tschneidereit@gmail.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "B", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "6a39f242f0699044bafb4c3c5fd73b143a134be1", + "start_timestamp": 1377314775, + "build_architecture": "ARMv7", + "build_platform_id": 10, + "resource_uri": "/api/project/mozilla-inbound/jobs/242/" + }, + { + "submit_timestamp": 1377289378, + "machine_name": "bld-linux64-ix-033", + "job_type_description": "fill me", + "result_set_id": 7, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377294203, + "build_platform": "gecko", + "machine_platform_os": "linux", + "job_id": 274, + "job_type_name": "build", + "platform": "gecko", + "state": "finished", + "build_os": "linux", + "who": "tschneidereit@gmail.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "B", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f3aa423129de5d0d07a40b1a9843305980228c1a", + "start_timestamp": 1377314617, + "build_architecture": "ARMv7", + "build_platform_id": 10, + "resource_uri": "/api/project/mozilla-inbound/jobs/274/" + } + ], + "name": "build" + } + ] + } + ], + "push_timestamp": 1377289348, + "id": 7, + "revision": "be4a241c1cf3ef15d54119c0a5e7824bf0997b06" + +} \ No newline at end of file diff --git a/tests/ui/mock/resultset_9.json b/tests/ui/mock/resultset_9.json new file mode 100644 index 000000000..7403a3b12 --- /dev/null +++ b/tests/ui/mock/resultset_9.json @@ -0,0 +1,115 @@ +{ + + "repository_id": 2, + "revision_hash": "a8517c8ae59f2ccc3046267c33ac678beab982a3", + "author": "jmaher@mozilla.com", + "comments": "Bug 908853 - update talos.json to include new TART test. r=avih", + "platforms": [ + { + "warning_level": "green", + "name": "OS X 10.6 opt", + "groups": [ + { + "symbol": "B", + "jobs": [ + { + "submit_timestamp": 1377290458, + "machine_name": "bld-lion-r5-067", + "job_type_description": "fill me", + "result_set_id": 9, + "result": "success", + "machine_platform_architecture": "x86_64", + "end_timestamp": 1377294021, + "build_platform": "OS X 10.6", + "machine_platform_os": "mac", + "job_id": 220, + "job_type_name": "build", + "platform": "OS X 10.6", + "state": "finished", + "build_os": "mac", + "who": "jmaher@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "B", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "69e32b68c369d8843ee22225bb925370f1a8cff2", + "start_timestamp": 1377315674, + "build_architecture": "x86_64", + "build_platform_id": 4, + "resource_uri": "/api/project/mozilla-inbound/jobs/220/" + } + ], + "name": "build" + } + ] + }, + { + "warning_level": "green", + "name": "gecko opt", + "groups": [ + { + "symbol": "B", + "jobs": [ + { + "submit_timestamp": 1377290459, + "machine_name": "bld-centos6-hp-007", + "job_type_description": "fill me", + "result_set_id": 9, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293600, + "build_platform": "gecko", + "machine_platform_os": "linux", + "job_id": 82, + "job_type_name": "build", + "platform": "gecko", + "state": "finished", + "build_os": "linux", + "who": "jmaher@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "B", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "f27cd8290fd669313caf2d7dbec5844be14645a7", + "start_timestamp": 1377315677, + "build_architecture": "ARMv7", + "build_platform_id": 10, + "resource_uri": "/api/project/mozilla-inbound/jobs/82/" + }, + { + "submit_timestamp": 1377290459, + "machine_name": "bld-linux64-ec2-126", + "job_type_description": "fill me", + "result_set_id": 9, + "result": "success", + "machine_platform_architecture": "ARMv7", + "end_timestamp": 1377293901, + "build_platform": "gecko", + "machine_platform_os": "linux", + "job_id": 177, + "job_type_name": "build", + "platform": "gecko", + "state": "finished", + "build_os": "linux", + "who": "jmaher@mozilla.com", + "option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e", + "job_type_symbol": "B", + "reason": "scheduler", + "job_group_description": "", + "job_guid": "22aec8191ebe586d936595f3c8b958732edf5799", + "start_timestamp": 1377315678, + "build_architecture": "ARMv7", + "build_platform_id": 10, + "resource_uri": "/api/project/mozilla-inbound/jobs/177/" + } + ], + "name": "build" + } + ] + } + ], + "push_timestamp": 1377290428, + "id": 9, + "revision": "481ba42bbc8a148da9adcec919fcc7560e39464e" + +} \ No newline at end of file diff --git a/tests/ui/mock/resultset_list.json b/tests/ui/mock/resultset_list.json new file mode 100644 index 000000000..43f3741f5 --- /dev/null +++ b/tests/ui/mock/resultset_list.json @@ -0,0 +1,94 @@ +[ + + { + "repository_id": 2, + "revision_hash": "25b6841ee6e4223e3a32011e324e2fba2cc96ae2", + "author": "sendchange", + "comments": "Bug 908724 - Avoid #including nsPresContext.h in nsIScrollableFrame.h_ r=mats", + "push_timestamp": 1377293081, + "id": 17, + "revision": "481ba42bbc8a" + }, + { + "repository_id": 2, + "revision_hash": "9dd584cca791878d8060a5f17b3fa14cd277534a", + "author": "sendchange-unittest", + "comments": "", + "push_timestamp": 1377292891, + "id": 11, + "revision": "c619171e0070" + }, + { + "repository_id": 2, + "revision_hash": "f6a5bb84cf67ac35d670e90810b1306b77f4c1bf", + "author": "sendchange-unittest", + "comments": "Backed out changesets aed22a2d8353 and c61fe8e1f887 (bug 908006) for OSX reftest failures.", + "push_timestamp": 1377292017, + "id": 3, + "revision": "5a9fb1ce1de5" + }, + { + "repository_id": 2, + "revision_hash": "0e9748a6326feaa6994f80d3fd8765ef050abb43", + "author": "sendchange-unittest", + "comments": "Bug 908644 - Add a global result summary to cppunittest output_r=ted", + "push_timestamp": 1377291560, + "id": 14, + "revision": "be4a241c1cf3" + }, + { + "repository_id": 2, + "revision_hash": "ec486f38935b2c8869ce77adb90257987de6ef53", + "author": "sendchange-unittest", + "comments": "", + "push_timestamp": 1377291417, + "id": 1, + "revision": "5af70b2d4f1d" + }, + { + "repository_id": 2, + "revision_hash": "c435bd25d5eabf8b2f286384e8859a2f52b459ba", + "author": "sendchange-unittest", + "comments": "", + "push_timestamp": 1377291417, + "id": 6, + "revision": "d84b8ecb416c" + }, + { + "repository_id": 2, + "revision_hash": "13d728cc21866e4da424bd90a7ec9927f82452b5", + "author": "sendchange", + "comments": "Backed out changesets aed22a2d8353 and c61fe8e1f887 (bug 908006) for OSX reftest failures.", + "push_timestamp": 1377291272, + "id": 2, + "revision": "4d3ad5e15b8c" + }, + { + "repository_id": 2, + "revision_hash": "a91254227216fda2772c8d2c2cb772cbbadafc46", + "author": "gabadie@mozilla.com", + "comments": "bug 908662 - [WebGL 2.0] refactor WebIDL - r=jgilbert", + "push_timestamp": 1377290520, + "id": 13, + "revision": "b44c22c84132502664dcb52e2b1a737aa09e6fd0" + }, + { + "repository_id": 2, + "revision_hash": "a8517c8ae59f2ccc3046267c33ac678beab982a3", + "author": "jmaher@mozilla.com", + "comments": "Bug 908853 - update talos.json to include new TART test. r=avih", + "push_timestamp": 1377290428, + "id": 9, + "revision": "481ba42bbc8a148da9adcec919fcc7560e39464e" + }, + { + "repository_id": 2, + "revision_hash": "84c37546999e879c8ba81184a39bd71bc2e2253e", + "author": "tschneidereit@gmail.com", + "comments": "Bug 905370 - Move SelfHostedClass list to JSRuntime. r=bhackett,shu", + "push_timestamp": 1377289348, + "id": 7, + "revision": "be4a241c1cf3ef15d54119c0a5e7824bf0997b06" + } + +] \ No newline at end of file diff --git a/tests/ui/unit/controllers/jobs.tests.js b/tests/ui/unit/controllers/jobs.tests.js new file mode 100644 index 000000000..ca0d5e330 --- /dev/null +++ b/tests/ui/unit/controllers/jobs.tests.js @@ -0,0 +1,161 @@ +'use strict'; + +/* jasmine specs for controllers go here */ + +describe('JobsCtrl', function(){ + var $httpBackend, createJobsCtrl, createPushCtrl, jobScope, pushScope; + + beforeEach(module('treeherder')); + + beforeEach(inject(function ($injector, $rootScope, $controller) { + + $httpBackend = $injector.get('$httpBackend'); + jasmine.getJSONFixtures().fixturesPath='base/test/mock'; + + $httpBackend.whenGET('http://local.treeherder.mozilla.org/api/project/mozilla-inbound/resultset/').respond( + getJSONFixture('resultset_list.json') + ); + + [1, 2, 3, 6, 7, 9, 11, 13, 14, 17].forEach(function(i) { + $httpBackend.whenGET('http://local.treeherder.mozilla.org/api/project/mozilla-inbound/resultset/' + i + '/').respond( + getJSONFixture('resultset_' + i + '.json') + ); + }); + + $httpBackend.whenGET('http://local.treeherder.mozilla.org/api/project/mozilla-inbound/jobs/260/').respond( + getJSONFixture('job_260.json') + ); + + $httpBackend.whenGET('http://local.treeherder.mozilla.org/api/project/mozilla-inbound/artifact/519/').respond( + getJSONFixture('artifact_519.json') + ); + + $httpBackend.whenGET('http://local.treeherder.mozilla.org/api/project/mozilla-inbound/artifact/519').respond( + getJSONFixture('artifact_519.json') + ); + + $httpBackend.whenGET('resources/job_groups.json').respond( + getJSONFixture('job_groups.json') + ); + + jobScope = $rootScope.$new(); + $controller('JobsCtrl', {'$scope': jobScope}); + + pushScope = jobScope.$new(); + createPushCtrl = function(push) { + pushScope.push = push; + var ctrl = $controller('PushCtrl', {'$scope': pushScope}); + $httpBackend.flush(); + return ctrl; + }; + $httpBackend.flush(); + })); + + /* + Tests JobsCtrl + */ + + it('should have job_types', function() { + expect(jobScope.job_types.length).toBe(59); + + }); + + it('should have 10 resultsets', function() { + expect(jobScope.result_sets.length).toBe(10); + }); + + /* + Tests PushCtrl + */ + + it('should have 5 jobs in resultset 2', function() { + createPushCtrl(jobScope.result_sets[2]); + expect(pushScope.job_results.length).toBe(5); + }); + + it('should default to revisions collapsed', function() { + createPushCtrl(jobScope.result_sets[2]); + expect(pushScope.isCollapsedRevisions).toBe(true); + }); + + it('should default to results collapsed for set without failure', function() { + createPushCtrl(jobScope.result_sets[1]); + expect(pushScope.isCollapsedResults).toBe(true); + }); + + it('should default to results not collapsed for set with failure', function() { + createPushCtrl(jobScope.result_sets[2]); + expect(pushScope.isCollapsedResults).toBe(false); + }); + + it('should default to results not collapsed for set with failure', function() { + createPushCtrl(jobScope.result_sets[2]); + expect(pushScope.isCollapsedResults).toBe(false); + }); + + it('should set the selectedJob in scope when calling viewJob()', function() { + var pushCtrl = createPushCtrl(jobScope.result_sets[2]); + var job = pushScope.job_results[0].groups[0].jobs[0]; + pushScope.viewJob(job); + $httpBackend.flush(); + expect(pushScope.selectedJob).toBe(job); + }); + + it('should set the visibleFields in the job when calling viewJob()', function() { + var pushCtrl = createPushCtrl(jobScope.result_sets[2]); + var job = pushScope.job_results[0].groups[0].jobs[0]; + pushScope.viewJob(job); + $httpBackend.flush(); + expect(pushScope.selectedJob.visibleFields).toEqual({ + 'Reason' : 'scheduler', + 'State' : 'finished', + 'Result' : 'success', + 'Type Name' : 'mochitest-5', + 'Type Desc' : 'fill me', + 'Who' : 'sendchange-unittest', + 'Job GUID' : '19e993f5b0a717185083fb9eacb2d422b36d6bd1', + 'Machine Name' : 'tegra-363', + 'Machine Platform Arch' : 'ARMv7', + 'Machine Platform OS' : 'android', + 'Build Platform' : '2.2', + 'Build Arch' : 'ARMv7', + 'Build OS' : 'android' + }); + }); + + it('should set jobArtifact when calling viewJob()', function() { + var pushCtrl = createPushCtrl(jobScope.result_sets[2]); + var job = pushScope.job_results[0].groups[0].jobs[0]; + pushScope.viewJob(job); + $httpBackend.flush(); + // toEqual does a deep equality check, but $resource call adds a few + // things to the object that don't show on the json stringify output. + // so much compare each field separately. + expect(pushScope.selectedJob.jobArtifact.name).toEqual("Unknown Builder Job Artifact"); + expect(pushScope.selectedJob.jobArtifact.active_status).toEqual("active"); + expect(pushScope.selectedJob.jobArtifact.blob).toEqual({ + "errors": [ ], + "tinderbox_printlines": [ + "mochitest-plain
895/0/128" + ], + "logurl": "http://ftp.mozilla.org/pub/mozilla.org/mobile/tinderbox-builds/mozilla-inbound-android-armv6/1377289258/mozilla-inbound_tegra_android-armv6_test-mochitest-5-bm10-tests1-tegra-build1958.txt.gz" + }); + expect(pushScope.selectedJob.jobArtifact.type).toEqual("json"); + expect(pushScope.selectedJob.jobArtifact.id).toEqual(519); + expect(pushScope.selectedJob.jobArtifact.job_id).toEqual(260); + }); + + it('should set lvArtifact when calling viewJob()', function() { + var pushCtrl = createPushCtrl(jobScope.result_sets[2]); + var job = pushScope.job_results[0].groups[0].jobs[0]; + pushScope.viewJob(job); + $httpBackend.flush(); + expect(pushScope.selectedJob.lvArtifact).toEqual({ + resource_uri : '/api/project/mozilla-inbound/artifact/520/', + type : 'json', + id : 520, + name : 'Structured Log' + }); + }); + +}); diff --git a/tests/ui/unit/controllersSpec.js b/tests/ui/unit/controllersSpec.js index 3c602c8d3..bbfeb9338 100755 --- a/tests/ui/unit/controllersSpec.js +++ b/tests/ui/unit/controllersSpec.js @@ -2,37 +2,3 @@ /* jasmine specs for controllers go here */ -describe('controllers', function(){ - var $httpBackend, $rootScope, createController; - - beforeEach(module('treeherder')); - - beforeEach(inject(function ($injector) { - - $httpBackend = $injector.get('$httpBackend'); - $httpBackend.whenGET('resources/job_groups.json').respond( - jasmine.getJSONFixtures('job_groups.json') - ); - $httpBackend.whenGET('resources/push_sample.json').respond( - jasmine.getJSONFixtures('push_sample.json') - ); - $rootScope = $injector.get('$rootScope'); - var $controller = $injector.get('$controller'); - - createController = function() { - return $controller('JobsCtrl', {'$scope': $rootScope}); - }; - })); - - it('should have job_types', function() { - var ctrl = createController(); - $httpBackend.flush(); - expect($rootScope.job_types.length).toEqual(30); - }); - - it('should ....', inject(function() { - var ctrl = createController(); - - expect("me").toEqual("me"); - })); -}); diff --git a/tests/ui/vendor/angular/angular-mocks.js b/tests/ui/vendor/angular/angular-mocks.js old mode 100644 new mode 100755 diff --git a/tests/ui/vendor/angular/angular-scenario.js b/tests/ui/vendor/angular/angular-scenario.js old mode 100644 new mode 100755 diff --git a/tests/ui/vendor/jasmine.js b/tests/ui/vendor/jasmine.js new file mode 100644 index 000000000..6b3459b91 --- /dev/null +++ b/tests/ui/vendor/jasmine.js @@ -0,0 +1,2600 @@ +var isCommonJS = typeof window == "undefined" && typeof exports == "object"; + +/** + * Top level namespace for Jasmine, a lightweight JavaScript BDD/spec/testing framework. + * + * @namespace + */ +var jasmine = {}; +if (isCommonJS) exports.jasmine = jasmine; +/** + * @private + */ +jasmine.unimplementedMethod_ = function() { + throw new Error("unimplemented method"); +}; + +/** + * Use jasmine.undefined instead of undefined, since undefined is just + * a plain old variable and may be redefined by somebody else. + * + * @private + */ +jasmine.undefined = jasmine.___undefined___; + +/** + * Show diagnostic messages in the console if set to true + * + */ +jasmine.VERBOSE = false; + +/** + * Default interval in milliseconds for event loop yields (e.g. to allow network activity or to refresh the screen with the HTML-based runner). Small values here may result in slow test running. Zero means no updates until all tests have completed. + * + */ +jasmine.DEFAULT_UPDATE_INTERVAL = 250; + +/** + * Maximum levels of nesting that will be included when an object is pretty-printed + */ +jasmine.MAX_PRETTY_PRINT_DEPTH = 40; + +/** + * Default timeout interval in milliseconds for waitsFor() blocks. + */ +jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000; + +/** + * By default exceptions thrown in the context of a test are caught by jasmine so that it can run the remaining tests in the suite. + * Set to false to let the exception bubble up in the browser. + * + */ +jasmine.CATCH_EXCEPTIONS = true; + +jasmine.getGlobal = function() { + function getGlobal() { + return this; + } + + return getGlobal(); +}; + +/** + * Allows for bound functions to be compared. Internal use only. + * + * @ignore + * @private + * @param base {Object} bound 'this' for the function + * @param name {Function} function to find + */ +jasmine.bindOriginal_ = function(base, name) { + var original = base[name]; + if (original.apply) { + return function() { + return original.apply(base, arguments); + }; + } else { + // IE support + return jasmine.getGlobal()[name]; + } +}; + +jasmine.setTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'setTimeout'); +jasmine.clearTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearTimeout'); +jasmine.setInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'setInterval'); +jasmine.clearInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearInterval'); + +jasmine.MessageResult = function(values) { + this.type = 'log'; + this.values = values; + this.trace = new Error(); // todo: test better +}; + +jasmine.MessageResult.prototype.toString = function() { + var text = ""; + for (var i = 0; i < this.values.length; i++) { + if (i > 0) text += " "; + if (jasmine.isString_(this.values[i])) { + text += this.values[i]; + } else { + text += jasmine.pp(this.values[i]); + } + } + return text; +}; + +jasmine.ExpectationResult = function(params) { + this.type = 'expect'; + this.matcherName = params.matcherName; + this.passed_ = params.passed; + this.expected = params.expected; + this.actual = params.actual; + this.message = this.passed_ ? 'Passed.' : params.message; + + var trace = (params.trace || new Error(this.message)); + this.trace = this.passed_ ? '' : trace; +}; + +jasmine.ExpectationResult.prototype.toString = function () { + return this.message; +}; + +jasmine.ExpectationResult.prototype.passed = function () { + return this.passed_; +}; + +/** + * Getter for the Jasmine environment. Ensures one gets created + */ +jasmine.getEnv = function() { + var env = jasmine.currentEnv_ = jasmine.currentEnv_ || new jasmine.Env(); + return env; +}; + +/** + * @ignore + * @private + * @param value + * @returns {Boolean} + */ +jasmine.isArray_ = function(value) { + return jasmine.isA_("Array", value); +}; + +/** + * @ignore + * @private + * @param value + * @returns {Boolean} + */ +jasmine.isString_ = function(value) { + return jasmine.isA_("String", value); +}; + +/** + * @ignore + * @private + * @param value + * @returns {Boolean} + */ +jasmine.isNumber_ = function(value) { + return jasmine.isA_("Number", value); +}; + +/** + * @ignore + * @private + * @param {String} typeName + * @param value + * @returns {Boolean} + */ +jasmine.isA_ = function(typeName, value) { + return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; +}; + +/** + * Pretty printer for expecations. Takes any object and turns it into a human-readable string. + * + * @param value {Object} an object to be outputted + * @returns {String} + */ +jasmine.pp = function(value) { + var stringPrettyPrinter = new jasmine.StringPrettyPrinter(); + stringPrettyPrinter.format(value); + return stringPrettyPrinter.string; +}; + +/** + * Returns true if the object is a DOM Node. + * + * @param {Object} obj object to check + * @returns {Boolean} + */ +jasmine.isDomNode = function(obj) { + return obj.nodeType > 0; +}; + +/** + * Returns a matchable 'generic' object of the class type. For use in expecations of type when values don't matter. + * + * @example + * // don't care about which function is passed in, as long as it's a function + * expect(mySpy).toHaveBeenCalledWith(jasmine.any(Function)); + * + * @param {Class} clazz + * @returns matchable object of the type clazz + */ +jasmine.any = function(clazz) { + return new jasmine.Matchers.Any(clazz); +}; + +/** + * Returns a matchable subset of a JSON object. For use in expectations when you don't care about all of the + * attributes on the object. + * + * @example + * // don't care about any other attributes than foo. + * expect(mySpy).toHaveBeenCalledWith(jasmine.objectContaining({foo: "bar"}); + * + * @param sample {Object} sample + * @returns matchable object for the sample + */ +jasmine.objectContaining = function (sample) { + return new jasmine.Matchers.ObjectContaining(sample); +}; + +/** + * Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expecation, mocks. + * + * Spies should be created in test setup, before expectations. They can then be checked, using the standard Jasmine + * expectation syntax. Spies can be checked if they were called or not and what the calling params were. + * + * A Spy has the following fields: wasCalled, callCount, mostRecentCall, and argsForCall (see docs). + * + * Spies are torn down at the end of every spec. + * + * Note: Do not call new jasmine.Spy() directly - a spy must be created using spyOn, jasmine.createSpy or jasmine.createSpyObj. + * + * @example + * // a stub + * var myStub = jasmine.createSpy('myStub'); // can be used anywhere + * + * // spy example + * var foo = { + * not: function(bool) { return !bool; } + * } + * + * // actual foo.not will not be called, execution stops + * spyOn(foo, 'not'); + + // foo.not spied upon, execution will continue to implementation + * spyOn(foo, 'not').andCallThrough(); + * + * // fake example + * var foo = { + * not: function(bool) { return !bool; } + * } + * + * // foo.not(val) will return val + * spyOn(foo, 'not').andCallFake(function(value) {return value;}); + * + * // mock example + * foo.not(7 == 7); + * expect(foo.not).toHaveBeenCalled(); + * expect(foo.not).toHaveBeenCalledWith(true); + * + * @constructor + * @see spyOn, jasmine.createSpy, jasmine.createSpyObj + * @param {String} name + */ +jasmine.Spy = function(name) { + /** + * The name of the spy, if provided. + */ + this.identity = name || 'unknown'; + /** + * Is this Object a spy? + */ + this.isSpy = true; + /** + * The actual function this spy stubs. + */ + this.plan = function() { + }; + /** + * Tracking of the most recent call to the spy. + * @example + * var mySpy = jasmine.createSpy('foo'); + * mySpy(1, 2); + * mySpy.mostRecentCall.args = [1, 2]; + */ + this.mostRecentCall = {}; + + /** + * Holds arguments for each call to the spy, indexed by call count + * @example + * var mySpy = jasmine.createSpy('foo'); + * mySpy(1, 2); + * mySpy(7, 8); + * mySpy.mostRecentCall.args = [7, 8]; + * mySpy.argsForCall[0] = [1, 2]; + * mySpy.argsForCall[1] = [7, 8]; + */ + this.argsForCall = []; + this.calls = []; +}; + +/** + * Tells a spy to call through to the actual implemenatation. + * + * @example + * var foo = { + * bar: function() { // do some stuff } + * } + * + * // defining a spy on an existing property: foo.bar + * spyOn(foo, 'bar').andCallThrough(); + */ +jasmine.Spy.prototype.andCallThrough = function() { + this.plan = this.originalValue; + return this; +}; + +/** + * For setting the return value of a spy. + * + * @example + * // defining a spy from scratch: foo() returns 'baz' + * var foo = jasmine.createSpy('spy on foo').andReturn('baz'); + * + * // defining a spy on an existing property: foo.bar() returns 'baz' + * spyOn(foo, 'bar').andReturn('baz'); + * + * @param {Object} value + */ +jasmine.Spy.prototype.andReturn = function(value) { + this.plan = function() { + return value; + }; + return this; +}; + +/** + * For throwing an exception when a spy is called. + * + * @example + * // defining a spy from scratch: foo() throws an exception w/ message 'ouch' + * var foo = jasmine.createSpy('spy on foo').andThrow('baz'); + * + * // defining a spy on an existing property: foo.bar() throws an exception w/ message 'ouch' + * spyOn(foo, 'bar').andThrow('baz'); + * + * @param {String} exceptionMsg + */ +jasmine.Spy.prototype.andThrow = function(exceptionMsg) { + this.plan = function() { + throw exceptionMsg; + }; + return this; +}; + +/** + * Calls an alternate implementation when a spy is called. + * + * @example + * var baz = function() { + * // do some stuff, return something + * } + * // defining a spy from scratch: foo() calls the function baz + * var foo = jasmine.createSpy('spy on foo').andCall(baz); + * + * // defining a spy on an existing property: foo.bar() calls an anonymnous function + * spyOn(foo, 'bar').andCall(function() { return 'baz';} ); + * + * @param {Function} fakeFunc + */ +jasmine.Spy.prototype.andCallFake = function(fakeFunc) { + this.plan = fakeFunc; + return this; +}; + +/** + * Resets all of a spy's the tracking variables so that it can be used again. + * + * @example + * spyOn(foo, 'bar'); + * + * foo.bar(); + * + * expect(foo.bar.callCount).toEqual(1); + * + * foo.bar.reset(); + * + * expect(foo.bar.callCount).toEqual(0); + */ +jasmine.Spy.prototype.reset = function() { + this.wasCalled = false; + this.callCount = 0; + this.argsForCall = []; + this.calls = []; + this.mostRecentCall = {}; +}; + +jasmine.createSpy = function(name) { + + var spyObj = function() { + spyObj.wasCalled = true; + spyObj.callCount++; + var args = jasmine.util.argsToArray(arguments); + spyObj.mostRecentCall.object = this; + spyObj.mostRecentCall.args = args; + spyObj.argsForCall.push(args); + spyObj.calls.push({object: this, args: args}); + return spyObj.plan.apply(this, arguments); + }; + + var spy = new jasmine.Spy(name); + + for (var prop in spy) { + spyObj[prop] = spy[prop]; + } + + spyObj.reset(); + + return spyObj; +}; + +/** + * Determines whether an object is a spy. + * + * @param {jasmine.Spy|Object} putativeSpy + * @returns {Boolean} + */ +jasmine.isSpy = function(putativeSpy) { + return putativeSpy && putativeSpy.isSpy; +}; + +/** + * Creates a more complicated spy: an Object that has every property a function that is a spy. Used for stubbing something + * large in one call. + * + * @param {String} baseName name of spy class + * @param {Array} methodNames array of names of methods to make spies + */ +jasmine.createSpyObj = function(baseName, methodNames) { + if (!jasmine.isArray_(methodNames) || methodNames.length === 0) { + throw new Error('createSpyObj requires a non-empty array of method names to create spies for'); + } + var obj = {}; + for (var i = 0; i < methodNames.length; i++) { + obj[methodNames[i]] = jasmine.createSpy(baseName + '.' + methodNames[i]); + } + return obj; +}; + +/** + * All parameters are pretty-printed and concatenated together, then written to the current spec's output. + * + * Be careful not to leave calls to jasmine.log in production code. + */ +jasmine.log = function() { + var spec = jasmine.getEnv().currentSpec; + spec.log.apply(spec, arguments); +}; + +/** + * Function that installs a spy on an existing object's method name. Used within a Spec to create a spy. + * + * @example + * // spy example + * var foo = { + * not: function(bool) { return !bool; } + * } + * spyOn(foo, 'not'); // actual foo.not will not be called, execution stops + * + * @see jasmine.createSpy + * @param obj + * @param methodName + * @return {jasmine.Spy} a Jasmine spy that can be chained with all spy methods + */ +var spyOn = function(obj, methodName) { + return jasmine.getEnv().currentSpec.spyOn(obj, methodName); +}; +if (isCommonJS) exports.spyOn = spyOn; + +/** + * Creates a Jasmine spec that will be added to the current suite. + * + * // TODO: pending tests + * + * @example + * it('should be true', function() { + * expect(true).toEqual(true); + * }); + * + * @param {String} desc description of this specification + * @param {Function} func defines the preconditions and expectations of the spec + */ +var it = function(desc, func) { + return jasmine.getEnv().it(desc, func); +}; +if (isCommonJS) exports.it = it; + +/** + * Creates a disabled Jasmine spec. + * + * A convenience method that allows existing specs to be disabled temporarily during development. + * + * @param {String} desc description of this specification + * @param {Function} func defines the preconditions and expectations of the spec + */ +var xit = function(desc, func) { + return jasmine.getEnv().xit(desc, func); +}; +if (isCommonJS) exports.xit = xit; + +/** + * Starts a chain for a Jasmine expectation. + * + * It is passed an Object that is the actual value and should chain to one of the many + * jasmine.Matchers functions. + * + * @param {Object} actual Actual value to test against and expected value + * @return {jasmine.Matchers} + */ +var expect = function(actual) { + return jasmine.getEnv().currentSpec.expect(actual); +}; +if (isCommonJS) exports.expect = expect; + +/** + * Defines part of a jasmine spec. Used in cominbination with waits or waitsFor in asynchrnous specs. + * + * @param {Function} func Function that defines part of a jasmine spec. + */ +var runs = function(func) { + jasmine.getEnv().currentSpec.runs(func); +}; +if (isCommonJS) exports.runs = runs; + +/** + * Waits a fixed time period before moving to the next block. + * + * @deprecated Use waitsFor() instead + * @param {Number} timeout milliseconds to wait + */ +var waits = function(timeout) { + jasmine.getEnv().currentSpec.waits(timeout); +}; +if (isCommonJS) exports.waits = waits; + +/** + * Waits for the latchFunction to return true before proceeding to the next block. + * + * @param {Function} latchFunction + * @param {String} optional_timeoutMessage + * @param {Number} optional_timeout + */ +var waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) { + jasmine.getEnv().currentSpec.waitsFor.apply(jasmine.getEnv().currentSpec, arguments); +}; +if (isCommonJS) exports.waitsFor = waitsFor; + +/** + * A function that is called before each spec in a suite. + * + * Used for spec setup, including validating assumptions. + * + * @param {Function} beforeEachFunction + */ +var beforeEach = function(beforeEachFunction) { + jasmine.getEnv().beforeEach(beforeEachFunction); +}; +if (isCommonJS) exports.beforeEach = beforeEach; + +/** + * A function that is called after each spec in a suite. + * + * Used for restoring any state that is hijacked during spec execution. + * + * @param {Function} afterEachFunction + */ +var afterEach = function(afterEachFunction) { + jasmine.getEnv().afterEach(afterEachFunction); +}; +if (isCommonJS) exports.afterEach = afterEach; + +/** + * Defines a suite of specifications. + * + * Stores the description and all defined specs in the Jasmine environment as one suite of specs. Variables declared + * are accessible by calls to beforeEach, it, and afterEach. Describe blocks can be nested, allowing for specialization + * of setup in some tests. + * + * @example + * // TODO: a simple suite + * + * // TODO: a simple suite with a nested describe block + * + * @param {String} description A string, usually the class under test. + * @param {Function} specDefinitions function that defines several specs. + */ +var describe = function(description, specDefinitions) { + return jasmine.getEnv().describe(description, specDefinitions); +}; +if (isCommonJS) exports.describe = describe; + +/** + * Disables a suite of specifications. Used to disable some suites in a file, or files, temporarily during development. + * + * @param {String} description A string, usually the class under test. + * @param {Function} specDefinitions function that defines several specs. + */ +var xdescribe = function(description, specDefinitions) { + return jasmine.getEnv().xdescribe(description, specDefinitions); +}; +if (isCommonJS) exports.xdescribe = xdescribe; + + +// Provide the XMLHttpRequest class for IE 5.x-6.x: +jasmine.XmlHttpRequest = (typeof XMLHttpRequest == "undefined") ? function() { + function tryIt(f) { + try { + return f(); + } catch(e) { + } + return null; + } + + var xhr = tryIt(function() { + return new ActiveXObject("Msxml2.XMLHTTP.6.0"); + }) || + tryIt(function() { + return new ActiveXObject("Msxml2.XMLHTTP.3.0"); + }) || + tryIt(function() { + return new ActiveXObject("Msxml2.XMLHTTP"); + }) || + tryIt(function() { + return new ActiveXObject("Microsoft.XMLHTTP"); + }); + + if (!xhr) throw new Error("This browser does not support XMLHttpRequest."); + + return xhr; +} : XMLHttpRequest; +/** + * @namespace + */ +jasmine.util = {}; + +/** + * Declare that a child class inherit it's prototype from the parent class. + * + * @private + * @param {Function} childClass + * @param {Function} parentClass + */ +jasmine.util.inherit = function(childClass, parentClass) { + /** + * @private + */ + var subclass = function() { + }; + subclass.prototype = parentClass.prototype; + childClass.prototype = new subclass(); +}; + +jasmine.util.formatException = function(e) { + var lineNumber; + if (e.line) { + lineNumber = e.line; + } + else if (e.lineNumber) { + lineNumber = e.lineNumber; + } + + var file; + + if (e.sourceURL) { + file = e.sourceURL; + } + else if (e.fileName) { + file = e.fileName; + } + + var message = (e.name && e.message) ? (e.name + ': ' + e.message) : e.toString(); + + if (file && lineNumber) { + message += ' in ' + file + ' (line ' + lineNumber + ')'; + } + + return message; +}; + +jasmine.util.htmlEscape = function(str) { + if (!str) return str; + return str.replace(/&/g, '&') + .replace(//g, '>'); +}; + +jasmine.util.argsToArray = function(args) { + var arrayOfArgs = []; + for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]); + return arrayOfArgs; +}; + +jasmine.util.extend = function(destination, source) { + for (var property in source) destination[property] = source[property]; + return destination; +}; + +/** + * Environment for Jasmine + * + * @constructor + */ +jasmine.Env = function() { + this.currentSpec = null; + this.currentSuite = null; + this.currentRunner_ = new jasmine.Runner(this); + + this.reporter = new jasmine.MultiReporter(); + + this.updateInterval = jasmine.DEFAULT_UPDATE_INTERVAL; + this.defaultTimeoutInterval = jasmine.DEFAULT_TIMEOUT_INTERVAL; + this.lastUpdate = 0; + this.specFilter = function() { + return true; + }; + + this.nextSpecId_ = 0; + this.nextSuiteId_ = 0; + this.equalityTesters_ = []; + + // wrap matchers + this.matchersClass = function() { + jasmine.Matchers.apply(this, arguments); + }; + jasmine.util.inherit(this.matchersClass, jasmine.Matchers); + + jasmine.Matchers.wrapInto_(jasmine.Matchers.prototype, this.matchersClass); +}; + + +jasmine.Env.prototype.setTimeout = jasmine.setTimeout; +jasmine.Env.prototype.clearTimeout = jasmine.clearTimeout; +jasmine.Env.prototype.setInterval = jasmine.setInterval; +jasmine.Env.prototype.clearInterval = jasmine.clearInterval; + +/** + * @returns an object containing jasmine version build info, if set. + */ +jasmine.Env.prototype.version = function () { + if (jasmine.version_) { + return jasmine.version_; + } else { + throw new Error('Version not set'); + } +}; + +/** + * @returns string containing jasmine version build info, if set. + */ +jasmine.Env.prototype.versionString = function() { + if (!jasmine.version_) { + return "version unknown"; + } + + var version = this.version(); + var versionString = version.major + "." + version.minor + "." + version.build; + if (version.release_candidate) { + versionString += ".rc" + version.release_candidate; + } + versionString += " revision " + version.revision; + return versionString; +}; + +/** + * @returns a sequential integer starting at 0 + */ +jasmine.Env.prototype.nextSpecId = function () { + return this.nextSpecId_++; +}; + +/** + * @returns a sequential integer starting at 0 + */ +jasmine.Env.prototype.nextSuiteId = function () { + return this.nextSuiteId_++; +}; + +/** + * Register a reporter to receive status updates from Jasmine. + * @param {jasmine.Reporter} reporter An object which will receive status updates. + */ +jasmine.Env.prototype.addReporter = function(reporter) { + this.reporter.addReporter(reporter); +}; + +jasmine.Env.prototype.execute = function() { + this.currentRunner_.execute(); +}; + +jasmine.Env.prototype.describe = function(description, specDefinitions) { + var suite = new jasmine.Suite(this, description, specDefinitions, this.currentSuite); + + var parentSuite = this.currentSuite; + if (parentSuite) { + parentSuite.add(suite); + } else { + this.currentRunner_.add(suite); + } + + this.currentSuite = suite; + + var declarationError = null; + try { + specDefinitions.call(suite); + } catch(e) { + declarationError = e; + } + + if (declarationError) { + this.it("encountered a declaration exception", function() { + throw declarationError; + }); + } + + this.currentSuite = parentSuite; + + return suite; +}; + +jasmine.Env.prototype.beforeEach = function(beforeEachFunction) { + if (this.currentSuite) { + this.currentSuite.beforeEach(beforeEachFunction); + } else { + this.currentRunner_.beforeEach(beforeEachFunction); + } +}; + +jasmine.Env.prototype.currentRunner = function () { + return this.currentRunner_; +}; + +jasmine.Env.prototype.afterEach = function(afterEachFunction) { + if (this.currentSuite) { + this.currentSuite.afterEach(afterEachFunction); + } else { + this.currentRunner_.afterEach(afterEachFunction); + } + +}; + +jasmine.Env.prototype.xdescribe = function(desc, specDefinitions) { + return { + execute: function() { + } + }; +}; + +jasmine.Env.prototype.it = function(description, func) { + var spec = new jasmine.Spec(this, this.currentSuite, description); + this.currentSuite.add(spec); + this.currentSpec = spec; + + if (func) { + spec.runs(func); + } + + return spec; +}; + +jasmine.Env.prototype.xit = function(desc, func) { + return { + id: this.nextSpecId(), + runs: function() { + } + }; +}; + +jasmine.Env.prototype.compareRegExps_ = function(a, b, mismatchKeys, mismatchValues) { + if (a.source != b.source) + mismatchValues.push("expected pattern /" + b.source + "/ is not equal to the pattern /" + a.source + "/"); + + if (a.ignoreCase != b.ignoreCase) + mismatchValues.push("expected modifier i was" + (b.ignoreCase ? " " : " not ") + "set and does not equal the origin modifier"); + + if (a.global != b.global) + mismatchValues.push("expected modifier g was" + (b.global ? " " : " not ") + "set and does not equal the origin modifier"); + + if (a.multiline != b.multiline) + mismatchValues.push("expected modifier m was" + (b.multiline ? " " : " not ") + "set and does not equal the origin modifier"); + + if (a.sticky != b.sticky) + mismatchValues.push("expected modifier y was" + (b.sticky ? " " : " not ") + "set and does not equal the origin modifier"); + + return (mismatchValues.length === 0); +}; + +jasmine.Env.prototype.compareObjects_ = function(a, b, mismatchKeys, mismatchValues) { + if (a.__Jasmine_been_here_before__ === b && b.__Jasmine_been_here_before__ === a) { + return true; + } + + a.__Jasmine_been_here_before__ = b; + b.__Jasmine_been_here_before__ = a; + + var hasKey = function(obj, keyName) { + return obj !== null && obj[keyName] !== jasmine.undefined; + }; + + for (var property in b) { + if (!hasKey(a, property) && hasKey(b, property)) { + mismatchKeys.push("expected has key '" + property + "', but missing from actual."); + } + } + for (property in a) { + if (!hasKey(b, property) && hasKey(a, property)) { + mismatchKeys.push("expected missing key '" + property + "', but present in actual."); + } + } + for (property in b) { + if (property == '__Jasmine_been_here_before__') continue; + if (!this.equals_(a[property], b[property], mismatchKeys, mismatchValues)) { + mismatchValues.push("'" + property + "' was '" + (b[property] ? jasmine.util.htmlEscape(b[property].toString()) : b[property]) + "' in expected, but was '" + (a[property] ? jasmine.util.htmlEscape(a[property].toString()) : a[property]) + "' in actual."); + } + } + + if (jasmine.isArray_(a) && jasmine.isArray_(b) && a.length != b.length) { + mismatchValues.push("arrays were not the same length"); + } + + delete a.__Jasmine_been_here_before__; + delete b.__Jasmine_been_here_before__; + return (mismatchKeys.length === 0 && mismatchValues.length === 0); +}; + +jasmine.Env.prototype.equals_ = function(a, b, mismatchKeys, mismatchValues) { + mismatchKeys = mismatchKeys || []; + mismatchValues = mismatchValues || []; + + for (var i = 0; i < this.equalityTesters_.length; i++) { + var equalityTester = this.equalityTesters_[i]; + var result = equalityTester(a, b, this, mismatchKeys, mismatchValues); + if (result !== jasmine.undefined) return result; + } + + if (a === b) return true; + + if (a === jasmine.undefined || a === null || b === jasmine.undefined || b === null) { + return (a == jasmine.undefined && b == jasmine.undefined); + } + + if (jasmine.isDomNode(a) && jasmine.isDomNode(b)) { + return a === b; + } + + if (a instanceof Date && b instanceof Date) { + return a.getTime() == b.getTime(); + } + + if (a.jasmineMatches) { + return a.jasmineMatches(b); + } + + if (b.jasmineMatches) { + return b.jasmineMatches(a); + } + + if (a instanceof jasmine.Matchers.ObjectContaining) { + return a.matches(b); + } + + if (b instanceof jasmine.Matchers.ObjectContaining) { + return b.matches(a); + } + + if (jasmine.isString_(a) && jasmine.isString_(b)) { + return (a == b); + } + + if (jasmine.isNumber_(a) && jasmine.isNumber_(b)) { + return (a == b); + } + + if (a instanceof RegExp && b instanceof RegExp) { + return this.compareRegExps_(a, b, mismatchKeys, mismatchValues); + } + + if (typeof a === "object" && typeof b === "object") { + return this.compareObjects_(a, b, mismatchKeys, mismatchValues); + } + + //Straight check + return (a === b); +}; + +jasmine.Env.prototype.contains_ = function(haystack, needle) { + if (jasmine.isArray_(haystack)) { + for (var i = 0; i < haystack.length; i++) { + if (this.equals_(haystack[i], needle)) return true; + } + return false; + } + return haystack.indexOf(needle) >= 0; +}; + +jasmine.Env.prototype.addEqualityTester = function(equalityTester) { + this.equalityTesters_.push(equalityTester); +}; +/** No-op base class for Jasmine reporters. + * + * @constructor + */ +jasmine.Reporter = function() { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportRunnerStarting = function(runner) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportRunnerResults = function(runner) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportSuiteResults = function(suite) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportSpecStarting = function(spec) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportSpecResults = function(spec) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.log = function(str) { +}; + +/** + * Blocks are functions with executable code that make up a spec. + * + * @constructor + * @param {jasmine.Env} env + * @param {Function} func + * @param {jasmine.Spec} spec + */ +jasmine.Block = function(env, func, spec) { + this.env = env; + this.func = func; + this.spec = spec; +}; + +jasmine.Block.prototype.execute = function(onComplete) { + if (!jasmine.CATCH_EXCEPTIONS) { + this.func.apply(this.spec); + } + else { + try { + this.func.apply(this.spec); + } catch (e) { + this.spec.fail(e); + } + } + onComplete(); +}; +/** JavaScript API reporter. + * + * @constructor + */ +jasmine.JsApiReporter = function() { + this.started = false; + this.finished = false; + this.suites_ = []; + this.results_ = {}; +}; + +jasmine.JsApiReporter.prototype.reportRunnerStarting = function(runner) { + this.started = true; + var suites = runner.topLevelSuites(); + for (var i = 0; i < suites.length; i++) { + var suite = suites[i]; + this.suites_.push(this.summarize_(suite)); + } +}; + +jasmine.JsApiReporter.prototype.suites = function() { + return this.suites_; +}; + +jasmine.JsApiReporter.prototype.summarize_ = function(suiteOrSpec) { + var isSuite = suiteOrSpec instanceof jasmine.Suite; + var summary = { + id: suiteOrSpec.id, + name: suiteOrSpec.description, + type: isSuite ? 'suite' : 'spec', + children: [] + }; + + if (isSuite) { + var children = suiteOrSpec.children(); + for (var i = 0; i < children.length; i++) { + summary.children.push(this.summarize_(children[i])); + } + } + return summary; +}; + +jasmine.JsApiReporter.prototype.results = function() { + return this.results_; +}; + +jasmine.JsApiReporter.prototype.resultsForSpec = function(specId) { + return this.results_[specId]; +}; + +//noinspection JSUnusedLocalSymbols +jasmine.JsApiReporter.prototype.reportRunnerResults = function(runner) { + this.finished = true; +}; + +//noinspection JSUnusedLocalSymbols +jasmine.JsApiReporter.prototype.reportSuiteResults = function(suite) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.JsApiReporter.prototype.reportSpecResults = function(spec) { + this.results_[spec.id] = { + messages: spec.results().getItems(), + result: spec.results().failedCount > 0 ? "failed" : "passed" + }; +}; + +//noinspection JSUnusedLocalSymbols +jasmine.JsApiReporter.prototype.log = function(str) { +}; + +jasmine.JsApiReporter.prototype.resultsForSpecs = function(specIds){ + var results = {}; + for (var i = 0; i < specIds.length; i++) { + var specId = specIds[i]; + results[specId] = this.summarizeResult_(this.results_[specId]); + } + return results; +}; + +jasmine.JsApiReporter.prototype.summarizeResult_ = function(result){ + var summaryMessages = []; + var messagesLength = result.messages.length; + for (var messageIndex = 0; messageIndex < messagesLength; messageIndex++) { + var resultMessage = result.messages[messageIndex]; + summaryMessages.push({ + text: resultMessage.type == 'log' ? resultMessage.toString() : jasmine.undefined, + passed: resultMessage.passed ? resultMessage.passed() : true, + type: resultMessage.type, + message: resultMessage.message, + trace: { + stack: resultMessage.passed && !resultMessage.passed() ? resultMessage.trace.stack : jasmine.undefined + } + }); + } + + return { + result : result.result, + messages : summaryMessages + }; +}; + +/** + * @constructor + * @param {jasmine.Env} env + * @param actual + * @param {jasmine.Spec} spec + */ +jasmine.Matchers = function(env, actual, spec, opt_isNot) { + this.env = env; + this.actual = actual; + this.spec = spec; + this.isNot = opt_isNot || false; + this.reportWasCalled_ = false; +}; + +// todo: @deprecated as of Jasmine 0.11, remove soon [xw] +jasmine.Matchers.pp = function(str) { + throw new Error("jasmine.Matchers.pp() is no longer supported, please use jasmine.pp() instead!"); +}; + +// todo: @deprecated Deprecated as of Jasmine 0.10. Rewrite your custom matchers to return true or false. [xw] +jasmine.Matchers.prototype.report = function(result, failing_message, details) { + throw new Error("As of jasmine 0.11, custom matchers must be implemented differently -- please see jasmine docs"); +}; + +jasmine.Matchers.wrapInto_ = function(prototype, matchersClass) { + for (var methodName in prototype) { + if (methodName == 'report') continue; + var orig = prototype[methodName]; + matchersClass.prototype[methodName] = jasmine.Matchers.matcherFn_(methodName, orig); + } +}; + +jasmine.Matchers.matcherFn_ = function(matcherName, matcherFunction) { + return function() { + var matcherArgs = jasmine.util.argsToArray(arguments); + var result = matcherFunction.apply(this, arguments); + + if (this.isNot) { + result = !result; + } + + if (this.reportWasCalled_) return result; + + var message; + if (!result) { + if (this.message) { + message = this.message.apply(this, arguments); + if (jasmine.isArray_(message)) { + message = message[this.isNot ? 1 : 0]; + } + } else { + var englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); }); + message = "Expected " + jasmine.pp(this.actual) + (this.isNot ? " not " : " ") + englishyPredicate; + if (matcherArgs.length > 0) { + for (var i = 0; i < matcherArgs.length; i++) { + if (i > 0) message += ","; + message += " " + jasmine.pp(matcherArgs[i]); + } + } + message += "."; + } + } + var expectationResult = new jasmine.ExpectationResult({ + matcherName: matcherName, + passed: result, + expected: matcherArgs.length > 1 ? matcherArgs : matcherArgs[0], + actual: this.actual, + message: message + }); + this.spec.addMatcherResult(expectationResult); + return jasmine.undefined; + }; +}; + + + + +/** + * toBe: compares the actual to the expected using === + * @param expected + */ +jasmine.Matchers.prototype.toBe = function(expected) { + return this.actual === expected; +}; + +/** + * toNotBe: compares the actual to the expected using !== + * @param expected + * @deprecated as of 1.0. Use not.toBe() instead. + */ +jasmine.Matchers.prototype.toNotBe = function(expected) { + return this.actual !== expected; +}; + +/** + * toEqual: compares the actual to the expected using common sense equality. Handles Objects, Arrays, etc. + * + * @param expected + */ +jasmine.Matchers.prototype.toEqual = function(expected) { + return this.env.equals_(this.actual, expected); +}; + +/** + * toNotEqual: compares the actual to the expected using the ! of jasmine.Matchers.toEqual + * @param expected + * @deprecated as of 1.0. Use not.toEqual() instead. + */ +jasmine.Matchers.prototype.toNotEqual = function(expected) { + return !this.env.equals_(this.actual, expected); +}; + +/** + * Matcher that compares the actual to the expected using a regular expression. Constructs a RegExp, so takes + * a pattern or a String. + * + * @param expected + */ +jasmine.Matchers.prototype.toMatch = function(expected) { + return new RegExp(expected).test(this.actual); +}; + +/** + * Matcher that compares the actual to the expected using the boolean inverse of jasmine.Matchers.toMatch + * @param expected + * @deprecated as of 1.0. Use not.toMatch() instead. + */ +jasmine.Matchers.prototype.toNotMatch = function(expected) { + return !(new RegExp(expected).test(this.actual)); +}; + +/** + * Matcher that compares the actual to jasmine.undefined. + */ +jasmine.Matchers.prototype.toBeDefined = function() { + return (this.actual !== jasmine.undefined); +}; + +/** + * Matcher that compares the actual to jasmine.undefined. + */ +jasmine.Matchers.prototype.toBeUndefined = function() { + return (this.actual === jasmine.undefined); +}; + +/** + * Matcher that compares the actual to null. + */ +jasmine.Matchers.prototype.toBeNull = function() { + return (this.actual === null); +}; + +/** + * Matcher that compares the actual to NaN. + */ +jasmine.Matchers.prototype.toBeNaN = function() { + this.message = function() { + return [ "Expected " + jasmine.pp(this.actual) + " to be NaN." ]; + }; + + return (this.actual !== this.actual); +}; + +/** + * Matcher that boolean not-nots the actual. + */ +jasmine.Matchers.prototype.toBeTruthy = function() { + return !!this.actual; +}; + + +/** + * Matcher that boolean nots the actual. + */ +jasmine.Matchers.prototype.toBeFalsy = function() { + return !this.actual; +}; + + +/** + * Matcher that checks to see if the actual, a Jasmine spy, was called. + */ +jasmine.Matchers.prototype.toHaveBeenCalled = function() { + if (arguments.length > 0) { + throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith'); + } + + if (!jasmine.isSpy(this.actual)) { + throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); + } + + this.message = function() { + return [ + "Expected spy " + this.actual.identity + " to have been called.", + "Expected spy " + this.actual.identity + " not to have been called." + ]; + }; + + return this.actual.wasCalled; +}; + +/** @deprecated Use expect(xxx).toHaveBeenCalled() instead */ +jasmine.Matchers.prototype.wasCalled = jasmine.Matchers.prototype.toHaveBeenCalled; + +/** + * Matcher that checks to see if the actual, a Jasmine spy, was not called. + * + * @deprecated Use expect(xxx).not.toHaveBeenCalled() instead + */ +jasmine.Matchers.prototype.wasNotCalled = function() { + if (arguments.length > 0) { + throw new Error('wasNotCalled does not take arguments'); + } + + if (!jasmine.isSpy(this.actual)) { + throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); + } + + this.message = function() { + return [ + "Expected spy " + this.actual.identity + " to not have been called.", + "Expected spy " + this.actual.identity + " to have been called." + ]; + }; + + return !this.actual.wasCalled; +}; + +/** + * Matcher that checks to see if the actual, a Jasmine spy, was called with a set of parameters. + * + * @example + * + */ +jasmine.Matchers.prototype.toHaveBeenCalledWith = function() { + var expectedArgs = jasmine.util.argsToArray(arguments); + if (!jasmine.isSpy(this.actual)) { + throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); + } + this.message = function() { + var invertedMessage = "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but it was."; + var positiveMessage = ""; + if (this.actual.callCount === 0) { + positiveMessage = "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but it was never called."; + } else { + positiveMessage = "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but actual calls were " + jasmine.pp(this.actual.argsForCall).replace(/^\[ | \]$/g, '') + } + return [positiveMessage, invertedMessage]; + }; + + return this.env.contains_(this.actual.argsForCall, expectedArgs); +}; + +/** @deprecated Use expect(xxx).toHaveBeenCalledWith() instead */ +jasmine.Matchers.prototype.wasCalledWith = jasmine.Matchers.prototype.toHaveBeenCalledWith; + +/** @deprecated Use expect(xxx).not.toHaveBeenCalledWith() instead */ +jasmine.Matchers.prototype.wasNotCalledWith = function() { + var expectedArgs = jasmine.util.argsToArray(arguments); + if (!jasmine.isSpy(this.actual)) { + throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); + } + + this.message = function() { + return [ + "Expected spy not to have been called with " + jasmine.pp(expectedArgs) + " but it was", + "Expected spy to have been called with " + jasmine.pp(expectedArgs) + " but it was" + ]; + }; + + return !this.env.contains_(this.actual.argsForCall, expectedArgs); +}; + +/** + * Matcher that checks that the expected item is an element in the actual Array. + * + * @param {Object} expected + */ +jasmine.Matchers.prototype.toContain = function(expected) { + return this.env.contains_(this.actual, expected); +}; + +/** + * Matcher that checks that the expected item is NOT an element in the actual Array. + * + * @param {Object} expected + * @deprecated as of 1.0. Use not.toContain() instead. + */ +jasmine.Matchers.prototype.toNotContain = function(expected) { + return !this.env.contains_(this.actual, expected); +}; + +jasmine.Matchers.prototype.toBeLessThan = function(expected) { + return this.actual < expected; +}; + +jasmine.Matchers.prototype.toBeGreaterThan = function(expected) { + return this.actual > expected; +}; + +/** + * Matcher that checks that the expected item is equal to the actual item + * up to a given level of decimal precision (default 2). + * + * @param {Number} expected + * @param {Number} precision, as number of decimal places + */ +jasmine.Matchers.prototype.toBeCloseTo = function(expected, precision) { + if (!(precision === 0)) { + precision = precision || 2; + } + return Math.abs(expected - this.actual) < (Math.pow(10, -precision) / 2); +}; + +/** + * Matcher that checks that the expected exception was thrown by the actual. + * + * @param {String} [expected] + */ +jasmine.Matchers.prototype.toThrow = function(expected) { + var result = false; + var exception; + if (typeof this.actual != 'function') { + throw new Error('Actual is not a function'); + } + try { + this.actual(); + } catch (e) { + exception = e; + } + if (exception) { + result = (expected === jasmine.undefined || this.env.equals_(exception.message || exception, expected.message || expected)); + } + + var not = this.isNot ? "not " : ""; + + this.message = function() { + if (exception && (expected === jasmine.undefined || !this.env.equals_(exception.message || exception, expected.message || expected))) { + return ["Expected function " + not + "to throw", expected ? expected.message || expected : "an exception", ", but it threw", exception.message || exception].join(' '); + } else { + return "Expected function to throw an exception."; + } + }; + + return result; +}; + +jasmine.Matchers.Any = function(expectedClass) { + this.expectedClass = expectedClass; +}; + +jasmine.Matchers.Any.prototype.jasmineMatches = function(other) { + if (this.expectedClass == String) { + return typeof other == 'string' || other instanceof String; + } + + if (this.expectedClass == Number) { + return typeof other == 'number' || other instanceof Number; + } + + if (this.expectedClass == Function) { + return typeof other == 'function' || other instanceof Function; + } + + if (this.expectedClass == Object) { + return typeof other == 'object'; + } + + return other instanceof this.expectedClass; +}; + +jasmine.Matchers.Any.prototype.jasmineToString = function() { + return ''; +}; + +jasmine.Matchers.ObjectContaining = function (sample) { + this.sample = sample; +}; + +jasmine.Matchers.ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) { + mismatchKeys = mismatchKeys || []; + mismatchValues = mismatchValues || []; + + var env = jasmine.getEnv(); + + var hasKey = function(obj, keyName) { + return obj != null && obj[keyName] !== jasmine.undefined; + }; + + for (var property in this.sample) { + if (!hasKey(other, property) && hasKey(this.sample, property)) { + mismatchKeys.push("expected has key '" + property + "', but missing from actual."); + } + else if (!env.equals_(this.sample[property], other[property], mismatchKeys, mismatchValues)) { + mismatchValues.push("'" + property + "' was '" + (other[property] ? jasmine.util.htmlEscape(other[property].toString()) : other[property]) + "' in expected, but was '" + (this.sample[property] ? jasmine.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + "' in actual."); + } + } + + return (mismatchKeys.length === 0 && mismatchValues.length === 0); +}; + +jasmine.Matchers.ObjectContaining.prototype.jasmineToString = function () { + return ""; +}; +// Mock setTimeout, clearTimeout +// Contributed by Pivotal Computer Systems, www.pivotalsf.com + +jasmine.FakeTimer = function() { + this.reset(); + + var self = this; + self.setTimeout = function(funcToCall, millis) { + self.timeoutsMade++; + self.scheduleFunction(self.timeoutsMade, funcToCall, millis, false); + return self.timeoutsMade; + }; + + self.setInterval = function(funcToCall, millis) { + self.timeoutsMade++; + self.scheduleFunction(self.timeoutsMade, funcToCall, millis, true); + return self.timeoutsMade; + }; + + self.clearTimeout = function(timeoutKey) { + self.scheduledFunctions[timeoutKey] = jasmine.undefined; + }; + + self.clearInterval = function(timeoutKey) { + self.scheduledFunctions[timeoutKey] = jasmine.undefined; + }; + +}; + +jasmine.FakeTimer.prototype.reset = function() { + this.timeoutsMade = 0; + this.scheduledFunctions = {}; + this.nowMillis = 0; +}; + +jasmine.FakeTimer.prototype.tick = function(millis) { + var oldMillis = this.nowMillis; + var newMillis = oldMillis + millis; + this.runFunctionsWithinRange(oldMillis, newMillis); + this.nowMillis = newMillis; +}; + +jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMillis) { + var scheduledFunc; + var funcsToRun = []; + for (var timeoutKey in this.scheduledFunctions) { + scheduledFunc = this.scheduledFunctions[timeoutKey]; + if (scheduledFunc != jasmine.undefined && + scheduledFunc.runAtMillis >= oldMillis && + scheduledFunc.runAtMillis <= nowMillis) { + funcsToRun.push(scheduledFunc); + this.scheduledFunctions[timeoutKey] = jasmine.undefined; + } + } + + if (funcsToRun.length > 0) { + funcsToRun.sort(function(a, b) { + return a.runAtMillis - b.runAtMillis; + }); + for (var i = 0; i < funcsToRun.length; ++i) { + try { + var funcToRun = funcsToRun[i]; + this.nowMillis = funcToRun.runAtMillis; + funcToRun.funcToCall(); + if (funcToRun.recurring) { + this.scheduleFunction(funcToRun.timeoutKey, + funcToRun.funcToCall, + funcToRun.millis, + true); + } + } catch(e) { + } + } + this.runFunctionsWithinRange(oldMillis, nowMillis); + } +}; + +jasmine.FakeTimer.prototype.scheduleFunction = function(timeoutKey, funcToCall, millis, recurring) { + this.scheduledFunctions[timeoutKey] = { + runAtMillis: this.nowMillis + millis, + funcToCall: funcToCall, + recurring: recurring, + timeoutKey: timeoutKey, + millis: millis + }; +}; + +/** + * @namespace + */ +jasmine.Clock = { + defaultFakeTimer: new jasmine.FakeTimer(), + + reset: function() { + jasmine.Clock.assertInstalled(); + jasmine.Clock.defaultFakeTimer.reset(); + }, + + tick: function(millis) { + jasmine.Clock.assertInstalled(); + jasmine.Clock.defaultFakeTimer.tick(millis); + }, + + runFunctionsWithinRange: function(oldMillis, nowMillis) { + jasmine.Clock.defaultFakeTimer.runFunctionsWithinRange(oldMillis, nowMillis); + }, + + scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) { + jasmine.Clock.defaultFakeTimer.scheduleFunction(timeoutKey, funcToCall, millis, recurring); + }, + + useMock: function() { + if (!jasmine.Clock.isInstalled()) { + var spec = jasmine.getEnv().currentSpec; + spec.after(jasmine.Clock.uninstallMock); + + jasmine.Clock.installMock(); + } + }, + + installMock: function() { + jasmine.Clock.installed = jasmine.Clock.defaultFakeTimer; + }, + + uninstallMock: function() { + jasmine.Clock.assertInstalled(); + jasmine.Clock.installed = jasmine.Clock.real; + }, + + real: { + setTimeout: jasmine.getGlobal().setTimeout, + clearTimeout: jasmine.getGlobal().clearTimeout, + setInterval: jasmine.getGlobal().setInterval, + clearInterval: jasmine.getGlobal().clearInterval + }, + + assertInstalled: function() { + if (!jasmine.Clock.isInstalled()) { + throw new Error("Mock clock is not installed, use jasmine.Clock.useMock()"); + } + }, + + isInstalled: function() { + return jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer; + }, + + installed: null +}; +jasmine.Clock.installed = jasmine.Clock.real; + +//else for IE support +jasmine.getGlobal().setTimeout = function(funcToCall, millis) { + if (jasmine.Clock.installed.setTimeout.apply) { + return jasmine.Clock.installed.setTimeout.apply(this, arguments); + } else { + return jasmine.Clock.installed.setTimeout(funcToCall, millis); + } +}; + +jasmine.getGlobal().setInterval = function(funcToCall, millis) { + if (jasmine.Clock.installed.setInterval.apply) { + return jasmine.Clock.installed.setInterval.apply(this, arguments); + } else { + return jasmine.Clock.installed.setInterval(funcToCall, millis); + } +}; + +jasmine.getGlobal().clearTimeout = function(timeoutKey) { + if (jasmine.Clock.installed.clearTimeout.apply) { + return jasmine.Clock.installed.clearTimeout.apply(this, arguments); + } else { + return jasmine.Clock.installed.clearTimeout(timeoutKey); + } +}; + +jasmine.getGlobal().clearInterval = function(timeoutKey) { + if (jasmine.Clock.installed.clearTimeout.apply) { + return jasmine.Clock.installed.clearInterval.apply(this, arguments); + } else { + return jasmine.Clock.installed.clearInterval(timeoutKey); + } +}; + +/** + * @constructor + */ +jasmine.MultiReporter = function() { + this.subReporters_ = []; +}; +jasmine.util.inherit(jasmine.MultiReporter, jasmine.Reporter); + +jasmine.MultiReporter.prototype.addReporter = function(reporter) { + this.subReporters_.push(reporter); +}; + +(function() { + var functionNames = [ + "reportRunnerStarting", + "reportRunnerResults", + "reportSuiteResults", + "reportSpecStarting", + "reportSpecResults", + "log" + ]; + for (var i = 0; i < functionNames.length; i++) { + var functionName = functionNames[i]; + jasmine.MultiReporter.prototype[functionName] = (function(functionName) { + return function() { + for (var j = 0; j < this.subReporters_.length; j++) { + var subReporter = this.subReporters_[j]; + if (subReporter[functionName]) { + subReporter[functionName].apply(subReporter, arguments); + } + } + }; + })(functionName); + } +})(); +/** + * Holds results for a set of Jasmine spec. Allows for the results array to hold another jasmine.NestedResults + * + * @constructor + */ +jasmine.NestedResults = function() { + /** + * The total count of results + */ + this.totalCount = 0; + /** + * Number of passed results + */ + this.passedCount = 0; + /** + * Number of failed results + */ + this.failedCount = 0; + /** + * Was this suite/spec skipped? + */ + this.skipped = false; + /** + * @ignore + */ + this.items_ = []; +}; + +/** + * Roll up the result counts. + * + * @param result + */ +jasmine.NestedResults.prototype.rollupCounts = function(result) { + this.totalCount += result.totalCount; + this.passedCount += result.passedCount; + this.failedCount += result.failedCount; +}; + +/** + * Adds a log message. + * @param values Array of message parts which will be concatenated later. + */ +jasmine.NestedResults.prototype.log = function(values) { + this.items_.push(new jasmine.MessageResult(values)); +}; + +/** + * Getter for the results: message & results. + */ +jasmine.NestedResults.prototype.getItems = function() { + return this.items_; +}; + +/** + * Adds a result, tracking counts (total, passed, & failed) + * @param {jasmine.ExpectationResult|jasmine.NestedResults} result + */ +jasmine.NestedResults.prototype.addResult = function(result) { + if (result.type != 'log') { + if (result.items_) { + this.rollupCounts(result); + } else { + this.totalCount++; + if (result.passed()) { + this.passedCount++; + } else { + this.failedCount++; + } + } + } + this.items_.push(result); +}; + +/** + * @returns {Boolean} True if everything below passed + */ +jasmine.NestedResults.prototype.passed = function() { + return this.passedCount === this.totalCount; +}; +/** + * Base class for pretty printing for expectation results. + */ +jasmine.PrettyPrinter = function() { + this.ppNestLevel_ = 0; +}; + +/** + * Formats a value in a nice, human-readable string. + * + * @param value + */ +jasmine.PrettyPrinter.prototype.format = function(value) { + this.ppNestLevel_++; + try { + if (value === jasmine.undefined) { + this.emitScalar('undefined'); + } else if (value === null) { + this.emitScalar('null'); + } else if (value === jasmine.getGlobal()) { + this.emitScalar(''); + } else if (value.jasmineToString) { + this.emitScalar(value.jasmineToString()); + } else if (typeof value === 'string') { + this.emitString(value); + } else if (jasmine.isSpy(value)) { + this.emitScalar("spy on " + value.identity); + } else if (value instanceof RegExp) { + this.emitScalar(value.toString()); + } else if (typeof value === 'function') { + this.emitScalar('Function'); + } else if (typeof value.nodeType === 'number') { + this.emitScalar('HTMLNode'); + } else if (value instanceof Date) { + this.emitScalar('Date(' + value + ')'); + } else if (value.__Jasmine_been_here_before__) { + this.emitScalar(''); + } else if (jasmine.isArray_(value) || typeof value == 'object') { + value.__Jasmine_been_here_before__ = true; + if (jasmine.isArray_(value)) { + this.emitArray(value); + } else { + this.emitObject(value); + } + delete value.__Jasmine_been_here_before__; + } else { + this.emitScalar(value.toString()); + } + } finally { + this.ppNestLevel_--; + } +}; + +jasmine.PrettyPrinter.prototype.iterateObject = function(obj, fn) { + for (var property in obj) { + if (!obj.hasOwnProperty(property)) continue; + if (property == '__Jasmine_been_here_before__') continue; + fn(property, obj.__lookupGetter__ ? (obj.__lookupGetter__(property) !== jasmine.undefined && + obj.__lookupGetter__(property) !== null) : false); + } +}; + +jasmine.PrettyPrinter.prototype.emitArray = jasmine.unimplementedMethod_; +jasmine.PrettyPrinter.prototype.emitObject = jasmine.unimplementedMethod_; +jasmine.PrettyPrinter.prototype.emitScalar = jasmine.unimplementedMethod_; +jasmine.PrettyPrinter.prototype.emitString = jasmine.unimplementedMethod_; + +jasmine.StringPrettyPrinter = function() { + jasmine.PrettyPrinter.call(this); + + this.string = ''; +}; +jasmine.util.inherit(jasmine.StringPrettyPrinter, jasmine.PrettyPrinter); + +jasmine.StringPrettyPrinter.prototype.emitScalar = function(value) { + this.append(value); +}; + +jasmine.StringPrettyPrinter.prototype.emitString = function(value) { + this.append("'" + value + "'"); +}; + +jasmine.StringPrettyPrinter.prototype.emitArray = function(array) { + if (this.ppNestLevel_ > jasmine.MAX_PRETTY_PRINT_DEPTH) { + this.append("Array"); + return; + } + + this.append('[ '); + for (var i = 0; i < array.length; i++) { + if (i > 0) { + this.append(', '); + } + this.format(array[i]); + } + this.append(' ]'); +}; + +jasmine.StringPrettyPrinter.prototype.emitObject = function(obj) { + if (this.ppNestLevel_ > jasmine.MAX_PRETTY_PRINT_DEPTH) { + this.append("Object"); + return; + } + + var self = this; + this.append('{ '); + var first = true; + + this.iterateObject(obj, function(property, isGetter) { + if (first) { + first = false; + } else { + self.append(', '); + } + + self.append(property); + self.append(' : '); + if (isGetter) { + self.append(''); + } else { + self.format(obj[property]); + } + }); + + this.append(' }'); +}; + +jasmine.StringPrettyPrinter.prototype.append = function(value) { + this.string += value; +}; +jasmine.Queue = function(env) { + this.env = env; + + // parallel to blocks. each true value in this array means the block will + // get executed even if we abort + this.ensured = []; + this.blocks = []; + this.running = false; + this.index = 0; + this.offset = 0; + this.abort = false; +}; + +jasmine.Queue.prototype.addBefore = function(block, ensure) { + if (ensure === jasmine.undefined) { + ensure = false; + } + + this.blocks.unshift(block); + this.ensured.unshift(ensure); +}; + +jasmine.Queue.prototype.add = function(block, ensure) { + if (ensure === jasmine.undefined) { + ensure = false; + } + + this.blocks.push(block); + this.ensured.push(ensure); +}; + +jasmine.Queue.prototype.insertNext = function(block, ensure) { + if (ensure === jasmine.undefined) { + ensure = false; + } + + this.ensured.splice((this.index + this.offset + 1), 0, ensure); + this.blocks.splice((this.index + this.offset + 1), 0, block); + this.offset++; +}; + +jasmine.Queue.prototype.start = function(onComplete) { + this.running = true; + this.onComplete = onComplete; + this.next_(); +}; + +jasmine.Queue.prototype.isRunning = function() { + return this.running; +}; + +jasmine.Queue.LOOP_DONT_RECURSE = true; + +jasmine.Queue.prototype.next_ = function() { + var self = this; + var goAgain = true; + + while (goAgain) { + goAgain = false; + + if (self.index < self.blocks.length && !(this.abort && !this.ensured[self.index])) { + var calledSynchronously = true; + var completedSynchronously = false; + + var onComplete = function () { + if (jasmine.Queue.LOOP_DONT_RECURSE && calledSynchronously) { + completedSynchronously = true; + return; + } + + if (self.blocks[self.index].abort) { + self.abort = true; + } + + self.offset = 0; + self.index++; + + var now = new Date().getTime(); + if (self.env.updateInterval && now - self.env.lastUpdate > self.env.updateInterval) { + self.env.lastUpdate = now; + self.env.setTimeout(function() { + self.next_(); + }, 0); + } else { + if (jasmine.Queue.LOOP_DONT_RECURSE && completedSynchronously) { + goAgain = true; + } else { + self.next_(); + } + } + }; + self.blocks[self.index].execute(onComplete); + + calledSynchronously = false; + if (completedSynchronously) { + onComplete(); + } + + } else { + self.running = false; + if (self.onComplete) { + self.onComplete(); + } + } + } +}; + +jasmine.Queue.prototype.results = function() { + var results = new jasmine.NestedResults(); + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i].results) { + results.addResult(this.blocks[i].results()); + } + } + return results; +}; + + +/** + * Runner + * + * @constructor + * @param {jasmine.Env} env + */ +jasmine.Runner = function(env) { + var self = this; + self.env = env; + self.queue = new jasmine.Queue(env); + self.before_ = []; + self.after_ = []; + self.suites_ = []; +}; + +jasmine.Runner.prototype.execute = function() { + var self = this; + if (self.env.reporter.reportRunnerStarting) { + self.env.reporter.reportRunnerStarting(this); + } + self.queue.start(function () { + self.finishCallback(); + }); +}; + +jasmine.Runner.prototype.beforeEach = function(beforeEachFunction) { + beforeEachFunction.typeName = 'beforeEach'; + this.before_.splice(0,0,beforeEachFunction); +}; + +jasmine.Runner.prototype.afterEach = function(afterEachFunction) { + afterEachFunction.typeName = 'afterEach'; + this.after_.splice(0,0,afterEachFunction); +}; + + +jasmine.Runner.prototype.finishCallback = function() { + this.env.reporter.reportRunnerResults(this); +}; + +jasmine.Runner.prototype.addSuite = function(suite) { + this.suites_.push(suite); +}; + +jasmine.Runner.prototype.add = function(block) { + if (block instanceof jasmine.Suite) { + this.addSuite(block); + } + this.queue.add(block); +}; + +jasmine.Runner.prototype.specs = function () { + var suites = this.suites(); + var specs = []; + for (var i = 0; i < suites.length; i++) { + specs = specs.concat(suites[i].specs()); + } + return specs; +}; + +jasmine.Runner.prototype.suites = function() { + return this.suites_; +}; + +jasmine.Runner.prototype.topLevelSuites = function() { + var topLevelSuites = []; + for (var i = 0; i < this.suites_.length; i++) { + if (!this.suites_[i].parentSuite) { + topLevelSuites.push(this.suites_[i]); + } + } + return topLevelSuites; +}; + +jasmine.Runner.prototype.results = function() { + return this.queue.results(); +}; +/** + * Internal representation of a Jasmine specification, or test. + * + * @constructor + * @param {jasmine.Env} env + * @param {jasmine.Suite} suite + * @param {String} description + */ +jasmine.Spec = function(env, suite, description) { + if (!env) { + throw new Error('jasmine.Env() required'); + } + if (!suite) { + throw new Error('jasmine.Suite() required'); + } + var spec = this; + spec.id = env.nextSpecId ? env.nextSpecId() : null; + spec.env = env; + spec.suite = suite; + spec.description = description; + spec.queue = new jasmine.Queue(env); + + spec.afterCallbacks = []; + spec.spies_ = []; + + spec.results_ = new jasmine.NestedResults(); + spec.results_.description = description; + spec.matchersClass = null; +}; + +jasmine.Spec.prototype.getFullName = function() { + return this.suite.getFullName() + ' ' + this.description + '.'; +}; + + +jasmine.Spec.prototype.results = function() { + return this.results_; +}; + +/** + * All parameters are pretty-printed and concatenated together, then written to the spec's output. + * + * Be careful not to leave calls to jasmine.log in production code. + */ +jasmine.Spec.prototype.log = function() { + return this.results_.log(arguments); +}; + +jasmine.Spec.prototype.runs = function (func) { + var block = new jasmine.Block(this.env, func, this); + this.addToQueue(block); + return this; +}; + +jasmine.Spec.prototype.addToQueue = function (block) { + if (this.queue.isRunning()) { + this.queue.insertNext(block); + } else { + this.queue.add(block); + } +}; + +/** + * @param {jasmine.ExpectationResult} result + */ +jasmine.Spec.prototype.addMatcherResult = function(result) { + this.results_.addResult(result); +}; + +jasmine.Spec.prototype.expect = function(actual) { + var positive = new (this.getMatchersClass_())(this.env, actual, this); + positive.not = new (this.getMatchersClass_())(this.env, actual, this, true); + return positive; +}; + +/** + * Waits a fixed time period before moving to the next block. + * + * @deprecated Use waitsFor() instead + * @param {Number} timeout milliseconds to wait + */ +jasmine.Spec.prototype.waits = function(timeout) { + var waitsFunc = new jasmine.WaitsBlock(this.env, timeout, this); + this.addToQueue(waitsFunc); + return this; +}; + +/** + * Waits for the latchFunction to return true before proceeding to the next block. + * + * @param {Function} latchFunction + * @param {String} optional_timeoutMessage + * @param {Number} optional_timeout + */ +jasmine.Spec.prototype.waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) { + var latchFunction_ = null; + var optional_timeoutMessage_ = null; + var optional_timeout_ = null; + + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i]; + switch (typeof arg) { + case 'function': + latchFunction_ = arg; + break; + case 'string': + optional_timeoutMessage_ = arg; + break; + case 'number': + optional_timeout_ = arg; + break; + } + } + + var waitsForFunc = new jasmine.WaitsForBlock(this.env, optional_timeout_, latchFunction_, optional_timeoutMessage_, this); + this.addToQueue(waitsForFunc); + return this; +}; + +jasmine.Spec.prototype.fail = function (e) { + var expectationResult = new jasmine.ExpectationResult({ + passed: false, + message: e ? jasmine.util.formatException(e) : 'Exception', + trace: { stack: e.stack } + }); + this.results_.addResult(expectationResult); +}; + +jasmine.Spec.prototype.getMatchersClass_ = function() { + return this.matchersClass || this.env.matchersClass; +}; + +jasmine.Spec.prototype.addMatchers = function(matchersPrototype) { + var parent = this.getMatchersClass_(); + var newMatchersClass = function() { + parent.apply(this, arguments); + }; + jasmine.util.inherit(newMatchersClass, parent); + jasmine.Matchers.wrapInto_(matchersPrototype, newMatchersClass); + this.matchersClass = newMatchersClass; +}; + +jasmine.Spec.prototype.finishCallback = function() { + this.env.reporter.reportSpecResults(this); +}; + +jasmine.Spec.prototype.finish = function(onComplete) { + this.removeAllSpies(); + this.finishCallback(); + if (onComplete) { + onComplete(); + } +}; + +jasmine.Spec.prototype.after = function(doAfter) { + if (this.queue.isRunning()) { + this.queue.add(new jasmine.Block(this.env, doAfter, this), true); + } else { + this.afterCallbacks.unshift(doAfter); + } +}; + +jasmine.Spec.prototype.execute = function(onComplete) { + var spec = this; + if (!spec.env.specFilter(spec)) { + spec.results_.skipped = true; + spec.finish(onComplete); + return; + } + + this.env.reporter.reportSpecStarting(this); + + spec.env.currentSpec = spec; + + spec.addBeforesAndAftersToQueue(); + + spec.queue.start(function () { + spec.finish(onComplete); + }); +}; + +jasmine.Spec.prototype.addBeforesAndAftersToQueue = function() { + var runner = this.env.currentRunner(); + var i; + + for (var suite = this.suite; suite; suite = suite.parentSuite) { + for (i = 0; i < suite.before_.length; i++) { + this.queue.addBefore(new jasmine.Block(this.env, suite.before_[i], this)); + } + } + for (i = 0; i < runner.before_.length; i++) { + this.queue.addBefore(new jasmine.Block(this.env, runner.before_[i], this)); + } + for (i = 0; i < this.afterCallbacks.length; i++) { + this.queue.add(new jasmine.Block(this.env, this.afterCallbacks[i], this), true); + } + for (suite = this.suite; suite; suite = suite.parentSuite) { + for (i = 0; i < suite.after_.length; i++) { + this.queue.add(new jasmine.Block(this.env, suite.after_[i], this), true); + } + } + for (i = 0; i < runner.after_.length; i++) { + this.queue.add(new jasmine.Block(this.env, runner.after_[i], this), true); + } +}; + +jasmine.Spec.prototype.explodes = function() { + throw 'explodes function should not have been called'; +}; + +jasmine.Spec.prototype.spyOn = function(obj, methodName, ignoreMethodDoesntExist) { + if (obj == jasmine.undefined) { + throw "spyOn could not find an object to spy upon for " + methodName + "()"; + } + + if (!ignoreMethodDoesntExist && obj[methodName] === jasmine.undefined) { + throw methodName + '() method does not exist'; + } + + if (!ignoreMethodDoesntExist && obj[methodName] && obj[methodName].isSpy) { + throw new Error(methodName + ' has already been spied upon'); + } + + var spyObj = jasmine.createSpy(methodName); + + this.spies_.push(spyObj); + spyObj.baseObj = obj; + spyObj.methodName = methodName; + spyObj.originalValue = obj[methodName]; + + obj[methodName] = spyObj; + + return spyObj; +}; + +jasmine.Spec.prototype.removeAllSpies = function() { + for (var i = 0; i < this.spies_.length; i++) { + var spy = this.spies_[i]; + spy.baseObj[spy.methodName] = spy.originalValue; + } + this.spies_ = []; +}; + +/** + * Internal representation of a Jasmine suite. + * + * @constructor + * @param {jasmine.Env} env + * @param {String} description + * @param {Function} specDefinitions + * @param {jasmine.Suite} parentSuite + */ +jasmine.Suite = function(env, description, specDefinitions, parentSuite) { + var self = this; + self.id = env.nextSuiteId ? env.nextSuiteId() : null; + self.description = description; + self.queue = new jasmine.Queue(env); + self.parentSuite = parentSuite; + self.env = env; + self.before_ = []; + self.after_ = []; + self.children_ = []; + self.suites_ = []; + self.specs_ = []; +}; + +jasmine.Suite.prototype.getFullName = function() { + var fullName = this.description; + for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { + fullName = parentSuite.description + ' ' + fullName; + } + return fullName; +}; + +jasmine.Suite.prototype.finish = function(onComplete) { + this.env.reporter.reportSuiteResults(this); + this.finished = true; + if (typeof(onComplete) == 'function') { + onComplete(); + } +}; + +jasmine.Suite.prototype.beforeEach = function(beforeEachFunction) { + beforeEachFunction.typeName = 'beforeEach'; + this.before_.unshift(beforeEachFunction); +}; + +jasmine.Suite.prototype.afterEach = function(afterEachFunction) { + afterEachFunction.typeName = 'afterEach'; + this.after_.unshift(afterEachFunction); +}; + +jasmine.Suite.prototype.results = function() { + return this.queue.results(); +}; + +jasmine.Suite.prototype.add = function(suiteOrSpec) { + this.children_.push(suiteOrSpec); + if (suiteOrSpec instanceof jasmine.Suite) { + this.suites_.push(suiteOrSpec); + this.env.currentRunner().addSuite(suiteOrSpec); + } else { + this.specs_.push(suiteOrSpec); + } + this.queue.add(suiteOrSpec); +}; + +jasmine.Suite.prototype.specs = function() { + return this.specs_; +}; + +jasmine.Suite.prototype.suites = function() { + return this.suites_; +}; + +jasmine.Suite.prototype.children = function() { + return this.children_; +}; + +jasmine.Suite.prototype.execute = function(onComplete) { + var self = this; + this.queue.start(function () { + self.finish(onComplete); + }); +}; +jasmine.WaitsBlock = function(env, timeout, spec) { + this.timeout = timeout; + jasmine.Block.call(this, env, null, spec); +}; + +jasmine.util.inherit(jasmine.WaitsBlock, jasmine.Block); + +jasmine.WaitsBlock.prototype.execute = function (onComplete) { + if (jasmine.VERBOSE) { + this.env.reporter.log('>> Jasmine waiting for ' + this.timeout + ' ms...'); + } + this.env.setTimeout(function () { + onComplete(); + }, this.timeout); +}; +/** + * A block which waits for some condition to become true, with timeout. + * + * @constructor + * @extends jasmine.Block + * @param {jasmine.Env} env The Jasmine environment. + * @param {Number} timeout The maximum time in milliseconds to wait for the condition to become true. + * @param {Function} latchFunction A function which returns true when the desired condition has been met. + * @param {String} message The message to display if the desired condition hasn't been met within the given time period. + * @param {jasmine.Spec} spec The Jasmine spec. + */ +jasmine.WaitsForBlock = function(env, timeout, latchFunction, message, spec) { + this.timeout = timeout || env.defaultTimeoutInterval; + this.latchFunction = latchFunction; + this.message = message; + this.totalTimeSpentWaitingForLatch = 0; + jasmine.Block.call(this, env, null, spec); +}; +jasmine.util.inherit(jasmine.WaitsForBlock, jasmine.Block); + +jasmine.WaitsForBlock.TIMEOUT_INCREMENT = 10; + +jasmine.WaitsForBlock.prototype.execute = function(onComplete) { + if (jasmine.VERBOSE) { + this.env.reporter.log('>> Jasmine waiting for ' + (this.message || 'something to happen')); + } + var latchFunctionResult; + try { + latchFunctionResult = this.latchFunction.apply(this.spec); + } catch (e) { + this.spec.fail(e); + onComplete(); + return; + } + + if (latchFunctionResult) { + onComplete(); + } else if (this.totalTimeSpentWaitingForLatch >= this.timeout) { + var message = 'timed out after ' + this.timeout + ' msec waiting for ' + (this.message || 'something to happen'); + this.spec.fail({ + name: 'timeout', + message: message + }); + + this.abort = true; + onComplete(); + } else { + this.totalTimeSpentWaitingForLatch += jasmine.WaitsForBlock.TIMEOUT_INCREMENT; + var self = this; + this.env.setTimeout(function() { + self.execute(onComplete); + }, jasmine.WaitsForBlock.TIMEOUT_INCREMENT); + } +}; + +jasmine.version_= { + "major": 1, + "minor": 3, + "build": 1, + "revision": 1354556913 +}; diff --git a/ui/index.html b/ui/index.html index e3ecf6183..9738ef170 100755 --- a/ui/index.html +++ b/ui/index.html @@ -18,8 +18,8 @@ Logged in as Username

@@ -57,7 +57,10 @@
-
{{ status }}
+
diff --git a/ui/js/controllers/jobs.js b/ui/js/controllers/jobs.js index fdb17167f..34e2e1d11 100644 --- a/ui/js/controllers/jobs.js +++ b/ui/js/controllers/jobs.js @@ -1,7 +1,8 @@ "use strict"; treeherder.controller('JobsCtrl', - function JobsCtrl($scope, $http, $rootScope, $location, $routeParams, thResultSets) { + function JobsCtrl($scope, $http, $rootScope, $routeParams, $log, + thUrl, thResultSets) { // set the default repo to mozilla-central if not specified if ($routeParams.hasOwnProperty("repo") && @@ -30,14 +31,18 @@ treeherder.controller('JobsCtrl', thResultSets.getResultSets(). success(function(data) { - $rootScope.result_sets = data; + $scope.result_sets = data; + }). + error(function(data, status, header, config) { + $scope.statusError("Error getting result sets and jobs from service"); }); } ); treeherder.controller('PushCtrl', - function PushCtrl($scope, $rootScope, $http, thResults, thUrl, thServiceDomain) { + function PushCtrl($scope, $rootScope, $http, $resource, $log, + thResults, thUrl, thServiceDomain) { // whether or not revision list for a push is collapsed $scope.isCollapsedRevisions = true; @@ -52,7 +57,7 @@ treeherder.controller('PushCtrl', $rootScope.selectedJob = job; // fields that will show in the job detail panel - $rootScope.selectedJob.visibleFields = { + job.visibleFields = { "Reason": job.reason, "State": job.state, "Result": job.result, @@ -69,24 +74,23 @@ treeherder.controller('PushCtrl', }; $http.get(thServiceDomain + job.resource_uri). success(function(data) { - $rootScope.selectedJob.logs = data.logs; + job.logs = data.logs; data.artifacts.forEach(function(artifact) { if (artifact.name.contains("Job Artifact")) { - // we don't return the blobs with job, just resource_uris - // to them. For the Job Artifact, we want that blob, so we - // need to fetch the detail to get the blob which has the + // we don't return the blobs with job, just + // resource_uris to them. For the Job Artifact, + // we want that blob, so we need to fetch the + // detail to get the blob which has the // tinderbox_printlines, etc. - $http.get(thServiceDomain + artifact.resource_uri). - success(function(data) { - $rootScope.selectedJob.jobArtifact = data; - }); + job.jobArtifact = $resource( + thServiceDomain + artifact.resource_uri).get(); } else if (artifact.name === "Structured Log") { - // for the structured log, we don't need the blob here, we - // have everything we need in the artifact as is, so - // just save it. - $rootScope.selectedJob.lvArtifact=artifact; - $rootScope.selectedJob.lvUrl = thUrl.getLogViewerUrl(artifact.id); + // for the structured log, we don't need the blob + // here, we have everything we need in the artifact + // as is, so just save it. + job.lvArtifact=artifact; + job.lvUrl = thUrl.getLogViewerUrl(artifact.id); } }); }); @@ -105,7 +109,7 @@ treeherder.controller('PushCtrl', } }); } else { - console.log("Job had no artifacts: " + job_uri); + $log.warn("Job had no artifacts: " + job_uri); } }); diff --git a/ui/js/controllers/main.js b/ui/js/controllers/main.js index 066035c98..bb57d7ad4 100644 --- a/ui/js/controllers/main.js +++ b/ui/js/controllers/main.js @@ -1,9 +1,16 @@ "use strict"; treeherder.controller('MainCtrl', - function MainController($scope) { + function MainController($scope, $rootScope) { $scope.query=""; - $scope.status = "condition green"; + $scope.statusError = function(msg) { + $rootScope.statusMsg = msg; + $rootScope.statusColor = "red"; + }; + $scope.statusSuccess = function(msg) { + $rootScope.statusMsg = msg; + $rootScope.statusColor = "green"; + }; } ); diff --git a/ui/js/services.js b/ui/js/services.js index 19688d81a..a201653da 100755 --- a/ui/js/services.js +++ b/ui/js/services.js @@ -28,7 +28,7 @@ treeherder.factory('thArtifact', return { getArtifact: function(id) { return $http.get(thUrl.getProjectUrl( - "/artifact/" + id + "/?format=json")); + "/artifact/" + id + "/")); } } }]); @@ -37,18 +37,17 @@ treeherder.factory('thResultSets', ['$http', 'thUrl', function($http, thUrl) { - // get the pushes for this tree - // sample: 'resources/push_sample.json' + // get the resultsets for this repo return { getResultSets: function() { - return $http.get(thUrl.getProjectUrl("/resultset/?format=json")); + return $http.get(thUrl.getProjectUrl("/resultset/")); } } }]); treeherder.factory('thResults', - ['$http', 'thUrl', '$rootScope', - function($http, thUrl, $rootScope) { + ['$http', 'thUrl', '$rootScope', '$log', + function($http, thUrl, $rootScope, $log) { var getWarningLevel = function(results) { var COLORS = { @@ -74,8 +73,7 @@ treeherder.factory('thResults', getResults: function(result_set, $scope) { // store the results in scope for this push via ajax - var jobUrl = thUrl.getProjectUrl("/resultset/" + result_set.id + "/?format=json"); - console.log("fetching for " + result_set.id + " from: " + jobUrl); + var jobUrl = thUrl.getProjectUrl("/resultset/" + result_set.id + "/"); $scope.isLoadingResults = true; $http.get(jobUrl). success( @@ -124,7 +122,7 @@ treeherder.factory('thRepos', // sample: 'resources/menu.json' return { getRepos: function($rootScope) { - $http.get(thUrl.getRootUrl("/repository/?format=json")). + $http.get(thUrl.getRootUrl("/repository/")). success(function(data) { $rootScope.repos = data; }); diff --git a/ui/partials/jobs.html b/ui/partials/jobs.html index 37b39e02f..8b31352ed 100755 --- a/ui/partials/jobs.html +++ b/ui/partials/jobs.html @@ -3,7 +3,7 @@
+ class="result-set row-fluid"> diff --git a/ui/vendor/jasmine-jquery.js b/ui/vendor/jasmine-jquery.js new file mode 100755 index 000000000..9cad20cd1 --- /dev/null +++ b/ui/vendor/jasmine-jquery.js @@ -0,0 +1,673 @@ +/*! + Jasmine-jQuery: a set of jQuery helpers for Jasmine tests. + + Version 1.5.8 + + https://github.com/velesin/jasmine-jquery + + Copyright (c) 2010-2013 Wojciech Zawistowski, Travis Jeffery + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +var readFixtures = function() { + return jasmine.getFixtures().proxyCallTo_('read', arguments) +} + +var preloadFixtures = function() { + jasmine.getFixtures().proxyCallTo_('preload', arguments) +} + +var loadFixtures = function() { + jasmine.getFixtures().proxyCallTo_('load', arguments) +} + +var appendLoadFixtures = function() { + jasmine.getFixtures().proxyCallTo_('appendLoad', arguments) +} + +var setFixtures = function(html) { + return jasmine.getFixtures().proxyCallTo_('set', arguments) +} + +var appendSetFixtures = function() { + jasmine.getFixtures().proxyCallTo_('appendSet', arguments) +} + +var sandbox = function(attributes) { + return jasmine.getFixtures().sandbox(attributes) +} + +var spyOnEvent = function(selector, eventName) { + return jasmine.JQuery.events.spyOn(selector, eventName) +} + +var preloadStyleFixtures = function() { + jasmine.getStyleFixtures().proxyCallTo_('preload', arguments) +} + +var loadStyleFixtures = function() { + jasmine.getStyleFixtures().proxyCallTo_('load', arguments) +} + +var appendLoadStyleFixtures = function() { + jasmine.getStyleFixtures().proxyCallTo_('appendLoad', arguments) +} + +var setStyleFixtures = function(html) { + jasmine.getStyleFixtures().proxyCallTo_('set', arguments) +} + +var appendSetStyleFixtures = function(html) { + jasmine.getStyleFixtures().proxyCallTo_('appendSet', arguments) +} + +var loadJSONFixtures = function() { + return jasmine.getJSONFixtures().proxyCallTo_('load', arguments) +} + +var getJSONFixture = function(url) { + return jasmine.getJSONFixtures().proxyCallTo_('read', arguments)[url] +} + +jasmine.spiedEventsKey = function (selector, eventName) { + return [$(selector).selector, eventName].toString() +} + +jasmine.getFixtures = function() { + return jasmine.currentFixtures_ = jasmine.currentFixtures_ || new jasmine.Fixtures() +} + +jasmine.getStyleFixtures = function() { + return jasmine.currentStyleFixtures_ = jasmine.currentStyleFixtures_ || new jasmine.StyleFixtures() +} + +jasmine.Fixtures = function() { + this.containerId = 'jasmine-fixtures' + this.fixturesCache_ = {} + this.fixturesPath = 'spec/javascripts/fixtures' +} + +jasmine.Fixtures.prototype.set = function(html) { + this.cleanUp() + return this.createContainer_(html) +} + +jasmine.Fixtures.prototype.appendSet= function(html) { + this.addToContainer_(html) +} + +jasmine.Fixtures.prototype.preload = function() { + this.read.apply(this, arguments) +} + +jasmine.Fixtures.prototype.load = function() { + this.cleanUp() + this.createContainer_(this.read.apply(this, arguments)) +} + +jasmine.Fixtures.prototype.appendLoad = function() { + this.addToContainer_(this.read.apply(this, arguments)) +} + +jasmine.Fixtures.prototype.read = function() { + var htmlChunks = [] + + var fixtureUrls = arguments + for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) { + htmlChunks.push(this.getFixtureHtml_(fixtureUrls[urlIndex])) + } + + return htmlChunks.join('') +} + +jasmine.Fixtures.prototype.clearCache = function() { + this.fixturesCache_ = {} +} + +jasmine.Fixtures.prototype.cleanUp = function() { + $('#' + this.containerId).remove() +} + +jasmine.Fixtures.prototype.sandbox = function(attributes) { + var attributesToSet = attributes || {} + return $('
').attr(attributesToSet) +} + +jasmine.Fixtures.prototype.createContainer_ = function(html) { + var container = $('
') + .attr('id', this.containerId) + .html(html) + $(document.body).append(container) + return container +} + +jasmine.Fixtures.prototype.addToContainer_ = function(html){ + var container = $(document.body).find('#'+this.containerId).append(html) + if(!container.length){ + this.createContainer_(html) + } +} + +jasmine.Fixtures.prototype.getFixtureHtml_ = function(url) { + if (typeof this.fixturesCache_[url] === 'undefined') { + this.loadFixtureIntoCache_(url) + } + return this.fixturesCache_[url] +} + +jasmine.Fixtures.prototype.loadFixtureIntoCache_ = function(relativeUrl) { + var url = this.makeFixtureUrl_(relativeUrl) + var request = $.ajax({ + type: "GET", + url: url + "?" + new Date().getTime(), + async: false + }) + this.fixturesCache_[relativeUrl] = request.responseText +} + +jasmine.Fixtures.prototype.makeFixtureUrl_ = function(relativeUrl){ + return this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl +} + +jasmine.Fixtures.prototype.proxyCallTo_ = function(methodName, passedArguments) { + return this[methodName].apply(this, passedArguments) +} + + +jasmine.StyleFixtures = function() { + this.fixturesCache_ = {} + this.fixturesNodes_ = [] + this.fixturesPath = 'spec/javascripts/fixtures' +} + +jasmine.StyleFixtures.prototype.set = function(css) { + this.cleanUp() + this.createStyle_(css) +} + +jasmine.StyleFixtures.prototype.appendSet = function(css) { + this.createStyle_(css) +} + +jasmine.StyleFixtures.prototype.preload = function() { + this.read_.apply(this, arguments) +} + +jasmine.StyleFixtures.prototype.load = function() { + this.cleanUp() + this.createStyle_(this.read_.apply(this, arguments)) +} + +jasmine.StyleFixtures.prototype.appendLoad = function() { + this.createStyle_(this.read_.apply(this, arguments)) +} + +jasmine.StyleFixtures.prototype.cleanUp = function() { + while(this.fixturesNodes_.length) { + this.fixturesNodes_.pop().remove() + } +} + +jasmine.StyleFixtures.prototype.createStyle_ = function(html) { + var styleText = $('
').html(html).text(), + style = $('') + + this.fixturesNodes_.push(style) + + $('head').append(style) +} + +jasmine.StyleFixtures.prototype.clearCache = jasmine.Fixtures.prototype.clearCache + +jasmine.StyleFixtures.prototype.read_ = jasmine.Fixtures.prototype.read + +jasmine.StyleFixtures.prototype.getFixtureHtml_ = jasmine.Fixtures.prototype.getFixtureHtml_ + +jasmine.StyleFixtures.prototype.loadFixtureIntoCache_ = jasmine.Fixtures.prototype.loadFixtureIntoCache_ + +jasmine.StyleFixtures.prototype.makeFixtureUrl_ = jasmine.Fixtures.prototype.makeFixtureUrl_ + +jasmine.StyleFixtures.prototype.proxyCallTo_ = jasmine.Fixtures.prototype.proxyCallTo_ + +jasmine.getJSONFixtures = function() { + return jasmine.currentJSONFixtures_ = jasmine.currentJSONFixtures_ || new jasmine.JSONFixtures() +} + +jasmine.JSONFixtures = function() { + this.fixturesCache_ = {} + this.fixturesPath = 'spec/javascripts/fixtures/json' +} + +jasmine.JSONFixtures.prototype.load = function() { + this.read.apply(this, arguments) + return this.fixturesCache_ +} + +jasmine.JSONFixtures.prototype.read = function() { + var fixtureUrls = arguments + for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) { + this.getFixtureData_(fixtureUrls[urlIndex]) + } + return this.fixturesCache_ +} + +jasmine.JSONFixtures.prototype.clearCache = function() { + this.fixturesCache_ = {} +} + +jasmine.JSONFixtures.prototype.getFixtureData_ = function(url) { + this.loadFixtureIntoCache_(url) + return this.fixturesCache_[url] +} + +jasmine.JSONFixtures.prototype.loadFixtureIntoCache_ = function(relativeUrl) { + var self = this + var url = this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl + $.ajax({ + async: false, // must be synchronous to guarantee that no tests are run before fixture is loaded + cache: false, + dataType: 'json', + url: url, + success: function(data) { + self.fixturesCache_[relativeUrl] = data + }, + error: function(jqXHR, status, errorThrown) { + throw Error('JSONFixture could not be loaded: ' + url + ' (status: ' + status + ', message: ' + errorThrown.message + ')') + } + }) +} + +jasmine.JSONFixtures.prototype.proxyCallTo_ = function(methodName, passedArguments) { + return this[methodName].apply(this, passedArguments) +} + +jasmine.JQuery = function() {} + +jasmine.JQuery.browserTagCaseIndependentHtml = function(html) { + return $('
').append(html).html() +} + +jasmine.JQuery.elementToString = function(element) { + var domEl = $(element).get(0) + if (domEl == undefined || domEl.cloneNode) + return $('
').append($(element).clone()).html() + else + return element.toString() +} + +jasmine.JQuery.matchersClass = {} + +!function(namespace) { + var data = { + spiedEvents: {}, + handlers: [] + } + + namespace.events = { + spyOn: function(selector, eventName) { + var handler = function(e) { + data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] = jasmine.util.argsToArray(arguments) + } + $(selector).on(eventName, handler) + data.handlers.push(handler) + return { + selector: selector, + eventName: eventName, + handler: handler, + reset: function(){ + delete data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] + } + } + }, + + args: function(selector, eventName) { + var actualArgs = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] + + if (!actualArgs) { + throw "There is no spy for " + eventName + " on " + selector.toString() + ". Make sure to create a spy using spyOnEvent." + } + + return actualArgs + }, + + wasTriggered: function(selector, eventName) { + return !!(data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)]) + }, + + wasTriggeredWith: function(selector, eventName, expectedArgs, env) { + var actualArgs = jasmine.JQuery.events.args(selector, eventName).slice(1) + if (Object.prototype.toString.call(expectedArgs) !== '[object Array]') { + actualArgs = actualArgs[0] + } + return env.equals_(expectedArgs, actualArgs) + }, + + wasPrevented: function(selector, eventName) { + var args = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)], + e = args ? args[0] : undefined + return e && e.isDefaultPrevented() + }, + + wasStopped: function(selector, eventName) { + var args = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)], + e = args ? args[0] : undefined + return e && e.isPropagationStopped() + }, + + cleanUp: function() { + data.spiedEvents = {} + data.handlers = [] + } + } +}(jasmine.JQuery); + +!function(){ + var jQueryMatchers = { + toHaveClass: function(className) { + return this.actual.hasClass(className) + }, + + toHaveCss: function(css){ + for (var prop in css){ + if (this.actual.css(prop) !== css[prop]) return false + } + return true + }, + + toBeVisible: function() { + return this.actual.is(':visible') + }, + + toBeHidden: function() { + return this.actual.is(':hidden') + }, + + toBeSelected: function() { + return this.actual.is(':selected') + }, + + toBeChecked: function() { + return this.actual.is(':checked') + }, + + toBeEmpty: function() { + return this.actual.is(':empty') + }, + + toExist: function() { + return $(document).find(this.actual).length + }, + + toHaveLength: function(length) { + return this.actual.length === length + }, + + toHaveAttr: function(attributeName, expectedAttributeValue) { + return hasProperty(this.actual.attr(attributeName), expectedAttributeValue) + }, + + toHaveProp: function(propertyName, expectedPropertyValue) { + return hasProperty(this.actual.prop(propertyName), expectedPropertyValue) + }, + + toHaveId: function(id) { + return this.actual.attr('id') == id + }, + + toHaveHtml: function(html) { + return this.actual.html() == jasmine.JQuery.browserTagCaseIndependentHtml(html) + }, + + toContainHtml: function(html){ + var actualHtml = this.actual.html() + var expectedHtml = jasmine.JQuery.browserTagCaseIndependentHtml(html) + return (actualHtml.indexOf(expectedHtml) >= 0) + }, + + toHaveText: function(text) { + var trimmedText = $.trim(this.actual.text()) + if (text && $.isFunction(text.test)) { + return text.test(trimmedText) + } else { + return trimmedText == text + } + }, + + toContainText: function(text) { + var trimmedText = $.trim(this.actual.text()) + if (text && $.isFunction(text.test)) { + return text.test(trimmedText) + } else { + return trimmedText.indexOf(text) != -1 + } + }, + + toHaveValue: function(value) { + return this.actual.val() === value + }, + + toHaveData: function(key, expectedValue) { + return hasProperty(this.actual.data(key), expectedValue) + }, + + toBe: function(selector) { + return this.actual.is(selector) + }, + + toContain: function(selector) { + return this.actual.find(selector).length + }, + + toBeMatchedBy: function(selector) { + return this.actual.filter(selector).length + }, + + toBeDisabled: function(selector){ + return this.actual.is(':disabled') + }, + + toBeFocused: function(selector) { + return this.actual[0] === this.actual[0].ownerDocument.activeElement + }, + + toHandle: function(event) { + + var events = $._data(this.actual.get(0), "events") + + if(!events || !event || typeof event !== "string") { + return false + } + + var namespaces = event.split(".") + var eventType = namespaces.shift() + var sortedNamespaces = namespaces.slice(0).sort() + var namespaceRegExp = new RegExp("(^|\\.)" + sortedNamespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") + + if(events[eventType] && namespaces.length) { + for(var i = 0; i < events[eventType].length; i++) { + var namespace = events[eventType][i].namespace + if(namespaceRegExp.test(namespace)) { + return true + } + } + } else { + return events[eventType] && events[eventType].length > 0 + } + }, + + // tests the existence of a specific event binding + handler + toHandleWith: function(eventName, eventHandler) { + var normalizedEventName = eventName.split('.')[0] + var stack = $._data(this.actual.get(0), "events")[normalizedEventName] + for (var i = 0; i < stack.length; i++) { + if (stack[i].handler == eventHandler) return true + } + return false + } + } + + var hasProperty = function(actualValue, expectedValue) { + if (expectedValue === undefined) return actualValue !== undefined + return actualValue == expectedValue + } + + var bindMatcher = function(methodName) { + var builtInMatcher = jasmine.Matchers.prototype[methodName] + + jasmine.JQuery.matchersClass[methodName] = function() { + if (this.actual + && (this.actual instanceof $ + || jasmine.isDomNode(this.actual))) { + this.actual = $(this.actual) + var result = jQueryMatchers[methodName].apply(this, arguments) + var element + if (this.actual.get && (element = this.actual.get()[0]) && !$.isWindow(element) && element.tagName !== "HTML") + this.actual = jasmine.JQuery.elementToString(this.actual) + return result + } + + if (builtInMatcher) { + return builtInMatcher.apply(this, arguments) + } + + return false + } + } + + for(var methodName in jQueryMatchers) { + bindMatcher(methodName) + } +}() + +beforeEach(function() { + this.addMatchers(jasmine.JQuery.matchersClass) + this.addMatchers({ + toHaveBeenTriggeredOn: function(selector) { + this.message = function() { + return [ + "Expected event " + this.actual + " to have been triggered on " + selector, + "Expected event " + this.actual + " not to have been triggered on " + selector + ] + } + return jasmine.JQuery.events.wasTriggered(selector, this.actual) + } + }) + this.addMatchers({ + toHaveBeenTriggered: function(){ + var eventName = this.actual.eventName, + selector = this.actual.selector + this.message = function() { + return [ + "Expected event " + eventName + " to have been triggered on " + selector, + "Expected event " + eventName + " not to have been triggered on " + selector + ] + } + return jasmine.JQuery.events.wasTriggered(selector, eventName) + } + }) + this.addMatchers({ + toHaveBeenTriggeredOnAndWith: function() { + var selector = arguments[0], + expectedArgs = arguments[1], + wasTriggered = jasmine.JQuery.events.wasTriggered(selector, this.actual) + this.message = function() { + if (wasTriggered) { + var actualArgs = jasmine.JQuery.events.args(selector, this.actual, expectedArgs)[1] + return [ + "Expected event " + this.actual + " to have been triggered with " + jasmine.pp(expectedArgs) + " but it was triggered with " + jasmine.pp(actualArgs), + "Expected event " + this.actual + " not to have been triggered with " + jasmine.pp(expectedArgs) + " but it was triggered with " + jasmine.pp(actualArgs) + ] + } else { + return [ + "Expected event " + this.actual + " to have been triggered on " + selector, + "Expected event " + this.actual + " not to have been triggered on " + selector + ] + } + } + return wasTriggered && jasmine.JQuery.events.wasTriggeredWith(selector, this.actual, expectedArgs, this.env) + } + }) + this.addMatchers({ + toHaveBeenPreventedOn: function(selector) { + this.message = function() { + return [ + "Expected event " + this.actual + " to have been prevented on " + selector, + "Expected event " + this.actual + " not to have been prevented on " + selector + ] + } + return jasmine.JQuery.events.wasPrevented(selector, this.actual) + } + }) + this.addMatchers({ + toHaveBeenPrevented: function() { + var eventName = this.actual.eventName, + selector = this.actual.selector + this.message = function() { + return [ + "Expected event " + eventName + " to have been prevented on " + selector, + "Expected event " + eventName + " not to have been prevented on " + selector + ] + } + return jasmine.JQuery.events.wasPrevented(selector, eventName) + } + }) + this.addMatchers({ + toHaveBeenStoppedOn: function(selector) { + this.message = function() { + return [ + "Expected event " + this.actual + " to have been stopped on " + selector, + "Expected event " + this.actual + " not to have been stopped on " + selector + ] + } + return jasmine.JQuery.events.wasStopped(selector, this.actual) + } + }) + this.addMatchers({ + toHaveBeenStopped: function() { + var eventName = this.actual.eventName, + selector = this.actual.selector + this.message = function() { + return [ + "Expected event " + eventName + " to have been stopped on " + selector, + "Expected event " + eventName + " not to have been stopped on " + selector + ] + } + return jasmine.JQuery.events.wasStopped(selector, eventName) + } + }) + jasmine.getEnv().addEqualityTester(function(a, b) { + if(a instanceof jQuery && b instanceof jQuery) { + if(a.size() != b.size()) { + return jasmine.undefined + } + else if(a.is(b)) { + return true + } + } + return jasmine.undefined + + }) +}); + +afterEach(function() { + jasmine.getFixtures().cleanUp() + jasmine.getStyleFixtures().cleanUp() + jasmine.JQuery.events.cleanUp() +}); diff --git a/webapp/.gitignore b/webapp/.gitignore index e823cc103..593851c5d 100755 --- a/webapp/.gitignore +++ b/webapp/.gitignore @@ -1,2 +1,4 @@ +node_modules/* +coverage/* logs/* !.gitkeep diff --git a/webapp/.travis.yml b/webapp/.travis.yml deleted file mode 100755 index f55d7f52b..000000000 --- a/webapp/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: node_js -node_js: - - 0.8 - -before_script: - - export DISPLAY=:99.0 - - sh -e /etc/init.d/xvfb start - - npm install --quiet -g karma - - ./scripts/web-server.js > /dev/null & - - sleep 1 # give server time to start - -script: - - karma start config/karma.conf.js --no-auto-watch --single-run --reporters=dots --browsers=Firefox - - karma start config/karma-e2e.conf.js --reporters=dots --browsers=Firefox diff --git a/webapp/package.json b/webapp/package.json new file mode 100644 index 000000000..201030eb4 --- /dev/null +++ b/webapp/package.json @@ -0,0 +1,12 @@ +{ + "name": "treeherder-ui", + "description": "The UI portion of Mozilla Treeherder", + "devDependencies": { + "phantomjs" : "*", + "karma" : "*", + "karma-junit-reporter" : "*", + "karma-coverage" : "*", + "karma-jasmine" : "*", + "karma-ng-scenario" : "*" + } +} \ No newline at end of file