<?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>95668</bug_id>
          
          <creation_ts>2012-09-02 23:55:25 -0700</creation_ts>
          <short_desc>Performance test should support asynchronous tests</short_desc>
          <delta_ts>2012-10-17 13:57:40 -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>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>
          
          <blocked>78986</blocked>
    
    <blocked>95704</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Taiju Tsuiki">tzik</reporter>
          <assigned_to name="Taiju Tsuiki">tzik</assigned_to>
          <cc>ap</cc>
    
    <cc>arv</cc>
    
    <cc>ericu</cc>
    
    <cc>haraken</cc>
    
    <cc>kinuko</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tomz</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>710436</commentid>
    <comment_count>0</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-09-02 23:55:25 -0700</bug_when>
    <thetext>Most of storage related APIs are asynchronous. So, we need asynchronous test support to test them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710776</commentid>
    <comment_count>1</comment_count>
      <attachid>161954</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-09-03 18:43:57 -0700</bug_when>
    <thetext>Created attachment 161954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717463</commentid>
    <comment_count>2</comment_count>
      <attachid>161954</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-11 12:13:08 -0700</bug_when>
    <thetext>Comment on attachment 161954
Patch

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

&gt; PerformanceTests/ChangeLog:9
&gt; +        Test function for the runAsync and runPerSecondAsync should invoke

Do we really need both runAsync and runPerSecondAsync?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718105</commentid>
    <comment_count>3</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-09-12 02:38:44 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 161954 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161954&amp;action=review
&gt; 
&gt; &gt; PerformanceTests/ChangeLog:9
&gt; &gt; +        Test function for the runAsync and runPerSecondAsync should invoke
&gt; 
&gt; Do we really need both runAsync and runPerSecondAsync?

Actually, I don&apos;t need runAsync. Adding runAsync corresponding to run looked cleaner to me.
Should I drop runAsync?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719647</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 10:27:39 -0700</bug_when>
    <thetext>I&apos;d prefer just adding either one as a part of the bug 95704 since we don&apos;t normally add unused code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720298</commentid>
    <comment_count>5</comment_count>
      <attachid>164046</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-09-13 21:58:32 -0700</bug_when>
    <thetext>Created attachment 164046
Drop runAsync</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720301</commentid>
    <comment_count>6</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-09-13 22:00:24 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I&apos;d prefer just adding either one as a part of the bug 95704 since we don&apos;t normally add unused code.

Done. I dropped runAsync.
Could you take a look again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720307</commentid>
    <comment_count>7</comment_count>
      <attachid>164046</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 22:14:11 -0700</bug_when>
    <thetext>Comment on attachment 164046
Drop runAsync

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

&gt; PerformanceTests/resources/runner.js:276
&gt; +    this._doneFunction = function () { if (test.done) test.done(); };
&gt; +    this._description = test.description || &quot;&quot;;
&gt; +    this._runCount = test.runCount || 20;
&gt; +    this._callsPerIteration = 1;
&gt; +    this.unit = &apos;runs/s&apos;;
&gt; +
&gt; +    this._test = test;
&gt; +    this._runner = this._perSecondAsyncRunner;
&gt; +    this.initAndStartLoop();

We shouldn&apos;t have to duplicate all this code.

&gt; PerformanceTests/resources/runner.js:281
&gt; +    var timeToRun = this._test.timeToRun || 750;

Is 750ms really long enough for async tests?
How many runs per second do we typically get? Anything below 100 runs/s is statistically unsound.
On the other hand, at 100 runs/s, each run is only 10ms at which point we have to worry about the time spent in context switch, etc...

&gt; PerformanceTests/resources/runner.js:305
&gt; +            self._test.run(nextIteration.bind(window, j + 1));

It&apos;s not clear to me how this &quot;run&quot; function is used. I would really like to see this patch being merged with the one that adds an actual test.

Also, we need to be careful with calling functions like &quot;bind&quot;. It may affect V8 behavior in subtle ways.

&gt; PerformanceTests/resources/runner.js:310
&gt; +            totalTime += Date.now() - startTime;
&gt; +            i += callsPerIteration;
&gt; +            if (self._completedRuns &lt; 0 &amp;&amp; totalTime &lt; 100)
&gt; +                callsPerIteration = Math.max(10, 2 * callsPerIteration);

How slow is async function call here? If an async benchmark actually requires a context switch between two threads, then 100ms is probably not long enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720832</commentid>
    <comment_count>8</comment_count>
      <attachid>164169</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-09-14 09:33:42 -0700</bug_when>
    <thetext>Created attachment 164169
add test, merge runPerSecond to async version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720833</commentid>
    <comment_count>9</comment_count>
      <attachid>164046</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-09-14 09:34:13 -0700</bug_when>
    <thetext>Comment on attachment 164046
Drop runAsync

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

&gt;&gt; PerformanceTests/resources/runner.js:276
&gt;&gt; +    this.initAndStartLoop();
&gt; 
&gt; We shouldn&apos;t have to duplicate all this code.

I merged runPerSecond to runPerSecondAsync.

&gt;&gt; PerformanceTests/resources/runner.js:281
&gt;&gt; +    var timeToRun = this._test.timeToRun || 750;
&gt; 
&gt; Is 750ms really long enough for async tests?
&gt; How many runs per second do we typically get? Anything below 100 runs/s is statistically unsound.
&gt; On the other hand, at 100 runs/s, each run is only 10ms at which point we have to worry about the time spent in context switch, etc...

For simple filesystem test like creating file or write small data to a file, it runs around 3500 times/sec on DumpRenderTree and over 1000 times/sec on Chrome. I think it&apos;s enough.

&gt;&gt; PerformanceTests/resources/runner.js:305
&gt;&gt; +            self._test.run(nextIteration.bind(window, j + 1));
&gt; 
&gt; It&apos;s not clear to me how this &quot;run&quot; function is used. I would really like to see this patch being merged with the one that adds an actual test.
&gt; 
&gt; Also, we need to be careful with calling functions like &quot;bind&quot;. It may affect V8 behavior in subtle ways.

I see. I&apos;ll merge another change to this.

I don&apos;t know how much time bind() need... Can we use anonymous function safely instead?

&gt;&gt; PerformanceTests/resources/runner.js:310
&gt;&gt; +                callsPerIteration = Math.max(10, 2 * callsPerIteration);
&gt; 
&gt; How slow is async function call here? If an async benchmark actually requires a context switch between two threads, then 100ms is probably not long enough.

My tests is enough fast, at least, even when it needs IPC round trip.
If some test needs more time, it might need to be configurable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721150</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-14 14:44:53 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; For simple filesystem test like creating file or write small data to a file, it runs around 3500 times/sec on DumpRenderTree and over 1000 times/sec on Chrome. I think it&apos;s enough.

Okay.

&gt; I see. I&apos;ll merge another change to this.
&gt; 
&gt; I don&apos;t know how much time bind() need... Can we use anonymous function safely instead?

Ideally, the code that runs between each run is as small/fast as possible. In general, anything that non-trivial like creating new array, accessing a DOM node, creating an anonymous function, etc... should be avoided as much as possible. On the other hand, things like integer arithmetics should be fast and probably won&apos;t affect the js heap.

&gt; My tests is enough fast, at least, even when it needs IPC round trip.
&gt; If some test needs more time, it might need to be configurable.

Okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737146</commentid>
    <comment_count>11</comment_count>
      <attachid>164169</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-08 15:55:07 -0700</bug_when>
    <thetext>Comment on attachment 164169
add test, merge runPerSecond to async version

Ugh... this is very outdated now. Please upload a new patch that applies to ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744571</commentid>
    <comment_count>12</comment_count>
      <attachid>169247</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-17 13:37:45 -0700</bug_when>
    <thetext>Created attachment 169247
Convert Animation/balls to use PerfTestRunner.measureValueAsync</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744574</commentid>
    <comment_count>13</comment_count>
      <attachid>169250</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-17 13:42:56 -0700</bug_when>
    <thetext>Created attachment 169250
