<?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>37643</bug_id>
          
          <creation_ts>2010-04-15 00:51:26 -0700</creation_ts>
          <short_desc>new-run-webkit-tests has much higher startup latency than run-webkit-tests</short_desc>
          <delta_ts>2010-04-20 23:56:34 -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>PC</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>
          <dependson>37780</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>212774</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-04-15 00:51:26 -0700</bug_when>
    <thetext>Testing with a stopwatch, on my system (2.4GHz Core2 Duo MacBook Pro), the time to the first visible evidence of a test being run is:

run-webkit-tests: 10s
new-run-webkit-tests: 75s

On the other hand, new-run-webkit tests is definitely faster at running through all the layout tests. Total real time (as tested by &quot;time&quot;):

run-webkit-tests: 13m13.386s
new-run-webkit-tests : 18m35.731s

So at the very least, new-run-webkit-tests is giving up a big chunk of its performance advantage to startup latency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213476</commentid>
    <comment_count>1</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-16 16:16:14 -0700</bug_when>
    <thetext>wow, that&apos;s slow. I wonder if there was something wrong with your configuration. Were all your files on a local filesystem? I&apos;ve only ever seen that kind of slowness on a windows machine running on top of an SMB share.

It is true that new-run-webkit-tests is slower than run-webkit-tests for a couple of reasons. The first has to do with spawning off multiple threads, which obviously takes time. The second is that there is a certain amount of &quot;all at once&quot; processing that new-run-webkit-tests does to compute statistics at the start. I have been tempted to fix the latter but I&apos;ve never seen that it&apos;s been a real problem.

Either way, your numbers are an order of magnitude slower than I would expect, so we should figure out what&apos;s going on. If you could post the log output from --verbose from the beginning to when testing started that would be a big help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213623</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-17 11:09:12 -0700</bug_when>
    <thetext>Seems like we could benefit from using Python&apos;s profiler to figure out what&apos;s taking the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213958</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-19 01:45:40 -0700</bug_when>
    <thetext>I ran:
python -m cProfile new-run-webkit-tests

and aborted it about 2 minutes in (20% through the tests on my machine).

We spent a whopping 45 SECONDS in time.sleep:
     3011   45.569    0.015   45.569    0.015 {time.sleep}

And 3 seconds making some 100k stat calls:
   109687    3.603    0.000    3.603    0.000 {posix.stat}

50 seconds were spent reading files:
     5441   50.576    0.009   50.576    0.009 {method &apos;read&apos; of &apos;file&apos; objects}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213963</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-19 02:02:39 -0700</bug_when>
    <thetext>We&apos;re spending a lot of time reading image hashes up front.

TestInfo.__init__ does:
            self.image_hash = open(expected_hash_file, &quot;r&quot;).read()

(which probably leaks a file handle).

run-webkit-tests reads image hashes when it gets to them.  We could to (and probably should).  There shouldn&apos;t be a thread-safety issue because only one thread is ever processing any given test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213970</commentid>
    <comment_count>5</comment_count>
      <attachid>53662</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-19 02:25:19 -0700</bug_when>
    <thetext>Created attachment 53662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213973</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-19 02:29:02 -0700</bug_when>
    <thetext>With that patch I see the code sleeping for 5 seconds and reading for 10s.
      268    5.258    0.020    5.258    0.020 {time.sleep}
       15    9.412    0.627    9.412    0.627 {method &apos;read&apos; of &apos;file&apos; objects}

We&apos;re also spending 4s in stat,  1s listing directories and 1s calling &quot;startswith&quot;:
   109687    4.061    0.000    4.061    0.000 {posix.stat}
  2842147    1.320    0.000    1.320    0.000 {method &apos;startswith&apos; of &apos;str&apos; objects}
     1813    1.168    0.001    1.168    0.001 {posix.listdir}

Obviously still more work to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213977</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-19 03:08:21 -0700</bug_when>
    <thetext>This will also get easier to debug once bug 37780 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213985</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-19 03:47:37 -0700</bug_when>
    <thetext>One thing that would make this latency much easier to deal with is if the meter updated more frequently during things like &quot;Checking build ...&quot;.  It seems that the part of the code which is updating the meter should be aware of the fact that we have to build DRT and build ImageDiff and possibly start helper processes.  We may just want to pass a meter object to the port during check_build().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213987</commentid>
    <comment_count>9</comment_count>
      <attachid>53667</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-19 03:50:50 -0700</bug_when>
    <thetext>Created attachment 53667
Added small speedup to test gathering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214235</commentid>
    <comment_count>10</comment_count>
      <attachid>53667</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-19 14:06:23 -0700</bug_when>
    <thetext>Comment on attachment 53667
Added small speedup to test gathering

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214247</commentid>
    <comment_count>11</comment_count>
      <attachid>53667</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-19 14:19:49 -0700</bug_when>
    <thetext>Comment on attachment 53667
Added small speedup to test gathering

LGTM, apart from your removal of my beloved one-character variable names ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214613</commentid>
    <comment_count>12</comment_count>
      <attachid>53667</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-20 06:34:56 -0700</bug_when>
    <thetext>Comment on attachment 53667
