<?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>79737</bug_id>
          
          <creation_ts>2012-02-27 19:43:13 -0800</creation_ts>
          <short_desc>nrwt: implement simple &apos;virtual test suite&apos; support</short_desc>
          <delta_ts>2012-03-20 00:52:44 -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>New Bugs</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>
          <dependson>79736</dependson>
          <blocked>79431</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>566301</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-27 19:43:13 -0800</bug_when>
    <thetext>nrwt: implement simple &apos;virtual test suite&apos; support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566304</commentid>
    <comment_count>1</comment_count>
      <attachid>129173</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-27 19:50:18 -0800</bug_when>
    <thetext>Created attachment 129173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566405</commentid>
    <comment_count>2</comment_count>
      <attachid>129173</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-27 23:01:55 -0800</bug_when>
    <thetext>Comment on attachment 129173
Patch

This looks like a good approach.  I wonder if we can put some fo this logic outside of base.py.  That file is kind of growing out of control.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567005</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-28 13:03:14 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 129173 [details])
&gt; This looks like a good approach.  I wonder if we can put some fo this logic outside of base.py.  That file is kind of growing out of control.

As we discussed on IRC on Monday, I think it makes sense to move all of the logic for mapping tests to the filesystem out of base into some sort of &apos;finder&apos; or &apos;database&apos; class. I decided to not do that until after I had these patches reviewed, just to avoid confusing things, though.