Convert Animation/balls to use PerfTestRunner.measureValueAsync</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744586</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-17 13:57:40 -0700</bug_when>
    <thetext>Committed r131638: &lt;http://trac.webkit.org/changeset/131638&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161954</attachid>
            <date>2012-09-03 18:43:57 -0700</date>
            <delta_ts>2012-09-13 21:58:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95668-20120904104341.patch</filename>
            <type>text/plain</type>
            <size>4386</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3Mzk2CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY1YzY2OWE1MjI4
MzFkYzM5MTk1MTBlN2I3MjkzZjU4NjAyYjQ5NTAuLjg5ZjkwZmZkODQxODA5YzBiYmQ2MjVjNDY4
NDk1MWVjMGRjMDkzMmUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDkt
MDMgIFRhaWp1IFRzdWlraSAgPHR6aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBlcmZvcm1h
bmNlIHRlc3Qgc2hvdWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIHRlc3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU2NjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBoYXJuZXNzIGZvciB0
ZXN0aW5nIGFzeW5jaHJvbm91cyB0ZXN0IGNhc2UuCisgICAgICAgIFRlc3QgZnVuY3Rpb24gZm9y
IHRoZSBydW5Bc3luYyBhbmQgcnVuUGVyU2Vjb25kQXN5bmMgc2hvdWxkIGludm9rZQorICAgICAg
ICBzcGVjaWZpZWQgY2FsbGJhY2sgdG8gbm90aWZ5IGhhcm5lc3Mgb2YgdGVzdCBjb21wbGV0aW9u
LgorICAgICAgICBUaGVzZSBoYXJuZXNzIGFyZSByZXF1aXJlZCB0byB0ZXN0IEZpbGVTeXN0ZW0g
dGVzdHMuCisKKyAgICAgICAgKiByZXNvdXJjZXMvcnVubmVyLmpzOgorICAgICAgICAoUGVyZlRl
c3RSdW5uZXIucnVuQXN5bmMpOgorICAgICAgICAoUGVyZlRlc3RSdW5uZXIuX2FzeW5jUnVubmVy
Lm5leHRSdW4pOgorICAgICAgICAoUGVyZlRlc3RSdW5uZXIuX2FzeW5jUnVubmVyKToKKyAgICAg
ICAgKFBlcmZUZXN0UnVubmVyLnJ1blBlclNlY29uZEFzeW5jLnRoaXMuX2RvbmVGdW5jdGlvbik6
CisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmRBc3luYyk6CisgICAgICAgIChQ
ZXJmVGVzdFJ1bm5lci5fcGVyU2Vjb25kQXN5bmNSdW5uZXIubmV4dFJ1bik6CisgICAgICAgIChQ
ZXJmVGVzdFJ1bm5lci5fcGVyU2Vjb25kQXN5bmNSdW5uZXIubmV4dEl0ZXJhdGlvbik6CisgICAg
ICAgIChQZXJmVGVzdFJ1bm5lci5fcGVyU2Vjb25kQXN5bmNSdW5uZXIpOgorCiAyMDEyLTA4LTIz
ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWJJ
bnNwZWN0b3I6IHVucmV2aWV3ZWQgc2luZ2xlIGxpbmUgdGVzdCBmaXguCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9ydW5uZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL3Jl
c291cmNlcy9ydW5uZXIuanMKaW5kZXggNmJmMWYyOWYzZDcxM2EzMDc0YWQwMDkzYzMzNzY5NTA0
ODFkYzJhMC4uMDRlYWI3MzljODZjMzQ4NjZjNWI3NzZjMTAyZmY2MTY0MTFmN2MzYSAxMDA3NTUK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwpAQCAtMjY0LDYgKzI2NCw4OSBAQCBQZXJmVGVz
dFJ1bm5lci5fcGVyU2Vjb25kUnVubmVySXRlcmF0b3IgPSBmdW5jdGlvbiAoY2FsbHNQZXJJdGVy
YXRpb24pIHsKICAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTsKIH0KIAorUGVyZlRl
c3RSdW5uZXIucnVuQXN5bmMgPSBmdW5jdGlvbiAocnVuRnVuY3Rpb24sIGxvb3BzUGVyUnVuLCBy
dW5Db3VudCwgZG9uZUZ1bmN0aW9uLCBkZXNjcmlwdGlvbikgeworICAgIHRoaXMuX3J1bkZ1bmN0
aW9uID0gcnVuRnVuY3Rpb247CisgICAgdGhpcy5fbG9vcHNQZXJSdW4gPSBsb29wc1BlclJ1biB8
fCAxMDsKKyAgICB0aGlzLl9ydW5Db3VudCA9IHJ1bkNvdW50IHx8IDIwOworICAgIHRoaXMuX2Rv
bmVGdW5jdGlvbiA9IGRvbmVGdW5jdGlvbiB8fCBmdW5jdGlvbiAoKSB7fTsKKyAgICB0aGlzLl9k
ZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uIHx8ICIiOworICAgIHRoaXMudW5pdCA9ICdtcyc7Cisg
ICAgdGhpcy5fcnVubmVyID0gdGhpcy5fYXN5bmNSdW5uZXI7CisgICAgdGhpcy5pbml0QW5kU3Rh
cnRMb29wKCk7Cit9CisKK1BlcmZUZXN0UnVubmVyLl9hc3luY1J1bm5lciA9IGZ1bmN0aW9uKCkg
eworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOworICAg
IHZhciB0b3RhbFRpbWUgPSAwOworCisgICAgdmFyIGkgPSAwOworICAgIHRoaXMuX3J1bkZ1bmN0
aW9uLmNhbGwod2luZG93LCBuZXh0UnVuKTsKKyAgICBmdW5jdGlvbiBuZXh0UnVuKHJldHVyblZh
bHVlKSB7CisgICAgICAgIGlmIChyZXR1cm5WYWx1ZSAtIDAgPT09IHJldHVyblZhbHVlKSB7Cisg
ICAgICAgICAgICBpZiAocmV0dXJuVmFsdWUgPD0gMCkKKyAgICAgICAgICAgICAgICBzZWxmLmxv
ZygicnVuRnVuY3Rpb24gcmV0dXJuZWQgYSBub24tcG9zaXRpdmUgdmFsdWU6ICIgKyByZXR1cm5W
YWx1ZSk7CisgICAgICAgICAgICB0b3RhbFRpbWUgKz0gcmV0dXJuVmFsdWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCsraSA8IHNlbGYuX2xvb3BQZXJSdW4pCisgICAgICAgICAgICBzZWxmLl9y
dW5GdW5jdGlvbi5jYWxsKHdpbmRvdywgbmV4dFJ1bik7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgdmFyIHRpbWUgPSB0b3RhbFRpbWUgPyB0b3RhbFRpbWUgOiBEYXRlLm5vdygpIC0gc3Rh
cnQ7CisgICAgICAgICAgICBzZWxmLmlnbm9yZVdhcm1VcEFuZExvZyh0aW1lKTsKKyAgICAgICAg
ICAgIHNlbGYuX3J1bkxvb3AoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworUGVyZlRlc3RSdW5u
ZXIucnVuUGVyU2Vjb25kQXN5bmMgPSBmdW5jdGlvbiAodGVzdCkgeworICAgIHRoaXMuX2RvbmVG
dW5jdGlvbiA9IGZ1bmN0aW9uICgpIHsgaWYgKHRlc3QuZG9uZSkgdGVzdC5kb25lKCk7IH07Cisg
ICAgdGhpcy5fZGVzY3JpcHRpb24gPSB0ZXN0LmRlc2NyaXB0aW9uIHx8ICIiOworICAgIHRoaXMu
X3J1bkNvdW50ID0gdGVzdC5ydW5Db3VudCB8fCAyMDsKKyAgICB0aGlzLl9jYWxsc1Blckl0ZXJh
dGlvbiA9IDE7CisgICAgdGhpcy51bml0ID0gJ3J1bnMvcyc7CisKKyAgICB0aGlzLl90ZXN0ID0g
dGVzdDsKKyAgICB0aGlzLl9ydW5uZXIgPSB0aGlzLl9wZXJTZWNvbmRBc3luY1J1bm5lcjsKKyAg
ICB0aGlzLmluaXRBbmRTdGFydExvb3AoKTsKK30KKworUGVyZlRlc3RSdW5uZXIuX3BlclNlY29u
ZEFzeW5jUnVubmVyID0gZnVuY3Rpb24gKCkgeworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICB2
YXIgdGltZVRvUnVuID0gdGhpcy5fdGVzdC50aW1lVG9SdW4gfHwgNzUwOworICAgIHZhciB0b3Rh
bFRpbWUgPSAwOworICAgIHZhciBpID0gMDsKKyAgICB2YXIgY2FsbHNQZXJJdGVyYXRpb24gPSB0
aGlzLl9jYWxsc1Blckl0ZXJhdGlvbjsKKworICAgIGlmICh0aGlzLl90ZXN0LnNldHVwKQorICAg
ICAgICB0aGlzLl90ZXN0LnNldHVwKG5leHRSdW4pOworICAgIGVsc2UKKyAgICAgICAgbmV4dFJ1
bigpOworCisgICAgdmFyIHN0YXJ0VGltZTsKKyAgICBmdW5jdGlvbiBuZXh0UnVuKCkgeworICAg
ICAgICBpZiAodG90YWxUaW1lIDwgdGltZVRvUnVuKSB7CisgICAgICAgICAgICBzdGFydFRpbWUg
PSBEYXRlLm5vdygpOworICAgICAgICAgICAgbmV4dEl0ZXJhdGlvbigwKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHNlbGYuX2NhbGxzUGVySXRlcmF0aW9uID0gY2FsbHNQZXJJdGVy
YXRpb247CisgICAgICAgICAgICBzZWxmLmlnbm9yZVdhcm1VcEFuZExvZyhpICogMTAwMCAvIHRv
dGFsVGltZSk7CisgICAgICAgICAgICBzZWxmLl9ydW5Mb29wKCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBmdW5jdGlvbiBuZXh0SXRlcmF0aW9uKGopIHsKKyAgICAgICAgaWYgKGogPCBjYWxs
c1Blckl0ZXJhdGlvbikKKyAgICAgICAgICAgIHNlbGYuX3Rlc3QucnVuKG5leHRJdGVyYXRpb24u
YmluZCh3aW5kb3csIGogKyAxKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdG90YWxU
aW1lICs9IERhdGUubm93KCkgLSBzdGFydFRpbWU7CisgICAgICAgICAgICBpICs9IGNhbGxzUGVy
SXRlcmF0aW9uOworICAgICAgICAgICAgaWYgKHNlbGYuX2NvbXBsZXRlZFJ1bnMgPCAwICYmIHRv
dGFsVGltZSA8IDEwMCkKKyAgICAgICAgICAgICAgICBjYWxsc1Blckl0ZXJhdGlvbiA9IE1hdGgu
bWF4KDEwLCAyICogY2FsbHNQZXJJdGVyYXRpb24pOworICAgICAgICAgICAgbmV4dFJ1bigpOwor
ICAgICAgICB9CisgICAgfQorfQorCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164046</attachid>
            <date>2012-09-13 21:58:32 -0700</date>
            <delta_ts>2012-09-14 09:34:13 -0700</delta_ts>
            <desc>Drop runAsync</desc>
            <filename>bug-95668-20120914135804.patch</filename>
            <type>text/plain</type>
            <size>3115</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NTQ1CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY1YzY2OWE1MjI4