Added small speedup to test gathering

Rejecting patch 53667 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/test-webkitpy&apos;]&quot; exit_code: 1
Last 500 characters of output:
e 533, in loadTestsFromName
    module = __import__(&apos;.&apos;.join(parts_copy))
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py&quot;, line 36, in &lt;module&gt;
    import webkitpy.layout_tests.run_webkit_tests as run_webkit_tests
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py&quot;, line 130
    with open(self._expected_hash_path, &quot;r&quot;) as hash_file:
            ^
SyntaxError: invalid syntax

Full output: http://webkit-commit-queue.appspot.com/results/1626581</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214738</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-20 10:20:31 -0700</bug_when>
    <thetext>weird ... is the commit queue bot running an unusual version of python?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214857</commentid>
    <comment_count>14</comment_count>
      <attachid>53667</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-20 12:26:04 -0700</bug_when>
    <thetext>Comment on attachment 53667
Added small speedup to test gathering

Btw, this patch doesn&apos;t comply with our new unicode overlords.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215150</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-20 23:01:37 -0700</bug_when>
    <thetext>I wrote this patch on SL which has python 2.6.  I suspect I need to fix it for 2.5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215164</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-20 23:21:54 -0700</bug_when>
    <thetext>Add:
from __future__ import with_statement
which fixed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215167</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-20 23:23:53 -0700</bug_when>
    <thetext>I&apos;ll make our unicode overlords happy an re-post before I commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215179</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-20 23:56:34 -0700</bug_when>
    <thetext>Landed as r57956.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53662</attachid>
            <date>2010-04-19 02:25:19 -0700</date>
            <delta_ts>2010-04-19 03:50:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37643-20100419022518.patch</filename>
            <type>text/plain</type>
            <size>7229</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjYWQxZDk1Li5kODM3ZjhiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDQt
MTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIGhhcyBtdWNo
IGhpZ2hlciBzdGFydHVwIGxhdGVuY3kgdGhhbiBydW4td2Via2l0LXRlc3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzY0MworCisgICAgICAgIEkg
Z290IHJpZCBvZiB0aGUgLWV4cGVjdGVkLmNoZWNrc3VtIHJlYWRzIGR1cmluZyBzdGFydHVwLgor
ICAgICAgICBUaGlzIG1ha2VzIHN0YXJ0dXAgbm90aWNhYmx5IGJldHRlciBvbiBteSBsYXB0b3Au
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAgIC0gVXNlIGltYWdlX2hhc2go
KSBpbnN0ZWFkIG9mIC5pbWFnZV9oYXNoIG5vdyB0aGF0IGV4cGVjdGVkLmNoZWNrc3VtCisgICAg
ICAgICAgIGZpbGUgcmVhZHMgYXJlIGRvbmUgbGF6aWx5LgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weToKKyAgICAgICAgIC0g
QWRkIGRlYnVnIGxvZ2dpbmcgZm9yIHRoaXMgc2xlZXAgY2FsbC4KKyAgICAgICAgICAgSW4gbXkg
dGVzdGluZyBJIG5ldmVyIHNhdyB0aGlzIHNsZWVwKCkgaGl0LgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weToKKyAgICAgICAg
IC0gU2xlZXAgYSBzaG9ydGVyIGludGVydmFsIHRvIG1ha2Ugd2Vic29ja2V0IHNlcnZlcgorICAg
ICAgICAgICBzdGFydHVwIG1vcmUgcmVzcG9uc2l2ZS4gIE9uIG15IG1hY2hpbmUgc3RhcnR1cCB3
YXMKKyAgICAgICAgICAgdGFraW5nIGFyb3VuZCAxIHNlY29uZC4KKyAgICAgICAgIC0gUmVtb3Zl
IHRoZSB1bmNvbmRpdGlvbmFsIC41cyBkZWxheSBvbiBzdGFydHVwLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICAt
IE1ha2UgaW1hZ2VfaGFzaCBmaWxlIHJlYWRzIGRvbmUgbGF6aWx5IGluIGEgbmV3IGltYWdlX2hh
c2goKSBmdW5jdGlvbi4KKyAgICAgICAgIC0gQWRkIGEgIlN0YXJ0aW5nIHRlc3RpbmcgLi4uIiBt
ZXRlciB1cGRhdGUgYWZ0ZXIgRFJUIHRocmVhZHMgaGF2ZQorICAgICAgICAgICBiZWVuIHN0YXJ0
ZWQsIGJ1dCBiZWZvcmUgd2UgZ2V0IHVwZGF0ZXMgZnJvbSB0aGUgZmlyc3Qgb25lLgorICAgICAg
ICAgLSBSZW5hbWUgdmFyaWFibGUgInQiIHRvIGEgZnVsbCBlbmdsaXNoIG5hbWUgdG8gbWF0Y2gg
V2ViS2l0IHN0eWxlLgorCiAyMDEwLTA0LTE4ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9y
ZW5kZXJfdHJlZV90aHJlYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCA5
M2I0Yzc5Li40YmRiZGY2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQpAQCAtMTU1LDcgKzE1NSw3IEBAIGNsYXNz
IFNpbmdsZVRlc3RUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgIHN0YXJ0ID0gdGlt
ZS50aW1lKCkKICAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIGFjdHVhbF9jaGVja3N1bSwgb3V0cHV0
LCBlcnJvciA9IFwKICAgICAgICAgICAgIGRyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLnN0
cmlwKCksIHRlc3RfaW5mby50aW1lb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfaW5mby5pbWFnZV9oYXNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5m
by5pbWFnZV9oYXNoKCkpCiAgICAgICAgIGVuZCA9IHRpbWUudGltZSgpCiAgICAgICAgIHNlbGYu
X3Rlc3Rfc3RhdHMgPSBwcm9jZXNzX291dHB1dChzZWxmLl9wb3J0LAogICAgICAgICAgICAgdGVz
dF9pbmZvLCBzZWxmLl90ZXN0X3R5cGVzLCBzZWxmLl90ZXN0X2FyZ3MsCkBAIC00MTEsNyArNDEx
LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAj
IGNoZWNrc3VtcyBtYXRjaCwgc28gaXQgc2hvdWxkIGJlIHNldCB0byBhIGJsYW5rIHZhbHVlIGlm
IHdlCiAgICAgICAgICMgYXJlIGdlbmVyYXRpbmcgYSBuZXcgYmFzZWxpbmUuICAoT3RoZXJ3aXNl
LCBhbiBpbWFnZSBmcm9tIGEKICAgICAgICAgIyBwcmV2aW91cyBydW4gd2lsbCBiZSBjb3BpZWQg
aW50byB0aGUgYmFzZWxpbmUuKQotICAgICAgICBpbWFnZV9oYXNoID0gdGVzdF9pbmZvLmltYWdl
X2hhc2gKKyAgICAgICAgaW1hZ2VfaGFzaCA9IHRlc3RfaW5mby5pbWFnZV9oYXNoKCkKICAgICAg
ICAgaWYgaW1hZ2VfaGFzaCBhbmQgc2VsZi5fdGVzdF9hcmdzLm5ld19iYXNlbGluZToKICAgICAg
ICAgICAgIGltYWdlX2hhc2ggPSAiIgogICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0
dHBfc2VydmVyX2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2h0dHBfc2VydmVyX2Jhc2UucHkKaW5kZXggMzg3MzkwZi4uYzk4MDVkNiAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9o
dHRwX3NlcnZlcl9iYXNlLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weQpAQCAtNDksNiArNDksNyBAQCBjbGFz
cyBIdHRwU2VydmVyQmFzZShvYmplY3QpOgogICAgICAgICB3aGlsZSB0aW1lLnRpbWUoKSAtIHN0
YXJ0X3RpbWUgPCAyMDoKICAgICAgICAgICAgIGlmIGFjdGlvbigpOgogICAgICAgICAgICAgICAg
IHJldHVybiBUcnVlCisgICAgICAgICAgICBfbG9nLmRlYnVnKCJXYWl0aW5nIGZvciBhY3Rpb246
ICVzIiAlIGFjdGlvbikKICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKIAogICAgICAgICByZXR1
cm4gRmFsc2UKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weQppbmRleCA3Mzk5MDNm
Li5lMTg2MjE4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJzb2NrZXRfc2VydmVyLnB5CkBAIC02NCw2
ICs2NCw3IEBAIGRlZiB1cmxfaXNfYWxpdmUodXJsKToKICAgICBSZXR1cm46CiAgICAgICBUcnVl
IGlmIHRoZSB1cmwgaXMgYWxpdmUuCiAgICAgIiIiCisgICAgc2xlZXBfdGltZSA9IDAuNQogICAg
IHdhaXRfdGltZSA9IDUKICAgICB3aGlsZSB3YWl0X3RpbWUgPiAwOgogICAgICAgICB0cnk6CkBA
IC03Miw5ICs3Myw5IEBAIGRlZiB1cmxfaXNfYWxpdmUodXJsKToKICAgICAgICAgICAgIHJldHVy
biBUcnVlCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgcGFzcwotICAgICAg
ICB3YWl0X3RpbWUgLT0gMQotICAgICAgICAjIFdhaXQgYSBzZWNvbmQgYW5kIHRyeSBhZ2Fpbi4K
LSAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAjIFdhaXQgZm9yIHNsZWVwX3RpbWUgYmVm
b3JlIHRyeWluZyBhZ2Fpbi4KKyAgICAgICAgd2FpdF90aW1lIC09IHNsZWVwX3RpbWUKKyAgICAg
ICAgdGltZS5zbGVlcChzbGVlcF90aW1lKQogCiAgICAgcmV0dXJuIEZhbHNlCiAKQEAgLTIwOSw5
ICsyMTAsNiBAQCBjbGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNU
RE9VVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudikK
IAotICAgICAgICAjIFdhaXQgYSBiaXQgYmVmb3JlIGNoZWNraW5nIHRoZSBsaXZlbmVzcyBvZiB0
aGUgc2VydmVyLgotICAgICAgICB0aW1lLnNsZWVwKDAuNSkKLQogICAgICAgICBpZiBzZWxmLl91
c2VfdGxzOgogICAgICAgICAgICAgdXJsID0gJ2h0dHBzJwogICAgICAgICBlbHNlOgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHMucHkKaW5kZXggMDU5ZmQwOS4uMDAyNDJhNSAxMDA3NTUKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzLnB5CkBAIC0xMDIsMTMgKzEwMiwyNyBAQCBjbGFzcyBUZXN0SW5mbzoKICAgICAg
ICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAgICAgIHNlbGYudXJpID0gcG9ydC5maWxl
bmFtZV90b191cmkoZmlsZW5hbWUpCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKLSAg
ICAgICAgZXhwZWN0ZWRfaGFzaF9maWxlID0gcG9ydC5leHBlY3RlZF9maWxlbmFtZShmaWxlbmFt
ZSwgJy5jaGVja3N1bScpCisgICAgICAgICMgRklYTUU6IENvbmZ1c2luZyB0aGF0IHRoZSBmaWxl
IGlzIC5jaGVja3N1bSBhbmQgd2UgY2FsbCBpdCAiaGFzaCIKKyAgICAgICAgc2VsZi5fZXhwZWN0
ZWRfaGFzaF9wYXRoID0gcG9ydC5leHBlY3RlZF9maWxlbmFtZShmaWxlbmFtZSwgJy5jaGVja3N1
bScpCisgICAgICAgIHNlbGYuX2hhdmVfcmVhZF9leHBlY3RlZF9oYXNoID0gRmFsc2UKKyAgICAg
ICAgc2VsZi5faW1hZ2VfaGFzaCA9IE5vbmUKKworICAgIGRlZiBfcmVhZF9pbWFnZV9oYXNoKHNl
bGYpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmltYWdlX2hhc2ggPSBvcGVuKGV4
cGVjdGVkX2hhc2hfZmlsZSwgInIiKS5yZWFkKCkKKyAgICAgICAgICAgIHdpdGggb3BlbihzZWxm
Ll9leHBlY3RlZF9oYXNoX3BhdGgsICJyIikgYXMgaGFzaF9maWxlOgorICAgICAgICAgICAgICAg
IHJldHVybiBoYXNoX2ZpbGUucmVhZCgpCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgogICAg
ICAgICAgICAgaWYgZXJybm8uRU5PRU5UICE9IGUuZXJybm86CiAgICAgICAgICAgICAgICAgcmFp
c2UKLSAgICAgICAgICAgIHNlbGYuaW1hZ2VfaGFzaCA9IE5vbmUKKworICAgIGRlZiBpbWFnZV9o
YXNoKHNlbGYpOgorICAgICAgICAjIFJlYWQgdGhlIGltYWdlX2hhc2ggbGF6aWx5IHRvIHJlZHVj
ZSBzdGFydHVwIHRpbWUuCisgICAgICAgICMgVGhpcyBjbGFzcyBpcyBhY2Nlc3NlZCBhY3Jvc3Mg
dGhyZWFkcywgYnV0IG9ubHkgb25lIHRocmVhZCBzaG91bGQKKyAgICAgICAgIyBldmVyIGJlIGRl
YWxpbmcgd2l0aCBhbnkgZ2l2ZW4gVGVzdEluZm8gc28gbm8gbG9ja2luZyBpcyBuZWVkZWQuCisg
ICAgICAgIGlmIG5vdCBzZWxmLl9oYXZlX3JlYWRfZXhwZWN0ZWRfaGFzaDoKKyAgICAgICAgICAg
IHNlbGYuX2hhdmVfcmVhZF9leHBlY3RlZF9oYXNoID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5f
aW1hZ2VfaGFzaCA9IHNlbGYuX3JlYWRfaW1hZ2VfaGFzaCgpCisgICAgICAgIHJldHVybiBzZWxm
Ll9pbWFnZV9oYXNoCiAKIAogY2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgpAQCAtNTE5LDgg
KzUzMyw4IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIGZvciBpIGluIHhyYW5nZShpbnQo
c2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpKToKICAgICAgICAgICAgICMgQ3JlYXRlIHNl
cGFyYXRlIFRlc3RUeXBlcyBpbnN0YW5jZXMgZm9yIGVhY2ggdGhyZWFkLgogICAgICAgICAgICAg
dGVzdF90eXBlcyA9IFtdCi0gICAgICAgICAgICBmb3IgdCBpbiBzZWxmLl90ZXN0X3R5cGVzOgot
ICAgICAgICAgICAgICAgIHRlc3RfdHlwZXMuYXBwZW5kKHQoc2VsZi5fcG9ydCwKKyAgICAgICAg
ICAgIGZvciB0ZXN0X3R5cGUgaW4gc2VsZi5fdGVzdF90eXBlczoKKyAgICAgICAgICAgICAgICB0
ZXN0X3R5cGVzLmFwcGVuZCh0ZXN0X3R5cGUoc2VsZi5fcG9ydCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpKQogCiAg
ICAgICAgICAgICB0ZXN0X2FyZ3MsIHBuZ19wYXRoLCBzaGVsbF9hcmdzID0gXApAQCAtNTYxLDYg
KzU3NSw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpLCBwbHVyYWwpKQogICAgICAgICB0aHJlYWRzID0gc2Vs
Zi5faW5zdGFudGlhdGVfZHVtcF9yZW5kZXJfdHJlZV90aHJlYWRzKGZpbGVfbGlzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRfc3VtbWFyeSkKKyAgICAgICAgc2VsZi5fbWV0ZXIudXBkYXRlKCJTdGFydGluZyB0ZXN0
aW5nIC4uLiIpCiAKICAgICAgICAgIyBXYWl0IGZvciB0aGUgdGhyZWFkcyB0byBmaW5pc2ggYW5k
IGNvbGxlY3QgdGVzdCBmYWlsdXJlcy4KICAgICAgICAgZmFpbHVyZXMgPSB7fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53667</attachid>
            <date>2010-04-19 03:50:50 -0700</date>
            <delta_ts>2010-04-20 12:26:04 -0700</delta_ts>
            <desc>Added small speedup to test gathering</desc>
            <filename>bug-37643-20100419035048.patch</filename>
            <type>text/plain</type>
            <size>9341</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjYWQxZDk1Li5kODM3ZjhiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDQt
MTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIGhhcyBtdWNo
IGhpZ2hlciBzdGFydHVwIGxhdGVuY3kgdGhhbiBydW4td2Via2l0LXRlc3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzY0MworCisgICAgICAgIEkg
Z290IHJpZCBvZiB0aGUgLWV4cGVjdGVkLmNoZWNrc3VtIHJlYWRzIGR1cmluZyBzdGFydHVwLgor
ICAgICAgICBUaGlzIG1ha2VzIHN0YXJ0dXAgbm90aWNhYmx5IGJldHRlciBvbiBteSBsYXB0b3Au
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAgIC0gVXNlIGltYWdlX2hhc2go
KSBpbnN0ZWFkIG9mIC5pbWFnZV9oYXNoIG5vdyB0aGF0IGV4cGVjdGVkLmNoZWNrc3VtCisgICAg
ICAgICAgIGZpbGUgcmVhZHMgYXJlIGRvbmUgbGF6aWx5LgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weToKKyAgICAgICAgIC0g
QWRkIGRlYnVnIGxvZ2dpbmcgZm9yIHRoaXMgc2xlZXAgY2FsbC4KKyAgICAgICAgICAgSW4gbXkg
dGVzdGluZyBJIG5ldmVyIHNhdyB0aGlzIHNsZWVwKCkgaGl0LgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weToKKyAgICAgICAg
IC0gU2xlZXAgYSBzaG9ydGVyIGludGVydmFsIHRvIG1ha2Ugd2Vic29ja2V0IHNlcnZlcgorICAg
ICAgICAgICBzdGFydHVwIG1vcmUgcmVzcG9uc2l2ZS4gIE9uIG15IG1hY2hpbmUgc3RhcnR1cCB3
YXMKKyAgICAgICAgICAgdGFraW5nIGFyb3VuZCAxIHNlY29uZC4KKyAgICAgICAgIC0gUmVtb3Zl
IHRoZSB1bmNvbmRpdGlvbmFsIC41cyBkZWxheSBvbiBzdGFydHVwLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICAt
IE1ha2UgaW1hZ2VfaGFzaCBmaWxlIHJlYWRzIGRvbmUgbGF6aWx5IGluIGEgbmV3IGltYWdlX2hh
c2goKSBmdW5jdGlvbi4KKyAgICAgICAgIC0gQWRkIGEgIlN0YXJ0aW5nIHRlc3RpbmcgLi4uIiBt
ZXRlciB1cGRhdGUgYWZ0ZXIgRFJUIHRocmVhZHMgaGF2ZQorICAgICAgICAgICBiZWVuIHN0YXJ0
ZWQsIGJ1dCBiZWZvcmUgd2UgZ2V0IHVwZGF0ZXMgZnJvbSB0aGUgZmlyc3Qgb25lLgorICAgICAg
ICAgLSBSZW5hbWUgdmFyaWFibGUgInQiIHRvIGEgZnVsbCBlbmdsaXNoIG5hbWUgdG8gbWF0Y2gg
V2ViS2l0IHN0eWxlLgorCiAyMDEwLTA0LTE4ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9y
ZW5kZXJfdHJlZV90aHJlYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCA5
M2I0Yzc5Li40YmRiZGY2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQpAQCAtMTU1LDcgKzE1NSw3IEBAIGNsYXNz
IFNpbmdsZVRlc3RUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgIHN0YXJ0ID0gdGlt
ZS50aW1lKCkKICAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIGFjdHVhbF9jaGVja3N1bSwgb3V0cHV0
LCBlcnJvciA9IFwKICAgICAgICAgICAgIGRyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLnN0
cmlwKCksIHRlc3RfaW5mby50aW1lb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfaW5mby5pbWFnZV9oYXNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5m
by5pbWFnZV9oYXNoKCkpCiAgICAgICAgIGVuZCA9IHRpbWUudGltZSgpCiAgICAgICAgIHNlbGYu
X3Rlc3Rfc3RhdHMgPSBwcm9jZXNzX291dHB1dChzZWxmLl9wb3J0LAogICAgICAgICAgICAgdGVz
dF9pbmZvLCBzZWxmLl90ZXN0X3R5cGVzLCBzZWxmLl90ZXN0X2FyZ3MsCkBAIC00MTEsNyArNDEx
LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAj
IGNoZWNrc3VtcyBtYXRjaCwgc28gaXQgc2hvdWxkIGJlIHNldCB0byBhIGJsYW5rIHZhbHVlIGlm
IHdlCiAgICAgICAgICMgYXJlIGdlbmVyYXRpbmcgYSBuZXcgYmFzZWxpbmUuICAoT3RoZXJ3aXNl
LCBhbiBpbWFnZSBmcm9tIGEKICAgICAgICAgIyBwcmV2aW91cyBydW4gd2lsbCBiZSBjb3BpZWQg
aW50byB0aGUgYmFzZWxpbmUuKQotICAgICAgICBpbWFnZV9oYXNoID0gdGVzdF9pbmZvLmltYWdl
X2hhc2gKKyAgICAgICAgaW1hZ2VfaGFzaCA9IHRlc3RfaW5mby5pbWFnZV9oYXNoKCkKICAgICAg
ICAgaWYgaW1hZ2VfaGFzaCBhbmQgc2VsZi5fdGVzdF9hcmdzLm5ld19iYXNlbGluZToKICAgICAg
ICAgICAgIGltYWdlX2hhc2ggPSAiIgogICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2ZpbGVzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9maWxlcy5weQppbmRleCBlMzMyNDhhLi42NzU0
ZmE2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZpbGVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmlsZXMucHkKQEAgLTM2
LDYgKzM2LDEzIEBAIHVuZGVyIHRoYXQgZGlyZWN0b3J5LiIiIgogCiBpbXBvcnQgZ2xvYgogaW1w
b3J0IG9zCitpbXBvcnQgdGltZQorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0
IGxvZ3V0aWxzCisKKworX2xvZyA9IGxvZ3V0aWxzLmdldF9sb2dnZXIoX19maWxlX18pCisKIAog
IyBXaGVuIGNvbGxlY3RpbmcgdGVzdCBjYXNlcywgd2UgaW5jbHVkZSBhbnkgZmlsZSB3aXRoIHRo
ZXNlIGV4dGVuc2lvbnMuCiBfc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucyA9IHNldChbJy5odG1s
JywgJy5zaHRtbCcsICcueG1sJywgJy54aHRtbCcsICcueGh0bWxtcCcsICcucGwnLApAQCAtNTEs
NiArNTgsNyBAQCBkZWYgZ2F0aGVyX3Rlc3RfZmlsZXMocG9ydCwgcGF0aHMpOgogICAgICAgcGF0
aHM6IGEgbGlzdCBvZiBjb21tYW5kIGxpbmUgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIHdlYmtpdC90
ZXN0cwogICAgICAgICAgIGRpcmVjdG9yeS4gZ2xvYiBwYXR0ZXJucyBhcmUgb2suCiAgICAgIiIi
CisgICAgZ2F0aGVyX3N0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogICAgIHBhdGhzX3RvX3dhbGsg
PSBzZXQoKQogICAgICMgaWYgcGF0aHMgaXMgZW1wdHksIHByb3ZpZGUgYSBwcmUtZGVmaW5lZCBs
aXN0LgogICAgIGlmIHBhdGhzOgpAQCAtNzMsMTAgKzgxLDE2IEBAIGRlZiBnYXRoZXJfdGVzdF9m
aWxlcyhwb3J0LCBwYXRocyk6CiAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgIGZvciBy
b290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBhdGgpOgotICAgICAgICAgICAgIyBkb24ndCB3
YWxrIHNraXBwZWQgZGlyZWN0b3JpZXMgYW5kIHN1YiBkaXJlY3RvcmllcworICAgICAgICAgICAg
IyBEb24ndCB3YWxrIHNraXBwZWQgZGlyZWN0b3JpZXMgb3IgdGhlaXIgc3ViLWRpcmVjdG9yaWVz
LgogICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShyb290KSBpbiBfc2tpcHBlZF9kaXJl
Y3RvcmllczoKICAgICAgICAgICAgICAgICBkZWwgZGlyc1s6XQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisgICAgICAgICAgICAjIFRoaXMgY29weSBhbmQgZm9yLWluIGlzIHNsaWdodGx5IGlu
ZWZmaWNpZW50LCBidXQKKyAgICAgICAgICAgICMgdGhlIGV4dHJhIHdhbGsgYXZvaWRhbmNlIGNv
bnNpc3RlbnRseSBzaGF2ZXMgLjUgc2Vjb25kcworICAgICAgICAgICAgIyBvZmYgb2YgdG90YWwg
d2FsaygpIHRpbWUgb24gbXkgTWFjQm9vayBQcm8uCisgICAgICAgICAgICBmb3IgZGlyZWN0b3J5
IGluIGRpcnNbOl06CisgICAgICAgICAgICAgICAgaWYgZGlyZWN0b3J5IGluIF9za2lwcGVkX2Rp
cmVjdG9yaWVzOgorICAgICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZShkaXJlY3RvcnkpCiAK
ICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKICAgICAgICAgICAgICAgICBpZiBf
aGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZW5hbWUpOgpAQCAtODQsNiArOTgsOSBAQCBkZWYg
Z2F0aGVyX3Rlc3RfZmlsZXMocG9ydCwgcGF0aHMpOgogICAgICAgICAgICAgICAgICAgICBmaWxl
bmFtZSA9IG9zLnBhdGgubm9ybXBhdGgoZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHRl
c3RfZmlsZXMuYWRkKGZpbGVuYW1lKQogCisgICAgZ2F0aGVyX3RpbWUgPSB0aW1lLnRpbWUoKSAt
IGdhdGhlcl9zdGFydF90aW1lCisgICAgX2xvZy5kZWJ1ZygiVGVzdCBnYXRoZXJpbmcgdG9vayAl
ZiBzZWNvbmRzIiAlIGdhdGhlcl90aW1lKQorCiAgICAgcmV0dXJuIHRlc3RfZmlsZXMKIAogCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2h0dHBfc2VydmVyX2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyX2Jhc2UucHkKaW5kZXggMzg3MzkwZi4uYzk4MDVkNiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9odHRwX3NlcnZlcl9iYXNlLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weQpAQCAtNDksNiArNDksNyBAQCBj
bGFzcyBIdHRwU2VydmVyQmFzZShvYmplY3QpOgogICAgICAgICB3aGlsZSB0aW1lLnRpbWUoKSAt
IHN0YXJ0X3RpbWUgPCAyMDoKICAgICAgICAgICAgIGlmIGFjdGlvbigpOgogICAgICAgICAgICAg
ICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBfbG9nLmRlYnVnKCJXYWl0aW5nIGZvciBhY3Rp
b246ICVzIiAlIGFjdGlvbikKICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKIAogICAgICAgICBy
ZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weQppbmRleCA3Mzk5
MDNmLi5lMTg2MjE4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJzb2NrZXRfc2VydmVyLnB5CkBAIC02
NCw2ICs2NCw3IEBAIGRlZiB1cmxfaXNfYWxpdmUodXJsKToKICAgICBSZXR1cm46CiAgICAgICBU
cnVlIGlmIHRoZSB1cmwgaXMgYWxpdmUuCiAgICAgIiIiCisgICAgc2xlZXBfdGltZSA9IDAuNQog
ICAgIHdhaXRfdGltZSA9IDUKICAgICB3aGlsZSB3YWl0X3RpbWUgPiAwOgogICAgICAgICB0cnk6
CkBAIC03Miw5ICs3Myw5IEBAIGRlZiB1cmxfaXNfYWxpdmUodXJsKToKICAgICAgICAgICAgIHJl
dHVybiBUcnVlCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgcGFzcwotICAg
ICAgICB3YWl0X3RpbWUgLT0gMQotICAgICAgICAjIFdhaXQgYSBzZWNvbmQgYW5kIHRyeSBhZ2Fp
bi4KLSAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAjIFdhaXQgZm9yIHNsZWVwX3RpbWUg
YmVmb3JlIHRyeWluZyBhZ2Fpbi4KKyAgICAgICAgd2FpdF90aW1lIC09IHNsZWVwX3RpbWUKKyAg
ICAgICAgdGltZS5zbGVlcChzbGVlcF90aW1lKQogCiAgICAgcmV0dXJuIEZhbHNlCiAKQEAgLTIw
OSw5ICsyMTAsNiBAQCBjbGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNz
LlNURE9VVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVu
dikKIAotICAgICAgICAjIFdhaXQgYSBiaXQgYmVmb3JlIGNoZWNraW5nIHRoZSBsaXZlbmVzcyBv
ZiB0aGUgc2VydmVyLgotICAgICAgICB0aW1lLnNsZWVwKDAuNSkKLQogICAgICAgICBpZiBzZWxm
Ll91c2VfdGxzOgogICAgICAgICAgICAgdXJsID0gJ2h0dHBzJwogICAgICAgICBlbHNlOgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dl
YmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggMDU5ZmQwOS4uMDAyNDJhNSAxMDA3NTUKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzLnB5CkBAIC0xMDIsMTMgKzEwMiwyNyBAQCBjbGFzcyBUZXN0SW5mbzoKICAg
ICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAgICAgIHNlbGYudXJpID0gcG9ydC5m
aWxlbmFtZV90b191cmkoZmlsZW5hbWUpCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQK
LSAgICAgICAgZXhwZWN0ZWRfaGFzaF9maWxlID0gcG9ydC5leHBlY3RlZF9maWxlbmFtZShmaWxl
bmFtZSwgJy5jaGVja3N1bScpCisgICAgICAgICMgRklYTUU6IENvbmZ1c2luZyB0aGF0IHRoZSBm
aWxlIGlzIC5jaGVja3N1bSBhbmQgd2UgY2FsbCBpdCAiaGFzaCIKKyAgICAgICAgc2VsZi5fZXhw
ZWN0ZWRfaGFzaF9wYXRoID0gcG9ydC5leHBlY3RlZF9maWxlbmFtZShmaWxlbmFtZSwgJy5jaGVj
a3N1bScpCisgICAgICAgIHNlbGYuX2hhdmVfcmVhZF9leHBlY3RlZF9oYXNoID0gRmFsc2UKKyAg
ICAgICAgc2VsZi5faW1hZ2VfaGFzaCA9IE5vbmUKKworICAgIGRlZiBfcmVhZF9pbWFnZV9oYXNo
KHNlbGYpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmltYWdlX2hhc2ggPSBvcGVu
KGV4cGVjdGVkX2hhc2hfZmlsZSwgInIiKS5yZWFkKCkKKyAgICAgICAgICAgIHdpdGggb3Blbihz
ZWxmLl9leHBlY3RlZF9oYXNoX3BhdGgsICJyIikgYXMgaGFzaF9maWxlOgorICAgICAgICAgICAg
ICAgIHJldHVybiBoYXNoX2ZpbGUucmVhZCgpCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgog
ICAgICAgICAgICAgaWYgZXJybm8uRU5PRU5UICE9IGUuZXJybm86CiAgICAgICAgICAgICAgICAg
cmFpc2UKLSAgICAgICAgICAgIHNlbGYuaW1hZ2VfaGFzaCA9IE5vbmUKKworICAgIGRlZiBpbWFn
ZV9oYXNoKHNlbGYpOgorICAgICAgICAjIFJlYWQgdGhlIGltYWdlX2hhc2ggbGF6aWx5IHRvIHJl
ZHVjZSBzdGFydHVwIHRpbWUuCisgICAgICAgICMgVGhpcyBjbGFzcyBpcyBhY2Nlc3NlZCBhY3Jv
c3MgdGhyZWFkcywgYnV0IG9ubHkgb25lIHRocmVhZCBzaG91bGQKKyAgICAgICAgIyBldmVyIGJl
IGRlYWxpbmcgd2l0aCBhbnkgZ2l2ZW4gVGVzdEluZm8gc28gbm8gbG9ja2luZyBpcyBuZWVkZWQu
CisgICAgICAgIGlmIG5vdCBzZWxmLl9oYXZlX3JlYWRfZXhwZWN0ZWRfaGFzaDoKKyAgICAgICAg
ICAgIHNlbGYuX2hhdmVfcmVhZF9leHBlY3RlZF9oYXNoID0gVHJ1ZQorICAgICAgICAgICAgc2Vs
Zi5faW1hZ2VfaGFzaCA9IHNlbGYuX3JlYWRfaW1hZ2VfaGFzaCgpCisgICAgICAgIHJldHVybiBz
ZWxmLl9pbWFnZV9oYXNoCiAKIAogY2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgpAQCAtNTE5
LDggKzUzMyw4IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIGZvciBpIGluIHhyYW5nZShp
bnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpKToKICAgICAgICAgICAgICMgQ3JlYXRl
IHNlcGFyYXRlIFRlc3RUeXBlcyBpbnN0YW5jZXMgZm9yIGVhY2ggdGhyZWFkLgogICAgICAgICAg
ICAgdGVzdF90eXBlcyA9IFtdCi0gICAgICAgICAgICBmb3IgdCBpbiBzZWxmLl90ZXN0X3R5cGVz
OgotICAgICAgICAgICAgICAgIHRlc3RfdHlwZXMuYXBwZW5kKHQoc2VsZi5fcG9ydCwKKyAgICAg
ICAgICAgIGZvciB0ZXN0X3R5cGUgaW4gc2VsZi5fdGVzdF90eXBlczoKKyAgICAgICAgICAgICAg
ICB0ZXN0X3R5cGVzLmFwcGVuZCh0ZXN0X3R5cGUoc2VsZi5fcG9ydCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpKQog
CiAgICAgICAgICAgICB0ZXN0X2FyZ3MsIHBuZ19wYXRoLCBzaGVsbF9hcmdzID0gXApAQCAtNTYx
LDYgKzU3NSw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpLCBwbHVyYWwpKQogICAgICAgICB0aHJlYWRzID0g
c2VsZi5faW5zdGFudGlhdGVfZHVtcF9yZW5kZXJfdHJlZV90aHJlYWRzKGZpbGVfbGlzdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRfc3VtbWFyeSkKKyAgICAgICAgc2VsZi5fbWV0ZXIudXBkYXRlKCJTdGFydGluZyB0
ZXN0aW5nIC4uLiIpCiAKICAgICAgICAgIyBXYWl0IGZvciB0aGUgdGhyZWFkcyB0byBmaW5pc2gg
YW5kIGNvbGxlY3QgdGVzdCBmYWlsdXJlcy4KICAgICAgICAgZmFpbHVyZXMgPSB7fQo=
</data>
<flag name="review"
          id="37431"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="37432"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>