Home | History | Annotate | Download | only in tools
      1 // Copyright 2009 the V8 project authors. All rights reserved.
      2 // Redistribution and use in source and binary forms, with or without
      3 // modification, are permitted provided that the following conditions are
      4 // met:
      5 //
      6 //     * Redistributions of source code must retain the above copyright
      7 //       notice, this list of conditions and the following disclaimer.
      8 //     * Redistributions in binary form must reproduce the above
      9 //       copyright notice, this list of conditions and the following
     10 //       disclaimer in the documentation and/or other materials provided
     11 //       with the distribution.
     12 //     * Neither the name of Google Inc. nor the names of its
     13 //       contributors may be used to endorse or promote products derived
     14 //       from this software without specific prior written permission.
     15 //
     16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27 
     28 // Load implementations from <project root>/tools.
     29 // Files: tools/csvparser.js tools/splaytree.js tools/codemap.js
     30 // Files: tools/consarray.js tools/profile.js tools/profile_view.js
     31 // Files: tools/logreader.js tools/tickprocessor.js
     32 // Files: tools/profviz/composer.js
     33 // Env: TEST_FILE_NAME
     34 
     35 assertEquals('string', typeof TEST_FILE_NAME);
     36 var path_length = TEST_FILE_NAME.lastIndexOf('/');
     37 if (path_length == -1) {
     38   path_length = TEST_FILE_NAME.lastIndexOf('\\');
     39 }
     40 assertTrue(path_length != -1);
     41 
     42 var path = TEST_FILE_NAME.substr(0, path_length + 1);
     43 var input_file = path + "profviz-test.log";
     44 var reference_file = path + "profviz-test.default";
     45 
     46 var content_lines = read(input_file).split("\n");
     47 var line_cursor = 0;
     48 var output_lines = [];
     49 
     50 function input() {
     51   return content_lines[line_cursor++];
     52 }
     53 
     54 function output(line) {
     55   output_lines.push(line);
     56 }
     57 
     58 function set_range(start, end) {
     59   range_start = start;
     60   range_end = end;
     61 }
     62 
     63 var distortion = 4500 / 1000000;
     64 var resx = 1600;
     65 var resy = 600;
     66 
     67 var psc = new PlotScriptComposer(resx, resy);
     68 psc.collectData(input, distortion);
     69 psc.findPlotRange(undefined, undefined, set_range);
     70 var objects = psc.assembleOutput(output);
     71 
     72 output("# start: " + range_start);
     73 output("# end: " + range_end);
     74 output("# objects: " + objects);
     75 
     76 var create_baseline = false;
     77 
     78 if (create_baseline) {
     79   print(JSON.stringify(output_lines, null, 2));
     80 } else {
     81   assertArrayEquals(output_lines,
     82                     JSON.parse(read(reference_file)));
     83 }
     84