My current vision for base.py (and the port classes generally) is that they should be composite objects that either assemble the desired behavior from other components (like the http server and the test dabase, above) or just declare preferences (worker_model, default_child_processes, etc.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567046</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-28 13:43:10 -0800</bug_when>
    <thetext>That sounds like a good plan.  I&apos;ll read the patch again now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567051</commentid>
    <comment_count>5</comment_count>
      <attachid>129173</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-28 13:47:21 -0800</bug_when>
    <thetext>Comment on attachment 129173
Patch

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

Thanks!

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:1061
&gt; +        class VirtualTestSuite(object):

Can we move this declaration to the top-level?  It seems like folks should just call the constructor rather than calling the virtual_suite method.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:1074
&gt; +        if self._populated_virtual_test_suites is None:

Should we make this function @memoized?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567117</commentid>
    <comment_count>6</comment_count>
      <attachid>129173</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-28 14:43:04 -0800</bug_when>
    <thetext>Comment on attachment 129173
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:1061
&gt;&gt; +        class VirtualTestSuite(object):
&gt; 
&gt; Can we move this declaration to the top-level?  It seems like folks should just call the constructor rather than calling the virtual_suite method.

I actually thought having a member function that constructed the object provided better encapsulation and saved subclasses from having to import another symbol, but I don&apos;t feel strongly about it, so I will move this to file scope.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:1074
&gt;&gt; +        if self._populated_virtual_test_suites is None:
&gt; 
&gt; Should we make this function @memoized?

I&apos;m not as big a fan of using @memoized on functions that don&apos;t take any arguments, but I can add it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567847</commentid>
    <comment_count>7</comment_count>
      <attachid>129495</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-29 12:56:33 -0800</bug_when>
    <thetext>Created attachment 129495
update w/ review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567965</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-29 14:43:35 -0800</bug_when>
    <thetext>Committed r109266: &lt;http://trac.webkit.org/changeset/109266&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582829</commentid>
    <comment_count>9</comment_count>
      <attachid>129495</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-20 00:52:44 -0700</bug_when>
    <thetext>Comment on attachment 129495
update w/ review feedback

Cleared review? from attachment 129495 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129173</attachid>
            <date>2012-02-27 19:50:18 -0800</date>
            <delta_ts>2012-02-29 12:56:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79737-20120227195017.patch</filename>
            <type>text/plain</type>
            <size>13519</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDU2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTRlYjBmMDc4Njk5ZGNhNmU2ZDdkMmNiZWY5NjIxNTJi
ZTBkYTQwYy4uOTY1Yjc4MjVhNjkyMGFiYzM2N2JmMjQxOTA3NGM4MGEzOWI0ZjI5MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYw
IEBACiAyMDEyLTAyLTI3ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Q6IGltcGxlbWVudCBzaW1wbGUgJ3ZpcnR1YWwgdGVzdCBzdWl0ZScgc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdmVy
eSBiYXNpYyBzdXBwb3J0IGZvciAndmlydHVhbCB0ZXN0IHN1aXRlcycgdG8gTlJXVDoKKyAgICAg
ICAgYSB2aXJ0dWFsIHN1aXRlIGlzIGEgZGlyZWN0b3J5IHRoYXQgbWF5IGNvbnRhaW4gbmV3IGJh
c2VsaW5lcywKKyAgICAgICAgY29udGFpbnMgYSBwb2ludGVyIHRvIGEgImJhc2UiIGRpcmVjdG9y
eSBvZiB0ZXN0cywgYW5kIGFuCisgICAgICAgIG9wdGlvbmFsIGxpc3Qgb2YgY29tbWFuZCBsaW5l
IGFyZ3VtZW50cyB0byBwYXNzIHRvIERSVDsKKyAgICAgICAgaXQgZ2l2ZXMgdXMgYSB3YXkgdG8g
cnVuIGFsbCBvZiB0aGUgdGVzdHMgaW4gYSBnaXZlbiBkaXJlY3RvcnkKKyAgICAgICAgbXVsdGlw
bGUgdGltZXMgd2l0aCBtdWx0aXBsZSAocG90ZW50aWFsbHkgZGlmZmVyaW5nKSBzZXRzIG9mCisg
ICAgICAgIHJlc3VsdHMgYW5kIGJhc2VsaW5lcy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxl
bWVudHMgdGhlIHN1cHBvcnQgbmVlZGVkIGZvciB0aGlzIGZlYXR1cmUsIGFuZAorICAgICAgICBz
b21lIGJhc2ljIHRlc3RzLCBidXQgbm8gYWN0dWFsIHBvcnQgd2lsbCB1c2UgdGhlIGZlYXR1cmUg
eWV0LgorCisgICAgICAgIFRoaXMgaXMgcHJvYmFibHkgdGhlIHNpbXBsZXN0IGltcGxlbWVudGF0
aW9uIHBvc3NpYmxlIC0gdGhlCisgICAgICAgIGxpc3Qgb2YgdmlydHVhbCBzdWl0ZXMgd2lsbCBi
ZSBoYXJkLWNvZGVkIGludG8gdGhlIHBvcnQncworICAgICAgICBpbXBsZW1lbnRhdGlvbi4gT25l
IGNhbiBpbWFnaW5lIGEgbW9yZSBkYXRhLWRyaXZlbiBhcHByb2FjaAorICAgICAgICB3aGVyZSB0
aGUgc3VpdGUgaW5zdHJ1Y3Rpb25zIGFyZSBzdG9yZWQgaW4gYSBtYW5pZmVzdCBmaWxlCisgICAg
ICAgIGVpdGhlciBpbiBMYXlvdXRUZXN0cyAoYWxsIHN1aXRlcyBpbiBvbmUgZmlsZSksIG9yIHBl
ci1wb3J0LAorICAgICAgICBvciBwZXItZGlyZWN0b3J5LiBJZiB0aGlzIGZlYXR1cmUgZW5kcyB1
cCBiZWluZyB1c2VmdWwgd2UKKyAgICAgICAgc2hvdWxkIHByb2JhYmx5IGFkZCBzb21ldGhpbmcg
bGlrZSB0aGF0IHNvIHBlb3BsZSBkb24ndCBoYXZlCisgICAgICAgIHRvIGh1bnQgYXJvdW5kIGlu
IHRoZSBjb2RlIHRvIGFkZCBzdWl0ZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0Ll9faW5pdF9fKToKKyAgICAg
ICAgKFBvcnQuZXhwZWN0ZWRfZmlsZW5hbWUpOgorICAgICAgICAoUG9ydC50ZXN0cyk6CisgICAg
ICAgIChQb3J0KToKKyAgICAgICAgKFBvcnQuX3JlYWxfdGVzdHMpOgorICAgICAgICAoUG9ydC5f
ZHJpdmVyX2NsYXNzKToKKyAgICAgICAgKFBvcnQudmlydHVhbF90ZXN0X3N1aXRlcyk6CisgICAg
ICAgIChQb3J0LnZpcnR1YWxfc3VpdGUpOgorICAgICAgICAoUG9ydC52aXJ0dWFsX3N1aXRlLlZp
cnR1YWxUZXN0U3VpdGUpOgorICAgICAgICAoUG9ydC52aXJ0dWFsX3N1aXRlLlZpcnR1YWxUZXN0
U3VpdGUuX19pbml0X18pOgorICAgICAgICAoUG9ydC52aXJ0dWFsX3N1aXRlLlZpcnR1YWxUZXN0
U3VpdGUuX19yZXByX18pOgorICAgICAgICAoUG9ydC5wb3B1bGF0ZWRfdmlydHVhbF90ZXN0X3N1
aXRlcyk6CisgICAgICAgIChQb3J0Ll92aXJ0dWFsX3Rlc3RzKToKKyAgICAgICAgKFBvcnQubG9v
a3VwX3ZpcnR1YWxfdGVzdF9iYXNlKToKKyAgICAgICAgKFBvcnQubG9va3VwX3ZpcnR1YWxfdGVz
dF9hcmdzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2VfdW5pdHRlc3QucHk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfd2l0aF9za2lwcGVk
X2RpcmVjdG9yaWVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2RyaXZlci5weToKKyAgICAgICAgKERyaXZlcklucHV0Ll9faW5pdF9fKToKKyAgICAgICAg
KERyaXZlclByb3h5LnJ1bl90ZXN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgIChUZXN0UG9ydC52aXJ0dWFsX3Rlc3Rfc3Vp
dGVzKToKKyAgICAgICAgKFRlc3REcml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5
OgorICAgICAgICAoTWFpblRlc3QudGVzdF9hbGwpOgorICAgICAgICAoTWFpblRlc3QudGVzdF92
aXJ0dWFsKToKKworMjAxMi0wMi0yNyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9y
Zz4KKwogICAgICAgICBucnd0OiBzdXBwb3J0IG1vcmUgdGhhbiB0d28gZHJpdmVycyBpbiBEcml2
ZXJQcm94eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzk3MzYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlLnB5CmluZGV4IDJmYTc4NWEzZjVjYTA0MGVlZjA1MWQyNThlNjRlNTdiMzhhNDgzODIuLjAx
MGU5MmI4Y2FhOWVlZWY2MTQ2NDU0NzllNmIxNTM5YTlhMjRiYzggMTAwNzU1Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTE0MSw2ICsxNDEs
NyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3Rlc3RfY29uZmlndXJhdGlv
biA9IE5vbmUKICAgICAgICAgc2VsZi5fcmVmdGVzdF9saXN0ID0ge30KICAgICAgICAgc2VsZi5f
cmVzdWx0c19kaXJlY3RvcnkgPSBOb25lCisgICAgICAgIHNlbGYuX3BvcHVsYXRlZF92aXJ0dWFs
X3Rlc3Rfc3VpdGVzID0gTm9uZQogCiAgICAgZGVmIHdkaWZmX2F2YWlsYWJsZShzZWxmKToKICAg
ICAgICAgaWYgc2VsZi5fd2RpZmZfYXZhaWxhYmxlIGlzIE5vbmU6CkBAIC0zNzksNiArMzgwLDEx
IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgcGxhdGZvcm1fZGlyLCBiYXNlbGluZV9m
aWxlbmFtZSA9IHNlbGYuZXhwZWN0ZWRfYmFzZWxpbmVzKHRlc3RfbmFtZSwgc3VmZml4KVswXQog
ICAgICAgICBpZiBwbGF0Zm9ybV9kaXI6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHBsYXRmb3JtX2RpciwgYmFzZWxpbmVfZmlsZW5hbWUpCisKKyAgICAgICAgYWN0
dWFsX3Rlc3RfbmFtZSA9IHNlbGYubG9va3VwX3ZpcnR1YWxfdGVzdF9iYXNlKHRlc3RfbmFtZSkK
KyAgICAgICAgaWYgYWN0dWFsX3Rlc3RfbmFtZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmV4
cGVjdGVkX2ZpbGVuYW1lKGFjdHVhbF90ZXN0X25hbWUsIHN1ZmZpeCkKKwogICAgICAgICByZXR1
cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCBiYXNlbGlu
ZV9maWxlbmFtZSkKIAogICAgIGRlZiBleHBlY3RlZF9jaGVja3N1bShzZWxmLCB0ZXN0X25hbWUp
OgpAQCAtNDU5LDYgKzQ2NSw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgIGRlZiB0ZXN0
cyhzZWxmLCBwYXRocyk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiB0ZXN0cyBmb3Vu
ZC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWxfdGVzdHMocGF0aHMpLnVuaW9uKHNlbGYu
X3ZpcnR1YWxfdGVzdHMocGF0aHMsIHNlbGYucG9wdWxhdGVkX3ZpcnR1YWxfdGVzdF9zdWl0ZXMo
KSkpCisKKyAgICBkZWYgX3JlYWxfdGVzdHMoc2VsZiwgcGF0aHMpOgogICAgICAgICAjIFdoZW4g
Y29sbGVjdGluZyB0ZXN0IGNhc2VzLCBza2lwIHRoZXNlIGRpcmVjdG9yaWVzCiAgICAgICAgIHNr
aXBwZWRfZGlyZWN0b3JpZXMgPSBzZXQoWycuc3ZuJywgJ19zdm4nLCAncmVzb3VyY2VzJywgJ3Nj
cmlwdC10ZXN0cycsICdyZWZlcmVuY2UnLCAncmVmdGVzdCddKQogICAgICAgICBmaWxlcyA9IGZp
bmRfZmlsZXMuZmluZChzZWxmLl9maWxlc3lzdGVtLCBzZWxmLmxheW91dF90ZXN0c19kaXIoKSwg
cGF0aHMsIHNraXBwZWRfZGlyZWN0b3JpZXMsIFBvcnQuX2lzX3Rlc3RfZmlsZSkKQEAgLTEwNDMs
MyArMTA1Miw1NyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgZGVmIF9kcml2ZXJfY2xhc3Mo
c2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIHBvcnQncyBkcml2ZXIgaW1wbGVtZW50YXRp
b24uIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ1BvcnQuX2RyaXZlcl9j
bGFzcycpCisKKyAgICBkZWYgdmlydHVhbF90ZXN0X3N1aXRlcyhzZWxmKToKKyAgICAgICAgcmV0
dXJuIFtdCisKKyAgICBkZWYgdmlydHVhbF9zdWl0ZShzZWxmLCBuYW1lLCBiYXNlX2RpciwgYXJn
cyk6CisKKyAgICAgICAgY2xhc3MgVmlydHVhbFRlc3RTdWl0ZShvYmplY3QpOgorICAgICAgICAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJhc2UsIGFyZ3MsIHRlc3RzPU5vbmUpOgorICAg
ICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBzZWxmLmJhc2Ug
PSBiYXNlCisgICAgICAgICAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICAgICAgICAg
IHNlbGYudGVzdHMgPSB0ZXN0cyBvciBzZXQoKQorCisgICAgICAgICAgICBkZWYgX19yZXByX18o
c2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICJWaXJ0dWFsVGVzdFN1aXRlKCclcycsICcl
cycsICVzKSIgJSAoc2VsZi5uYW1lLCBzZWxmLmJhc2UsIHNlbGYuYXJncykKKworICAgICAgICBy
ZXR1cm4gVmlydHVhbFRlc3RTdWl0ZShuYW1lLCBiYXNlX2RpciwgYXJncykKKworICAgIGRlZiBw
b3B1bGF0ZWRfdmlydHVhbF90ZXN0X3N1aXRlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fcG9w
dWxhdGVkX3ZpcnR1YWxfdGVzdF9zdWl0ZXMgaXMgTm9uZToKKyAgICAgICAgICAgIHN1aXRlcyA9
IHNlbGYudmlydHVhbF90ZXN0X3N1aXRlcygpCisKKyAgICAgICAgICAgICMgU2FuaXR5LWNoZWNr
IHRoZSBzdWl0ZXMgdG8gbWFrZSBzdXJlIHRoZXkgZG9uJ3QgcG9pbnQgdG8gb3RoZXIgc3VpdGVz
LgorICAgICAgICAgICAgc3VpdGVfZGlycyA9IFtzdWl0ZS5uYW1lIGZvciBzdWl0ZSBpbiBzdWl0
ZXNdCisgICAgICAgICAgICBmb3Igc3VpdGUgaW4gc3VpdGVzOgorICAgICAgICAgICAgICAgIGFz
c2VydCBzdWl0ZS5iYXNlIG5vdCBpbiBzdWl0ZV9kaXJzCisKKyAgICAgICAgICAgIGZvciBzdWl0
ZSBpbiBzdWl0ZXM6CisgICAgICAgICAgICAgICAgYmFzZV90ZXN0cyA9IHNlbGYuX3JlYWxfdGVz
dHMoW3N1aXRlLmJhc2VdKQorICAgICAgICAgICAgICAgIHN1aXRlLnRlc3RzID0ge30KKyAgICAg
ICAgICAgICAgICBmb3IgdGVzdCBpbiBiYXNlX3Rlc3RzOgorICAgICAgICAgICAgICAgICAgICBz
dWl0ZS50ZXN0c1t0ZXN0LnJlcGxhY2Uoc3VpdGUuYmFzZSwgc3VpdGUubmFtZSldID0gdGVzdAor
ICAgICAgICAgICAgc2VsZi5fcG9wdWxhdGVkX3ZpcnR1YWxfdGVzdF9zdWl0ZXMgPSBzdWl0ZXMK
KyAgICAgICAgcmV0dXJuIHNlbGYuX3BvcHVsYXRlZF92aXJ0dWFsX3Rlc3Rfc3VpdGVzCisKKyAg
ICBkZWYgX3ZpcnR1YWxfdGVzdHMoc2VsZiwgcGF0aHMsIHN1aXRlcyk6CisgICAgICAgIHZpcnR1
YWxfdGVzdHMgPSBzZXQoKQorICAgICAgICBmb3Igc3VpdGUgaW4gc3VpdGVzOgorICAgICAgICAg
ICAgZm9yIHRlc3QgaW4gc3VpdGUudGVzdHM6CisgICAgICAgICAgICAgICAgaWYgYW55KHRlc3Qu
c3RhcnRzd2l0aChwKSBmb3IgcCBpbiBwYXRocyk6CisgICAgICAgICAgICAgICAgICAgIHZpcnR1
YWxfdGVzdHMuYWRkKHRlc3QpCisgICAgICAgIHJldHVybiB2aXJ0dWFsX3Rlc3RzCisKKyAgICBk
ZWYgbG9va3VwX3ZpcnR1YWxfdGVzdF9iYXNlKHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgIGZv
ciBzdWl0ZSBpbiBzZWxmLnBvcHVsYXRlZF92aXJ0dWFsX3Rlc3Rfc3VpdGVzKCk6CisgICAgICAg
ICAgICBpZiB0ZXN0X25hbWUuc3RhcnRzd2l0aChzdWl0ZS5uYW1lKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3VpdGUudGVzdHMuZ2V0KHRlc3RfbmFtZSkKKyAgICAgICAgcmV0dXJuIE5vbmUK
KworICAgIGRlZiBsb29rdXBfdmlydHVhbF90ZXN0X2FyZ3Moc2VsZiwgdGVzdF9uYW1lKToKKyAg
ICAgICAgZm9yIHN1aXRlIGluIHNlbGYucG9wdWxhdGVkX3ZpcnR1YWxfdGVzdF9zdWl0ZXMoKToK
KyAgICAgICAgICAgIGlmIHRlc3RfbmFtZS5zdGFydHN3aXRoKHN1aXRlLm5hbWUpOgorICAgICAg
ICAgICAgICAgIHJldHVybiBzdWl0ZS5hcmdzCisgICAgICAgIHJldHVybiBbXQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0
ZXN0LnB5CmluZGV4IDg0NjVmNjAxOWVhMWZjNDFiOGM3YzllNTlhZDZjNjE0OGY3ZGI2MWUuLjUx
OTE4Mzg5NjQxNTAyZDkzN2FkZmRiMjY1ZDJhMWI4YzkyMzAyNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3Qu
cHkKQEAgLTMxMiw3ICszMTIsNyBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAKICAgICBkZWYgdGVzdF9maW5kX3dpdGhfc2tpcHBlZF9kaXJlY3RvcmllcyhzZWxmKToKICAg
ICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHdpdGhfdGVzdHM9VHJ1ZSkKLSAgICAgICAgdGVz
dHMgPSBwb3J0LnRlc3RzKCd1c2Vyc2NyaXB0cycpCisgICAgICAgIHRlc3RzID0gcG9ydC50ZXN0
cyhbJ3VzZXJzY3JpcHRzJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndXNlcnNjcmlwdHMv
cmVzb3VyY2VzL2lmcmFtZS5odG1sJyBub3QgaW4gdGVzdHMpCiAKICAgICBkZWYgdGVzdF9maW5k
X3dpdGhfc2tpcHBlZF9kaXJlY3Rvcmllc18yKHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQppbmRleCA5ZjA2YTFlYjMwZjFj
ODQ2Yzg1MmY2YWQ2YjNlMGM0Yzk4MWU4NWQwLi5mMzA2NjFjZDExNzdkZGZlMzg3Yzc1ODJjOGE2
MDk5MTVlMTZlNzljIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2RyaXZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2RyaXZlci5weQpAQCAtMjYsNiArMjYsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAoraW1wb3J0IGNvcHkKIGltcG9ydCByZQogaW1wb3J0IHNobGV4CiAKQEAg
LTMzLDExICszNCwxMiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHBhdGgK
IAogCiBjbGFzcyBEcml2ZXJJbnB1dChvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
ZXN0X25hbWUsIHRpbWVvdXQsIGltYWdlX2hhc2gsIGlzX3JlZnRlc3QpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB0ZXN0X25hbWUsIHRpbWVvdXQsIGltYWdlX2hhc2gsIGlzX3JlZnRlc3QsIGFy
Z3M9Tm9uZSk6CiAgICAgICAgIHNlbGYudGVzdF9uYW1lID0gdGVzdF9uYW1lCiAgICAgICAgIHNl
bGYudGltZW91dCA9IHRpbWVvdXQgICMgaW4gbXMKICAgICAgICAgc2VsZi5pbWFnZV9oYXNoID0g
aW1hZ2VfaGFzaAogICAgICAgICBzZWxmLmlzX3JlZnRlc3QgPSBpc19yZWZ0ZXN0CisgICAgICAg
IHNlbGYuYXJncyA9IGFyZ3Mgb3IgW10KIAogCiBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToK
QEAgLTE5Miw4ICsxOTQsMTUgQEAgY2xhc3MgRHJpdmVyUHJveHkob2JqZWN0KToKICAgICAgICAg
cmV0dXJuIHNlbGYuX2RyaXZlci51cmlfdG9fdGVzdCh1cmkpCiAKICAgICBkZWYgcnVuX3Rlc3Qo
c2VsZiwgZHJpdmVyX2lucHV0KToKKyAgICAgICAgYmFzZSA9IHNlbGYuX3BvcnQubG9va3VwX3Zp
cnR1YWxfdGVzdF9iYXNlKGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpCisgICAgICAgIGlmIGJhc2U6
CisgICAgICAgICAgICB2aXJ0dWFsX2RyaXZlcl9pbnB1dCA9IGNvcHkuY29weShkcml2ZXJfaW5w
dXQpCisgICAgICAgICAgICB2aXJ0dWFsX2RyaXZlcl9pbnB1dC50ZXN0X25hbWUgPSBiYXNlCisg
ICAgICAgICAgICB2aXJ0dWFsX2RyaXZlcl9pbnB1dC5hcmdzID0gc2VsZi5fcG9ydC5sb29rdXBf
dmlydHVhbF90ZXN0X2FyZ3MoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkKKyAgICAgICAgICAgIHJl
dHVybiBzZWxmLnJ1bl90ZXN0KHZpcnR1YWxfZHJpdmVyX2lucHV0KQorCiAgICAgICAgIHBpeGVs
X3Rlc3RzX25lZWRlZCA9IHNlbGYuX3BpeGVsX3Rlc3RzIG9yIGRyaXZlcl9pbnB1dC5pc19yZWZ0
ZXN0Ci0gICAgICAgIGNtZF9saW5lX2tleSA9IHNlbGYuX2NtZF9saW5lX2FzX2tleShwaXhlbF90
ZXN0c19uZWVkZWQsIFtdKQorICAgICAgICBjbWRfbGluZV9rZXkgPSBzZWxmLl9jbWRfbGluZV9h
c19rZXkocGl4ZWxfdGVzdHNfbmVlZGVkLCBkcml2ZXJfaW5wdXQuYXJncykKICAgICAgICAgaWYg
bm90IGNtZF9saW5lX2tleSBpbiBzZWxmLl9ydW5uaW5nX2RyaXZlcnM6CiAgICAgICAgICAgICBz
ZWxmLl9ydW5uaW5nX2RyaXZlcnNbY21kX2xpbmVfa2V5XSA9IHNlbGYuX21ha2VfZHJpdmVyKHBp
eGVsX3Rlc3RzX25lZWRlZCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IDEzMGE3ODczZGE4ZDMxM2QyZmUwMTAxZDUyZmY1MzY2
MzQxZDc1ZjguLjRjOTlkMDAxNzUzZWU0YjBlM2E1ZTY4M2JjMWQ1OThjODU3MTNhYTEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAg
LTE1OSw2ICsxNTksNyBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHgzNAogICAgIHRlc3RzLmFk
ZCgnaHR0cC90ZXN0cy9wYXNzZXMvdGV4dC5odG1sJykKICAgICB0ZXN0cy5hZGQoJ2h0dHAvdGVz
dHMvcGFzc2VzL2ltYWdlLmh0bWwnKQogICAgIHRlc3RzLmFkZCgnaHR0cC90ZXN0cy9zc2wvdGV4
dC5odG1sJykKKyAgICB0ZXN0cy5hZGQoJ3Bhc3Nlcy9hcmdzLmh0bWwnKQogICAgIHRlc3RzLmFk
ZCgncGFzc2VzL2Vycm9yLmh0bWwnLCBlcnJvcj0nc3R1ZmYgZ29pbmcgdG8gc3RkZXJyJykKICAg
ICB0ZXN0cy5hZGQoJ3Bhc3Nlcy9pbWFnZS5odG1sJykKICAgICB0ZXN0cy5hZGQoJ3Bhc3Nlcy9h
dWRpby5odG1sJywKQEAgLTMwNCw2ICszMDUsNyBAQCBXT05URklYIFNLSVAgOiBmYWlsdXJlcy9l
eHBlY3RlZC9leGNlcHRpb24uaHRtbCA9IENSQVNICiAgICAgICAgIGFkZF9maWxlKHRlc3QsICct
ZXhwZWN0ZWQudHh0JywgdGVzdC5leHBlY3RlZF90ZXh0KQogICAgICAgICBhZGRfZmlsZSh0ZXN0
LCAnLWV4cGVjdGVkLnBuZycsIHRlc3QuZXhwZWN0ZWRfaW1hZ2UpCiAKKyAgICBmaWxlc3lzdGVt
LndyaXRlX3RleHRfZmlsZShmaWxlc3lzdGVtLmpvaW4oTEFZT1VUX1RFU1RfRElSLCAndmlydHVh
bCcsICdhcmdzLWV4cGVjdGVkLnR4dCcpLCAnYXJncy10eHQgLS12aXJ0dWFsLWFyZycpCiAgICAg
IyBDbGVhciB0aGUgbGlzdCBvZiB3cml0dGVuIGZpbGVzIHNvIHRoYXQgd2UgY2FuIHdhdGNoIHdo
YXQgaGFwcGVucyBkdXJpbmcgdGVzdGluZy4KICAgICBmaWxlc3lzdGVtLmNsZWFyX3dyaXR0ZW5f
ZmlsZXMoKQogCkBAIC00ODksNiArNDkxLDEwIEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAg
IGRlZiBhbGxfYmFzZWxpbmVfdmFyaWFudHMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLkFM
TF9CQVNFTElORV9WQVJJQU5UUwogCisgICAgZGVmIHZpcnR1YWxfdGVzdF9zdWl0ZXMoc2VsZik6
CisgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICBzZWxmLnZpcnR1YWxfc3VpdGUoJ3ZpcnR1
YWwnLCAncGFzc2VzJywgWyctLXZpcnR1YWwtYXJnJ10pLAorICAgICAgICBdCiAKIGNsYXNzIFRl
c3REcml2ZXIoRHJpdmVyKToKICAgICAiIiJUZXN0L0R1bW15IGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBEdW1wUmVuZGVyVHJlZSBpbnRlcmZhY2UuIiIiCkBAIC01MDAsNiArNTA2LDcgQEAgY2xhc3Mg
VGVzdERyaXZlcihEcml2ZXIpOgogICAgIGRlZiBydW5fdGVzdChzZWxmLCB0ZXN0X2lucHV0KToK
ICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAgICAgICAgIHRlc3RfbmFtZSA9IHRl
c3RfaW5wdXQudGVzdF9uYW1lCisgICAgICAgIHRlc3RfYXJncyA9IHRlc3RfaW5wdXQuYXJncyBv
ciBbXQogICAgICAgICB0ZXN0ID0gc2VsZi5fcG9ydC5fdGVzdHNbdGVzdF9uYW1lXQogICAgICAg
ICBpZiB0ZXN0LmtleWJvYXJkOgogICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQK
QEAgLTUwOSw2ICs1MTYsMTAgQEAgY2xhc3MgVGVzdERyaXZlcihEcml2ZXIpOgogICAgICAgICAg
ICAgdGltZS5zbGVlcCgoZmxvYXQodGVzdF9pbnB1dC50aW1lb3V0KSAqIDQpIC8gMTAwMC4wKQog
CiAgICAgICAgIGF1ZGlvID0gTm9uZQorICAgICAgICBhY3R1YWxfdGV4dCA9IHRlc3QuYWN0dWFs
X3RleHQKKyAgICAgICAgaWYgYWN0dWFsX3RleHQgYW5kIHRlc3RfYXJncyBhbmQgdGVzdF9uYW1l
ID09ICdwYXNzZXMvYXJncy5odG1sJzoKKyAgICAgICAgICAgIGFjdHVhbF90ZXh0ID0gYWN0dWFs
X3RleHQgKyAnICcgKyAnICcuam9pbih0ZXN0X2FyZ3MpCisKICAgICAgICAgaWYgdGVzdC5hY3R1
YWxfYXVkaW86CiAgICAgICAgICAgICBhdWRpbyA9IGJhc2U2NC5iNjRkZWNvZGUodGVzdC5hY3R1
YWxfYXVkaW8pCiAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lID0gTm9uZQpAQCAtNTE2LDcg
KzUyNyw3IEBAIGNsYXNzIFRlc3REcml2ZXIoRHJpdmVyKToKICAgICAgICAgICAgIGNyYXNoZWRf
cHJvY2Vzc19uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpCiAgICAgICAgIGVsaWYgdGVz
dC53ZWJfcHJvY2Vzc19jcmFzaDoKICAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lID0g
J1dlYlByb2Nlc3MnCi0gICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQodGVzdC5hY3R1YWxfdGV4
dCwgdGVzdC5hY3R1YWxfaW1hZ2UsCisgICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQoYWN0dWFs
X3RleHQsIHRlc3QuYWN0dWFsX2ltYWdlLAogICAgICAgICAgICAgdGVzdC5hY3R1YWxfY2hlY2tz
dW0sIGF1ZGlvLCBjcmFzaD10ZXN0LmNyYXNoIG9yIHRlc3Qud2ViX3Byb2Nlc3NfY3Jhc2gsCiAg
ICAgICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1jcmFzaGVkX3Byb2Nlc3NfbmFtZSwKICAg
ICAgICAgICAgIHRlc3RfdGltZT10aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsIHRpbWVvdXQ9dGVz
dC50aW1lb3V0LCBlcnJvcj10ZXN0LmVycm9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2lu
dGVncmF0aW9udGVzdC5weQppbmRleCA2Njg3NmNjOGM4ODAzMGZhNTg5MTI5NWI0NGZmOGEwMWE1
OWYzNWNjLi4yYjM4MThmZjgxNmY2MjRlNzgwZmVhNDg2MTQ3NWIyMDRjNmEzMWE1IDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
X2ludGVncmF0aW9udGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQpAQCAtMjczLDYgKzI3Mywx
MCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3RyZWFtVGVzdGluZ01peGlu
KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1hY2NlbGVyYXRlZC0y
ZC1jYW52YXMnXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tbm8t
YWNjZWxlcmF0ZWQtMmQtY2FudmFzJ10pKQogCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAg
ICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4oW10sIHRlc3RzX2luY2x1ZGVk
PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlcywgdW5leHBlY3RlZF90ZXN0c19j
b3VudCkKKwogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRy
dWUocGFzc2luZ19ydW4oKSkKIApAQCAtNzQ4LDYgKzc1MiwxMCBAQCBjbGFzcyBNYWluVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSwgU3RyZWFtVGVzdGluZ01peGluKToKICAgICAgICAgdGVzdF9wb3J0
ID0gZ2V0X3BvcnRfZm9yX3J1bihiYXNlX2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Tm9uZSwgdGVzdF9wb3J0LnRvbGVyYW5jZV91c2VkX2Zvcl9kaWZmX2ltYWdlKQogCisgICAgZGVm
IHRlc3RfdmlydHVhbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVu
KFsncGFzc2VzL3RleHQuaHRtbCcsICdwYXNzZXMvYXJncy5odG1sJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndmlydHVhbC90ZXh0Lmh0bWwnLCAndmlydHVhbC9hcmdz
Lmh0bWwnXSkpCisKICAgICBkZWYgdGVzdF93b3JrZXJfbW9kZWxfX2lubGluZShzZWxmKToKICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS13b3JrZXItbW9kZWwnLCAnaW5s
aW5lJ10pKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129495</attachid>
            <date>2012-02-29 12:56:33 -0800</date>
            <delta_ts>2012-03-20 00:52:44 -0700</delta_ts>
            <desc>update w/ review feedback</desc>
            <filename>bug-79737-20120229125632.patch</filename>
            <type>text/plain</type>
            <size>13213</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MjQ0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTAwZDFiZjI5NWEyZDAyYmJhOGM1NDEwYmE0YTE3Yzkx
YTA5M2MxMi4uZjhhMTMxNjNkYzk2ZjVkMjRlNTQzMGZhMjQ0MWZlYjUzNzAyNmZmYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYw
IEBACiAyMDEyLTAyLTI5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Q6IGltcGxlbWVudCBzaW1wbGUgJ3ZpcnR1YWwgdGVzdCBzdWl0ZScgc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdmVy
eSBiYXNpYyBzdXBwb3J0IGZvciAndmlydHVhbCB0ZXN0IHN1aXRlcycgdG8gTlJXVDoKKyAgICAg
ICAgYSB2aXJ0dWFsIHN1aXRlIGlzIGEgZGlyZWN0b3J5IHRoYXQgbWF5IGNvbnRhaW4gbmV3IGJh
c2VsaW5lcywKKyAgICAgICAgY29udGFpbnMgYSBwb2ludGVyIHRvIGEgImJhc2UiIGRpcmVjdG9y
eSBvZiB0ZXN0cywgYW5kIGFuCisgICAgICAgIG9wdGlvbmFsIGxpc3Qgb2YgY29tbWFuZCBsaW5l
IGFyZ3VtZW50cyB0byBwYXNzIHRvIERSVDsKKyAgICAgICAgaXQgZ2l2ZXMgdXMgYSB3YXkgdG8g
cnVuIGFsbCBvZiB0aGUgdGVzdHMgaW4gYSBnaXZlbiBkaXJlY3RvcnkKKyAgICAgICAgbXVsdGlw
bGUgdGltZXMgd2l0aCBtdWx0aXBsZSAocG90ZW50aWFsbHkgZGlmZmVyaW5nKSBzZXRzIG9mCisg
ICAgICAgIHJlc3VsdHMgYW5kIGJhc2VsaW5lcy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxl
bWVudHMgdGhlIHN1cHBvcnQgbmVlZGVkIGZvciB0aGlzIGZlYXR1cmUsIGFuZAorICAgICAgICBz
b21lIGJhc2ljIHRlc3RzLCBidXQgbm8gYWN0dWFsIHBvcnQgd2lsbCB1c2UgdGhlIGZlYXR1cmUg
eWV0LgorCisgICAgICAgIFRoaXMgaXMgcHJvYmFibHkgdGhlIHNpbXBsZXN0IGltcGxlbWVudGF0
aW9uIHBvc3NpYmxlIC0gdGhlCisgICAgICAgIGxpc3Qgb2YgdmlydHVhbCBzdWl0ZXMgd2lsbCBi
ZSBoYXJkLWNvZGVkIGludG8gdGhlIHBvcnQncworICAgICAgICBpbXBsZW1lbnRhdGlvbi4gT25l
IGNhbiBpbWFnaW5lIGEgbW9yZSBkYXRhLWRyaXZlbiBhcHByb2FjaAorICAgICAgICB3aGVyZSB0
aGUgc3VpdGUgaW5zdHJ1Y3Rpb25zIGFyZSBzdG9yZWQgaW4gYSBtYW5pZmVzdCBmaWxlCisgICAg
ICAgIGVpdGhlciBpbiBMYXlvdXRUZXN0cyAoYWxsIHN1aXRlcyBpbiBvbmUgZmlsZSksIG9yIHBl
ci1wb3J0LAorICAgICAgICBvciBwZXItZGlyZWN0b3J5LiBJZiB0aGlzIGZlYXR1cmUgZW5kcyB1
cCBiZWluZyB1c2VmdWwgd2UKKyAgICAgICAgc2hvdWxkIHByb2JhYmx5IGFkZCBzb21ldGhpbmcg
bGlrZSB0aGF0IHNvIHBlb3BsZSBkb24ndCBoYXZlCisgICAgICAgIHRvIGh1bnQgYXJvdW5kIGlu
IHRoZSBjb2RlIHRvIGFkZCBzdWl0ZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0Ll9faW5pdF9fKToKKyAgICAg
ICAgKFBvcnQuZXhwZWN0ZWRfZmlsZW5hbWUpOgorICAgICAgICAoUG9ydC50ZXN0cyk6CisgICAg
ICAgIChQb3J0KToKKyAgICAgICAgKFBvcnQuX3JlYWxfdGVzdHMpOgorICAgICAgICAoUG9ydC5f
ZHJpdmVyX2NsYXNzKToKKyAgICAgICAgKFBvcnQudmlydHVhbF90ZXN0X3N1aXRlcyk6CisgICAg
ICAgIChQb3J0LnZpcnR1YWxfc3VpdGUpOgorICAgICAgICAoUG9ydC52aXJ0dWFsX3N1aXRlLlZp
cnR1YWxUZXN0U3VpdGUpOgorICAgICAgICAoUG9ydC52aXJ0dWFsX3N1aXRlLlZpcnR1YWxUZXN0
U3VpdGUuX19pbml0X18pOgorICAgICAgICAoUG9ydC52aXJ0dWFsX3N1aXRlLlZpcnR1YWxUZXN0
U3VpdGUuX19yZXByX18pOgorICAgICAgICAoUG9ydC5wb3B1bGF0ZWRfdmlydHVhbF90ZXN0X3N1
aXRlcyk6CisgICAgICAgIChQb3J0Ll92aXJ0dWFsX3Rlc3RzKToKKyAgICAgICAgKFBvcnQubG9v
a3VwX3ZpcnR1YWxfdGVzdF9iYXNlKToKKyAgICAgICAgKFBvcnQubG9va3VwX3ZpcnR1YWxfdGVz
dF9hcmdzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2VfdW5pdHRlc3QucHk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfd2l0aF9za2lwcGVk
X2RpcmVjdG9yaWVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2RyaXZlci5weToKKyAgICAgICAgKERyaXZlcklucHV0Ll9faW5pdF9fKToKKyAgICAgICAg
KERyaXZlclByb3h5LnJ1bl90ZXN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgIChUZXN0UG9ydC52aXJ0dWFsX3Rlc3Rfc3Vp
dGVzKToKKyAgICAgICAgKFRlc3REcml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5
OgorICAgICAgICAoTWFpblRlc3QudGVzdF9hbGwpOgorICAgICAgICAoTWFpblRlc3QudGVzdF92
aXJ0dWFsKToKKworMjAxMi0wMi0yOSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9y
Zz4KKwogICAgICAgICBucnd0OiBzdXBwb3J0IG1vcmUgdGhhbiB0d28gZHJpdmVycyBpbiBEcml2
ZXJQcm94eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzk3MzYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlLnB5CmluZGV4IDJmYTc4NWEzZjVjYTA0MGVlZjA1MWQyNThlNjRlNTdiMzhhNDgzODIuLjFm
NGVjZDNhNGZiYTdlYjIzMzQ2YzViZjg0YWRmNDJhMGRmYjliNTEgMTAwNzU1Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTM3OSw2ICszNzks
MTEgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBwbGF0Zm9ybV9kaXIsIGJhc2VsaW5l
X2ZpbGVuYW1lID0gc2VsZi5leHBlY3RlZF9iYXNlbGluZXModGVzdF9uYW1lLCBzdWZmaXgpWzBd
CiAgICAgICAgIGlmIHBsYXRmb3JtX2RpcjoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maWxl
c3lzdGVtLmpvaW4ocGxhdGZvcm1fZGlyLCBiYXNlbGluZV9maWxlbmFtZSkKKworICAgICAgICBh
Y3R1YWxfdGVzdF9uYW1lID0gc2VsZi5sb29rdXBfdmlydHVhbF90ZXN0X2Jhc2UodGVzdF9uYW1l
KQorICAgICAgICBpZiBhY3R1YWxfdGVzdF9uYW1lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
ZXhwZWN0ZWRfZmlsZW5hbWUoYWN0dWFsX3Rlc3RfbmFtZSwgc3VmZml4KQorCiAgICAgICAgIHJl
dHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksIGJhc2Vs
aW5lX2ZpbGVuYW1lKQogCiAgICAgZGVmIGV4cGVjdGVkX2NoZWNrc3VtKHNlbGYsIHRlc3RfbmFt
ZSk6CkBAIC00NTksNiArNDY0LDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogCiAgICAgZGVmIHRl
c3RzKHNlbGYsIHBhdGhzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBsaXN0IG9mIHRlc3RzIGZv
dW5kLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fcmVhbF90ZXN0cyhwYXRocykudW5pb24oc2Vs
Zi5fdmlydHVhbF90ZXN0cyhwYXRocywgc2VsZi5wb3B1bGF0ZWRfdmlydHVhbF90ZXN0X3N1aXRl
cygpKSkKKworICAgIGRlZiBfcmVhbF90ZXN0cyhzZWxmLCBwYXRocyk6CiAgICAgICAgICMgV2hl
biBjb2xsZWN0aW5nIHRlc3QgY2FzZXMsIHNraXAgdGhlc2UgZGlyZWN0b3JpZXMKICAgICAgICAg
c2tpcHBlZF9kaXJlY3RvcmllcyA9IHNldChbJy5zdm4nLCAnX3N2bicsICdyZXNvdXJjZXMnLCAn
c2NyaXB0LXRlc3RzJywgJ3JlZmVyZW5jZScsICdyZWZ0ZXN0J10pCiAgICAgICAgIGZpbGVzID0g
ZmluZF9maWxlcy5maW5kKHNlbGYuX2ZpbGVzeXN0ZW0sIHNlbGYubGF5b3V0X3Rlc3RzX2Rpcigp
LCBwYXRocywgc2tpcHBlZF9kaXJlY3RvcmllcywgUG9ydC5faXNfdGVzdF9maWxlKQpAQCAtMTA0
MywzICsxMDUxLDUzIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICBkZWYgX2RyaXZlcl9jbGFz
cyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgcG9ydCdzIGRyaXZlciBpbXBsZW1lbnRh
dGlvbi4iIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5fZHJpdmVy
X2NsYXNzJykKKworICAgIGRlZiB2aXJ0dWFsX3Rlc3Rfc3VpdGVzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gW10KKworICAgIEBtZW1vaXplZAorICAgIGRlZiBwb3B1bGF0ZWRfdmlydHVhbF90ZXN0
X3N1aXRlcyhzZWxmKToKKyAgICAgICAgc3VpdGVzID0gc2VsZi52aXJ0dWFsX3Rlc3Rfc3VpdGVz
KCkKKworICAgICAgICAjIFNhbml0eS1jaGVjayB0aGUgc3VpdGVzIHRvIG1ha2Ugc3VyZSB0aGV5
IGRvbid0IHBvaW50IHRvIG90aGVyIHN1aXRlcy4KKyAgICAgICAgc3VpdGVfZGlycyA9IFtzdWl0
ZS5uYW1lIGZvciBzdWl0ZSBpbiBzdWl0ZXNdCisgICAgICAgIGZvciBzdWl0ZSBpbiBzdWl0ZXM6
CisgICAgICAgICAgICBhc3NlcnQgc3VpdGUuYmFzZSBub3QgaW4gc3VpdGVfZGlycworCisgICAg
ICAgIGZvciBzdWl0ZSBpbiBzdWl0ZXM6CisgICAgICAgICAgICBiYXNlX3Rlc3RzID0gc2VsZi5f
cmVhbF90ZXN0cyhbc3VpdGUuYmFzZV0pCisgICAgICAgICAgICBzdWl0ZS50ZXN0cyA9IHt9Cisg
ICAgICAgICAgICBmb3IgdGVzdCBpbiBiYXNlX3Rlc3RzOgorICAgICAgICAgICAgICAgIHN1aXRl
LnRlc3RzW3Rlc3QucmVwbGFjZShzdWl0ZS5iYXNlLCBzdWl0ZS5uYW1lKV0gPSB0ZXN0CisgICAg
ICAgIHJldHVybiBzdWl0ZXMKKworICAgIGRlZiBfdmlydHVhbF90ZXN0cyhzZWxmLCBwYXRocywg
c3VpdGVzKToKKyAgICAgICAgdmlydHVhbF90ZXN0cyA9IHNldCgpCisgICAgICAgIGZvciBzdWl0
ZSBpbiBzdWl0ZXM6CisgICAgICAgICAgICBmb3IgdGVzdCBpbiBzdWl0ZS50ZXN0czoKKyAgICAg
ICAgICAgICAgICBpZiBhbnkodGVzdC5zdGFydHN3aXRoKHApIGZvciBwIGluIHBhdGhzKToKKyAg
ICAgICAgICAgICAgICAgICAgdmlydHVhbF90ZXN0cy5hZGQodGVzdCkKKyAgICAgICAgcmV0dXJu
IHZpcnR1YWxfdGVzdHMKKworICAgIGRlZiBsb29rdXBfdmlydHVhbF90ZXN0X2Jhc2Uoc2VsZiwg
dGVzdF9uYW1lKToKKyAgICAgICAgZm9yIHN1aXRlIGluIHNlbGYucG9wdWxhdGVkX3ZpcnR1YWxf
dGVzdF9zdWl0ZXMoKToKKyAgICAgICAgICAgIGlmIHRlc3RfbmFtZS5zdGFydHN3aXRoKHN1aXRl
Lm5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdWl0ZS50ZXN0cy5nZXQodGVzdF9uYW1l
KQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGxvb2t1cF92aXJ0dWFsX3Rlc3RfYXJn
cyhzZWxmLCB0ZXN0X25hbWUpOgorICAgICAgICBmb3Igc3VpdGUgaW4gc2VsZi5wb3B1bGF0ZWRf
dmlydHVhbF90ZXN0X3N1aXRlcygpOgorICAgICAgICAgICAgaWYgdGVzdF9uYW1lLnN0YXJ0c3dp
dGgoc3VpdGUubmFtZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1aXRlLmFyZ3MKKyAgICAg
ICAgcmV0dXJuIFtdCisKKworY2xhc3MgVmlydHVhbFRlc3RTdWl0ZShvYmplY3QpOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBiYXNlLCBhcmdzLCB0ZXN0cz1Ob25lKToKKyAgICAgICAg
c2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLmJhc2UgPSBiYXNlCisgICAgICAgIHNlbGYu
YXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi50ZXN0cyA9IHRlc3RzIG9yIHNldCgpCisKKyAgICBk
ZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiVmlydHVhbFRlc3RTdWl0ZSgnJXMn
LCAnJXMnLCAlcykiICUgKHNlbGYubmFtZSwgc2VsZi5iYXNlLCBzZWxmLmFyZ3MpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5p
dHRlc3QucHkKaW5kZXggODQ2NWY2MDE5ZWExZmM0MWI4YzdjOWU1OWFkNmM2MTQ4ZjdkYjYxZS4u
NTE5MTgzODk2NDE1MDJkOTM3YWRmZGIyNjVkMmExYjhjOTIzMDI3OSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVz
dC5weQpAQCAtMzEyLDcgKzMxMiw3IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKIAogICAgIGRlZiB0ZXN0X2ZpbmRfd2l0aF9za2lwcGVkX2RpcmVjdG9yaWVzKHNlbGYpOgog
ICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQod2l0aF90ZXN0cz1UcnVlKQotICAgICAgICB0
ZXN0cyA9IHBvcnQudGVzdHMoJ3VzZXJzY3JpcHRzJykKKyAgICAgICAgdGVzdHMgPSBwb3J0LnRl
c3RzKFsndXNlcnNjcmlwdHMnXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd1c2Vyc2NyaXB0
cy9yZXNvdXJjZXMvaWZyYW1lLmh0bWwnIG5vdCBpbiB0ZXN0cykKIAogICAgIGRlZiB0ZXN0X2Zp
bmRfd2l0aF9za2lwcGVkX2RpcmVjdG9yaWVzXzIoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5CmluZGV4IGFlZTZlZDY0NTFm
MjkxZGIyYzNiNTA4MTRkZmY4Nzk5Yzg4YWI0MjIuLmU1MzE1NmUxNWM0NGNkNDA0YTliNzEzMzFh
NDhiMWNlZTE1Mjk3OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZHJpdmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZHJpdmVyLnB5CkBAIC0yNiw2ICsyNiw3IEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCitpbXBvcnQgY29weQogaW1wb3J0IHJlCiBpbXBvcnQgc2hsZXgKIApA
QCAtMzMsMTEgKzM0LDEyIEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgcGF0
aAogCiAKIGNsYXNzIERyaXZlcklucHV0KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHRlc3RfbmFtZSwgdGltZW91dCwgaW1hZ2VfaGFzaCwgaXNfcmVmdGVzdCk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHRlc3RfbmFtZSwgdGltZW91dCwgaW1hZ2VfaGFzaCwgaXNfcmVmdGVzdCwg
YXJncz1Ob25lKToKICAgICAgICAgc2VsZi50ZXN0X25hbWUgPSB0ZXN0X25hbWUKICAgICAgICAg
c2VsZi50aW1lb3V0ID0gdGltZW91dCAgIyBpbiBtcwogICAgICAgICBzZWxmLmltYWdlX2hhc2gg
PSBpbWFnZV9oYXNoCiAgICAgICAgIHNlbGYuaXNfcmVmdGVzdCA9IGlzX3JlZnRlc3QKKyAgICAg
ICAgc2VsZi5hcmdzID0gYXJncyBvciBbXQogCiAKIGNsYXNzIERyaXZlck91dHB1dChvYmplY3Qp
OgpAQCAtMTkyLDggKzE5NCwxNSBAQCBjbGFzcyBEcml2ZXJQcm94eShvYmplY3QpOgogICAgICAg
ICByZXR1cm4gc2VsZi5fZHJpdmVyLnVyaV90b190ZXN0KHVyaSkKIAogICAgIGRlZiBydW5fdGVz
dChzZWxmLCBkcml2ZXJfaW5wdXQpOgorICAgICAgICBiYXNlID0gc2VsZi5fcG9ydC5sb29rdXBf
dmlydHVhbF90ZXN0X2Jhc2UoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkKKyAgICAgICAgaWYgYmFz
ZToKKyAgICAgICAgICAgIHZpcnR1YWxfZHJpdmVyX2lucHV0ID0gY29weS5jb3B5KGRyaXZlcl9p
bnB1dCkKKyAgICAgICAgICAgIHZpcnR1YWxfZHJpdmVyX2lucHV0LnRlc3RfbmFtZSA9IGJhc2UK
KyAgICAgICAgICAgIHZpcnR1YWxfZHJpdmVyX2lucHV0LmFyZ3MgPSBzZWxmLl9wb3J0Lmxvb2t1
cF92aXJ0dWFsX3Rlc3RfYXJncyhkcml2ZXJfaW5wdXQudGVzdF9uYW1lKQorICAgICAgICAgICAg
cmV0dXJuIHNlbGYucnVuX3Rlc3QodmlydHVhbF9kcml2ZXJfaW5wdXQpCisKICAgICAgICAgcGl4
ZWxfdGVzdHNfbmVlZGVkID0gc2VsZi5fcGl4ZWxfdGVzdHMgb3IgZHJpdmVyX2lucHV0LmlzX3Jl
ZnRlc3QKLSAgICAgICAgY21kX2xpbmVfa2V5ID0gc2VsZi5fY21kX2xpbmVfYXNfa2V5KHBpeGVs
X3Rlc3RzX25lZWRlZCwgW10pCisgICAgICAgIGNtZF9saW5lX2tleSA9IHNlbGYuX2NtZF9saW5l
X2FzX2tleShwaXhlbF90ZXN0c19uZWVkZWQsIGRyaXZlcl9pbnB1dC5hcmdzKQogICAgICAgICBp
ZiBub3QgY21kX2xpbmVfa2V5IGluIHNlbGYuX3J1bm5pbmdfZHJpdmVyczoKICAgICAgICAgICAg
IHNlbGYuX3J1bm5pbmdfZHJpdmVyc1tjbWRfbGluZV9rZXldID0gc2VsZi5fbWFrZV9kcml2ZXIo
cGl4ZWxfdGVzdHNfbmVlZGVkKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggNjdlOWVjMjRlNWUxZDk3N2QzNmQ0OTk2YjlmZDVk
OGJmZDhjNDllNy4uMzFiOGJlNmJkM2FmYTYxYmI2MzMxMmJmODk5ZTk1Y2JkYjQ4MzU2MyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpA
QCAtMzIsNiArMzIsNyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBQb3J0LCBEcml2ZXIsIERyaXZlck91dHB1dAorZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5iYXNlIGltcG9ydCBWaXJ0dWFsVGVzdFN1aXRl
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGlt
cG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVz
eXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIApAQCAtMTU5LDYgKzE2MCw3IEBAIGxh
eWVyIGF0ICgwLDApIHNpemUgODAweDM0CiAgICAgdGVzdHMuYWRkKCdodHRwL3Rlc3RzL3Bhc3Nl
cy90ZXh0Lmh0bWwnKQogICAgIHRlc3RzLmFkZCgnaHR0cC90ZXN0cy9wYXNzZXMvaW1hZ2UuaHRt
bCcpCiAgICAgdGVzdHMuYWRkKCdodHRwL3Rlc3RzL3NzbC90ZXh0Lmh0bWwnKQorICAgIHRlc3Rz
LmFkZCgncGFzc2VzL2FyZ3MuaHRtbCcpCiAgICAgdGVzdHMuYWRkKCdwYXNzZXMvZXJyb3IuaHRt
bCcsIGVycm9yPSdzdHVmZiBnb2luZyB0byBzdGRlcnInKQogICAgIHRlc3RzLmFkZCgncGFzc2Vz
L2ltYWdlLmh0bWwnKQogICAgIHRlc3RzLmFkZCgncGFzc2VzL2F1ZGlvLmh0bWwnLApAQCAtMzA0
LDYgKzMwNiw3IEBAIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2V4Y2VwdGlvbi5o
dG1sID0gQ1JBU0gKICAgICAgICAgYWRkX2ZpbGUodGVzdCwgJy1leHBlY3RlZC50eHQnLCB0ZXN0
LmV4cGVjdGVkX3RleHQpCiAgICAgICAgIGFkZF9maWxlKHRlc3QsICctZXhwZWN0ZWQucG5nJywg
dGVzdC5leHBlY3RlZF9pbWFnZSkKIAorICAgIGZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGZp
bGVzeXN0ZW0uam9pbihMQVlPVVRfVEVTVF9ESVIsICd2aXJ0dWFsJywgJ2FyZ3MtZXhwZWN0ZWQu
dHh0JyksICdhcmdzLXR4dCAtLXZpcnR1YWwtYXJnJykKICAgICAjIENsZWFyIHRoZSBsaXN0IG9m
IHdyaXR0ZW4gZmlsZXMgc28gdGhhdCB3ZSBjYW4gd2F0Y2ggd2hhdCBoYXBwZW5zIGR1cmluZyB0
ZXN0aW5nLgogICAgIGZpbGVzeXN0ZW0uY2xlYXJfd3JpdHRlbl9maWxlcygpCiAKQEAgLTQ4OSw2
ICs0OTIsMTAgQEAgY2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgZGVmIGFsbF9iYXNlbGluZV92
YXJpYW50cyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuQUxMX0JBU0VMSU5FX1ZBUklBTlRT
CiAKKyAgICBkZWYgdmlydHVhbF90ZXN0X3N1aXRlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFsK
KyAgICAgICAgICAgIFZpcnR1YWxUZXN0U3VpdGUoJ3ZpcnR1YWwnLCAncGFzc2VzJywgWyctLXZp
cnR1YWwtYXJnJ10pLAorICAgICAgICBdCiAKIGNsYXNzIFRlc3REcml2ZXIoRHJpdmVyKToKICAg
ICAiIiJUZXN0L0R1bW15IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEdW1wUmVuZGVyVHJlZSBpbnRl
cmZhY2UuIiIiCkBAIC01MDAsNiArNTA3LDcgQEAgY2xhc3MgVGVzdERyaXZlcihEcml2ZXIpOgog
ICAgIGRlZiBydW5fdGVzdChzZWxmLCB0ZXN0X2lucHV0KToKICAgICAgICAgc3RhcnRfdGltZSA9
IHRpbWUudGltZSgpCiAgICAgICAgIHRlc3RfbmFtZSA9IHRlc3RfaW5wdXQudGVzdF9uYW1lCisg
ICAgICAgIHRlc3RfYXJncyA9IHRlc3RfaW5wdXQuYXJncyBvciBbXQogICAgICAgICB0ZXN0ID0g
c2VsZi5fcG9ydC5fdGVzdHNbdGVzdF9uYW1lXQogICAgICAgICBpZiB0ZXN0LmtleWJvYXJkOgog
ICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKQEAgLTUwOSw2ICs1MTcsMTAgQEAg
Y2xhc3MgVGVzdERyaXZlcihEcml2ZXIpOgogICAgICAgICAgICAgdGltZS5zbGVlcCgoZmxvYXQo
dGVzdF9pbnB1dC50aW1lb3V0KSAqIDQpIC8gMTAwMC4wKQogCiAgICAgICAgIGF1ZGlvID0gTm9u
ZQorICAgICAgICBhY3R1YWxfdGV4dCA9IHRlc3QuYWN0dWFsX3RleHQKKyAgICAgICAgaWYgYWN0
dWFsX3RleHQgYW5kIHRlc3RfYXJncyBhbmQgdGVzdF9uYW1lID09ICdwYXNzZXMvYXJncy5odG1s
JzoKKyAgICAgICAgICAgIGFjdHVhbF90ZXh0ID0gYWN0dWFsX3RleHQgKyAnICcgKyAnICcuam9p
bih0ZXN0X2FyZ3MpCisKICAgICAgICAgaWYgdGVzdC5hY3R1YWxfYXVkaW86CiAgICAgICAgICAg
ICBhdWRpbyA9IGJhc2U2NC5iNjRkZWNvZGUodGVzdC5hY3R1YWxfYXVkaW8pCiAgICAgICAgIGNy
YXNoZWRfcHJvY2Vzc19uYW1lID0gTm9uZQpAQCAtNTE2LDcgKzUyOCw3IEBAIGNsYXNzIFRlc3RE
cml2ZXIoRHJpdmVyKToKICAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5f
cG9ydC5kcml2ZXJfbmFtZSgpCiAgICAgICAgIGVsaWYgdGVzdC53ZWJfcHJvY2Vzc19jcmFzaDoK
ICAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lID0gJ1dlYlByb2Nlc3MnCi0gICAgICAg
IHJldHVybiBEcml2ZXJPdXRwdXQodGVzdC5hY3R1YWxfdGV4dCwgdGVzdC5hY3R1YWxfaW1hZ2Us
CisgICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQoYWN0dWFsX3RleHQsIHRlc3QuYWN0dWFsX2lt
YWdlLAogICAgICAgICAgICAgdGVzdC5hY3R1YWxfY2hlY2tzdW0sIGF1ZGlvLCBjcmFzaD10ZXN0
LmNyYXNoIG9yIHRlc3Qud2ViX3Byb2Nlc3NfY3Jhc2gsCiAgICAgICAgICAgICBjcmFzaGVkX3By
b2Nlc3NfbmFtZT1jcmFzaGVkX3Byb2Nlc3NfbmFtZSwKICAgICAgICAgICAgIHRlc3RfdGltZT10
aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsIHRpbWVvdXQ9dGVzdC50aW1lb3V0LCBlcnJvcj10ZXN0
LmVycm9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQppbmRl
eCA2Njg3NmNjOGM4ODAzMGZhNTg5MTI5NWI0NGZmOGEwMWE1OWYzNWNjLi4yYjM4MThmZjgxNmY2
MjRlNzgwZmVhNDg2MTQ3NWIyMDRjNmEzMWE1IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
X2ludGVncmF0aW9udGVzdC5weQpAQCAtMjczLDYgKzI3MywxMCBAQCBjbGFzcyBNYWluVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSwgU3RyZWFtVGVzdGluZ01peGluKToKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1hY2NlbGVyYXRlZC0yZC1jYW52YXMnXSkpCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tbm8tYWNjZWxlcmF0ZWQtMmQtY2FudmFz
J10pKQogCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICByZXMsIG91dCwgZXJyLCB1
c2VyID0gbG9nZ2luZ19ydW4oW10sIHRlc3RzX2luY2x1ZGVkPVRydWUpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKHJlcywgdW5leHBlY3RlZF90ZXN0c19jb3VudCkKKwogICAgIGRlZiB0ZXN0
X2Jhc2ljKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oKSkKIApA
QCAtNzQ4LDYgKzc1MiwxMCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3Ry
ZWFtVGVzdGluZ01peGluKToKICAgICAgICAgdGVzdF9wb3J0ID0gZ2V0X3BvcnRfZm9yX3J1bihi
YXNlX2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgdGVzdF9wb3J0LnRvbGVy
YW5jZV91c2VkX2Zvcl9kaWZmX2ltYWdlKQogCisgICAgZGVmIHRlc3RfdmlydHVhbChzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsncGFzc2VzL3RleHQuaHRtbCcs
ICdwYXNzZXMvYXJncy5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAndmlydHVhbC90ZXh0Lmh0bWwnLCAndmlydHVhbC9hcmdzLmh0bWwnXSkpCisKICAgICBkZWYg
dGVzdF93b3JrZXJfbW9kZWxfX2lubGluZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHBhc3NpbmdfcnVuKFsnLS13b3JrZXItbW9kZWwnLCAnaW5saW5lJ10pKQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>