<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[165413] trunk/Tools</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/165413">165413</a></dd>
<dt>Author</dt> <dd>zoltan@webkit.org</dd>
<dt>Date</dt> <dd>2014-03-10 16:22:05 -0700 (Mon, 10 Mar 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Let the user define the full address of the performance-site-server for uploading results
https://bugs.webkit.org/show_bug.cgi?id=129819

Reviewed by Ryosuke Niwa.

Currently perftestsrunner.py assumes that the server uses https protocol all the time, which
can be confusing. It's more straightforward, if you need to define explicitly the server's full
address along with the protocol, when you're using this parameter. I added HTTPS as the default
protocol for now, in order to avoid breaking the perf bots.

* Scripts/webkitpy/performance_tests/perftestsrunner.py:
(_upload_json):
* Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
(MainTest.test_upload_json):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsScriptswebkitpyperformance_testsperftestsrunnerpy">trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py</a></li>
<li><a href="#trunkToolsScriptswebkitpyperformance_testsperftestsrunner_unittestpy">trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (165412 => 165413)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2014-03-10 23:08:55 UTC (rev 165412)
+++ trunk/Tools/ChangeLog        2014-03-10 23:22:05 UTC (rev 165413)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2014-03-10  Zoltan Horvath  &lt;zoltan@webkit.org&gt;
+
+        Let the user define the full address of the performance-site-server for uploading results
+        https://bugs.webkit.org/show_bug.cgi?id=129819
+
+        Reviewed by Ryosuke Niwa.
+
+        Currently perftestsrunner.py assumes that the server uses https protocol all the time, which
+        can be confusing. It's more straightforward, if you need to define explicitly the server's full
+        address along with the protocol, when you're using this parameter. I added HTTPS as the default
+        protocol for now, in order to avoid breaking the perf bots.
+
+        * Scripts/webkitpy/performance_tests/perftestsrunner.py:
+        (_upload_json):
+        * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
+        (MainTest.test_upload_json):
+
</ins><span class="cx"> 2014-03-10  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Win] Pass environment to Pre-Build, Pre-Link, and Post-Build Stages.
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpyperformance_testsperftestsrunnerpy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py (165412 => 165413)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py        2014-03-10 23:08:55 UTC (rev 165412)
+++ trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py        2014-03-10 23:22:05 UTC (rev 165413)
</span><span class="lines">@@ -309,7 +309,10 @@
</span><span class="cx">         return None
</span><span class="cx"> 
</span><span class="cx">     def _upload_json(self, test_results_server, json_path, host_path=&quot;/api/report&quot;, file_uploader=FileUploader):
</span><del>-        url = &quot;https://%s%s&quot; % (test_results_server, host_path)
</del><ins>+        hypertext_protocol = ''
+        if not test_results_server.startswith('http'):
+            hypertext_protocol = 'https://'
+        url = hypertext_protocol + test_results_server + host_path
</ins><span class="cx">         uploader = file_uploader(url, 120)
</span><span class="cx">         try:
</span><span class="cx">             response = uploader.upload_single_text_file(self._host.filesystem, 'application/json', json_path)
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpyperformance_testsperftestsrunner_unittestpy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py (165412 => 165413)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py        2014-03-10 23:08:55 UTC (rev 165412)
+++ trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py        2014-03-10 23:22:05 UTC (rev 165413)
</span><span class="lines">@@ -186,33 +186,37 @@
</span><span class="cx">                 return mock.upload_single_text_file_return_value
</span><span class="cx"> 
</span><span class="cx">         MockFileUploader.upload_single_text_file_return_value = StringIO.StringIO('OK')
</span><del>-        self.assertTrue(runner._upload_json('some.host', 'some.json', '/some/path', MockFileUploader))
</del><ins>+        self.assertTrue(runner._upload_json('https://some.host', 'some.json', '/some/path', MockFileUploader))
</ins><span class="cx">         self.assertEqual(MockFileUploader.called, ['FileUploader', 'upload_single_text_file'])
</span><span class="cx"> 
</span><span class="cx">         MockFileUploader.reset()
</span><ins>+        MockFileUploader.upload_single_text_file_return_value = StringIO.StringIO('OK')
+        self.assertTrue(runner._upload_json('some.host', 'some.json', '/some/path', MockFileUploader))
+
+        MockFileUploader.reset()
</ins><span class="cx">         MockFileUploader.upload_single_text_file_return_value = StringIO.StringIO('Some error')
</span><span class="cx">         output = OutputCapture()
</span><span class="cx">         output.capture_output()
</span><del>-        self.assertFalse(runner._upload_json('some.host', 'some.json', '/some/path', MockFileUploader))
</del><ins>+        self.assertFalse(runner._upload_json('https://some.host', 'some.json', '/some/path', MockFileUploader))
</ins><span class="cx">         _, _, logs = output.restore_output()
</span><span class="cx">         self.assertEqual(logs, 'Uploaded JSON to https://some.host/some/path but got a bad response:\nSome error\n')
</span><span class="cx"> 
</span><span class="cx">         # Throwing an exception upload_single_text_file shouldn't blow up _upload_json
</span><span class="cx">         MockFileUploader.reset()
</span><span class="cx">         MockFileUploader.upload_single_text_file_throws = True
</span><del>-        self.assertFalse(runner._upload_json('some.host', 'some.json', '/some/path', MockFileUploader))
</del><ins>+        self.assertFalse(runner._upload_json('https://some.host', 'some.json', '/some/path', MockFileUploader))
</ins><span class="cx">         self.assertEqual(MockFileUploader.called, ['FileUploader', 'upload_single_text_file'])
</span><span class="cx"> 
</span><span class="cx">         MockFileUploader.reset()
</span><span class="cx">         MockFileUploader.upload_single_text_file_return_value = StringIO.StringIO('{&quot;status&quot;: &quot;OK&quot;}')
</span><del>-        self.assertTrue(runner._upload_json('some.host', 'some.json', '/some/path', MockFileUploader))
</del><ins>+        self.assertTrue(runner._upload_json('https://some.host', 'some.json', '/some/path', MockFileUploader))
</ins><span class="cx">         self.assertEqual(MockFileUploader.called, ['FileUploader', 'upload_single_text_file'])
</span><span class="cx"> 
</span><span class="cx">         MockFileUploader.reset()
</span><span class="cx">         MockFileUploader.upload_single_text_file_return_value = StringIO.StringIO('{&quot;status&quot;: &quot;SomethingHasFailed&quot;, &quot;failureStored&quot;: false}')
</span><span class="cx">         output = OutputCapture()
</span><span class="cx">         output.capture_output()
</span><del>-        self.assertFalse(runner._upload_json('some.host', 'some.json', '/some/path', MockFileUploader))
</del><ins>+        self.assertFalse(runner._upload_json('https://some.host', 'some.json', '/some/path', MockFileUploader))
</ins><span class="cx">         _, _, logs = output.restore_output()
</span><span class="cx">         serialized_json = json.dumps({'status': 'SomethingHasFailed', 'failureStored': False}, indent=4)
</span><span class="cx">         self.assertEqual(logs, 'Uploaded JSON to https://some.host/some/path but got an error:\n%s\n' % serialized_json)
</span></span></pre>
</div>
</div>

</body>
</html>