blob: 3388f200bb5ddc2351d5ad6c0f60522a3a684061 [file] [log] [blame]
<!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>