MzFkYzM5MTk1MTBlN2I3MjkzZjU4NjAyYjQ5NTAuLjhkMzgyYWRkZWQ4ZDU1YjJhZDgwMzkwMjhk
N2Q4NTU3OTkzYTZhMDEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDkt
MDMgIFRhaWp1IFRzdWlraSAgPHR6aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBlcmZvcm1h
bmNlIHRlc3Qgc2hvdWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIHRlc3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU2NjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBoYXJuZXNzIGZvciB0
ZXN0aW5nIGFzeW5jaHJvbm91cyB0ZXN0IGNhc2UuCisgICAgICAgIFRlc3QgZnVuY3Rpb24gZm9y
IHRoZSBydW5QZXJTZWNvbmRBc3luYyBzaG91bGQgaW52b2tlIHNwZWNpZmllZCBjYWxsYmFjayB0
byBub3RpZnkgaGFybmVzcworICAgICAgICBvZiB0ZXN0IGNvbXBsZXRpb24uCisgICAgICAgIFRo
ZXNlIGhhcm5lc3MgYXJlIHJlcXVpcmVkIHRvIHRlc3QgRmlsZVN5c3RlbSB0ZXN0cy4KKworICAg
ICAgICAqIHJlc291cmNlcy9ydW5uZXIuanM6CisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5ydW5Q
ZXJTZWNvbmRBc3luYy50aGlzLl9kb25lRnVuY3Rpb24pOgorICAgICAgICAoUGVyZlRlc3RSdW5u
ZXIucnVuUGVyU2Vjb25kQXN5bmMpOgorICAgICAgICAoUGVyZlRlc3RSdW5uZXIuX3BlclNlY29u
ZEFzeW5jUnVubmVyLm5leHRSdW4pOgorICAgICAgICAoUGVyZlRlc3RSdW5uZXIuX3BlclNlY29u
ZEFzeW5jUnVubmVyLm5leHRJdGVyYXRpb24pOgorICAgICAgICAoUGVyZlRlc3RSdW5uZXIuX3Bl
clNlY29uZEFzeW5jUnVubmVyKToKKwogMjAxMi0wOC0yMyAgSWx5YSBUaWtob25vdnNreSAgPGxv
aXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViSW5zcGVjdG9yOiB1bnJldmlld2VkIHNp
bmdsZSBsaW5lIHRlc3QgZml4LgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJj
ZXMvcnVubmVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCmluZGV4
IDZiZjFmMjlmM2Q3MTNhMzA3NGFkMDA5M2MzMzc2OTUwNDgxZGMyYTAuLjBjM2I5ODEyM2Q1YTkz
MjY1NzQ2MTk5ZDg0ODljZTMyOTU1NDE3NDIgMTAwNzU1Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
cmVzb3VyY2VzL3J1bm5lci5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9ydW5u
ZXIuanMKQEAgLTI2NCw2ICsyNjQsNTUgQEAgUGVyZlRlc3RSdW5uZXIuX3BlclNlY29uZFJ1bm5l
ckl0ZXJhdG9yID0gZnVuY3Rpb24gKGNhbGxzUGVySXRlcmF0aW9uKSB7CiAgICAgcmV0dXJuIERh
dGUubm93KCkgLSBzdGFydFRpbWU7CiB9CiAKK1BlcmZUZXN0UnVubmVyLnJ1blBlclNlY29uZEFz
eW5jID0gZnVuY3Rpb24gKHRlc3QpIHsKKyAgICB0aGlzLl9kb25lRnVuY3Rpb24gPSBmdW5jdGlv
biAoKSB7IGlmICh0ZXN0LmRvbmUpIHRlc3QuZG9uZSgpOyB9OworICAgIHRoaXMuX2Rlc2NyaXB0
aW9uID0gdGVzdC5kZXNjcmlwdGlvbiB8fCAiIjsKKyAgICB0aGlzLl9ydW5Db3VudCA9IHRlc3Qu
cnVuQ291bnQgfHwgMjA7CisgICAgdGhpcy5fY2FsbHNQZXJJdGVyYXRpb24gPSAxOworICAgIHRo
aXMudW5pdCA9ICdydW5zL3MnOworCisgICAgdGhpcy5fdGVzdCA9IHRlc3Q7CisgICAgdGhpcy5f
cnVubmVyID0gdGhpcy5fcGVyU2Vjb25kQXN5bmNSdW5uZXI7CisgICAgdGhpcy5pbml0QW5kU3Rh
cnRMb29wKCk7Cit9CisKK1BlcmZUZXN0UnVubmVyLl9wZXJTZWNvbmRBc3luY1J1bm5lciA9IGZ1
bmN0aW9uICgpIHsKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgdmFyIHRpbWVUb1J1biA9IHRo
aXMuX3Rlc3QudGltZVRvUnVuIHx8IDc1MDsKKyAgICB2YXIgdG90YWxUaW1lID0gMDsKKyAgICB2
YXIgaSA9IDA7CisgICAgdmFyIGNhbGxzUGVySXRlcmF0aW9uID0gdGhpcy5fY2FsbHNQZXJJdGVy
YXRpb247CisKKyAgICBpZiAodGhpcy5fdGVzdC5zZXR1cCkKKyAgICAgICAgdGhpcy5fdGVzdC5z
ZXR1cChuZXh0UnVuKTsKKyAgICBlbHNlCisgICAgICAgIG5leHRSdW4oKTsKKworICAgIHZhciBz
dGFydFRpbWU7CisgICAgZnVuY3Rpb24gbmV4dFJ1bigpIHsKKyAgICAgICAgaWYgKHRvdGFsVGlt
ZSA8IHRpbWVUb1J1bikgeworICAgICAgICAgICAgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKKyAg
ICAgICAgICAgIG5leHRJdGVyYXRpb24oMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBzZWxmLl9jYWxsc1Blckl0ZXJhdGlvbiA9IGNhbGxzUGVySXRlcmF0aW9uOworICAgICAgICAg
ICAgc2VsZi5pZ25vcmVXYXJtVXBBbmRMb2coaSAqIDEwMDAgLyB0b3RhbFRpbWUpOworICAgICAg
ICAgICAgc2VsZi5fcnVuTG9vcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24g
bmV4dEl0ZXJhdGlvbihqKSB7CisgICAgICAgIGlmIChqIDwgY2FsbHNQZXJJdGVyYXRpb24pCisg
ICAgICAgICAgICBzZWxmLl90ZXN0LnJ1bihuZXh0SXRlcmF0aW9uLmJpbmQod2luZG93LCBqICsg
MSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRvdGFsVGltZSArPSBEYXRlLm5vdygp
IC0gc3RhcnRUaW1lOworICAgICAgICAgICAgaSArPSBjYWxsc1Blckl0ZXJhdGlvbjsKKyAgICAg
ICAgICAgIGlmIChzZWxmLl9jb21wbGV0ZWRSdW5zIDwgMCAmJiB0b3RhbFRpbWUgPCAxMDApCisg
ICAgICAgICAgICAgICAgY2FsbHNQZXJJdGVyYXRpb24gPSBNYXRoLm1heCgxMCwgMiAqIGNhbGxz
UGVySXRlcmF0aW9uKTsKKyAgICAgICAgICAgIG5leHRSdW4oKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164169</attachid>
            <date>2012-09-14 09:33:42 -0700</date>
            <delta_ts>2012-10-17 13:37:42 -0700</delta_ts>
            <desc>add test, merge runPerSecond to async version</desc>
            <filename>bug-95668-20120915013313.patch</filename>
            <type>text/plain</type>
            <size>6233</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NjExCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZkMjQ0NmQ5ZGVi
