<?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>48878</bug_id>
          
          <creation_ts>2010-11-02 15:36:32 -0700</creation_ts>
          <short_desc>NRWT doesn&apos;t have good test coverage for --run-chunk, --batch-size, --run-part, etc.</short_desc>
          <delta_ts>2010-11-04 18:42:37 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihai Parparita">mihaip</reporter>
          <assigned_to name="Mihai Parparita">mihaip</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>303727</commentid>
    <comment_count>0</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-02 15:36:32 -0700</bug_when>
    <thetext>NRWT doesn&apos;t have good test coverage for --run-chunk, --batch-size, --run-part, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303728</commentid>
    <comment_count>1</comment_count>
      <attachid>72751</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-02 15:38:37 -0700</bug_when>
    <thetext>Created attachment 72751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303729</commentid>
    <comment_count>2</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-02 15:40:02 -0700</bug_when>
    <thetext>I&apos;d like to add support to NRWT for --iterations (which is useful for tracking down flaky tests), and it seemed like having better test coverage was a good idea before I messed with TestRunner too much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303741</commentid>
    <comment_count>3</comment_count>
      <attachid>72751</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-02 15:54:24 -0700</bug_when>
    <thetext>Comment on attachment 72751
Patch

I think it would be better if we were using the regular output for this, rather than creating a mock port. Tests requiring mock ports will break when we switch to a multi-process version of NRWT.

You can get mostly what you need out of --print trace-everything, but I&apos;ve been thinking it would be better if we had a one-line-per-test terser version of that for the testing I&apos;ve been doing recently myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303774</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-02 16:30:03 -0700</bug_when>
    <thetext>Okay, from further discussion w/ mihai , and to clarify ...

Generally speaking, we don&apos;t want to rely on MockPorts because they (probably) won&apos;t work in a multi-process scenario, and I don&apos;t want to write too many tests that rely on single-process testing.

That said, there&apos;s no obvious way to test the --batch-size argument without this (we&apos;d have to parse log output, or modify the code to expose things I don&apos;t really want to expose), so I&apos;m okay with using a mock port for this.

--run-chunk and --run-part are a different story. Those should be black-box testable. We should probably modify run_webkit_tests.run to return more detailed output over what we&apos;re actually doing in the test, and that would be a good way to test that.

But, since that code doesn&apos;t exist now, and since you have to write the port fixture to test --batch-size anyway, I&apos;m fine with reusing that code for testing --run-chunk and --run-part for now.

So, the patch looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303819</commentid>
    <comment_count>5</comment_count>
      <attachid>72751</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-11-02 17:48:26 -0700</bug_when>
    <thetext>Comment on attachment 72751
Patch

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:109
&gt; +def get_tests_run(args=[], tests_included=False, flatten_batches=False):

Nit: The use of args=[] as a default arg is correct in this case only because we never modify args in the function.  I would just remove the default value so it doesn&apos;t trip someone up in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303832</commentid>
    <comment_count>6</comment_count>
      <attachid>72751</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-02 18:07:32 -0700</bug_when>
    <thetext>Comment on attachment 72751
Patch

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

Looks good.  THanks!

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:99
&gt; +    if port_obj is None:

