xref: /OK3568_Linux_fs/yocto/poky/scripts/lib/build_perf/scrape-html-report.js (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyunvar fs = require('fs');
2*4882a593Smuzhiyunvar system = require('system');
3*4882a593Smuzhiyunvar page = require('webpage').create();
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun// Examine console log for message from chart drawing
6*4882a593Smuzhiyunpage.onConsoleMessage = function(msg) {
7*4882a593Smuzhiyun    console.log(msg);
8*4882a593Smuzhiyun    if (msg === "ALL CHARTS READY") {
9*4882a593Smuzhiyun        window.charts_ready = true;
10*4882a593Smuzhiyun    }
11*4882a593Smuzhiyun    else if (msg.slice(0, 11) === "CHART READY") {
12*4882a593Smuzhiyun        var chart_id = msg.split(" ")[2];
13*4882a593Smuzhiyun        console.log('grabbing ' + chart_id);
14*4882a593Smuzhiyun        var png_data = page.evaluate(function (chart_id) {
15*4882a593Smuzhiyun            var chart_div = document.getElementById(chart_id + '_png');
16*4882a593Smuzhiyun            return chart_div.outerHTML;
17*4882a593Smuzhiyun        }, chart_id);
18*4882a593Smuzhiyun        fs.write(args[2] + '/' + chart_id + '.png', png_data, 'w');
19*4882a593Smuzhiyun    }
20*4882a593Smuzhiyun};
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun// Check command line arguments
23*4882a593Smuzhiyunvar args = system.args;
24*4882a593Smuzhiyunif (args.length != 3) {
25*4882a593Smuzhiyun    console.log("USAGE: " + args[0] + " REPORT_HTML OUT_DIR\n");
26*4882a593Smuzhiyun    phantom.exit(1);
27*4882a593Smuzhiyun}
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun// Open the web page
30*4882a593Smuzhiyunpage.open(args[1], function(status) {
31*4882a593Smuzhiyun    if (status == 'fail') {
32*4882a593Smuzhiyun        console.log("Failed to open file '" + args[1] + "'");
33*4882a593Smuzhiyun        phantom.exit(1);
34*4882a593Smuzhiyun    }
35*4882a593Smuzhiyun});
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun// Check status every 100 ms
38*4882a593Smuzhiyuninterval = window.setInterval(function () {
39*4882a593Smuzhiyun    //console.log('waiting');
40*4882a593Smuzhiyun    if (window.charts_ready) {
41*4882a593Smuzhiyun        clearTimeout(timer);
42*4882a593Smuzhiyun        clearInterval(interval);
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun        var fname = args[1].replace(/\/+$/, "").split("/").pop()
45*4882a593Smuzhiyun        console.log("saving " + fname);
46*4882a593Smuzhiyun        fs.write(args[2] + '/' + fname, page.content, 'w');
47*4882a593Smuzhiyun        phantom.exit(0);
48*4882a593Smuzhiyun    }
49*4882a593Smuzhiyun}, 100);
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun// Time-out after 10 seconds
52*4882a593Smuzhiyuntimer = window.setTimeout(function () {
53*4882a593Smuzhiyun    clearInterval(interval);
54*4882a593Smuzhiyun    console.log("ERROR: timeout");
55*4882a593Smuzhiyun    phantom.exit(1);
56*4882a593Smuzhiyun}, 10000);
57