<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>49944</bug_id>
          
          <creation_ts>2010-11-22 15:49:26 -0800</creation_ts>
          <short_desc>speculative fix for upload errors: stop using mechanize to upload to test-results.appspot.com</short_desc>
          <delta_ts>2010-11-24 11:20:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>tony</cc>
    
    <cc>victorw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>312567</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-11-22 15:49:26 -0800</bug_when>
    <thetext>speculative fix for upload errors: stop using mechanize to upload to test-results.appspot.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312572</commentid>
    <comment_count>1</comment_count>
      <attachid>74608</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-11-22 15:54:00 -0800</bug_when>
    <thetext>Created attachment 74608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312584</commentid>
    <comment_count>2</comment_count>
      <attachid>74608</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-22 16:12:58 -0800</bug_when>
    <thetext>Comment on attachment 74608
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=74608&amp;action=review

Do we really want to be implementing HTTP in Python?  Surely there&apos;s a library to do that for us.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:44
&gt; +def _encode_multipart_form_data(fields, files):
&gt; +    &quot;&quot;&quot;Encode form fields for multipart/form-data.

Yuck</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312598</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-11-22 16:40:12 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 74608 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74608&amp;action=review
&gt; 
&gt; Do we really want to be implementing HTTP in Python?  Surely there&apos;s a library to do that for us.

You mean the encoding or using urllib2 directly? If the former, I don&apos;t know of a library to do that. If the latter, I&apos;m not really sure what the benefit of a layer of indirection is.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:44
&gt; &gt; +def _encode_multipart_form_data(fields, files):
&gt; &gt; +    &quot;&quot;&quot;Encode form fields for multipart/form-data.
&gt; 
&gt; Yuck

Open to suggestions. This is what rietveld&apos;s upload code uses, so at least it&apos;s well tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313007</commentid>
    <comment_count>4</comment_count>
      <attachid>74608</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-11-23 13:54:20 -0800</bug_when>
    <thetext>Comment on attachment 74608
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=74608&amp;action=review

Seems OK to try, but I&apos;m skeptical mechanize itself is the problem.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:60
&gt; +    for (key, value) in fields:

Nit: no ()s

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:68
&gt; +    for (key, filename, value) in files:

Nit: no ()s

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:97
&gt; +        for (filename, path) in files:

Nit: no ()s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313029</commentid>
    <comment_count>5</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-11-23 15:00:15 -0800</bug_when>
    <thetext>Committed r72633: &lt;http://trac.webkit.org/changeset/72633&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313086</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-23 16:50:00 -0800</bug_when>
    <thetext>Um... this seems a bad idea. This is mechanizes job. Not ours. Do we actually understand the bug?  It seems it should be fixed in mechanize or gae or a wrapper around mechanize.

I would have r-ed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313360</commentid>
    <comment_count>7</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-11-24 10:02:36 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Um... this seems a bad idea. This is mechanizes job. Not ours.

I don&apos;t really understand what mechanize buys us in this case. Here are the downsides of using mechanize:
-It uses a GET and a POST, where a POST is sufficient here.
-It adds a layer of indirection between the application logic and urllib2.

I see the value of using mechanize for bugzilla GETs. It saves us the work of parsing the bugzilla html. I don&apos;t see the benefit of using it for POSTs though. To me it just makes for more complicated code that&apos;s hard to debug and, in some cases, is slower because you need to do an extra GET.

&gt;Do we actually understand the bug?

No. What I was seeing from appengine logs is that it would think the uploaded files were empty. From the buildbot side, there was definitely a non-empty file on disk. 

FWIW, this did seem to fix the issue. There is still a timeout issue on appengine, but the empty files issue seems to have gone away.

&gt;It seems it should be fixed in mechanize or gae or a wrapper around mechanize.

Maybe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313406</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-24 11:20:39 -0800</bug_when>
    <thetext>I think the philosophy here is that webkitpy shouldn&apos;t know anything about HTTP.  That knowledge should be encapsulated in some library or another.  If we can&apos;t find a library that understands enough about HTTP to do this job, then we should write such a library ourselves, but we shouldn&apos;t conflate knowledge of HTTP into an object that knows about uploading LayoutTest results.  That&apos;s a big layering violation.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74608</attachid>
            <date>2010-11-22 15:54:00 -0800</date>
            <delta_ts>2010-11-23 13:54:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49944-20101122155359.patch</filename>
            <type>text/plain</type>
            <size>4774</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1MWM3MDA5NjRkOWQ1MzliMmQ0Y2VkZWU4MjY0MTI5ZWM5YmU2OGNhLi40YTQyNzgz