Why not just &quot;not port_obj&quot;.  Maybe is None is google style.  It&apos;s more specific, just not sure the extra specificity buys us much.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:110
&gt; +    new_args = [

What&apos;s new about these args? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303841</commentid>
    <comment_count>7</comment_count>
      <attachid>72782</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-02 18:26:18 -0700</bug_when>
    <thetext>Created attachment 72782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303842</commentid>
    <comment_count>8</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-02 18:30:38 -0700</bug_when>
    <thetext>For all these changes, since get_tests_run was mirroring the existing passing_run/logging_run functions, I changed all three to be consistent.

(In reply to comment #5)
&gt; Nit: The use of args=[] as a default arg is correct in this case only because we never modify args in the function.  I would just remove the default value so it doesn&apos;t trip someone up in the future.

We do omit the argument occasionally though. I changed the default to None. I also renamed it to extra_args to make its use clearer.


(In reply to comment #6)
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:99
&gt; &gt; +    if port_obj is None:
&gt; 
&gt; Why not just &quot;not port_obj&quot;.  Maybe is None is google style.  It&apos;s more specific, just not sure the extra specificity buys us much.

I like &quot;not port_obj&quot;, switched to that.

&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:110
&gt; &gt; +    new_args = [
&gt; 
&gt; What&apos;s new about these args? :)

Renamed this to args (and the passed in list to extra_args).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303845</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-02 18:45:02 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; For all these changes, since get_tests_run was mirroring the existing passing_run/logging_run functions, I changed all three to be consistent.
&gt; 
&gt; (In reply to comment #5)
&gt; &gt; Nit: The use of args=[] as a default arg is correct in this case only because we never modify args in the function.  I would just remove the default value so it doesn&apos;t trip someone up in the future.
&gt; 
&gt; We do omit the argument occasionally though. I changed the default to None. I also renamed it to extra_args to make its use clearer.
&gt;

Hm. That actually makes it less clear to me than before, but perhaps that&apos;s not surprising, since I was the one that called it new_args.

The original idea was that the caller would pass in an argument list. The function would clone the list and modify it (hence, new_args). Over time, given, the way that code has evolved, that logic was probably no longer clear.

That said, I would be a little concerned that passing_run() and its kin always modify the list to pass at least some arguments, so there is no longer a way to truly get the original intent of the function. Maybe that&apos;s not really needed and it&apos;s okay the way it is ...
 
&gt; &gt; 
&gt; &gt; Why not just &quot;not port_obj&quot;.  Maybe is None is google style.  It&apos;s more specific, just not sure the extra specificity buys us much.
&gt; 
&gt; I like &quot;not port_obj&quot;, switched to that.
&gt;

Changing to &quot;not port_obj&quot; actually prevents a class of possible errors (e.g., port_obj=[]) that would have occurred before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304917</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-04 15:20:05 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 72782:

http/tests/loading/bad-server-subframe.html

Please file bugs against the tests.  These tests were authored by mjs@apple.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304919</commentid>
    <comment_count>11</comment_count>
      <attachid>72782</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-04 15:22:09 -0700</bug_when>
    <thetext>Comment on attachment 72782
Patch

Clearing flags on attachment: 72782

Committed r71359: &lt;http://trac.webkit.org/changeset/71359&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304920</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-04 15:22:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305051</commentid>
    <comment_count>13</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-04 17:51:47 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 72782 [details])
&gt; Clearing flags on attachment: 72782
&gt; 
&gt; Committed r71359: &lt;http://trac.webkit.org/changeset/71359&gt;

Some python tests are failing since this change on Leopard and Qt Linux.
http://build.webkit.org/builders/Leopard%20Intel%20Release%20(Tests)/builds/23760/steps/webkitpy-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305061</commentid>
    <comment_count>14</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-04 18:04:21 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 72782 [details] [details])
&gt; &gt; Clearing flags on attachment: 72782
&gt; &gt; 
&gt; &gt; Committed r71359: &lt;http://trac.webkit.org/changeset/71359&gt;
&gt; 
&gt; Some python tests are failing since this change on Leopard and Qt Linux.
&gt; http://build.webkit.org/builders/Leopard%20Intel%20Release%20(Tests)/builds/23760/steps/webkitpy-test/logs/stdio

Looks like itertools.chain.from_iterable was added in 2.6, I guess we&apos;re running with 2.5 there. I think I can just use itertools.chain directly, which should work everywhere (will work on a patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305064</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-04 18:06:01 -0700</bug_when>
    <thetext>Yes, webkitpy is supposed to be 2.5+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305070</commentid>
    <comment_count>16</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-04 18:09:27 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (will work on a patch).

Patch is up at bug 49043.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305080</commentid>
    <comment_count>17</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-04 18:23:05 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Yes, webkitpy is supposed to be 2.5+.

Looks like the cq uses 2.6, otherwise this wouldn&apos;t have landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305088</commentid>
    <comment_count>18</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-04 18:42:37 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Patch is up at bug 49043.

Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72751</attachid>
            <date>2010-11-02 15:38:37 -0700</date>
            <delta_ts>2010-11-02 18:26:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48878-20101102153836.patch</filename>
            <type>text/plain</type>
            <size>10883</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjOGI1MWY1ODBlYzhmODlmMjU2NjllMGU5MGNiOTkwMzZkZmNlY2RmLi43ZjBkZjMw
YjhiOTI1YTFjNWMwNjA1ODM5NTBjNDI3NjYwNTcxYmNkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTEtMDIgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlJXVCBkb2Vzbid0
IGhhdmUgZ29vZCB0ZXN0IGNvdmVyYWdlIGZvciAtLXJ1bi1jaHVuaywgLS1iYXRjaC1zaXplLCAt
LXJ1bi1wYXJ0LCBldGMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODg3OAorICAgICAgICAKKyAgICAgICAgQWRkIGdldF90ZXN0c19ydW4gc28gdGhh
dCBpdCdzIGVhc3kgdG8gc2VlIHdoaWNoIHRlc3RzIGdldCBydW4gKGFuZCB3aXRoCisgICAgICAg
IHdoYXQgYmF0Y2hpbmcpIGZvciBhIGdpdmVuIGZsYWcgY29tYmluYXRpb24uIEZsZXNoIG91dCB0
aGUgdmFyaW91cworICAgICAgICB0ZXN0IGNhc2VzIHRoYXQgaGF2ZSBGSVhNRXMuCisgICAgICAg
IAorICAgICAgICBBbHNvIGZpeGVzIGFuIG9mZi1ieS1vbmUgZXJyb3IgKGJhdGNoIHNpemVzIHdl
cmUgb25lIGxhcmdlciB0aGFuIAorICAgICAgICBleHBlY3RlZCkgYW5kIG1ha2VzIC0tcnVuLXBh
cnQgYWxzbyBoYXZlIHdyYXBhcm91bmQgYmVoYXZpb3IsIGxpa2UKKyAgICAgICAgLS1ydW4tY2h1
bmsuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisKIDIw
MTAtMTEtMDEgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3Ro
cmVhZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CmluZGV4IDNlM2JhMGIxNjc3MDQ1
MDAzNmY3MzE1YWMxNjFlZjFmYjliN2Q3MzUuLjdmZTQwYTc1N2MyNjZmNGNkMGJkZmE0NWY5YmUw
ZjkxZWZjMGZmYWUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CkBAIC00NDAsNyArNDQwLDcgQEAgY2xhc3MgVGVz
dFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpKSkKICAgICAgICAg
ICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZS5wdXQocmVzdWx0LmR1bXBzKCkpCiAKLSAgICAgICAgICAg
IGlmIGJhdGNoX3NpemUgPiAwIGFuZCBiYXRjaF9jb3VudCA+IGJhdGNoX3NpemU6CisgICAgICAg
ICAgICBpZiBiYXRjaF9zaXplID4gMCBhbmQgYmF0Y2hfY291bnQgPj0gYmF0Y2hfc2l6ZToKICAg
ICAgICAgICAgICAgICAjIEJvdW5jZSB0aGUgc2hlbGwgYW5kIHJlc2V0IGNvdW50LgogICAgICAg
ICAgICAgICAgIHNlbGYuX2tpbGxfZHVtcF9yZW5kZXJfdHJlZSgpCiAgICAgICAgICAgICAgICAg
YmF0Y2hfY291bnQgPSAwCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCBkMTY5Y2Q4ODQ4
YmQzZDk2YThiZTBhMjRiMTUyYWQyM2JjY2ZiMGY0Li5mZjE2ZWU1NzI0ZjQ0NzM0N2NhMzkzMGM0
YzQxOWM2MjRmMGExNmJkIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTQwNCw5ICs0
MDQsOCBAQCBjbGFzcyBUZXN0UnVubmVyOgogCiAgICAgICAgICAgICAjIElmIHdlIHJlYWNoZWQg
dGhlIGVuZCBhbmQgd2UgZG9uJ3QgaGF2ZSBlbm91Z2ggdGVzdHMsIHdlIHJ1biBzb21lCiAgICAg
ICAgICAgICAjIGZyb20gdGhlIGJlZ2lubmluZy4KLSAgICAgICAgICAgIGlmIChzZWxmLl9vcHRp
b25zLnJ1bl9jaHVuayBhbmQKLSAgICAgICAgICAgICAgICAoc2xpY2VfZW5kIC0gc2xpY2Vfc3Rh
cnQgPCBjaHVua19sZW4pKToKLSAgICAgICAgICAgICAgICBleHRyYSA9IDEgKyBjaHVua19sZW4g
LSAoc2xpY2VfZW5kIC0gc2xpY2Vfc3RhcnQpCisgICAgICAgICAgICBpZiBzbGljZV9lbmQgLSBz
bGljZV9zdGFydCA8IGNodW5rX2xlbjoKKyAgICAgICAgICAgICAgICBleHRyYSA9IGNodW5rX2xl
biAtIChzbGljZV9lbmQgLSBzbGljZV9zdGFydCkKICAgICAgICAgICAgICAgICBleHRyYV9tc2cg
PSAoJyAgIGxhc3QgY2h1bmsgaXMgcGFydGlhbCwgYXBwZW5kaW5nIFswOiVkXScgJQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dHJhKQogICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50
ZXIucHJpbnRfZXhwZWN0ZWQoZXh0cmFfbXNnKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHNfdW5pdHRlc3QucHkKaW5kZXggMGYwOWZmYTA0MzQyM2Q3MzVjYzBhM2QzYzY2NzE1ZDUzN2Fh
YTYxNC4uZmE1Y2JkY2ZlMWJmNjkyMDIzOTRlNjY4YTRjMzNiZTI1OTI4YzU4NyAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0c191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0zMSw2ICszMSw3IEBACiAi
IiJVbml0IHRlc3RzIGZvciBydW5fd2Via2l0X3Rlc3RzLiIiIgogCiBpbXBvcnQgY29kZWNzCitp
bXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgUXVldWUK
QEAgLTQ4LDcgKzQ5LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCB1c2Vy
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAotZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydAorZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydCwgVGVzdERyaXZl
cgogCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogCkBAIC04Myw3
ICs4NCw3IEBAIGRlZiBwYXNzaW5nX3J1bihhcmdzPVtdLCBwb3J0X29iaj1Ob25lLCByZWNvcmRf
cmVzdWx0cz1GYWxzZSwKICAgICByZXR1cm4gcmVzID09IDAKIAogCi1kZWYgbG9nZ2luZ19ydW4o
YXJncz1bXSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UpOgorZGVmIGxvZ2dpbmdfcnVuKGFyZ3M9W10s
IHBvcnRfb2JqPU5vbmUsIHRlc3RzX2luY2x1ZGVkPUZhbHNlKToKICAgICBuZXdfYXJncyA9IFsn
LS1uby1yZWNvcmQtcmVzdWx0cyddCiAgICAgaWYgbm90ICctLXBsYXRmb3JtJyBpbiBhcmdzOgog
ICAgICAgICBuZXdfYXJncy5leHRlbmQoWyctLXBsYXRmb3JtJywgJ3Rlc3QnXSkKQEAgLTk1LDcg
Kzk2LDggQEAgZGVmIGxvZ2dpbmdfcnVuKGFyZ3M9W10sIHRlc3RzX2luY2x1ZGVkPUZhbHNlKToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvKiddKQogICAgIG9w
dGlvbnMsIHBhcnNlZF9hcmdzID0gcnVuX3dlYmtpdF90ZXN0cy5wYXJzZV9hcmdzKG5ld19hcmdz
KQogICAgIHVzZXIgPSBNb2NrVXNlcigpCi0gICAgcG9ydF9vYmogPSBwb3J0LmdldChwb3J0X25h
bWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zLCB1c2VyPXVzZXIpCisgICAgaWYg
cG9ydF9vYmogaXMgTm9uZToKKyAgICAgICAgcG9ydF9vYmogPSBwb3J0LmdldChwb3J0X25hbWU9
b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zLCB1c2VyPXVzZXIpCiAgICAgYnVpbGRi
b3Rfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKICAgICByZWd1bGFyX291dHB1
dCA9IGFycmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCiAgICAgcmVzID0gcnVuX3dlYmtpdF90ZXN0
cy5ydW4ocG9ydF9vYmosIG9wdGlvbnMsIHBhcnNlZF9hcmdzLApAQCAtMTA0LDYgKzEwNiw1MyBA
QCBkZWYgbG9nZ2luZ19ydW4oYXJncz1bXSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UpOgogICAgIHJl
dHVybiAocmVzLCBidWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0LCB1c2VyKQogCiAKK2Rl
ZiBnZXRfdGVzdHNfcnVuKGFyZ3M9W10sIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2Jh
dGNoZXM9RmFsc2UpOgorICAgIG5ld19hcmdzID0gWworICAgICAgICAnLS1wcmludCcsICdub3Ro
aW5nJywKKyAgICAgICAgJy0tcGxhdGZvcm0nLCAndGVzdCcsCisgICAgICAgICctLW5vLXJlY29y
ZC1yZXN1bHRzJywKKyAgICAgICAgJy0tY2hpbGQtcHJvY2Vzc2VzJywgJzEnXQorICAgIG5ld19h
cmdzLmV4dGVuZChhcmdzKQorICAgIGlmIG5vdCB0ZXN0c19pbmNsdWRlZDoKKyAgICAgICAgIyBO
b3QgaW5jbHVkaW5nIGh0dHAgdGVzdHMgc2luY2UgdGhleSBnZXQgcnVuIG91dCBvZiBvcmRlciAo
dGhhdAorICAgICAgICAjIGJlaGF2aW9yIGhhcyBpdHMgb3duIHRlc3QsIHNlZSB0ZXN0X2dldF90
ZXN0X2ZpbGVfcXVldWUpCisgICAgICAgIG5ld19hcmdzLmV4dGVuZChbJ3Bhc3NlcycsICdmYWls
dXJlcyddKQorICAgIG9wdGlvbnMsIHBhcnNlZF9hcmdzID0gcnVuX3dlYmtpdF90ZXN0cy5wYXJz
ZV9hcmdzKG5ld19hcmdzKQorICAgIHVzZXIgPSBNb2NrVXNlcigpCisKKyAgICB0ZXN0X2JhdGNo
ZXMgPSBbXQorCisgICAgY2xhc3MgUmVjb3JkaW5nVGVzdERyaXZlcihUZXN0RHJpdmVyKToKKyAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGltYWdlX3BhdGgsIG9wdGlvbnMpOgorICAg
ICAgICAgICAgVGVzdERyaXZlci5fX2luaXRfXyhzZWxmLCBwb3J0LCBpbWFnZV9wYXRoLCBvcHRp
b25zLCBleGVjdXRpdmU9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfdGVzdF9iYXRj
aCA9IE5vbmUKKworICAgICAgICBkZWYgcG9sbChzZWxmKToKKyAgICAgICAgICAgICMgU28gdGhh
dCB3ZSBkb24ndCBjcmVhdGUgYSBuZXcgZHJpdmVyIGZvciBldmVyeSB0ZXN0CisgICAgICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICAgICAgc2Vs
Zi5fY3VycmVudF90ZXN0X2JhdGNoID0gTm9uZQorCisgICAgICAgIGRlZiBydW5fdGVzdChzZWxm
LCB1cmksIHRpbWVvdXRtcywgaW1hZ2VfaGFzaCk6CisgICAgICAgICAgICBpZiBzZWxmLl9jdXJy
ZW50X3Rlc3RfYmF0Y2ggaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9jdXJyZW50X3Rl
c3RfYmF0Y2ggPSBbXQorICAgICAgICAgICAgICAgIHRlc3RfYmF0Y2hlcy5hcHBlbmQoc2VsZi5f
Y3VycmVudF90ZXN0X2JhdGNoKQorICAgICAgICAgICAgc2VsZi5fY3VycmVudF90ZXN0X2JhdGNo
LmFwcGVuZChzZWxmLl9wb3J0LnVyaV90b190ZXN0X25hbWUodXJpKSkKKyAgICAgICAgICAgIHJl
dHVybiBUZXN0RHJpdmVyLnJ1bl90ZXN0KHNlbGYsIHVyaSwgdGltZW91dG1zLCBpbWFnZV9oYXNo
KQorCisgICAgY2xhc3MgUmVjb3JkaW5nVGVzdFBvcnQoVGVzdFBvcnQpOgorICAgICAgICBkZWYg
Y3JlYXRlX2RyaXZlcihzZWxmLCBpbWFnZV9wYXRoLCBvcHRpb25zKToKKyAgICAgICAgICAgIHJl
dHVybiBSZWNvcmRpbmdUZXN0RHJpdmVyKHNlbGYsIGltYWdlX3BhdGgsIG9wdGlvbnMpCisKKyAg
ICByZWNvcmRpbmdfcG9ydCA9IFJlY29yZGluZ1Rlc3RQb3J0KG9wdGlvbnM9b3B0aW9ucywgdXNl
cj11c2VyKQorICAgIGxvZ2dpbmdfcnVuKGFyZ3M9bmV3X2FyZ3MsIHBvcnRfb2JqPXJlY29yZGlu
Z19wb3J0LCB0ZXN0c19pbmNsdWRlZD1UcnVlKQorCisgICAgaWYgZmxhdHRlbl9iYXRjaGVzOgor
ICAgICAgICByZXR1cm4gbGlzdChpdGVydG9vbHMuY2hhaW4uZnJvbV9pdGVyYWJsZSh0ZXN0X2Jh
dGNoZXMpKQorCisgICAgcmV0dXJuIHRlc3RfYmF0Y2hlcworCiBjbGFzcyBNYWluVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmcoc2Vs
Zik6CiAgICAgICAgICMgVGhpcyBqdXN0IHRlc3RzIHRoYXQgd2UgcmVjb2duaXplIHRoZSBjb21t
YW5kIGxpbmUgYXJncwpAQCAtMTE5LDggKzE2OCw5IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKCkpCiAKICAg
ICBkZWYgdGVzdF9iYXRjaF9zaXplKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiB2ZXJpZnkgIyBv
ZiB0ZXN0cyBydW4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1iYXRj
aC1zaXplJywgJzInXSkpCisgICAgICAgIGJhdGNoX3Rlc3RzX3J1biA9IGdldF90ZXN0c19ydW4o
WyctLWJhdGNoLXNpemUnLCAnMiddKQorICAgICAgICBmb3IgYmF0Y2ggaW4gYmF0Y2hfdGVzdHNf
cnVuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihiYXRjaCkgPD0gMiwgJyVzIGhh
ZCB0b28gbWFueSB0ZXN0cycgJSAnLCAnLmpvaW4oYmF0Y2gpKQogCiAgICAgZGVmIHRlc3RfY2hp
bGRfcHJvY2Vzc18xKHNlbGYpOgogICAgICAgICAocmVzLCBidWlsZGJvdF9vdXRwdXQsIHJlZ3Vs
YXJfb3V0cHV0LCB1c2VyKSA9IGxvZ2dpbmdfcnVuKApAQCAtMTk0LDggKzI0NCwxNSBAQCBjbGFz
cyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
YXNzaW5nX3J1bihbJy0tcmFuZG9taXplLW9yZGVyJ10pKQogCiAgICAgZGVmIHRlc3RfcnVuX2No
dW5rKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiB2ZXJpZnkgIyBvZiB0ZXN0cyBydW4KLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1ydW4tY2h1bmsnLCAnMTo0J10pKQor
ICAgICAgICAjIFRlc3QgdGhhdCB3ZSBhY3R1YWxseSBzZWxlY3QgdGhlIHJpZ2h0IGNodW5rCisg
ICAgICAgIGFsbF90ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKGZsYXR0ZW5fYmF0Y2hlcz1UcnVl
KQorICAgICAgICBjaHVua190ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsnLS1ydW4tY2h1bmsn
LCAnMTo0J10sIGZsYXR0ZW5fYmF0Y2hlcz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhhbGxfdGVzdHNfcnVuWzQ6OF0sIGNodW5rX3Rlc3RzX3J1bikKKworICAgICAgICAjIFRlc3Qg
dGhhdCB3ZSB3cmFwIGFyb3VuZCBpZiB0aGUgbnVtYmVyIG9mIHRlc3RzIGlzIG5vdCBldmVubHkg
ZGl2aXNpYmxlIGJ5IHRoZSBjaHVuayBzaXplCisgICAgICAgIHRlc3RzX3RvX3J1biA9IFsncGFz
c2VzL2Vycm9yLmh0bWwnLCAncGFzc2VzL2ltYWdlLmh0bWwnLCAncGFzc2VzL3BsYXRmb3JtX2lt
YWdlLmh0bWwnLCAncGFzc2VzL3RleHQuaHRtbCddCisgICAgICAgIGNodW5rX3Rlc3RzX3J1biA9
IGdldF90ZXN0c19ydW4oWyctLXJ1bi1jaHVuaycsICcxOjMnXSArIHRlc3RzX3RvX3J1biwgdGVz
dHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKFsncGFzc2VzL3RleHQuaHRtbCcsICdwYXNzZXMvZXJyb3IuaHRtbCcsICdwYXNz
ZXMvaW1hZ2UuaHRtbCddLCBjaHVua190ZXN0c19ydW4pCiAKICAgICBkZWYgdGVzdF9ydW5fZm9y
Y2Uoc2VsZik6CiAgICAgICAgICMgVGhpcyByYWlzZXMgYW4gZXhjZXB0aW9uIGJlY2F1c2Ugd2Ug
cnVuCkBAIC0yMDMsMjMgKzI2MCwzMyBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmdfcnVuLCBb
Jy0tZm9yY2UnXSkKIAogICAgIGRlZiB0ZXN0X3J1bl9wYXJ0KHNlbGYpOgotICAgICAgICAjIEZJ
WE1FOiB2ZXJpZnkgIyBvZiB0ZXN0cyBydW4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3Np
bmdfcnVuKFsnLS1ydW4tcGFydCcsICcxOjInXSkpCisgICAgICAgICMgVGVzdCB0aGF0IHdlIGFj
dHVhbGx5IHNlbGVjdCB0aGUgcmlnaHQgcGFydAorICAgICAgICB0ZXN0c190b19ydW4gPSBbJ3Bh
c3Nlcy9lcnJvci5odG1sJywgJ3Bhc3Nlcy9pbWFnZS5odG1sJywgJ3Bhc3Nlcy9wbGF0Zm9ybV9p
bWFnZS5odG1sJywgJ3Bhc3Nlcy90ZXh0Lmh0bWwnXQorICAgICAgICB0ZXN0c19ydW4gPSBnZXRf
dGVzdHNfcnVuKFsnLS1ydW4tcGFydCcsICcxOjInXSArIHRlc3RzX3RvX3J1biwgdGVzdHNfaW5j
bHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKFsncGFzc2VzL2Vycm9yLmh0bWwnLCAncGFzc2VzL2ltYWdlLmh0bWwnXSwgdGVzdHNfcnVu
KQorCisgICAgICAgICMgVGVzdCB0aGF0IHdlIHdyYXAgYXJvdW5kIGlmIHRoZSBudW1iZXIgb2Yg
dGVzdHMgaXMgbm90IGV2ZW5seSBkaXZpc2libGUgYnkgdGhlIGNodW5rIHNpemUKKyAgICAgICAg
IyAoaGVyZSB3ZSBlbmQgdXAgd2l0aCAzIHBhcnRzLCBlYWNoIHdpdGggMiB0ZXN0cywgYW5kIHdl
IG9ubHkgaGF2ZSA0IHRlc3RzIHRvdGFsLCBzbyB0aGUKKyAgICAgICAgIyBsYXN0IHBhcnQgcmVw
ZWF0cyB0aGUgZmlyc3QgdHdvIHRlc3RzKS4KKyAgICAgICAgY2h1bmtfdGVzdHNfcnVuID0gZ2V0
X3Rlc3RzX3J1bihbJy0tcnVuLXBhcnQnLCAnMzozJ10gKyB0ZXN0c190b19ydW4sIHRlc3RzX2lu
Y2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hlcz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhbJ3Bhc3Nlcy9lcnJvci5odG1sJywgJ3Bhc3Nlcy9pbWFnZS5odG1sJ10sIGNodW5rX3Rl
c3RzX3J1bikKIAogICAgIGRlZiB0ZXN0X3J1bl9zaW5nbHkoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tcnVuLXNpbmdseSddKSkKKyAgICAgICAgYmF0Y2hf
dGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihbJy0tcnVuLXNpbmdseSddKQorICAgICAgICBmb3Ig
YmF0Y2ggaW4gYmF0Y2hfdGVzdHNfcnVuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
bGVuKGJhdGNoKSwgMSwgJyVzIGhhZCB0b28gbWFueSB0ZXN0cycgJSAnLCAnLmpvaW4oYmF0Y2gp
KQogCiAgICAgZGVmIHRlc3Rfc2luZ2xlX2ZpbGUoc2VsZik6Ci0gICAgICAgICMgRklYTUU6IHZl
cmlmeSAjIG9mIHRlc3RzIHJ1bgotICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4o
WydwYXNzZXMvdGV4dC5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUpKQorICAgICAgICB0ZXN0
c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsncGFzc2VzL3RleHQuaHRtbCddLCB0ZXN0c19pbmNsdWRl
ZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
WydwYXNzZXMvdGV4dC5odG1sJ10sIHRlc3RzX3J1bikKIAogICAgIGRlZiB0ZXN0X3Rlc3RfbGlz
dChzZWxmKToKICAgICAgICAgZmlsZW5hbWUgPSB0ZW1wZmlsZS5ta3RlbXAoKQogICAgICAgICB0
bXBmaWxlID0gZmlsZShmaWxlbmFtZSwgbW9kZT0ndysnKQogICAgICAgICB0bXBmaWxlLndyaXRl
KCdwYXNzZXMvdGV4dC5odG1sJykKICAgICAgICAgdG1wZmlsZS5jbG9zZSgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tdGVzdC1saXN0PSVzJyAlIGZpbGVuYW1lXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUp
KQorICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsnLS10ZXN0LWxpc3Q9JXMnICUg
ZmlsZW5hbWVdLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydwYXNzZXMvdGV4dC5odG1sJ10sIHRlc3RzX3J1bikK
ICAgICAgICAgb3MucmVtb3ZlKGZpbGVuYW1lKQogICAgICAgICByZXMsIG91dCwgZXJyLCB1c2Vy
ID0gbG9nZ2luZ19ydW4oWyctLXRlc3QtbGlzdD0lcycgJSBmaWxlbmFtZV0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72782</attachid>
            <date>2010-11-02 18:26:18 -0700</date>
            <delta_ts>2010-11-04 15:22:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48878-20101102182617.patch</filename>
            <type>text/plain</type>
            <size>13384</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwNDk1MmQwNjUzYWI1Y2NmYTQzNmYxMGQ1ZTgyZmQ1MmE0MzdlZDgwLi42MWVmMDZj
YjBlNjgzNjlhYzMyNTAwOTY3MDliMjJkZjZlMTA4YWVkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTEtMDIgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlJXVCBkb2Vzbid0
IGhhdmUgZ29vZCB0ZXN0IGNvdmVyYWdlIGZvciAtLXJ1bi1jaHVuaywgLS1iYXRjaC1zaXplLCAt
LXJ1bi1wYXJ0LCBldGMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODg3OAorICAgICAgICAKKyAgICAgICAgQWRkIGdldF90ZXN0c19ydW4gc28gdGhh
dCBpdCdzIGVhc3kgdG8gc2VlIHdoaWNoIHRlc3RzIGdldCBydW4gKGFuZCB3aXRoCisgICAgICAg
IHdoYXQgYmF0Y2hpbmcpIGZvciBhIGdpdmVuIGZsYWcgY29tYmluYXRpb24uIEZsZXNoIG91dCB0
aGUgdmFyaW91cworICAgICAgICB0ZXN0IGNhc2VzIHRoYXQgaGF2ZSBGSVhNRXMuCisgICAgICAg
IAorICAgICAgICBBbHNvIGZpeGVzIGFuIG9mZi1ieS1vbmUgZXJyb3IgKGJhdGNoIHNpemVzIHdl
cmUgb25lIGxhcmdlciB0aGFuIAorICAgICAgICBleHBlY3RlZCkgYW5kIG1ha2VzIC0tcnVuLXBh
cnQgYWxzbyBoYXZlIHdyYXBhcm91bmQgYmVoYXZpb3IsIGxpa2UKKyAgICAgICAgLS1ydW4tY2h1
bmsuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisKIDIw
MTAtMTEtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggYnVpbGQuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1
bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CmluZGV4IDNlM2JhMGIxNjc3MDQ1MDAzNmY3MzE1YWMx
NjFlZjFmYjliN2Q3MzUuLjdmZTQwYTc1N2MyNjZmNGNkMGJkZmE0NWY5YmUwZjkxZWZjMGZmYWUg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVy
X3RyZWVfdGhyZWFkLnB5CkBAIC00NDAsNyArNDQwLDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFk
KFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0
LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpKSkKICAgICAgICAgICAgIHNlbGYuX3Jl
c3VsdF9xdWV1ZS5wdXQocmVzdWx0LmR1bXBzKCkpCiAKLSAgICAgICAgICAgIGlmIGJhdGNoX3Np
emUgPiAwIGFuZCBiYXRjaF9jb3VudCA+IGJhdGNoX3NpemU6CisgICAgICAgICAgICBpZiBiYXRj
aF9zaXplID4gMCBhbmQgYmF0Y2hfY291bnQgPj0gYmF0Y2hfc2l6ZToKICAgICAgICAgICAgICAg
ICAjIEJvdW5jZSB0aGUgc2hlbGwgYW5kIHJlc2V0IGNvdW50LgogICAgICAgICAgICAgICAgIHNl
bGYuX2tpbGxfZHVtcF9yZW5kZXJfdHJlZSgpCiAgICAgICAgICAgICAgICAgYmF0Y2hfY291bnQg
PSAwCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCBmMTAzYmNkNmQ3ZDkwNmMwM2Q3NzIz
OWUzYmIzZDNkOTA0NzkwNTk5Li45ZGVlYzk4ZmIxMTUyYzI1NDY0NDU0YjMwMjNlNWFkMzUwY2Mz
OWRlIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTQxMSw5ICs0MTEsOCBAQCBjbGFz
cyBUZXN0UnVubmVyOgogCiAgICAgICAgICAgICAjIElmIHdlIHJlYWNoZWQgdGhlIGVuZCBhbmQg
d2UgZG9uJ3QgaGF2ZSBlbm91Z2ggdGVzdHMsIHdlIHJ1biBzb21lCiAgICAgICAgICAgICAjIGZy
b20gdGhlIGJlZ2lubmluZy4KLSAgICAgICAgICAgIGlmIChzZWxmLl9vcHRpb25zLnJ1bl9jaHVu
ayBhbmQKLSAgICAgICAgICAgICAgICAoc2xpY2VfZW5kIC0gc2xpY2Vfc3RhcnQgPCBjaHVua19s
ZW4pKToKLSAgICAgICAgICAgICAgICBleHRyYSA9IDEgKyBjaHVua19sZW4gLSAoc2xpY2VfZW5k
IC0gc2xpY2Vfc3RhcnQpCisgICAgICAgICAgICBpZiBzbGljZV9lbmQgLSBzbGljZV9zdGFydCA8
IGNodW5rX2xlbjoKKyAgICAgICAgICAgICAgICBleHRyYSA9IGNodW5rX2xlbiAtIChzbGljZV9l
bmQgLSBzbGljZV9zdGFydCkKICAgICAgICAgICAgICAgICBleHRyYV9tc2cgPSAoJyAgIGxhc3Qg
Y2h1bmsgaXMgcGFydGlhbCwgYXBwZW5kaW5nIFswOiVkXScgJQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4dHJhKQogICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZXhw
ZWN0ZWQoZXh0cmFfbXNnKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3Qu
cHkKaW5kZXggMjY3MjUwODRhOTZmZDUzNzQyNzNkMmRkN2RlNTdiMDAwZjJjYTk0ZS4uOGZiMzIy
MWNkNWE2M2Y4MTlmY2JjZjI1ZDhhMTczZDkyYzdhNzZjYSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVz
dC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0zMSw2ICszMSw3IEBACiAiIiJVbml0IHRlc3Rz
IGZvciBydW5fd2Via2l0X3Rlc3RzLiIiIgogCiBpbXBvcnQgY29kZWNzCitpbXBvcnQgaXRlcnRv
b2xzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgUXVldWUKQEAgLTQ4LDcgKzQ5
LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCB1c2VyCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMg
aW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91
dF9wYWNrYWdlIGltcG9ydCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAotZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydAorZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydCwgVGVzdERyaXZlcgogZnJvbSB3ZWJr
aXRweS5weXRob24yNC52ZXJzaW9uaW5nIGltcG9ydCBjb21wYXJlX3ZlcnNpb24KIGZyb20gd2Vi
a2l0cHkudGVzdC5za2lwIGltcG9ydCBza2lwX2lmCiAKQEAgLTYzLDQxICs2NCw0NCBAQCBjbGFz
cyBNb2NrVXNlcigpOgogICAgICAgICBzZWxmLnVybCA9IHVybAogCiAKLWRlZiBwYXNzaW5nX3J1
bihhcmdzPVtdLCBwb3J0X29iaj1Ob25lLCByZWNvcmRfcmVzdWx0cz1GYWxzZSwKK2RlZiBwYXNz
aW5nX3J1bihleHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZh
bHNlLAogICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPUZhbHNlKToKLSAgICBuZXdfYXJn
cyA9IFsnLS1wcmludCcsICdub3RoaW5nJ10KLSAgICBpZiBub3QgJy0tcGxhdGZvcm0nIGluIGFy
Z3M6Ci0gICAgICAgIG5ld19hcmdzLmV4dGVuZChbJy0tcGxhdGZvcm0nLCAndGVzdCddKQorICAg
IGV4dHJhX2FyZ3MgPSBleHRyYV9hcmdzIG9yIFtdCisgICAgYXJncyA9IFsnLS1wcmludCcsICdu
b3RoaW5nJ10KKyAgICBpZiBub3QgJy0tcGxhdGZvcm0nIGluIGV4dHJhX2FyZ3M6CisgICAgICAg
IGFyZ3MuZXh0ZW5kKFsnLS1wbGF0Zm9ybScsICd0ZXN0J10pCiAgICAgaWYgbm90IHJlY29yZF9y
ZXN1bHRzOgotICAgICAgICBuZXdfYXJncy5hcHBlbmQoJy0tbm8tcmVjb3JkLXJlc3VsdHMnKQot
ICAgIG5ld19hcmdzLmV4dGVuZChhcmdzKQorICAgICAgICBhcmdzLmFwcGVuZCgnLS1uby1yZWNv
cmQtcmVzdWx0cycpCisgICAgYXJncy5leHRlbmQoZXh0cmFfYXJncykKICAgICBpZiBub3QgdGVz
dHNfaW5jbHVkZWQ6CiAgICAgICAgICMgV2UgdXNlIHRoZSBnbG9iIHRvIHRlc3QgdGhhdCBnbG9i
YmluZyB3b3Jrcy4KLSAgICAgICAgbmV3X2FyZ3MuZXh0ZW5kKFsncGFzc2VzJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnaHR0cC90ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
J2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
ZmFpbHVyZXMvZXhwZWN0ZWQvKiddKQotICAgIG9wdGlvbnMsIHBhcnNlZF9hcmdzID0gcnVuX3dl
YmtpdF90ZXN0cy5wYXJzZV9hcmdzKG5ld19hcmdzKQotICAgIGlmIHBvcnRfb2JqIGlzIE5vbmU6
CisgICAgICAgIGFyZ3MuZXh0ZW5kKFsncGFzc2VzJywKKyAgICAgICAgICAgICAgICAgICAgICdo
dHRwL3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICAgICdodHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvKiddKQorICAg
IG9wdGlvbnMsIHBhcnNlZF9hcmdzID0gcnVuX3dlYmtpdF90ZXN0cy5wYXJzZV9hcmdzKGFyZ3Mp
CisgICAgaWYgbm90IHBvcnRfb2JqOgogICAgICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KHBvcnRf
bmFtZT1vcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXNlcj1Nb2NrVXNlcigpKQogICAgIHJlcyA9IHJ1bl93ZWJraXRfdGVzdHMu
cnVuKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncykKICAgICByZXR1cm4gcmVzID09IDAK
IAogCi1kZWYgbG9nZ2luZ19ydW4oYXJncz1bXSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UpOgotICAg
IG5ld19hcmdzID0gWyctLW5vLXJlY29yZC1yZXN1bHRzJ10KLSAgICBpZiBub3QgJy0tcGxhdGZv
cm0nIGluIGFyZ3M6Ci0gICAgICAgIG5ld19hcmdzLmV4dGVuZChbJy0tcGxhdGZvcm0nLCAndGVz
dCddKQotICAgIG5ld19hcmdzLmV4dGVuZChhcmdzKQorZGVmIGxvZ2dpbmdfcnVuKGV4dHJhX2Fy
Z3M9Tm9uZSwgcG9ydF9vYmo9Tm9uZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UpOgorICAgIGV4dHJh
X2FyZ3MgPSBleHRyYV9hcmdzIG9yIFtdCisgICAgYXJncyA9IFsnLS1uby1yZWNvcmQtcmVzdWx0
cyddCisgICAgaWYgbm90ICctLXBsYXRmb3JtJyBpbiBleHRyYV9hcmdzOgorICAgICAgICBhcmdz
LmV4dGVuZChbJy0tcGxhdGZvcm0nLCAndGVzdCddKQorICAgIGFyZ3MuZXh0ZW5kKGV4dHJhX2Fy
Z3MpCiAgICAgaWYgbm90IHRlc3RzX2luY2x1ZGVkOgotICAgICAgICBuZXdfYXJncy5leHRlbmQo
WydwYXNzZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdodHRwL3Rlc3RzJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC8qJ10pCi0gICAgb3B0aW9ucywg
cGFyc2VkX2FyZ3MgPSBydW5fd2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3MobmV3X2FyZ3MpCisgICAg
ICAgIGFyZ3MuZXh0ZW5kKFsncGFzc2VzJywKKyAgICAgICAgICAgICAgICAgICAgICdodHRwL3Rl
c3RzJywKKyAgICAgICAgICAgICAgICAgICAgICdodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cycs
CisgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvKiddKQorICAgIG9wdGlv
bnMsIHBhcnNlZF9hcmdzID0gcnVuX3dlYmtpdF90ZXN0cy5wYXJzZV9hcmdzKGFyZ3MpCiAgICAg
dXNlciA9IE1vY2tVc2VyKCkKLSAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KHBvcnRfbmFtZT1vcHRp
b25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMsIHVzZXI9dXNlcikKKyAgICBpZiBub3QgcG9y
dF9vYmo6CisgICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQocG9ydF9uYW1lPW9wdGlvbnMucGxh
dGZvcm0sIG9wdGlvbnM9b3B0aW9ucywgdXNlcj11c2VyKQogICAgIGJ1aWxkYm90X291dHB1dCA9
IGFycmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCiAgICAgcmVndWxhcl9vdXRwdXQgPSBhcnJheV9z
dHJlYW0uQXJyYXlTdHJlYW0oKQogICAgIHJlcyA9IHJ1bl93ZWJraXRfdGVzdHMucnVuKHBvcnRf
b2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncywKQEAgLTEwNiw2ICsxMTAsNTQgQEAgZGVmIGxvZ2dp
bmdfcnVuKGFyZ3M9W10sIHRlc3RzX2luY2x1ZGVkPUZhbHNlKToKICAgICByZXR1cm4gKHJlcywg
YnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCwgdXNlcikKIAogCitkZWYgZ2V0X3Rlc3Rz
X3J1bihleHRyYV9hcmdzPU5vbmUsIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2JhdGNo
ZXM9RmFsc2UpOgorICAgIGV4dHJhX2FyZ3MgPSBleHRyYV9hcmdzIG9yIFtdCisgICAgYXJncyA9
IFsKKyAgICAgICAgJy0tcHJpbnQnLCAnbm90aGluZycsCisgICAgICAgICctLXBsYXRmb3JtJywg
J3Rlc3QnLAorICAgICAgICAnLS1uby1yZWNvcmQtcmVzdWx0cycsCisgICAgICAgICctLWNoaWxk
LXByb2Nlc3NlcycsICcxJ10KKyAgICBhcmdzLmV4dGVuZChleHRyYV9hcmdzKQorICAgIGlmIG5v
dCB0ZXN0c19pbmNsdWRlZDoKKyAgICAgICAgIyBOb3QgaW5jbHVkaW5nIGh0dHAgdGVzdHMgc2lu
Y2UgdGhleSBnZXQgcnVuIG91dCBvZiBvcmRlciAodGhhdAorICAgICAgICAjIGJlaGF2aW9yIGhh
cyBpdHMgb3duIHRlc3QsIHNlZSB0ZXN0X2dldF90ZXN0X2ZpbGVfcXVldWUpCisgICAgICAgIGFy
Z3MuZXh0ZW5kKFsncGFzc2VzJywgJ2ZhaWx1cmVzJ10pCisgICAgb3B0aW9ucywgcGFyc2VkX2Fy
Z3MgPSBydW5fd2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3MoYXJncykKKyAgICB1c2VyID0gTW9ja1Vz
ZXIoKQorCisgICAgdGVzdF9iYXRjaGVzID0gW10KKworICAgIGNsYXNzIFJlY29yZGluZ1Rlc3RE
cml2ZXIoVGVzdERyaXZlcik6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBpbWFn
ZV9wYXRoLCBvcHRpb25zKToKKyAgICAgICAgICAgIFRlc3REcml2ZXIuX19pbml0X18oc2VsZiwg
cG9ydCwgaW1hZ2VfcGF0aCwgb3B0aW9ucywgZXhlY3V0aXZlPU5vbmUpCisgICAgICAgICAgICBz
ZWxmLl9jdXJyZW50X3Rlc3RfYmF0Y2ggPSBOb25lCisKKyAgICAgICAgZGVmIHBvbGwoc2VsZik6
CisgICAgICAgICAgICAjIFNvIHRoYXQgd2UgZG9uJ3QgY3JlYXRlIGEgbmV3IGRyaXZlciBmb3Ig
ZXZlcnkgdGVzdAorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBkZWYgc3RvcChz
ZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfdGVzdF9iYXRjaCA9IE5vbmUKKworICAg
ICAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgdXJpLCB0aW1lb3V0bXMsIGltYWdlX2hhc2gpOgorICAg
ICAgICAgICAgaWYgc2VsZi5fY3VycmVudF90ZXN0X2JhdGNoIGlzIE5vbmU6CisgICAgICAgICAg
ICAgICAgc2VsZi5fY3VycmVudF90ZXN0X2JhdGNoID0gW10KKyAgICAgICAgICAgICAgICB0ZXN0
X2JhdGNoZXMuYXBwZW5kKHNlbGYuX2N1cnJlbnRfdGVzdF9iYXRjaCkKKyAgICAgICAgICAgIHNl
bGYuX2N1cnJlbnRfdGVzdF9iYXRjaC5hcHBlbmQoc2VsZi5fcG9ydC51cmlfdG9fdGVzdF9uYW1l
KHVyaSkpCisgICAgICAgICAgICByZXR1cm4gVGVzdERyaXZlci5ydW5fdGVzdChzZWxmLCB1cmks
IHRpbWVvdXRtcywgaW1hZ2VfaGFzaCkKKworICAgIGNsYXNzIFJlY29yZGluZ1Rlc3RQb3J0KFRl
c3RQb3J0KToKKyAgICAgICAgZGVmIGNyZWF0ZV9kcml2ZXIoc2VsZiwgaW1hZ2VfcGF0aCwgb3B0
aW9ucyk6CisgICAgICAgICAgICByZXR1cm4gUmVjb3JkaW5nVGVzdERyaXZlcihzZWxmLCBpbWFn
ZV9wYXRoLCBvcHRpb25zKQorCisgICAgcmVjb3JkaW5nX3BvcnQgPSBSZWNvcmRpbmdUZXN0UG9y
dChvcHRpb25zPW9wdGlvbnMsIHVzZXI9dXNlcikKKyAgICBsb2dnaW5nX3J1bihleHRyYV9hcmdz
PWFyZ3MsIHBvcnRfb2JqPXJlY29yZGluZ19wb3J0LCB0ZXN0c19pbmNsdWRlZD1UcnVlKQorCisg
ICAgaWYgZmxhdHRlbl9iYXRjaGVzOgorICAgICAgICByZXR1cm4gbGlzdChpdGVydG9vbHMuY2hh
aW4uZnJvbV9pdGVyYWJsZSh0ZXN0X2JhdGNoZXMpKQorCisgICAgcmV0dXJuIHRlc3RfYmF0Y2hl
cworCiBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYWNj
ZWxlcmF0ZWRfY29tcG9zaXRpbmcoc2VsZik6CiAgICAgICAgICMgVGhpcyBqdXN0IHRlc3RzIHRo
YXQgd2UgcmVjb2duaXplIHRoZSBjb21tYW5kIGxpbmUgYXJncwpAQCAtMTIxLDggKzE3Myw5IEBA
IGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHBhc3NpbmdfcnVuKCkpCiAKICAgICBkZWYgdGVzdF9iYXRjaF9zaXplKHNlbGYpOgotICAg
ICAgICAjIEZJWE1FOiB2ZXJpZnkgIyBvZiB0ZXN0cyBydW4KLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHBhc3NpbmdfcnVuKFsnLS1iYXRjaC1zaXplJywgJzInXSkpCisgICAgICAgIGJhdGNoX3Rl
c3RzX3J1biA9IGdldF90ZXN0c19ydW4oWyctLWJhdGNoLXNpemUnLCAnMiddKQorICAgICAgICBm
b3IgYmF0Y2ggaW4gYmF0Y2hfdGVzdHNfcnVuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGxlbihiYXRjaCkgPD0gMiwgJyVzIGhhZCB0b28gbWFueSB0ZXN0cycgJSAnLCAnLmpvaW4oYmF0
Y2gpKQogCiAgICAgZGVmIHRlc3RfY2hpbGRfcHJvY2Vzc18xKHNlbGYpOgogICAgICAgICAocmVz
LCBidWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0LCB1c2VyKSA9IGxvZ2dpbmdfcnVuKApA
QCAtMTk2LDggKzI0OSwxNSBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tcmFuZG9taXplLW9yZGVyJ10p
KQogCiAgICAgZGVmIHRlc3RfcnVuX2NodW5rKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiB2ZXJp
ZnkgIyBvZiB0ZXN0cyBydW4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsn
LS1ydW4tY2h1bmsnLCAnMTo0J10pKQorICAgICAgICAjIFRlc3QgdGhhdCB3ZSBhY3R1YWxseSBz
ZWxlY3QgdGhlIHJpZ2h0IGNodW5rCisgICAgICAgIGFsbF90ZXN0c19ydW4gPSBnZXRfdGVzdHNf
cnVuKGZsYXR0ZW5fYmF0Y2hlcz1UcnVlKQorICAgICAgICBjaHVua190ZXN0c19ydW4gPSBnZXRf
dGVzdHNfcnVuKFsnLS1ydW4tY2h1bmsnLCAnMTo0J10sIGZsYXR0ZW5fYmF0Y2hlcz1UcnVlKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhbGxfdGVzdHNfcnVuWzQ6OF0sIGNodW5rX3Rlc3Rz
X3J1bikKKworICAgICAgICAjIFRlc3QgdGhhdCB3ZSB3cmFwIGFyb3VuZCBpZiB0aGUgbnVtYmVy
IG9mIHRlc3RzIGlzIG5vdCBldmVubHkgZGl2aXNpYmxlIGJ5IHRoZSBjaHVuayBzaXplCisgICAg
ICAgIHRlc3RzX3RvX3J1biA9IFsncGFzc2VzL2Vycm9yLmh0bWwnLCAncGFzc2VzL2ltYWdlLmh0
bWwnLCAncGFzc2VzL3BsYXRmb3JtX2ltYWdlLmh0bWwnLCAncGFzc2VzL3RleHQuaHRtbCddCisg
ICAgICAgIGNodW5rX3Rlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWyctLXJ1bi1jaHVuaycsICcx
OjMnXSArIHRlc3RzX3RvX3J1biwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVz
PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsncGFzc2VzL3RleHQuaHRtbCcsICdw
YXNzZXMvZXJyb3IuaHRtbCcsICdwYXNzZXMvaW1hZ2UuaHRtbCddLCBjaHVua190ZXN0c19ydW4p
CiAKICAgICBkZWYgdGVzdF9ydW5fZm9yY2Uoc2VsZik6CiAgICAgICAgICMgVGhpcyByYWlzZXMg
YW4gZXhjZXB0aW9uIGJlY2F1c2Ugd2UgcnVuCkBAIC0yMDUsMjMgKzI2NSwzMyBAQCBjbGFzcyBN
YWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZh
bHVlRXJyb3IsIGxvZ2dpbmdfcnVuLCBbJy0tZm9yY2UnXSkKIAogICAgIGRlZiB0ZXN0X3J1bl9w
YXJ0KHNlbGYpOgotICAgICAgICAjIEZJWE1FOiB2ZXJpZnkgIyBvZiB0ZXN0cyBydW4KLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1ydW4tcGFydCcsICcxOjInXSkpCisg
ICAgICAgICMgVGVzdCB0aGF0IHdlIGFjdHVhbGx5IHNlbGVjdCB0aGUgcmlnaHQgcGFydAorICAg
ICAgICB0ZXN0c190b19ydW4gPSBbJ3Bhc3Nlcy9lcnJvci5odG1sJywgJ3Bhc3Nlcy9pbWFnZS5o
dG1sJywgJ3Bhc3Nlcy9wbGF0Zm9ybV9pbWFnZS5odG1sJywgJ3Bhc3Nlcy90ZXh0Lmh0bWwnXQor
ICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsnLS1ydW4tcGFydCcsICcxOjInXSAr
IHRlc3RzX3RvX3J1biwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsncGFzc2VzL2Vycm9yLmh0bWwnLCAncGFzc2Vz
L2ltYWdlLmh0bWwnXSwgdGVzdHNfcnVuKQorCisgICAgICAgICMgVGVzdCB0aGF0IHdlIHdyYXAg
YXJvdW5kIGlmIHRoZSBudW1iZXIgb2YgdGVzdHMgaXMgbm90IGV2ZW5seSBkaXZpc2libGUgYnkg
dGhlIGNodW5rIHNpemUKKyAgICAgICAgIyAoaGVyZSB3ZSBlbmQgdXAgd2l0aCAzIHBhcnRzLCBl
YWNoIHdpdGggMiB0ZXN0cywgYW5kIHdlIG9ubHkgaGF2ZSA0IHRlc3RzIHRvdGFsLCBzbyB0aGUK
KyAgICAgICAgIyBsYXN0IHBhcnQgcmVwZWF0cyB0aGUgZmlyc3QgdHdvIHRlc3RzKS4KKyAgICAg
ICAgY2h1bmtfdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihbJy0tcnVuLXBhcnQnLCAnMzozJ10g
KyB0ZXN0c190b19ydW4sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hlcz1UcnVl
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy9lcnJvci5odG1sJywgJ3Bhc3Nl
cy9pbWFnZS5odG1sJ10sIGNodW5rX3Rlc3RzX3J1bikKIAogICAgIGRlZiB0ZXN0X3J1bl9zaW5n
bHkoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tcnVuLXNp
bmdseSddKSkKKyAgICAgICAgYmF0Y2hfdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihbJy0tcnVu
LXNpbmdseSddKQorICAgICAgICBmb3IgYmF0Y2ggaW4gYmF0Y2hfdGVzdHNfcnVuOgorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGJhdGNoKSwgMSwgJyVzIGhhZCB0b28gbWFueSB0
ZXN0cycgJSAnLCAnLmpvaW4oYmF0Y2gpKQogCiAgICAgZGVmIHRlc3Rfc2luZ2xlX2ZpbGUoc2Vs
Zik6Ci0gICAgICAgICMgRklYTUU6IHZlcmlmeSAjIG9mIHRlc3RzIHJ1bgotICAgICAgICBzZWxm
LmFzc2VydFRydWUocGFzc2luZ19ydW4oWydwYXNzZXMvdGV4dC5odG1sJ10sIHRlc3RzX2luY2x1
ZGVkPVRydWUpKQorICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsncGFzc2VzL3Rl
eHQuaHRtbCddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydwYXNzZXMvdGV4dC5odG1sJ10sIHRlc3RzX3J1bikK
IAogICAgIGRlZiB0ZXN0X3Rlc3RfbGlzdChzZWxmKToKICAgICAgICAgZmlsZW5hbWUgPSB0ZW1w
ZmlsZS5ta3RlbXAoKQogICAgICAgICB0bXBmaWxlID0gZmlsZShmaWxlbmFtZSwgbW9kZT0ndysn
KQogICAgICAgICB0bXBmaWxlLndyaXRlKCdwYXNzZXMvdGV4dC5odG1sJykKICAgICAgICAgdG1w
ZmlsZS5jbG9zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tdGVz
dC1saXN0PSVzJyAlIGZpbGVuYW1lXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RzX2luY2x1ZGVkPVRydWUpKQorICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNf
cnVuKFsnLS10ZXN0LWxpc3Q9JXMnICUgZmlsZW5hbWVdLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBm
bGF0dGVuX2JhdGNoZXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydwYXNzZXMv
dGV4dC5odG1sJ10sIHRlc3RzX3J1bikKICAgICAgICAgb3MucmVtb3ZlKGZpbGVuYW1lKQogICAg
ICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4oWyctLXRlc3QtbGlzdD0lcycg
JSBmaWxlbmFtZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0c19pbmNsdWRlZD1UcnVlKQpAQCAtMjczLDcgKzM0Myw3IEBAIGNsYXNzIE1haW5UZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZGVmIGdldF9wb3J0X2Zvcl9ydW4oYXJncyk6CiAg
ICAgICAgICAgICBvcHRpb25zLCBwYXJzZWRfYXJncyA9IHJ1bl93ZWJraXRfdGVzdHMucGFyc2Vf
YXJncyhhcmdzKQogICAgICAgICAgICAgdGVzdF9wb3J0ID0gSW1hZ2VEaWZmVGVzdFBvcnQob3B0
aW9ucz1vcHRpb25zLCB1c2VyPU1vY2tVc2VyKCkpCi0gICAgICAgICAgICBwYXNzaW5nX3J1bihh
cmdzPWFyZ3MsIHBvcnRfb2JqPXRlc3RfcG9ydCwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKKyAgICAg
ICAgICAgIHBhc3NpbmdfcnVuKGFyZ3MsIHBvcnRfb2JqPXRlc3RfcG9ydCwgdGVzdHNfaW5jbHVk
ZWQ9VHJ1ZSkKICAgICAgICAgICAgIHJldHVybiB0ZXN0X3BvcnQKIAogICAgICAgICBiYXNlX2Fy
Z3MgPSBbJy0tcGl4ZWwtdGVzdHMnLCAnZmFpbHVyZXMvZXhwZWN0ZWQvKiddCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>