MjgyNjk1NzE3NDM3NmJmYjlkZmU5ZTliNTAxYTkuLmVlNDZmN2ZhNDY4NTFlNTA1ZTBlZDkxNjY2
YmZiNjhlODlkMWM3ZTcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDkt
MTQgIFRhaWp1IFRzdWlraSAgPHR6aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBlcmZvcm1h
bmNlIHRlc3Qgc2hvdWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIHRlc3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU2NjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBoYXJuZXNzIGZvciB0
ZXN0aW5nIGFzeW5jaHJvbm91cyB0ZXN0IGNhc2UuCisgICAgICAgIFRlc3QgZnVuY3Rpb24gZm9y
IHRoZSBydW5QZXJTZWNvbmRBc3luYyBzaG91bGQgaW52b2tlIHNwZWNpZmllZCBjYWxsYmFjayB0
byBub3RpZnkgaGFybmVzcworICAgICAgICBvZiB0ZXN0IGNvbXBsZXRpb24uCisKKyAgICAgICAg
QWxzbywgdGhpcyBwYXRjaCBhZGRzIGFuIGFzeW5jaHJvbm91cyB0ZXN0IGZvciBGaWxlU3lzdGVt
LgorCisgICAgICAgICogRmlsZVN5c3RlbS9jcmVhdGUtZmlsZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBTa2lwcGVkOgorICAgICAgICAqIHJlc291cmNlcy9ydW5uZXIuanM6CisgICAgICAgIChQ
ZXJmVGVzdFJ1bm5lci5fcnVubmVyKToKKyAgICAgICAgKFBlcmZUZXN0UnVubmVyLnJ1blBlclNl
Y29uZC50ZXN0LnJ1bik6CisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQudGVz
dC5zZXR1cCk6CisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNvbmQpOgorICAgICAg
ICAoUGVyZlRlc3RSdW5uZXIucnVuUGVyU2Vjb25kQXN5bmMpOgorICAgICAgICAoUGVyZlRlc3RS
dW5uZXIuX3BlclNlY29uZEFzeW5jUnVubmVyLm5leHRSdW4pOgorICAgICAgICAoUGVyZlRlc3RS
dW5uZXIuX3BlclNlY29uZEFzeW5jUnVubmVyLm5leHRJdGVyYXRpb24uZWxzZSk6CisgICAgICAg
IChQZXJmVGVzdFJ1bm5lci5fcGVyU2Vjb25kQXN5bmNSdW5uZXIubmV4dEl0ZXJhdGlvbik6Cisg
ICAgICAgIChQZXJmVGVzdFJ1bm5lci5fcGVyU2Vjb25kQXN5bmNSdW5uZXIpOgorCiAyMDEyLTA5
LTE0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI4NTYyLgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9GaWxlU3lzdGVtL2NyZWF0ZS1maWxlLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0Zp
bGVTeXN0ZW0vY3JlYXRlLWZpbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODQ2OWVmMDY0MDQ5MmI4YWYx
N2VhYjUwNjQ1YWMzMDUxYmUwMmM1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9GaWxlU3lzdGVtL2NyZWF0ZS1maWxlLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3J1bm5lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKCF3aW5kb3cud2Via2l0UmVxdWVz
dEZpbGVTeXN0ZW0pCisgICAgY29uc29sZS5sb2coIlRoaXMgdGVzdCByZXF1aXJlcyB3ZWJraXRS
ZXF1ZXN0RmlsZVN5c3RlbS4iKTsKKword2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZ
LCAxLCBydW5UZXN0KTsKK3ZhciBkaXJfbmFtZSA9ICIvcGVyZnRlc3QtY3JlYXRlLWZpbGUiOwor
ZnVuY3Rpb24gcnVuVGVzdChmaWxlU3lzdGVtKSB7CisgICAgdmFyIGkgPSAwOworICAgIFBlcmZU
ZXN0UnVubmVyLnJ1blBlclNlY29uZEFzeW5jKHsKKyAgICAgICAgZGVzY3JpcHRpb246ICJUaGlz
IGJlbmNobWFyayB0ZXN0cyBjcmVhdGluZyBuZXcgZmlsZSB1c2luZyBEaXJlY3RvcnlFbnRyeS5n
ZXRGaWxlKCkuIiwKKyAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKGRvbmUpIHsKKyAgICAgICAgICAg
IGkgPSAwOworICAgICAgICAgICAgZmlsZVN5c3RlbS5yb290LmdldERpcmVjdG9yeShkaXJfbmFt
ZSwge2NyZWF0ZTogZmFsc2V9LCBjbGVhckRpcmVjdG9yeSwgY3JlYXRlRGlyZWN0b3J5KTsKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGNsZWFyRGlyZWN0b3J5KGRpcmVjdG9yeSkgeworICAgICAgICAg
ICAgICAgIGRpcmVjdG9yeS5yZW1vdmVSZWN1cnNpdmVseShjcmVhdGVEaXJlY3RvcnkpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVEaXJlY3RvcnkoKSB7Cisg
ICAgICAgICAgICAgICAgZmlsZVN5c3RlbS5yb290LmdldERpcmVjdG9yeShkaXJfbmFtZSwge2Ny
ZWF0ZTogdHJ1ZSwgZXhjbHVzaXZlOiB0cnVlfSwgZG9uZSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgIHJ1bjogZnVuY3Rpb24oZG9uZSkgeworICAgICAgICAgICAgZmlsZVN5
c3RlbS5yb290LmdldEZpbGUoZGlyX25hbWUgKyAiLyIgKyBpKyssIHtjcmVhdGU6IHRydWUsIGV4
Y2x1c2l2ZTogdHJ1ZX0sIGRvbmUpOworICAgICAgICB9LAorICB9KTsKK30KKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Ta2lwcGVkIGIvUGVyZm9ybWFuY2VUZXN0cy9T
a2lwcGVkCmluZGV4IGY1YjU5MzdlNjdlNTAyNzY0Y2VkM2MwOGZiZTNlMjcxMmIzMWZiODMuLjNk
YzdlZDEwOGRmYzY3NGNhZjQ3NzhkMDQzZGM0ODM5OTlkM2M1ZmMgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvU2tpcHBlZAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NraXBwZWQKQEAgLTUy
LDMgKzUyLDUgQEAgRHJvbWFlby92OC1yaWNoYXJkcy5odG1sCiAjIEJ1ZyA3NzAyNCAtIFdlYiBJ
bnNwZWN0b3I6IHRlc3RzIGluIFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yLyBhcmUgdGltaW5n
IG91dAogaW5zcGVjdG9yCiAKKyMgTm90IGVuYWJsZWQgYnkgZGVmYXVsdAorRmlsZVN5c3RlbQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCmluZGV4IDZiZjFmMjlmM2Q3MTNhMzA3NGFk
MDA5M2MzMzc2OTUwNDgxZGMyYTAuLmIxZjQ2NjNhMmM4M2I2YzM0YjVlYWZmMGFjZDQwYWQxZmRk
MzkxZWQgMTAwNzU1Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9ydW5uZXIuanMKQEAgLTIyNSw2ICsyMjUs
MjIgQEAgUGVyZlRlc3RSdW5uZXIucnVuID0gZnVuY3Rpb24gKHJ1bkZ1bmN0aW9uLCBsb29wc1Bl
clJ1biwgcnVuQ291bnQsIGRvbmVGdW5jdGlvbiwKIH0KIAogUGVyZlRlc3RSdW5uZXIucnVuUGVy
U2Vjb25kID0gZnVuY3Rpb24gKHRlc3QpIHsKKyAgICB2YXIgcnVuT3JpZ2luYWwgPSB0ZXN0LnJ1
bjsKKyAgICB0ZXN0LnJ1biA9IGZ1bmN0aW9uKGRvbmUpIHsKKyAgICAgICAgcnVuT3JpZ2luYWwu
Y2FsbCh0aGlzKTsKKyAgICAgICAgZG9uZSgpOworICAgIH07CisgICAgaWYgKHRlc3Quc2V0dXAp
IHsKKyAgICAgICAgdmFyIHNldHVwT3JpZ2luYWwgPSB0ZXN0LnNldHVwOworICAgICAgICB0ZXN0
LnNldHVwID0gZnVuY3Rpb24oZG9uZSkgeworICAgICAgICAgICAgc2V0dXBPcmlnaW5hbC5jYWxs
KHRoaXMpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9OworICAgIH0KKyAgICB0aGlz
LnJ1blBlclNlY29uZEFzeW5jKHRlc3QpOworfQorCitQZXJmVGVzdFJ1bm5lci5ydW5QZXJTZWNv
bmRBc3luYyA9IGZ1bmN0aW9uICh0ZXN0KSB7CiAgICAgdGhpcy5fZG9uZUZ1bmN0aW9uID0gZnVu
Y3Rpb24gKCkgeyBpZiAodGVzdC5kb25lKSB0ZXN0LmRvbmUoKTsgfTsKICAgICB0aGlzLl9kZXNj
cmlwdGlvbiA9IHRlc3QuZGVzY3JpcHRpb24gfHwgIiI7CiAgICAgdGhpcy5fcnVuQ291bnQgPSB0
ZXN0LnJ1bkNvdW50IHx8IDIwOwpAQCAtMjMyLDM2ICsyNDgsNDUgQEAgUGVyZlRlc3RSdW5uZXIu
cnVuUGVyU2Vjb25kID0gZnVuY3Rpb24gKHRlc3QpIHsKICAgICB0aGlzLnVuaXQgPSAncnVucy9z
JzsKIAogICAgIHRoaXMuX3Rlc3QgPSB0ZXN0OwotICAgIHRoaXMuX3J1bm5lciA9IHRoaXMuX3Bl
clNlY29uZFJ1bm5lcjsKKyAgICB0aGlzLl9ydW5uZXIgPSB0aGlzLl9wZXJTZWNvbmRBc3luY1J1
bm5lcjsKICAgICB0aGlzLmluaXRBbmRTdGFydExvb3AoKTsKIH0KIAotUGVyZlRlc3RSdW5uZXIu
X3BlclNlY29uZFJ1bm5lciA9IGZ1bmN0aW9uICgpIHsKK1BlcmZUZXN0UnVubmVyLl9wZXJTZWNv
bmRBc3luY1J1bm5lciA9IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAg
dmFyIHRpbWVUb1J1biA9IHRoaXMuX3Rlc3QudGltZVRvUnVuIHx8IDc1MDsKICAgICB2YXIgdG90
YWxUaW1lID0gMDsKICAgICB2YXIgaSA9IDA7CiAgICAgdmFyIGNhbGxzUGVySXRlcmF0aW9uID0g
dGhpcy5fY2FsbHNQZXJJdGVyYXRpb247CiAKICAgICBpZiAodGhpcy5fdGVzdC5zZXR1cCkKLSAg
ICAgICAgdGhpcy5fdGVzdC5zZXR1cCgpOwotCi0gICAgd2hpbGUgKHRvdGFsVGltZSA8IHRpbWVU
b1J1bikgewotICAgICAgICB0b3RhbFRpbWUgKz0gdGhpcy5fcGVyU2Vjb25kUnVubmVySXRlcmF0
b3IoY2FsbHNQZXJJdGVyYXRpb24pOwotICAgICAgICBpICs9IGNhbGxzUGVySXRlcmF0aW9uOwot
ICAgICAgICBpZiAodGhpcy5fY29tcGxldGVkUnVucyA8IDAgJiYgdG90YWxUaW1lIDwgMTAwKQot
ICAgICAgICAgICAgY2FsbHNQZXJJdGVyYXRpb24gPSBNYXRoLm1heCgxMCwgMiAqIGNhbGxzUGVy
SXRlcmF0aW9uKTsKKyAgICAgICAgdGhpcy5fdGVzdC5zZXR1cChuZXh0UnVuKTsKKyAgICBlbHNl
CisgICAgICAgIG5leHRSdW4oKTsKKworICAgIHZhciBzdGFydFRpbWU7CisgICAgZnVuY3Rpb24g
bmV4dFJ1bigpIHsKKyAgICAgICAgaWYgKHRvdGFsVGltZSA8IHRpbWVUb1J1bikgeworICAgICAg
ICAgICAgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKKyAgICAgICAgICAgIG5leHRJdGVyYXRpb24o
MCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZWxmLl9jYWxsc1Blckl0ZXJhdGlv
biA9IGNhbGxzUGVySXRlcmF0aW9uOworICAgICAgICAgICAgc2VsZi5pZ25vcmVXYXJtVXBBbmRM
b2coaSAqIDEwMDAgLyB0b3RhbFRpbWUpOworICAgICAgICAgICAgc2VsZi5fcnVuTG9vcCgpOwor
ICAgICAgICB9CiAgICAgfQotICAgIHRoaXMuX2NhbGxzUGVySXRlcmF0aW9uID0gY2FsbHNQZXJJ
dGVyYXRpb247CiAKLSAgICB0aGlzLmlnbm9yZVdhcm1VcEFuZExvZyhpICogMTAwMCAvIHRvdGFs
VGltZSk7Ci0gICAgdGhpcy5fcnVuTG9vcCgpOwotfQotCi1QZXJmVGVzdFJ1bm5lci5fcGVyU2Vj
b25kUnVubmVySXRlcmF0b3IgPSBmdW5jdGlvbiAoY2FsbHNQZXJJdGVyYXRpb24pIHsKLSAgICB2
YXIgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxz
UGVySXRlcmF0aW9uOyBpKyspCi0gICAgICAgIHRoaXMuX3Rlc3QucnVuKCk7Ci0gICAgcmV0dXJu
IERhdGUubm93KCkgLSBzdGFydFRpbWU7CisgICAgZnVuY3Rpb24gbmV4dEl0ZXJhdGlvbihqKSB7
CisgICAgICAgIGlmIChqIDwgY2FsbHNQZXJJdGVyYXRpb24pIHsKKyAgICAgICAgICAgIHNlbGYu
X3Rlc3QucnVuKGZ1bmN0aW9uKCkgeyBuZXh0SXRlcmF0aW9uKGogKyAxKTsgfSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB0b3RhbFRpbWUgKz0gRGF0ZS5ub3coKSAtIHN0YXJ0VGlt
ZTsKKyAgICAgICAgICAgIGkgKz0gY2FsbHNQZXJJdGVyYXRpb247CisgICAgICAgICAgICBpZiAo
c2VsZi5fY29tcGxldGVkUnVucyA8IDAgJiYgdG90YWxUaW1lIDwgMTAwKQorICAgICAgICAgICAg
ICAgIGNhbGxzUGVySXRlcmF0aW9uID0gTWF0aC5tYXgoMTAsIDIgKiBjYWxsc1Blckl0ZXJhdGlv
bik7CisgICAgICAgICAgICBuZXh0UnVuKCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169247</attachid>
            <date>2012-10-17 13:37:45 -0700</date>
            <delta_ts>2012-10-17 13:42:53 -0700</delta_ts>
            <desc>Convert Animation/balls to use PerfTestRunner.measureValueAsync</desc>
            <filename>bug-95668-20121017133632.patch</filename>
            <type>text/plain</type>
            <size>5173</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzE2MzYpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEwLTE3ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFBlcmZvcm1hbmNlIHRl
