| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2015 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| <link rel="import" href="/perf_insights/function_handle.html"> |
| <link rel="import" href="/perf_insights/map_single_trace.html"> |
| <link rel="import" href="/perf_insights/mre/failure.html"> |
| <link rel="import" href="/perf_insights/mre/file_handle.html"> |
| <link rel="import" href="/perf_insights/mre/job.html"> |
| <link rel="import" href="/perf_insights/mre/mre_result.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tr.exportTo('pi', function() { |
| |
| var Failure = pi.mre.Failure; |
| |
| function createModelFromTraceData(traceData, |
| canonicalUrl, |
| opt_extraImportOptions) { |
| var model = new tr.Model(); |
| try { |
| var importOptions = new tr.importer.ImportOptions(); |
| importOptions.pruneEmptyContainers = false; |
| importOptions.showImportWarnings = false; |
| if (opt_extraImportOptions !== undefined) { |
| for (var property in opt_extraImportOptions) { |
| if (opt_extraImportOptions.hasOwnProperty(property)) { |
| importOptions[property] = opt_extraImportOptions[property]; |
| } |
| } |
| } |
| |
| var i = new tr.importer.Import(model, importOptions); |
| i.importTraces([traceData]); |
| } catch (ex) { |
| ex.name = 'TraceImportError'; |
| throw ex; |
| } |
| |
| model.canonicalUrlThatCreatedThisTrace = canonicalUrl; |
| |
| return model; |
| } |
| |
| function mapSingleTraceMain(args) { |
| if (args.length !== 2 && args.length !== 3) |
| throw new Error('Must provide two or three arguments.'); |
| |
| var options = { |
| traceHandle: pi.mre.FileHandle.fromDict(JSON.parse(args[0])), |
| job: pi.mre.Job.fromDict(JSON.parse(args[1])), |
| extraImportOptions: args.length === 3 ? JSON.parse(args[2]) : undefined |
| }; |
| |
| var result = new pi.mre.MreResult(); |
| |
| var canonicalUrl = options.traceHandle.canonicalUrl; |
| |
| pi.runAndConvertErrorsToFailures( |
| result, options.job, options.traceHandle, |
| function() { |
| var mapFunction = options.job.mapFunctionHandle.load(); |
| var traceData = options.traceHandle.load(); |
| var model = createModelFromTraceData( |
| traceData, canonicalUrl, options.extraImportOptions); |
| var opt_options = options.job.mapFunctionHandle.options; |
| pi.mapSingleTrace(result, model, opt_options, mapFunction); |
| }); |
| |
| console.log('MRE_RESULT: ' + JSON.stringify(result.asDict())); |
| return 0; |
| } |
| |
| return { |
| mapSingleTraceMain: mapSingleTraceMain |
| }; |
| }); |
| |
| if (tr.isHeadless) |
| quit(pi.mapSingleTraceMain(sys.argv.slice(1))); |
| |
| </script> |