<?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>80476</bug_id>
          
          <creation_ts>2012-03-06 20:10:52 -0800</creation_ts>
          <short_desc>[WebSocket] Add performance tests for data transmission</short_desc>
          <delta_ts>2012-09-01 21:40:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          <blocked>77037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Li Yin">li.yin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dpranke</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>572469</commentid>
    <comment_count>0</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-06 20:10:52 -0800</bug_when>
    <thetext>Add the performance test case to track the efficiency of sending data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573008</commentid>
    <comment_count>1</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-03-07 10:39:37 -0800</bug_when>
    <thetext>To be able to run WebSocket performance tests, we have to make sure run-perf-tests start the pywebsocket server before it runs any tests, as new-run-webkit-tests does. HTTP tests may be a nice-to-have, too.

Ryosuke and Dirk: Do you think adding WebSocket performance tests is a good idea? How about HTTP tests? I think you guys have better sense than me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573092</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-07 11:58:43 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; To be able to run WebSocket performance tests, we have to make sure run-perf-tests start the pywebsocket server before it runs any tests, as new-run-webkit-tests does. HTTP tests may be a nice-to-have, too.
&gt; 
&gt; Ryosuke and Dirk: Do you think adding WebSocket performance tests is a good idea? How about HTTP tests? I think you guys have better sense than me.