c3Qgc2hvdWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTY2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIFBlcmZUZXN0UnVubmVyLnByZXBhcmVU
b01lYXN1cmVWYWx1ZXNBc3luYyBhbmQgUGVyZlRlc3RSdW5uZXIubWVhc3VyZVZhbHVlQXN5bmMs
CisgICAgICAgIGFuZCBkZXBsb3llZCBpdCBpbiBBbmltYXRpb24vYmFsbHMuCisKKyAgICAgICAg
KiBBbmltYXRpb24vYmFsbHMuaHRtbDoKKyAgICAgICAgKiByZXNvdXJjZXMvcnVubmVyLmpzOgor
CiAyMDEyLTEwLTE2ICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIGh0bWw1LWZ1bGwtcmVuZGVyLmh0bWwgdGVzdCB1c2VzIHN1YnN0cmluZyBidXQgbWVh
bnQgc3Vic3RyCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1hdGlvbi9iYWxscy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbWF0aW9uL2JhbGxzLmh0bWwJKHJldmlz
aW9uIDEzMTU0MykKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbWF0aW9uL2JhbGxzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDYgQEAKICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CiAKICAgICB2YXIgRlJBTUVTX1BFUl9USU1FUl9SRUFESU5HID0gMTA7Ci0gICAg
dmFyIE1BWF9JVEVSQVRJT05TID0gMTEwOwotICAgIHZhciBNQVhfUlVOUyA9IDE7CiAgICAgdmFy
IE1BWF9QQVJUSUNMRVMgPSAyNTAwOwogICAgIHZhciBNQVhfVkVMT0NJVFkgPSA1MDsKICAgICB2
YXIgUEFSVElDTEVfUkFESVVTID0gNjsKQEAgLTEwNywxOCArMTA1LDggQEAKICAgICB2YXIgZnJh
bWVSYXRlcyA9IFtdOwogICAgIHZhciBwYXJ0aWNsZXMgPSBbXTsKIAotICAgIHdpbmRvdy5vbmxv
YWQgPSBpbml0OwotCi0gICAgZnVuY3Rpb24gaW5pdCgpCi0gICAgewotICAgICAgICBQZXJmVGVz
dFJ1bm5lci5yZXNldFJhbmRvbVNlZWQoKTsKLQotICAgICAgICB2YXIgbG9jYXRpb24gPSB3aW5k
b3cubG9jYXRpb24uaHJlZjsKLSAgICAgICAgZnJhbWVSYXRlcyA9IFtdOwotICAgICAgICBmcmFt
ZVRpbWVzID0gW107Ci0gICAgICAgIGl0ZXJhdGlvbiA9IDA7Ci0gICAgICAgIGFuaW1hdGVJbnRl
cnZhbElkID0gMDsKLSAgICAgICAgcGFydGljbGVzID0gW107CisgICAgd2luZG93Lm9ubG9hZCA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgUGVyZlRlc3RSdW5uZXIucHJlcGFyZVRvTWVhc3VyZVZh
bHVlc0FzeW5jKHtydW5Db3VudDogMTAsIGRvbmU6IG9uQ29tcGxldGVkUnVuLCB1bml0OiAnZnBz
J30pOwogCiAgICAgICAgIC8vIENyZWF0ZSB0aGUgcGFydGljbGVzCiAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgTUFYX1BBUlRJQ0xFUzsgaSsrKQpAQCAtMTMwLDcgKzExOCw3IEBACiAKICAg
ICBmdW5jdGlvbiBhbmltYXRlKCkKICAgICB7Ci0gICAgICAgIHZhciBjdXJyVGltZSA9IG5ldyBE
YXRlKCkuZ2V0VGltZSgpOworICAgICAgICB2YXIgY3VyclRpbWUgPSBQZXJmVGVzdFJ1bm5lci5u
b3coKTsKICAgICAgICAgdmFyIHRpbWVEZWx0YSA9IGN1cnJUaW1lIC0gZnJhbWVUaW1lc1tmcmFt
ZVRpbWVzLmxlbmd0aCAtIDFdOwogCiAgICAgICAgIGlmIChpc05hTih0aW1lRGVsdGEpKQpAQCAt
MTUxLDE4ICsxMzksOCBAQAogICAgICAgICAgICAgdmFyIGZyYW1lUmF0ZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJmcmFtZVJhdGUiKTsKICAgICAgICAgICAgIHZhciBmcmFtZVJhdGVWYWwg
PSBGUkFNRVNfUEVSX1RJTUVSX1JFQURJTkcgKiAxMDAwIC8gKChjdXJyVGltZSAtIGZyYW1lVGlt
ZXNbMF0pIC8gKGZyYW1lVGltZXMubGVuZ3RoIC0gMSkpOwogCi0gICAgICAgICAgICBpZiAoIWlz
TmFOKGZyYW1lUmF0ZVZhbCkpIHsKLSAgICAgICAgICAgICAgICBmcmFtZVJhdGVzLnB1c2goZnJh
bWVSYXRlVmFsKTsKLSAgICAgICAgICAgICAgICB2YXIgZnJhbWVSYXRlVGV4dCA9IGZyYW1lUmF0
ZVZhbCArICIiOwotICAgICAgICAgICAgICAgIGZyYW1lUmF0ZVRleHQgPSBmcmFtZVJhdGVUZXh0
LnJlcGxhY2UoLyheW14uXStcLi4uKS4qLywgIiQxIik7Ci0gICAgICAgICAgICAgICAgZnJhbWVS
YXRlVGV4dCArPSAiIGZwcyI7Ci0gICAgICAgICAgICAgICAgZnJhbWVSYXRlLmlubmVySFRNTCA9
IGZyYW1lUmF0ZVRleHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
aXRlcmF0aW9uID4gTUFYX0lURVJBVElPTlMpIHsKLSAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
YW5pbWF0ZUludGVydmFsSWQpOwotICAgICAgICAgICAgb25Db21wbGV0ZWRSdW4oKTsKKyAgICAg
ICAgICAgIGlmICghaXNOYU4oZnJhbWVSYXRlVmFsKSkKKyAgICAgICAgICAgICAgICBQZXJmVGVz
dFJ1bm5lci5tZWFzdXJlVmFsdWVBeW5jKGZyYW1lUmF0ZVZhbCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTIzNyw2ICsyMTUsOCBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9uIG9uQ29tcGxldGVk
UnVuKCkgeworICAgICAgICBjbGVhckludGVydmFsKGFuaW1hdGVJbnRlcnZhbElkKTsKKwogICAg
ICAgICBmb3IgKHZhciBwYXJ0aWNsZSBpbiBwYXJ0aWNsZXMpIHsKICAgICAgICAgICAgIHZhciBw
ID0gcGFydGljbGVzW3BhcnRpY2xlXTsKICAgICAgICAgICAgIHBhcnRpY2xlc1twYXJ0aWNsZV0g
PSAwOwpAQCAtMjQ1LDIyICsyMjUsNiBAQAogICAgICAgICBwYXJ0aWNsZXMgPSBbXTsKIAogICAg
ICAgICBmcmFtZVJhdGUuaW5uZXJIVE1MID0gIiI7Ci0KLSAgICAgICAgZm9yICh2YXIgcmF0ZSBp
biBmcmFtZVJhdGVzKQotICAgICAgICAgICAgUGVyZlRlc3RSdW5uZXIubG9nKGZyYW1lUmF0ZXNb
cmF0ZV0udG9GaXhlZCgyKSArICIgZnBzIik7Ci0KLSAgICAgICAgdmFyIHN0YXRzID0gUGVyZlRl
c3RSdW5uZXIuY29tcHV0ZVN0YXRpc3RpY3MoZnJhbWVSYXRlcywgImZwcyIpOwotICAgICAgICBz
dGF0aXN0aWNzLnB1c2goc3RhdHMpOwotCi0gICAgICAgIFBlcmZUZXN0UnVubmVyLnByaW50U3Rh
dGlzdGljcyhzdGF0cywgIlRpbWU6Iik7Ci0gICAgICAgIFBlcmZUZXN0UnVubmVyLmdldEFuZFBy
aW50TWVtb3J5U3RhdGlzdGljcygpOwotCi0gICAgICAgIGlmICgrK3J1biA8IE1BWF9SVU5TKSB7
Ci0gICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2coIjxicj49PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08YnI+Iik7Ci0gICAgICAgICAgICBpbml0
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAgICAgPC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwkocmV2aXNpb24gMTMxNTQzKQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAs
NyArMTcwLDggQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIHJ1bkNvdW50ID0g
dGVzdC5ydW5Db3VudCB8fCAyMDsKICAgICAgICAgbG9nTGluZXMgPSB3aW5kb3cudGVzdFJ1bm5l
ciA/IFtdIDogbnVsbDsKICAgICAgICAgUGVyZlRlc3RSdW5uZXIubG9nKCJSdW5uaW5nICIgKyBy
dW5Db3VudCArICIgdGltZXMiKTsKLSAgICAgICAgc2NoZWR1bGVOZXh0UnVuKHJ1bm5lcik7Cisg
ICAgICAgIGlmIChydW5uZXIpCisgICAgICAgICAgICBzY2hlZHVsZU5leHRSdW4ocnVubmVyKTsK
ICAgICB9CiAKICAgICBmdW5jdGlvbiBzY2hlZHVsZU5leHRSdW4ocnVubmVyKSB7CkBAIC0yMzQs
NiArMjM1LDI1IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogCisgICAgUGVyZlRlc3RSdW5uZXIucHJlcGFyZVRv
TWVhc3VyZVZhbHVlc0FzeW5jID0gZnVuY3Rpb24gKHRlc3QpIHsKKyAgICAgICAgUGVyZlRlc3RS
dW5uZXIudW5pdCA9IHRlc3QudW5pdDsKKyAgICAgICAgc3RhcnQodGVzdCk7CisgICAgfQorCisg
ICAgUGVyZlRlc3RSdW5uZXIubWVhc3VyZVZhbHVlQXluYyA9IGZ1bmN0aW9uIChtZWFzdXJlZFZh
bHVlKSB7CisgICAgICAgIGNvbXBsZXRlZFJ1bnMrKzsKKworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgaWdub3JlV2FybVVwQW5kTG9nKG1lYXN1cmVkVmFsdWUpOworICAgICAgICB9IGNhdGNo
IChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxvZ0ZhdGFsRXJyb3IoIkdvdCBhbiBleGNlcHRp
b24gd2hpbGUgbG9nZ2luZyB0aGUgcmVzdWx0IHdpdGggbmFtZT0iICsgZXhjZXB0aW9uLm5hbWUg
KyAiLCBtZXNzYWdlPSIgKyBleGNlcHRpb24ubWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29tcGxldGVkUnVucyA+PSBydW5Db3VudCkKKyAg
ICAgICAgICAgIGZpbmlzaCgpOworICAgIH0KKwogICAgIFBlcmZUZXN0UnVubmVyLm1lYXN1cmVU
aW1lID0gZnVuY3Rpb24gKHRlc3QpIHsKICAgICAgICAgUGVyZlRlc3RSdW5uZXIudW5pdCA9ICJt
cyI7CiAgICAgICAgIHN0YXJ0KHRlc3QsIG1lYXN1cmVUaW1lT25jZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169250</attachid>
            <date>2012-10-17 13:42:56 -0700</date>
            <delta_ts>2012-10-17 13:53:04 -0700</delta_ts>
            <desc>Convert Animation/balls to use PerfTestRunner.measureValueAsync</desc>
            <filename>bug-95668-20121017134142.patch</filename>
            <type>text/plain</type>
            <size>5173</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzE2MzYpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEwLTE3ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFBlcmZvcm1hbmNlIHRl