Mjg5ODE4NzNlOTE2OTI2YjgzMWExZjE0NTI2ZDM1ZTljIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMTEtMjIgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBzcGVjdWxhdGl2ZSBmaXggZm9y
IHVwbG9hZCBlcnJvcnM6IHN0b3AgdXNpbmcgbWVjaGFuaXplIHRvIHVwbG9hZCB0byB0ZXN0LXJl
c3VsdHMuYXBwc3BvdC5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5OTQ0CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdXBsb2FkZXIucHk6CisKIDIwMTAtMTEtMjIg
IEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNoaW5pY2hpcm8gSGFtYWppLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3VwbG9hZGVyLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvdGVzdF9yZXN1bHRzX3VwbG9hZGVyLnB5CmluZGV4IDY4MGI4NDhjYWNjYWJiODVmNjhlMzk1
ZGRiYTBhYTRkNTExNTM2ODUuLjk0ZTVkZTMwOWU2OWFhNjIxNTk1NTc3MDQzYjRiMmQzYTlkODU2
OTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0c191cGxvYWRlci5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3Vs
dHNfdXBsb2FkZXIucHkKQEAgLTI3LDQ1ICsyNyw4MSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAorCitpbXBv
cnQgY29kZWNzCiBpbXBvcnQgbWltZXR5cGVzCiBpbXBvcnQgc29ja2V0CitpbXBvcnQgdXJsbGli
MgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQubmV0d29ya3RyYW5zYWN0aW9uIGltcG9ydCBO
ZXR3b3JrVHJhbnNhY3Rpb24KLWZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVk
Lm1lY2hhbml6ZSBpbXBvcnQgQnJvd3NlcgotCiAKIGRlZiBnZXRfbWltZV90eXBlKGZpbGVuYW1l
KToKLSAgICByZXR1cm4gbWltZXR5cGVzLmd1ZXNzX3R5cGUoZmlsZW5hbWUpWzBdIG9yICJ0ZXh0
L3BsYWluIgorICAgIHJldHVybiBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShmaWxlbmFtZSlbMF0gb3Ig
J2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScKKworCitkZWYgX2VuY29kZV9tdWx0aXBhcnRfZm9y
bV9kYXRhKGZpZWxkcywgZmlsZXMpOgorICAgICIiIkVuY29kZSBmb3JtIGZpZWxkcyBmb3IgbXVs
dGlwYXJ0L2Zvcm0tZGF0YS4KKworICAgIEFyZ3M6CisgICAgICBmaWVsZHM6IEEgc2VxdWVuY2Ug
b2YgKG5hbWUsIHZhbHVlKSBlbGVtZW50cyBmb3IgcmVndWxhciBmb3JtIGZpZWxkcy4KKyAgICAg
IGZpbGVzOiBBIHNlcXVlbmNlIG9mIChuYW1lLCBmaWxlbmFtZSwgdmFsdWUpIGVsZW1lbnRzIGZv
ciBkYXRhIHRvIGJlCisgICAgICAgICAgICAgdXBsb2FkZWQgYXMgZmlsZXMuCisgICAgUmV0dXJu
czoKKyAgICAgIChjb250ZW50X3R5cGUsIGJvZHkpIHJlYWR5IGZvciBodHRwbGliLkhUVFAgaW5z
dGFuY2UuCisKKyAgICBTb3VyY2U6CisgICAgICBodHRwOi8vY29kZS5nb29nbGUuY29tL3Avcmll
dHZlbGQvc291cmNlL2Jyb3dzZS90cnVuay91cGxvYWQucHkKKyAgICAiIiIKKyAgICBCT1VOREFS
WSA9ICctTS1BLUctSS1DLS0tQi1PLVUtTi1ELUEtUi1ZLScKKyAgICBDUkxGID0gJ1xyXG4nCisg
ICAgbGluZXMgPSBbXQorCisgICAgZm9yIChrZXksIHZhbHVlKSBpbiBmaWVsZHM6CisgICAgICAg
IGxpbmVzLmFwcGVuZCgnLS0nICsgQk9VTkRBUlkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnQ29u
dGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSIlcyInICUga2V5KQorICAgICAgICBs
aW5lcy5hcHBlbmQoJycpCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHVuaWNvZGUpOgor
ICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgbGluZXMu
YXBwZW5kKHZhbHVlKQorCisgICAgZm9yIChrZXksIGZpbGVuYW1lLCB2YWx1ZSkgaW4gZmlsZXM6
CisgICAgICAgIGxpbmVzLmFwcGVuZCgnLS0nICsgQk9VTkRBUlkpCisgICAgICAgIGxpbmVzLmFw
cGVuZCgnQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSIlcyI7IGZpbGVuYW1l
PSIlcyInICUgKGtleSwgZmlsZW5hbWUpKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ0NvbnRlbnQt
VHlwZTogJXMnICUgZ2V0X21pbWVfdHlwZShmaWxlbmFtZSkpCisgICAgICAgIGxpbmVzLmFwcGVu
ZCgnJykKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdW5pY29kZSk6CisgICAgICAgICAg
ICB2YWx1ZSA9IHZhbHVlLmVuY29kZSgndXRmLTgnKQorICAgICAgICBsaW5lcy5hcHBlbmQodmFs
dWUpCisKKyAgICBsaW5lcy5hcHBlbmQoJy0tJyArIEJPVU5EQVJZICsgJy0tJykKKyAgICBsaW5l
cy5hcHBlbmQoJycpCisgICAgYm9keSA9IENSTEYuam9pbihsaW5lcykKKyAgICBjb250ZW50X3R5
cGUgPSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9JXMnICUgQk9VTkRBUlkKKyAgICBy
ZXR1cm4gY29udGVudF90eXBlLCBib2R5CiAKIAogY2xhc3MgVGVzdFJlc3VsdHNVcGxvYWRlcjoK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCk6CiAgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0
Ci0gICAgICAgIHNlbGYuX2Jyb3dzZXIgPSBCcm93c2VyKCkKIAogICAgIGRlZiBfdXBsb2FkX2Zp
bGVzKHNlbGYsIGF0dHJzLCBmaWxlX29ianMpOgotICAgICAgICBzZWxmLl9icm93c2VyLm9wZW4o
Imh0dHA6Ly8lcy90ZXN0ZmlsZS91cGxvYWRmb3JtIiAlIHNlbGYuX2hvc3QpCi0gICAgICAgIHNl
bGYuX2Jyb3dzZXIuc2VsZWN0X2Zvcm0oInRlc3RfcmVzdWx0X3VwbG9hZCIpCi0gICAgICAgIGZv
ciAobmFtZSwgZGF0YSkgaW4gYXR0cnM6Ci0gICAgICAgICAgICBzZWxmLl9icm93c2VyW25hbWVd
ID0gc3RyKGRhdGEpCi0KLSAgICAgICAgZm9yIChmaWxlbmFtZSwgaGFuZGxlKSBpbiBmaWxlX29i
anM6Ci0gICAgICAgICAgICBzZWxmLl9icm93c2VyLmFkZF9maWxlKGhhbmRsZSwgZ2V0X21pbWVf
dHlwZShmaWxlbmFtZSksIGZpbGVuYW1lLAotICAgICAgICAgICAgICAgICJmaWxlIikKLQotICAg
ICAgICBzZWxmLl9icm93c2VyLnN1Ym1pdCgpCisgICAgICAgIHVybCA9ICJodHRwOi8vJXMvdGVz
dGZpbGUvdXBsb2FkIiAlIHNlbGYuX2hvc3QKKyAgICAgICAgY29udGVudF90eXBlLCBkYXRhID0g
X2VuY29kZV9tdWx0aXBhcnRfZm9ybV9kYXRhKGF0dHJzLCBmaWxlX29ianMpCisgICAgICAgIGhl
YWRlcnMgPSB7IkNvbnRlbnQtVHlwZSI6IGNvbnRlbnRfdHlwZX0KKyAgICAgICAgcmVxdWVzdCA9
IHVybGxpYjIuUmVxdWVzdCh1cmwsIGRhdGEsIGhlYWRlcnMpCisgICAgICAgIHVybGxpYjIudXJs
b3BlbihyZXF1ZXN0LCB0aW1lb3V0PTYwKQogCiAgICAgZGVmIHVwbG9hZChzZWxmLCBwYXJhbXMs
IGZpbGVzLCB0aW1lb3V0X3NlY29uZHMpOgotICAgICAgICBvcmlnX3RpbWVvdXQgPSBzb2NrZXQu
Z2V0ZGVmYXVsdHRpbWVvdXQoKQogICAgICAgICBmaWxlX29ianMgPSBbXQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICBmaWxlX29ianMgPSBbKGZpbGVuYW1lLCBvcGVuKHBhdGgsICJyYiIpKSBm
b3IgKGZpbGVuYW1lLCBwYXRoKQotICAgICAgICAgICAgICAgIGluIGZpbGVzXQorICAgICAgICBm
b3IgKGZpbGVuYW1lLCBwYXRoKSBpbiBmaWxlczoKKyAgICAgICAgICAgIHdpdGggY29kZWNzLm9w
ZW4ocGF0aCwgInJiIikgYXMgZmlsZToKKyAgICAgICAgICAgICAgICBmaWxlX29ianMuYXBwZW5k
KCgnZmlsZScsIGZpbGVuYW1lLCBmaWxlLnJlYWQoKSkpCiAKKyAgICAgICAgb3JpZ190aW1lb3V0
ID0gc29ja2V0LmdldGRlZmF1bHR0aW1lb3V0KCkKKyAgICAgICAgdHJ5OgogICAgICAgICAgICAg
c29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KHRpbWVvdXRfc2Vjb25kcykKICAgICAgICAgICAgIE5l
dHdvcmtUcmFuc2FjdGlvbih0aW1lb3V0X3NlY29uZHM9dGltZW91dF9zZWNvbmRzKS5ydW4oCiAg
ICAgICAgICAgICAgICAgbGFtYmRhOiBzZWxmLl91cGxvYWRfZmlsZXMocGFyYW1zLCBmaWxlX29i
anMpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1l
b3V0KG9yaWdfdGltZW91dCkKLSAgICAgICAgICAgIGZvciAoZmlsZW5hbWUsIGhhbmRsZSkgaW4g
ZmlsZV9vYmpzOgotICAgICAgICAgICAgICAgIGhhbmRsZS5jbG9zZSgpCg==
</data>
<flag name="review"
          id="65253"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>