def Format(self, page_test_results):
    self._values.extend(page_test_results.value_set)
    vulcanizer = tracing_project.TracingProject().CreateVulcanizer()
    load_sequence = vulcanizer.CalcLoadSequenceForModuleNames(
        ['tracing.results2_template'])
    html = generate.GenerateStandaloneHTMLAsString(load_sequence)
    html = html.replace(self._JSON_TAG % '', self._JSON_TAG % json.dumps(
        self._values, separators=(',', ':')))
    self._output_stream.seek(0)
    self._output_stream.write(html)
    self._output_stream.truncate()

    file_path = os.path.abspath(self._output_stream.name)
    if self._upload_results:
      remote_path = ('html-results/results-%s' %
                     datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
      try:
        cloud_storage.Insert(
            cloud_storage.PUBLIC_BUCKET, remote_path, file_path)
        print 'View online at',
        print 'http://storage.googleapis.com/chromium-telemetry/' + remote_path
      except cloud_storage.PermissionError as e:
        logging.error('Cannot upload profiling files to cloud storage due ' +
                      'to permission error: ' + e.message)
    print 'View result at file://' + file_path
Пример #2
0
 def testScriptOrdering(self):
     with self.fs:
         load_sequence = self.project.CalcLoadSequenceForModuleNames(
             [os.path.normpath('foo.inline_and_external_module')])
         result = generate.GenerateStandaloneHTMLAsString(load_sequence)
         script1_pos = result.index('Script1()')
         script2_pos = result.index('Script2()')
         external_pos = result.index('External()')
         self.assertTrue(script1_pos < external_pos < script2_pos)
def VulcanizeHistogramsViewer():
    """Vulcanizes Histograms viewer with its dependencies.

  Args:
    path: destination to write the vulcanized viewer HTML.
  """
    vulcanizer = tracing_project.TracingProject().CreateVulcanizer()
    load_sequence = vulcanizer.CalcLoadSequenceForModuleNames(
        ['tracing_build.histograms_viewer'])
    return generate.GenerateStandaloneHTMLAsString(load_sequence)
Пример #4
0
def RenderHTMLView(values, output_stream, reset_results=False):
    if not reset_results:
        values += ReadExistingResults(output_stream)
    vulcanizer = tracing_project.TracingProject().CreateVulcanizer()
    load_sequence = vulcanizer.CalcLoadSequenceForModuleNames(
        ['tracing.results2_template'])
    html = generate.GenerateStandaloneHTMLAsString(load_sequence)
    html = html.replace(_JSON_TAG % '',
                        _JSON_TAG % json.dumps(values, separators=(',', ':')))
    output_stream.seek(0)
    output_stream.write(html)
    output_stream.truncate()
Пример #5
0
    def testExtraScriptWithWriteContentsFunc(self):
        with self.fs:
            load_sequence = self.project.CalcLoadSequenceForModuleNames(
                [os.path.normpath('foo.my_module')])

            class ExtraScript(generate.ExtraScript):
                def WriteToFile(self, f):
                    f.write('<script>ExtraScript!</script>')

            result = generate.GenerateStandaloneHTMLAsString(
                load_sequence, title='Title', extra_scripts=[ExtraScript()])
            self.assertIn('ExtraScript', result)
Пример #6
0
def RenderHTMLView(histograms, output_stream, reset_results=False):
    if not reset_results:
        histograms += ReadExistingResults(output_stream)
    output_stream.seek(0)

    vulcanizer = tracing_project.TracingProject().CreateVulcanizer()
    load_sequence = vulcanizer.CalcLoadSequenceForModuleNames(
        ['tracing.results2_template'])
    html = generate.GenerateStandaloneHTMLAsString(load_sequence)
    output_stream.write(html)

    output_stream.write('<div style="display:none;">')
    json_tag_newline = '\n%s' % _JSON_TAG
    for histogram in histograms:
        hist_json = json.dumps(histogram, separators=(',', ':'))
        output_stream.write(json_tag_newline % hist_json)
    output_stream.write('\n</div>\n')

    # If the output file already existed and was longer than the new contents,
    # discard the old contents after this point.
    output_stream.truncate()
Пример #7
0
    def testBasicModuleGeneration(self):
        file_contents = {}
        file_contents[os.path.normpath('/tmp/a/b/start.html')] = """
<!DOCTYPE html>
<link rel="import" href="/widget.html">
<link rel="stylesheet" href="../common.css">
<script src="/raw_script.js"></script>
<script src="/excluded_script.js"></script>
<dom-module id="start">
  <template>
  </template>
  <script>
    'use strict';
    console.log('inline script for start.html got written');
  </script>
</dom-module>
"""
        file_contents[os.path.normpath(
            '/py_vulcanize/py_vulcanize.html')] = """<!DOCTYPE html>
"""
        file_contents[os.path.normpath('/components/widget.html')] = """
<!DOCTYPE html>
<link rel="import" href="/py_vulcanize.html">
<widget name="widget.html"></widget>
<script>
'use strict';
console.log('inline script for widget.html');
</script>
"""
        file_contents[os.path.normpath('/tmp/a/common.css')] = """
/* /tmp/a/common.css was written */
"""
        file_contents[os.path.normpath('/raw/raw_script.js')] = """
console.log('/raw/raw_script.js was written');
"""
        file_contents[os.path.normpath(
            '/raw/components/polymer/polymer.min.js')] = """
"""

        with fake_fs.FakeFS(file_contents):
            project = project_module.Project([
                os.path.normpath('/py_vulcanize/'),
                os.path.normpath('/tmp/'),
                os.path.normpath('/components/'),
                os.path.normpath('/raw/')
            ])
            loader = resource_loader.ResourceLoader(project)
            a_b_start_module = loader.LoadModule(
                module_name='a.b.start',
                excluded_scripts=['\/excluded_script.js'])
            load_sequence = project.CalcLoadSequenceForModules(
                [a_b_start_module])

            # Check load sequence names.
            load_sequence_names = [x.name for x in load_sequence]
            self.assertEquals(['py_vulcanize', 'widget', 'a.b.start'],
                              load_sequence_names)

            # Check module_deps on a_b_start_module
            def HasDependentModule(module, name):
                return [x for x in module.dependent_modules if x.name == name]

            assert HasDependentModule(a_b_start_module, 'widget')

            # Check JS generation.
            js = generate.GenerateJS(load_sequence)
            assert 'inline script for start.html' in js
            assert 'inline script for widget.html' in js
            assert '/raw/raw_script.js' in js
            assert 'excluded_script.js' not in js

            # Check HTML generation.
            html = generate.GenerateStandaloneHTMLAsString(
                load_sequence, title='', flattened_js_url='/blah.js')
            assert '<dom-module id="start">' in html
            assert 'inline script for widget.html' not in html
            assert 'common.css' in html
Пример #8
0
 def testHTMLGeneration(self):
     with self.fs:
         load_sequence = self.project.CalcLoadSequenceForModuleNames(
             [os.path.normpath('foo.my_module')])
         result = generate.GenerateStandaloneHTMLAsString(load_sequence)
         self.assertIn('HelloWorld();', result)