c3Qgc2hvdWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTY2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIFBlcmZUZXN0UnVubmVyLnByZXBhcmVU
b01lYXN1cmVWYWx1ZXNBc3luYyBhbmQgUGVyZlRlc3RSdW5uZXIubWVhc3VyZVZhbHVlQXN5bmMs
CisgICAgICAgIGFuZCBkZXBsb3llZCBpdCBpbiBBbmltYXRpb24vYmFsbHMuCisKKyAgICAgICAg
KiBBbmltYXRpb24vYmFsbHMuaHRtbDoKKyAgICAgICAgKiByZXNvdXJjZXMvcnVubmVyLmpzOgor
CiAyMDEyLTEwLTE2ICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIGh0bWw1LWZ1bGwtcmVuZGVyLmh0bWwgdGVzdCB1c2VzIHN1YnN0cmluZyBidXQgbWVh
bnQgc3Vic3RyCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1hdGlvbi9iYWxscy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbWF0aW9uL2JhbGxzLmh0bWwJKHJldmlz
aW9uIDEzMTU0MykKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbWF0aW9uL2JhbGxzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDYgQEAKICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CiAKICAgICB2YXIgRlJBTUVTX1BFUl9USU1FUl9SRUFESU5HID0gMTA7Ci0gICAg
dmFyIE1BWF9JVEVSQVRJT05TID0gMTEwOwotICAgIHZhciBNQVhfUlVOUyA9IDE7CiAgICAgdmFy
IE1BWF9QQVJUSUNMRVMgPSAyNTAwOwogICAgIHZhciBNQVhfVkVMT0NJVFkgPSA1MDsKICAgICB2
YXIgUEFSVElDTEVfUkFESVVTID0gNjsKQEAgLTEwNywxOCArMTA1LDggQEAKICAgICB2YXIgZnJh
bWVSYXRlcyA9IFtdOwogICAgIHZhciBwYXJ0aWNsZXMgPSBbXTsKIAotICAgIHdpbmRvdy5vbmxv
YWQgPSBpbml0OwotCi0gICAgZnVuY3Rpb24gaW5pdCgpCi0gICAgewotICAgICAgICBQZXJmVGVz
dFJ1bm5lci5yZXNldFJhbmRvbVNlZWQoKTsKLQotICAgICAgICB2YXIgbG9jYXRpb24gPSB3aW5k
b3cubG9jYXRpb24uaHJlZjsKLSAgICAgICAgZnJhbWVSYXRlcyA9IFtdOwotICAgICAgICBmcmFt
ZVRpbWVzID0gW107Ci0gICAgICAgIGl0ZXJhdGlvbiA9IDA7Ci0gICAgICAgIGFuaW1hdGVJbnRl
cnZhbElkID0gMDsKLSAgICAgICAgcGFydGljbGVzID0gW107CisgICAgd2luZG93Lm9ubG9hZCA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgUGVyZlRlc3RSdW5uZXIucHJlcGFyZVRvTWVhc3VyZVZh
bHVlc0FzeW5jKHtydW5Db3VudDogMTAsIGRvbmU6IG9uQ29tcGxldGVkUnVuLCB1bml0OiAnZnBz
J30pOwogCiAgICAgICAgIC8vIENyZWF0ZSB0aGUgcGFydGljbGVzCiAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgTUFYX1BBUlRJQ0xFUzsgaSsrKQpAQCAtMTMwLDcgKzExOCw3IEBACiAKICAg
ICBmdW5jdGlvbiBhbmltYXRlKCkKICAgICB7Ci0gICAgICAgIHZhciBjdXJyVGltZSA9IG5ldyBE
YXRlKCkuZ2V0VGltZSgpOworICAgICAgICB2YXIgY3VyclRpbWUgPSBQZXJmVGVzdFJ1bm5lci5u
b3coKTsKICAgICAgICAgdmFyIHRpbWVEZWx0YSA9IGN1cnJUaW1lIC0gZnJhbWVUaW1lc1tmcmFt
ZVRpbWVzLmxlbmd0aCAtIDFdOwogCiAgICAgICAgIGlmIChpc05hTih0aW1lRGVsdGEpKQpAQCAt
MTUxLDE4ICsxMzksOCBAQAogICAgICAgICAgICAgdmFyIGZyYW1lUmF0ZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJmcmFtZVJhdGUiKTsKICAgICAgICAgICAgIHZhciBmcmFtZVJhdGVWYWwg
PSBGUkFNRVNfUEVSX1RJTUVSX1JFQURJTkcgKiAxMDAwIC8gKChjdXJyVGltZSAtIGZyYW1lVGlt
ZXNbMF0pIC8gKGZyYW1lVGltZXMubGVuZ3RoIC0gMSkpOwogCi0gICAgICAgICAgICBpZiAoIWlz
TmFOKGZyYW1lUmF0ZVZhbCkpIHsKLSAgICAgICAgICAgICAgICBmcmFtZVJhdGVzLnB1c2goZnJh
bWVSYXRlVmFsKTsKLSAgICAgICAgICAgICAgICB2YXIgZnJhbWVSYXRlVGV4dCA9IGZyYW1lUmF0
ZVZhbCArICIiOwotICAgICAgICAgICAgICAgIGZyYW1lUmF0ZVRleHQgPSBmcmFtZVJhdGVUZXh0
LnJlcGxhY2UoLyheW14uXStcLi4uKS4qLywgIiQxIik7Ci0gICAgICAgICAgICAgICAgZnJhbWVS
YXRlVGV4dCArPSAiIGZwcyI7Ci0gICAgICAgICAgICAgICAgZnJhbWVSYXRlLmlubmVySFRNTCA9
IGZyYW1lUmF0ZVRleHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
aXRlcmF0aW9uID4gTUFYX0lURVJBVElPTlMpIHsKLSAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
YW5pbWF0ZUludGVydmFsSWQpOwotICAgICAgICAgICAgb25Db21wbGV0ZWRSdW4oKTsKKyAgICAg
ICAgICAgIGlmICghaXNOYU4oZnJhbWVSYXRlVmFsKSkKKyAgICAgICAgICAgICAgICBQZXJmVGVz
dFJ1bm5lci5tZWFzdXJlVmFsdWVBeW5jKGZyYW1lUmF0ZVZhbCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTIzNyw2ICsyMTUsOCBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9uIG9uQ29tcGxldGVk
UnVuKCkgeworICAgICAgICBjbGVhckludGVydmFsKGFuaW1hdGVJbnRlcnZhbElkKTsKKwogICAg
ICAgICBmb3IgKHZhciBwYXJ0aWNsZSBpbiBwYXJ0aWNsZXMpIHsKICAgICAgICAgICAgIHZhciBw
ID0gcGFydGljbGVzW3BhcnRpY2xlXTsKICAgICAgICAgICAgIHBhcnRpY2xlc1twYXJ0aWNsZV0g
PSAwOwpAQCAtMjQ1LDIyICsyMjUsNiBAQAogICAgICAgICBwYXJ0aWNsZXMgPSBbXTsKIAogICAg
ICAgICBmcmFtZVJhdGUuaW5uZXJIVE1MID0gIiI7Ci0KLSAgICAgICAgZm9yICh2YXIgcmF0ZSBp
biBmcmFtZVJhdGVzKQotICAgICAgICAgICAgUGVyZlRlc3RSdW5uZXIubG9nKGZyYW1lUmF0ZXNb
cmF0ZV0udG9GaXhlZCgyKSArICIgZnBzIik7Ci0KLSAgICAgICAgdmFyIHN0YXRzID0gUGVyZlRl
c3RSdW5uZXIuY29tcHV0ZVN0YXRpc3RpY3MoZnJhbWVSYXRlcywgImZwcyIpOwotICAgICAgICBz
dGF0aXN0aWNzLnB1c2goc3RhdHMpOwotCi0gICAgICAgIFBlcmZUZXN0UnVubmVyLnByaW50U3Rh
dGlzdGljcyhzdGF0cywgIlRpbWU6Iik7Ci0gICAgICAgIFBlcmZUZXN0UnVubmVyLmdldEFuZFBy
aW50TWVtb3J5U3RhdGlzdGljcygpOwotCi0gICAgICAgIGlmICgrK3J1biA8IE1BWF9SVU5TKSB7
Ci0gICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2coIjxicj49PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08YnI+Iik7Ci0gICAgICAgICAgICBpbml0
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAgICAgPC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwkocmV2aXNpb24gMTMxNTQzKQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAs
NyArMTcwLDggQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIHJ1bkNvdW50ID0g
dGVzdC5ydW5Db3VudCB8fCAyMDsKICAgICAgICAgbG9nTGluZXMgPSB3aW5kb3cudGVzdFJ1bm5l
ciA/IFtdIDogbnVsbDsKICAgICAgICAgUGVyZlRlc3RSdW5uZXIubG9nKCJSdW5uaW5nICIgKyBy
dW5Db3VudCArICIgdGltZXMiKTsKLSAgICAgICAgc2NoZWR1bGVOZXh0UnVuKHJ1bm5lcik7Cisg
ICAgICAgIGlmIChydW5uZXIpCisgICAgICAgICAgICBzY2hlZHVsZU5leHRSdW4ocnVubmVyKTsK
ICAgICB9CiAKICAgICBmdW5jdGlvbiBzY2hlZHVsZU5leHRSdW4ocnVubmVyKSB7CkBAIC0yMzQs
NiArMjM1LDI1IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogCisgICAgUGVyZlRlc3RSdW5uZXIucHJlcGFyZVRv
TWVhc3VyZVZhbHVlc0FzeW5jID0gZnVuY3Rpb24gKHRlc3QpIHsKKyAgICAgICAgUGVyZlRlc3RS
dW5uZXIudW5pdCA9IHRlc3QudW5pdDsKKyAgICAgICAgc3RhcnQodGVzdCk7CisgICAgfQorCisg
ICAgUGVyZlRlc3RSdW5uZXIubWVhc3VyZVZhbHVlQXluYyA9IGZ1bmN0aW9uIChtZWFzdXJlZFZh
bHVlKSB7CisgICAgICAgIGNvbXBsZXRlZFJ1bnMrKzsKKworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgaWdub3JlV2FybVVwQW5kTG9nKG1lYXN1cmVkVmFsdWUpOworICAgICAgICB9IGNhdGNo
IChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxvZ0ZhdGFsRXJyb3IoIkdvdCBhbiBleGNlcHRp
b24gd2hpbGUgbG9nZ2luZyB0aGUgcmVzdWx0IHdpdGggbmFtZT0iICsgZXhjZXB0aW9uLm5hbWUg
KyAiLCBtZXNzYWdlPSIgKyBleGNlcHRpb24ubWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29tcGxldGVkUnVucyA+PSBydW5Db3VudCkKKyAg
ICAgICAgICAgIGZpbmlzaCgpOworICAgIH0KKwogICAgIFBlcmZUZXN0UnVubmVyLm1lYXN1cmVU
aW1lID0gZnVuY3Rpb24gKHRlc3QpIHsKICAgICAgICAgUGVyZlRlc3RSdW5uZXIudW5pdCA9ICJt
cyI7CiAgICAgICAgIHN0YXJ0KHRlc3QsIG1lYXN1cmVUaW1lT25jZSk7Cg==
</data>
<flag name="review"
          id="182482"
          type_id="1"
          status="+"
          setter="dpranke"
    />
          </attachment>
      

    </bug>

</bugzilla>