Does the WebSocket performance matter? i.e. are they worth spending bots&apos; time on?  Since each new test we add will lengthen the cycle time of bots, I&apos;d rather not add new tests unless they&apos;re useful (i.e. you&apos;re going to use them to improve performance, etc...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573360</commentid>
    <comment_count>3</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-07 16:44:14 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; To be able to run WebSocket performance tests, we have to make sure run-perf-tests start the pywebsocket server before it runs any tests, as new-run-webkit-tests does. HTTP tests may be a nice-to-have, too.
&gt; &gt; 
&gt; &gt; Ryosuke and Dirk: Do you think adding WebSocket performance tests is a good idea? How about HTTP tests? I think you guys have better sense than me.
&gt; 
&gt; Does the WebSocket performance matter? i.e. are they worth spending bots&apos; time on?  Since each new test we add will lengthen the cycle time of bots, I&apos;d rather not add new tests unless they&apos;re useful (i.e. you&apos;re going to use them to improve performance, etc...)

I am designing a test to track the time of sending data through websocket, if the performance has been promoted, it will decrease the waiting time of ui, currently, the executing time of sending in firefox11.0 is shorter than chromium17, when the data size reaches 1MB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573680</commentid>
    <comment_count>4</comment_count>
      <attachid>130786</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-08 00:13:31 -0800</bug_when>
    <thetext>Created attachment 130786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573686</commentid>
    <comment_count>5</comment_count>
      <attachid>130786</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-08 00:27:23 -0800</bug_when>
    <thetext>Comment on attachment 130786
Patch

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:70
&gt; +        self._port.start_websocket_server()

Can we put all websocket tests in one directory and then start websocket server only when tests in that directory are ran?

&gt; PerformanceTests/Websocket/sendData.html:1
&gt; +&lt;html&gt;

Missing DOCTYPE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573688</commentid>
    <comment_count>6</comment_count>
      <attachid>130786</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-08 00:29:00 -0800</bug_when>
    <thetext>Comment on attachment 130786
Patch

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

&gt; PerformanceTests/Websocket/sendData.html:8
&gt; +        var NUM = 1024*1024;

Please don&apos;t use abbreviations like NUM. Also, Number doesn&apos;t really describe what it is. Why is this particular number picked for this value?
The variable name should self-evidentaly describe that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574442</commentid>
    <comment_count>7</comment_count>
      <attachid>130944</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-08 17:57:55 -0800</bug_when>
    <thetext>Created attachment 130944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574449</commentid>
    <comment_count>8</comment_count>
      <attachid>130944</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-08 18:05:31 -0800</bug_when>
    <thetext>Comment on attachment 130944
Patch

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:234
&gt; +            if relative_test_path.startswith(&apos;Websocket&apos;):

I think the correct capitalization is WebSocket.

&gt; PerformanceTests/Websocket/sendData.html:9
&gt; +    &lt;script type=&quot;text/javascript&quot;&gt;
&gt; +        var size = 1024*1024;

We don&apos;t normally indent elements and script contents like this.

&gt; PerformanceTests/Websocket/sendData.html:11
&gt; +        var wsocket = new WebSocket(&quot;ws://localhost:8880/websocket/tests/hybi/send&quot;);

Is there anyway to manually start this local server? It&apos;ll be nice to have some description on how to run this test manually inside a browser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574450</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-08 18:08:28 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; 
&gt; &gt; PerformanceTests/Websocket/sendData.html:11
&gt; &gt; +        var wsocket = new WebSocket(&quot;ws://localhost:8880/websocket/tests/hybi/send&quot;);
&gt; 
&gt; Is there anyway to manually start this local server? It&apos;ll be nice to have some description on how to run this test manually inside a browser.

I think run-webkit-websocket-server does this ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574505</commentid>
    <comment_count>10</comment_count>
      <attachid>130954</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-08 19:23:36 -0800</bug_when>
    <thetext>Created attachment 130954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575508</commentid>
    <comment_count>11</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-10 05:33:47 -0800</bug_when>
    <thetext>The send api can block the web ui, if it takes too much time, it can&apos;t be tolerated by web developer, and from my test, Firefox11 had a better performance than chromium when the sending data size reached 1MB. In addition, chromium19 had a lower efficiency than chromium17, chromium17 was about 1.3 times faster than chromium19.
So, I think it&apos;s necessary to add this test case, and running this case takes only 1 second in my developing machine, which will not increase the burden of Performance Tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607441</commentid>
    <comment_count>12</comment_count>
      <attachid>130954</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-22 21:41:34 -0700</bug_when>
    <thetext>Comment on attachment 130954
Patch

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

r- because of nits.

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:237
&gt; +            if relative_test_path.startswith(&apos;WebSocket&apos;):
&gt; +                if self._port._websocket_server is None:
&gt; +                    self._port.start_websocket_server()
&gt; +

My suggestion is to add a new PerfTest class like WebSocketPerfTest and then add some sort of prepare virtual method that gets called on every test.

&gt; PerformanceTests/WebSocket/sendData.html:11
&gt; +    var wsocket = new WebSocket(&quot;ws://localhost:8880/websocket/tests/hybi/echo&quot;);

Please don&apos;t use abbreviations like wsocket.

&gt; PerformanceTests/WebSocket/sendData.html:15
&gt; +    /*  
&gt; +    *   if you run this page in web browser, please run command 
&gt; +    *   &quot;Tools/Scripts/run-webkit-websocketserver&quot; to start websocket server.
&gt; +    */ 

Could you put this in the body so that it&apos;s visible when you open it?
You can hide it (e.g. by display = &apos;none&apos; or removing it from the document) when it&apos;s ran properly (i.e. when it&apos;s hosted on localhost).

&gt; PerformanceTests/WebSocket/sendData.html:29
&gt; +        PerfTestRunner.run(startFunc, 10, 5, completeFunc);
&gt; +    };
&gt; +
&gt; +    function startFunc() {
&gt; +        wsocket.send(data);
&gt; +    }
&gt; +
&gt; +    function completeFunc() {
&gt; +        wsocket.close();
&gt; +    }

Since startFunc and completeFunc are only called by run, it&apos;s better to write it as:
PerfTestRunner.run(function () { wsocket.send(data); }, 10, 5, function () { wsocket.close(); });

By the way, could lower the number of function calls per iteration and increase the number of runs instead?
Taking just 5 samples isn&apos;t enough to compute min/max/stdev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629091</commentid>
    <comment_count>13</comment_count>
      <attachid>130954</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-21 07:49:20 -0700</bug_when>
    <thetext>Comment on attachment 130954
Patch

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

&gt; Tools/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=80476

Style nit : Please add a line to here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629104</commentid>
    <comment_count>14</comment_count>
      <attachid>130954</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-21 08:06:57 -0700</bug_when>
    <thetext>Comment on attachment 130954
Patch

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

&gt; PerformanceTests/WebSocket/sendData.html:20
&gt; +        PerfTestRunner.run(startFunc, 10, 5, completeFunc);

You should use runPerSecond function added in http://trac.webkit.org/changeset/116916 instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629105</commentid>
    <comment_count>15</comment_count>
      <attachid>130954</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-21 08:07:21 -0700</bug_when>
    <thetext>Comment on attachment 130954
Patch

r- per my previous comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710313</commentid>
    <comment_count>16</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-09-01 21:40:43 -0700</bug_when>
    <thetext>It is not very very hot spot compared with bulk data in JS parsing.
So mark it to be WONTFIX.
My apology for wasting reviewers&apos; time.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130786</attachid>
            <date>2012-03-08 00:13:31 -0800</date>
            <delta_ts>2012-03-08 17:57:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80476-20120309161513.patch</filename>
            <type>text/plain</type>
            <size>3402</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzMyNmFkN2Q2YmI1YjQxMGQ4YWVhYTI2NDU1ZGZhMzM4
N2M1ODk2MC4uMzAwODE0ZmI2ZmU3ZjVmNTg0ODBjOWNmNmQyOTIxOGE3ZTJmMjFkMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDEyLTAzLTA5ICBMaSBZaW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtX
ZWJTb2NrZXRdIEFkZCBwZXJmb3JtYW5jZSB0ZXN0cyBmb3IgZGF0YSB0cmFuc21pc3Npb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDc2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weToKKyAgICAgICAgKFBl
cmZUZXN0c1J1bm5lci5fX2luaXRfXyk6CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIucnVuKToK
KwogMjAxMi0wMy0wNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cyBpcyBvYnNvbGV0ZSBhbmQgc2hv
dWxkIGJlIHJlbW92ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9y
bWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
ZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkKaW5kZXggNWFkMzRlNzg2NTU4ZDYy
MmE4NGNmZmQyMzJjZjYwYjkzNjZkOWQ4NS4uMmUwMGNlNTRjZTU1ZjU5MGFmMmRhM2VmYWNhNzJh
ZjA5NWY4MjI0OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5j
ZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
ZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkKQEAgLTY3LDYgKzY3LDcgQEAgY2xh
c3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2Jhc2VfcGF0aCA9IHNl
bGYuX3BvcnQucGVyZl90ZXN0c19kaXIoKQogICAgICAgICBzZWxmLl9yZXN1bHRzID0ge30KICAg
ICAgICAgc2VsZi5fdGltZXN0YW1wID0gdGltZS50aW1lKCkKKyAgICAgICAgc2VsZi5fcG9ydC5z
dGFydF93ZWJzb2NrZXRfc2VydmVyKCkKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX3Bh
cnNlX2FyZ3MoYXJncz1Ob25lKToKQEAgLTE0MCw2ICsxNDEsNyBAQCBjbGFzcyBQZXJmVGVzdHNS
dW5uZXIob2JqZWN0KToKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX3ByaW50
ZXIuY2xlYW51cCgpCiAKKyAgICAgICAgc2VsZi5fcG9ydC5zdG9wX3dlYnNvY2tldF9zZXJ2ZXIo
KQogICAgICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9ucwogICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLm91dHB1dF9qc29uX3BhdGg6CiAgICAgICAgICAgICAjIEZJWE1FOiBBZGQgLS1icmFuY2gg
b3IgYXV0by1kZXRlY3QgdGhlIGJyYW5jaCB3ZSdyZSBpbgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCBhY2I4
NWE5ZDdmOThmYmU2MTY4NzdlYzRmZjdhNGRjODhiNDRhNDYzLi41ODRlYmNkZTk5NzVlMDVkNzNh
MmNjODk4ZWFmNjVhYzk1OTI4OThiIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5n
ZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDEyLTAzLTA5ICBMaSBZaW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2Nr
ZXRdIEFkZCBwZXJmb3JtYW5jZSB0ZXN0cyBmb3IgZGF0YSB0cmFuc21pc3Npb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDc2CisgICAgICAgIFRy
YWNrIHRoZSBwZXJmb3JtYW5jZSBvZiB3ZWJzb2NrZXQgYXBpLCBzdGFydCB0aGUgd2Vic29ja2V0
CisgICAgICAgIHNlcnZlciBpbiBQZXJmb3JtYW5jZSB0ZXN0cy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYnNvY2tldC9zZW5kRGF0YS5odG1s
OiBBZGRlZC4KKwogMjAxMi0wMy0wNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSGVhcCBTbmFwc2hvdCB0ZXN0OiBzcGxp
dCBvdmVyYWwgdGltZSBtZXRyaWMgaW50byBzZXBhcmF0ZSBtZXRyaWNzLgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9XZWJzb2NrZXQvc2VuZERhdGEuaHRtbCBiL1BlcmZvcm1hbmNlVGVz
dHMvV2Vic29ja2V0L3NlbmREYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNlZmUyN2VjOGZiNjY2MDBm
NDllMGQzYjE5MTZhMGM2Nzk1N2VkZgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvV2Vic29ja2V0L3NlbmREYXRhLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8dGl0bGU+V2ViU29ja2V0IFNlbmQgTG9uZyBTdHJpbmcgRGF0YSBQZXJmb3JtYW5j
ZSBUcmFjazwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorICAgICAgICB2YXIgTlVNID0gMTAyNCoxMDI0OworICAgICAgICB2YXIgZGF0YSA9
ICIiOworICAgICAgICB2YXIgd3NvY2tldCA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxob3N0
Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZCIpOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IE5VTSAvIDE2OyBpKyspIHsKKyAgICAgICAgICAgIGRhdGEgKz0gIjAxMjM0NTY3ODlB
QkNERUYiOworICAgICAgICB9CisgICAgICAgIHdzb2NrZXQub25vcGVuID0gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5ydW4oc3RhcnRGdW5jLCAxLCA1MCwgY29tcGxl
dGVGdW5jKTsKKyAgICAgICAgfTsKKworICAgICAgICBmdW5jdGlvbiBzdGFydEZ1bmMoKSB7Cisg
ICAgICAgICAgICB3c29ja2V0LnNlbmQoZGF0YSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjb21wbGV0ZUZ1bmMoKSB7CisgICAgICAgICAgICB3c29ja2V0LmNsb3NlKCk7CisgICAg
ICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130944</attachid>
            <date>2012-03-08 17:57:55 -0800</date>
            <delta_ts>2012-03-08 19:23:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80476-20120310095939.patch</filename>
            <type>text/plain</type>
            <size>3223</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzMyNmFkN2Q2YmI1YjQxMGQ4YWVhYTI2NDU1ZGZhMzM4
N2M1ODk2MC4uNTkyNDQ3NTlkNDM2NTc2Yjc3NjA0OWMwYzJjNjhmZDE1NDMyMWVmNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEyLTAzLTA5ICBMaSBZaW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtX
ZWJTb2NrZXRdIEFkZCBwZXJmb3JtYW5jZSB0ZXN0cyBmb3IgZGF0YSB0cmFuc21pc3Npb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDc2CisgICAg
ICAgIEFkZCBXZWJzb2NrZXQgdGVzdCB0byB0cmFjayB0aGUgcGVyZm9ybWFuY2Ugb2YgZGF0YSBz
ZW5kaW5nLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHk6
CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIucnVuKToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5l
ci5fcnVuX3Rlc3RzX3NldCk6CisKIDIwMTItMDMtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMg
aXMgb2Jzb2xldGUgYW5kIHNob3VsZCBiZSByZW1vdmVkCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5Cmlu
ZGV4IDVhZDM0ZTc4NjU1OGQ2MjJhODRjZmZkMjMyY2Y2MGI5MzY2ZDlkODUuLmM3NTNiOTJjYWMx
NDUzMDFhMmVkMmZjYmNjMGQ5Yjc5NWFmODgwZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CkBA
IC0xNDAsNiArMTQwLDkgQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAg
IGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9wcmludGVyLmNsZWFudXAoKQogCisgICAgICAg
IGlmIHNlbGYuX3BvcnQuX3dlYnNvY2tldF9zZXJ2ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICBzZWxmLl9wb3J0LnN0b3Bfd2Vic29ja2V0X3NlcnZlcigpCisKICAgICAgICAgb3B0aW9ucyA9
IHNlbGYuX29wdGlvbnMKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5vdXRwdXRfanNvbl9wYXRo
OgogICAgICAgICAgICAgIyBGSVhNRTogQWRkIC0tYnJhbmNoIG9yIGF1dG8tZGV0ZWN0IHRoZSBi
cmFuY2ggd2UncmUgaW4KQEAgLTIyOCw2ICsyMzEsMTAgQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVy
KG9iamVjdCk6CiAgICAgICAgICAgICByZWxhdGl2ZV90ZXN0X3BhdGggPSBzZWxmLl9ob3N0LmZp
bGVzeXN0ZW0ucmVscGF0aCh0ZXN0LCBzZWxmLl9iYXNlX3BhdGgpCiAgICAgICAgICAgICBzZWxm
Ll9wcmludGVyLndyaXRlKCdSdW5uaW5nICVzICglZCBvZiAlZCknICUgKHJlbGF0aXZlX3Rlc3Rf
cGF0aCwgZXhwZWN0ZWQgKyB1bmV4cGVjdGVkICsgMSwgbGVuKHRlc3RzKSkpCiAKKyAgICAgICAg
ICAgIGlmIHJlbGF0aXZlX3Rlc3RfcGF0aC5zdGFydHN3aXRoKCdXZWJzb2NrZXQnKToKKyAgICAg
ICAgICAgICAgICBpZiBzZWxmLl9wb3J0Ll93ZWJzb2NrZXRfc2VydmVyIGlzIE5vbmU6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfd2Vic29ja2V0X3NlcnZlcigpCisKICAg
ICAgICAgICAgIGlzX2Nocm9taXVtX3N0eWxlID0gc2VsZi5faG9zdC5maWxlc3lzdGVtLnNwbGl0
KHJlbGF0aXZlX3Rlc3RfcGF0aClbMF0gaW4gc2VsZi5fdGVzdF9kaXJlY3Rvcmllc19mb3JfY2hy
b21pdW1fc3R5bGVfdGVzdHMKICAgICAgICAgICAgIGlmIHNlbGYuX3J1bl9zaW5nbGVfdGVzdCh0
ZXN0LCBkcml2ZXIsIGlzX2Nocm9taXVtX3N0eWxlKToKICAgICAgICAgICAgICAgICBleHBlY3Rl
ZCA9IGV4cGVjdGVkICsgMQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9XZWJzb2NrZXQv
c2VuZERhdGEuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvV2Vic29ja2V0L3NlbmREYXRhLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjQ0MTgzMzZlYjhkNmEyYTUzNmJmOThiNzI2ZDBjOWE2ZTM1YTI0ZgotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvV2Vic29ja2V0L3NlbmREYXRhLmh0bWwK
QEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0
aXRsZT5XZWJTb2NrZXQgU2VuZCBMb25nIFN0cmluZyBEYXRhIFBlcmZvcm1hbmNlIFRyYWNrPC90
aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cisg
ICAgICAgIHZhciBzaXplID0gMTAyNCoxMDI0OworICAgICAgICB2YXIgZGF0YSA9ICIiOworICAg
ICAgICB2YXIgd3NvY2tldCA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvc2VuZCIpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNp
emUgLyAxNjsgaSsrKSB7CisgICAgICAgICAgICBkYXRhICs9ICIwMTIzNDU2Nzg5QUJDREVGIjsK
KyAgICAgICAgfQorICAgICAgICB3c29ja2V0Lm9ub3BlbiA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgUGVyZlRlc3RSdW5uZXIucnVuKHN0YXJ0RnVuYywgMTAsIDUsIGNvbXBsZXRlRnVuYyk7
CisgICAgICAgIH07CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnRGdW5jKCkgeworICAgICAgICAg
ICAgd3NvY2tldC5zZW5kKGRhdGEpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY29t
cGxldGVGdW5jKCkgeworICAgICAgICAgICAgd3NvY2tldC5jbG9zZSgpOworICAgICAgICB9Cisg
ICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130954</attachid>
            <date>2012-03-08 19:23:36 -0800</date>
            <delta_ts>2012-05-21 08:07:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80476-20120310112519.patch</filename>
            <type>text/plain</type>
            <size>3288</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzMyNmFkN2Q2YmI1YjQxMGQ4YWVhYTI2NDU1ZGZhMzM4
N2M1ODk2MC4uNTkyNDQ3NTlkNDM2NTc2Yjc3NjA0OWMwYzJjNjhmZDE1NDMyMWVmNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEyLTAzLTA5ICBMaSBZaW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtX
ZWJTb2NrZXRdIEFkZCBwZXJmb3JtYW5jZSB0ZXN0cyBmb3IgZGF0YSB0cmFuc21pc3Npb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDc2CisgICAg
ICAgIEFkZCBXZWJzb2NrZXQgdGVzdCB0byB0cmFjayB0aGUgcGVyZm9ybWFuY2Ugb2YgZGF0YSBz
ZW5kaW5nLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHk6
CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIucnVuKToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5l
ci5fcnVuX3Rlc3RzX3NldCk6CisKIDIwMTItMDMtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMg
aXMgb2Jzb2xldGUgYW5kIHNob3VsZCBiZSByZW1vdmVkCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5Cmlu
ZGV4IDVhZDM0ZTc4NjU1OGQ2MjJhODRjZmZkMjMyY2Y2MGI5MzY2ZDlkODUuLjQwZjc0OTBkOTdm
N2FkZDhjNDc3ZmY3ZjUyZmZlYzVmNjU1NjAyNGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CkBA
IC0xNDAsNiArMTQwLDkgQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAg
IGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9wcmludGVyLmNsZWFudXAoKQogCisgICAgICAg
IGlmIHNlbGYuX3BvcnQuX3dlYnNvY2tldF9zZXJ2ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICBzZWxmLl9wb3J0LnN0b3Bfd2Vic29ja2V0X3NlcnZlcigpCisKICAgICAgICAgb3B0aW9ucyA9
IHNlbGYuX29wdGlvbnMKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5vdXRwdXRfanNvbl9wYXRo
OgogICAgICAgICAgICAgIyBGSVhNRTogQWRkIC0tYnJhbmNoIG9yIGF1dG8tZGV0ZWN0IHRoZSBi
cmFuY2ggd2UncmUgaW4KQEAgLTIyOCw2ICsyMzEsMTAgQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVy
KG9iamVjdCk6CiAgICAgICAgICAgICByZWxhdGl2ZV90ZXN0X3BhdGggPSBzZWxmLl9ob3N0LmZp
bGVzeXN0ZW0ucmVscGF0aCh0ZXN0LCBzZWxmLl9iYXNlX3BhdGgpCiAgICAgICAgICAgICBzZWxm
Ll9wcmludGVyLndyaXRlKCdSdW5uaW5nICVzICglZCBvZiAlZCknICUgKHJlbGF0aXZlX3Rlc3Rf
cGF0aCwgZXhwZWN0ZWQgKyB1bmV4cGVjdGVkICsgMSwgbGVuKHRlc3RzKSkpCiAKKyAgICAgICAg
ICAgIGlmIHJlbGF0aXZlX3Rlc3RfcGF0aC5zdGFydHN3aXRoKCdXZWJTb2NrZXQnKToKKyAgICAg
ICAgICAgICAgICBpZiBzZWxmLl9wb3J0Ll93ZWJzb2NrZXRfc2VydmVyIGlzIE5vbmU6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfd2Vic29ja2V0X3NlcnZlcigpCisKICAg
ICAgICAgICAgIGlzX2Nocm9taXVtX3N0eWxlID0gc2VsZi5faG9zdC5maWxlc3lzdGVtLnNwbGl0
KHJlbGF0aXZlX3Rlc3RfcGF0aClbMF0gaW4gc2VsZi5fdGVzdF9kaXJlY3Rvcmllc19mb3JfY2hy
b21pdW1fc3R5bGVfdGVzdHMKICAgICAgICAgICAgIGlmIHNlbGYuX3J1bl9zaW5nbGVfdGVzdCh0
ZXN0LCBkcml2ZXIsIGlzX2Nocm9taXVtX3N0eWxlKToKICAgICAgICAgICAgICAgICBleHBlY3Rl
ZCA9IGV4cGVjdGVkICsgMQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9XZWJTb2NrZXQv
c2VuZERhdGEuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvV2ViU29ja2V0L3NlbmREYXRhLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTg3NDc0MzgzNjBjNTk2MTU3MjZkZmU5MzA2NWFlNGZlNTRhZGI1NwotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvV2ViU29ja2V0L3NlbmREYXRhLmh0bWwK
QEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PldlYlNvY2tldCBTZW5kIExvbmcgU3RyaW5nIERhdGEgUGVyZm9ybWFuY2UgVHJhY2s8L3RpdGxl
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0PgorICAgIHZhciBzaXplID0gMTAyNCoxMDI0OworICAgIHZhciBk
YXRhID0gIiI7CisgICAgdmFyIHdzb2NrZXQgPSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9z
dDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8iKTsKKyAgICAvKiAgCisgICAgKiAgIGlm
IHlvdSBydW4gdGhpcyBwYWdlIGluIHdlYiBicm93c2VyLCBwbGVhc2UgcnVuIGNvbW1hbmQgCisg
ICAgKiAgICJUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtd2Vic29ja2V0c2VydmVyIiB0byBzdGFy
dCB3ZWJzb2NrZXQgc2VydmVyLgorICAgICovIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6
ZSAvIDE2OyBpKyspIHsKKyAgICAgICAgZGF0YSArPSAiMDEyMzQ1Njc4OUFCQ0RFRiI7CisgICAg
fQorICAgIHdzb2NrZXQub25vcGVuID0gZnVuY3Rpb24oKSB7CisgICAgICAgIFBlcmZUZXN0UnVu
bmVyLnJ1bihzdGFydEZ1bmMsIDEwLCA1LCBjb21wbGV0ZUZ1bmMpOworICAgIH07CisKKyAgICBm
dW5jdGlvbiBzdGFydEZ1bmMoKSB7CisgICAgICAgIHdzb2NrZXQuc2VuZChkYXRhKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBjb21wbGV0ZUZ1bmMoKSB7CisgICAgICAgIHdzb2NrZXQuY2xvc2Uo
KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="134122"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>