<?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>176104</bug_id>
          
          <creation_ts>2017-08-30 08:29:38 -0700</creation_ts>
          <short_desc>[GTK] Improve the way unit test are run and the results reported</short_desc>
          <delta_ts>2017-09-27 12:44:13 -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>WebKit 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>Gtk, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>lforschler</cc>
    
    <cc>Ms2ger</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343540</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-30 08:29:38 -0700</bug_when>
    <thetext>There are several issues with the way unit tests are run by run-gtk-tests and also with the way results are reported:

 - The results summary only mentions the test binaries, not the actual test cases, so you always have to scroll up to find the actual test cases failing.
 - The number of reported failures is the number of test binaries that failed, so if a new test case fails for the same binary in a new revision, we won&apos;t notice it just looking at the number of failures.
 - We show detailed information about skipped test ins the results summary, which is just noise.
 - In the case of glib tests, when a test case times out, we finish the test suite, instead of continue with the rest of the test case like we do for normal failures or crashes. If a new test case fails after a test case that times out we will not notice until we fix or skip the test cases timing out.
 - In the case of glib tests, the timeout is aplied to the whole suite, instead of per test case, we have a hack to make it longer only for that. It has worked so far, but it doesn&apos;t scale, and it&apos;s an ugly hack.
 - It&apos;s not currently possible to detect flaky tests, because again, we know the binaries/suites that failed but not the actual test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343543</commentid>
    <comment_count>1</comment_count>
      <attachid>319362</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-30 08:40:58 -0700</bug_when>
    <thetext>Created attachment 319362
Patch

Current test results is something like this:

Tests failed (4): /WebKit2Gtk/TestWebKitWebContext, /WebKit2Gtk/TestWebExtensions, /WebKit2Gtk/TestWebsiteData, /WebKit2Gtk/TestBackForwardList
Tests that timed out (3): /WebKit2Gtk/TestWebViewEditor, /WebKit2Gtk/TestWebKitWebView, /WebKit2/TestWebKit2

With the patch the output is like this:

Unexpected failures (9)
    /WebKit2Gtk/TestSSL
        /webkit2/WebKitWebView/tls-subresource
        /webkit2/WebKitWebView/load-failed-with-tls-errors
        /webkit2/WebKitWebView/ssl
    /WebKit2Gtk/TestAutomationSession
        /webkit2/WebKitAutomationSession/request-session
    /WTF/TestWTF
        WTF_DateMath.calculateLocalTimeOffset
    /WebKit2Gtk/TestWebKitAccessibility
        /webkit2/WebKitAccessibility/atspi-basic-hierarchy
    /WebKit2Gtk/TestLoaderClient
        /webkit2/WebKitWebView/title
    /WebKit2Gtk/TestWebExtensions
        /webkit2/WebKitWebExtension/form-controls-associated-signal
    /WebKit2Gtk/TestUIClient
        /webkit2/WebKitWebView/mouse-target

Unexpected crashes (4)
    /WebKit2/TestWebKit2
        WebKit2.InputMethodFilterContextFocusOutDuringOngoingComposition
        WebKit2.InputMethodFilterContextMouseClickDuringOngoingComposition
        WebKit2.MouseMoveAfterCrash
        WebKit2.InputMethodFilterComposeKey

Unexpected timeouts (2)
    /WebKit2Gtk/TestLoaderClient
        /webkit2/WebKitWebView/reload
        /webkit2/WebKitURIRequest/http-headers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343546</commentid>
    <comment_count>2</comment_count>
      <attachid>319364</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-30 08:50:16 -0700</bug_when>
    <thetext>Created attachment 319364
Patch

Just fixed some typos in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343922</commentid>
    <comment_count>3</comment_count>
      <attachid>319364</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-08-31 07:22:48 -0700</bug_when>
    <thetext>Comment on attachment 319364
Patch

The information about the test run is much cleaner now. Thanks!
BTW.. I think the buildmaster is not automatically restarted, so you may have to send a mail to admin &lt;at&gt; webkit.org requesting it to get restarted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343968</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-31 10:01:55 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #3)
&gt; Comment on attachment 319364 [details]
&gt; Patch
&gt; 
&gt; The information about the test run is much cleaner now. Thanks!
&gt; BTW.. I think the buildmaster is not automatically restarted, so you may
&gt; have to send a mail to admin &lt;at&gt; webkit.org requesting it to get restarted

Thanks! 

Lucas, do you need to manually restart the master when the config file changes? Maybe it&apos;s easier if you just cq+ this when you can, and restart the master right after the patch lands?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343971</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-08-31 10:07:17 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #4)
&gt; (In reply to Carlos Alberto Lopez Perez from comment #3)
&gt; &gt; Comment on attachment 319364 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; The information about the test run is much cleaner now. Thanks!
&gt; &gt; BTW.. I think the buildmaster is not automatically restarted, so you may
&gt; &gt; have to send a mail to admin &lt;at&gt; webkit.org requesting it to get restarted
&gt; 
&gt; Thanks! 
&gt; 
&gt; Lucas, do you need to manually restart the master when the config file
&gt; changes? Maybe it&apos;s easier if you just cq+ this when you can, and restart
&gt; the master right after the patch lands?

I think the sync/copy from the webkit repo to the server where the config runs is done manually. So what I do when doing changes to the master is this:

 - Land the patch
 - Send an email to admin at webkit.org telling that I landing the patch at rxxxx and asking if they can schedule a restart of the master to apply the new config.

My 2 cents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344330</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-31 23:36:42 -0700</bug_when>
    <thetext>Committed r221474: &lt;http://trac.webkit.org/changeset/221474&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353630</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:44:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693855&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319362</attachid>
            <date>2017-08-30 08:40:58 -0700</date>
            <delta_ts>2017-08-30 08:50:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-run-gtk-tests.diff</filename>
            <type>text/plain</type>
            <size>18204</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL21hc3Rlci5jZmcgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9tYXN0ZXIuY2ZnCmluZGV4IGI0MzAzMDhiODk5Li5mZTQ2NjI5M2JiNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFz
dGVyLmNmZworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9tYXN0ZXIuY2ZnCkBAIC02NTgsMjggKzY1OCwyMyBAQCBjbGFzcyBSdW5HdGtBUElUZXN0
cyhzaGVsbC5UZXN0KToKICAgICAgICAgc2VsZi5za2lwcGVkVGVzdHMgPSAwCiAgICAgICAgIHNl
bGYuc3RhdHVzTGluZSA9IFtdCiAKLSAgICAgICAgZm91bmRJdGVtcyA9IHJlLmZpbmRhbGwoIlRl
c3RzIGZhaWxlZCBcKChcZCspXCk6IiwgbG9nVGV4dCkKKyAgICAgICAgZm91bmRJdGVtcyA9IHJl
LmZpbmRhbGwoIlVuZXhwZWN0ZWQgZmFpbHVyZXMgXCgoXGQrKVwpOiIsIGxvZ1RleHQpCiAgICAg
ICAgIGlmIChmb3VuZEl0ZW1zKToKICAgICAgICAgICAgIHNlbGYuaW5jb3JyZWN0VGVzdHMgPSBp
bnQoZm91bmRJdGVtc1swXSkKIAotICAgICAgICBmb3VuZEl0ZW1zID0gcmUuZmluZGFsbCgiVGVz
dHMgdGhhdCBjcmFzaGVkIFwoKFxkKylcKToiLCBsb2dUZXh0KQorICAgICAgICBmb3VuZEl0ZW1z
ID0gcmUuZmluZGFsbCgiVW5leHBlY3RlZCBjcmFzaGVzIFwoKFxkKylcKToiLCBsb2dUZXh0KQog
ICAgICAgICBpZiAoZm91bmRJdGVtcyk6CiAgICAgICAgICAgICBzZWxmLmNyYXNoZWRUZXN0cyA9
IGludChmb3VuZEl0ZW1zWzBdKQogCi0gICAgICAgIGZvdW5kSXRlbXMgPSByZS5maW5kYWxsKCJU
ZXN0cyB0aGF0IHRpbWVkIG91dCBcKChcZCspXCk6IiwgbG9nVGV4dCkKKyAgICAgICAgZm91bmRJ
dGVtcyA9IHJlLmZpbmRhbGwoIlVuZXhwZWN0ZWQgdGltZW91dHMgXCgoXGQrKVwpOiIsIGxvZ1Rl
eHQpCiAgICAgICAgIGlmIChmb3VuZEl0ZW1zKToKICAgICAgICAgICAgIHNlbGYudGltZWRPdXRU
ZXN0cyA9IGludChmb3VuZEl0ZW1zWzBdKQogCi0gICAgICAgIGZvdW5kSXRlbXMgPSByZS5maW5k
YWxsKCJUZXN0cyBza2lwcGVkIFwoKFxkKylcKToiLCBsb2dUZXh0KQotICAgICAgICBpZiAoZm91
bmRJdGVtcyk6Ci0gICAgICAgICAgICBzZWxmLnNraXBwZWRUZXN0cyA9IGludChmb3VuZEl0ZW1z
WzBdKQotCiAgICAgICAgIHNlbGYudG90YWxGYWlsZWRUZXN0cyA9IHNlbGYuaW5jb3JyZWN0VGVz
dHMgKyBzZWxmLmNyYXNoZWRUZXN0cyArIHNlbGYudGltZWRPdXRUZXN0cwogCiAgICAgICAgIGlm
IHNlbGYudG90YWxGYWlsZWRUZXN0cyA+IDA6CiAgICAgICAgICAgICBzZWxmLnN0YXR1c0xpbmUg
PSBbCi0gICAgICAgICAgICAgICAgIiVkIEFQSSB0ZXN0cyBmYWlsZWQsICVkIGNyYXNoZWQsICVk
IHRpbWVkIG91dCwgJWQgc2tpcHBlZCIgJQotICAgICAgICAgICAgICAgIChzZWxmLmluY29ycmVj
dFRlc3RzLCBzZWxmLmNyYXNoZWRUZXN0cywgc2VsZi50aW1lZE91dFRlc3RzLCBzZWxmLnNraXBw
ZWRUZXN0cykKKyAgICAgICAgICAgICAgICAiJWQgQVBJIHRlc3RzIGZhaWxlZCwgJWQgY3Jhc2hl
ZCwgJWQgdGltZWQgb3V0IiAlIChzZWxmLmluY29ycmVjdFRlc3RzLCBzZWxmLmNyYXNoZWRUZXN0
cywgc2VsZi50aW1lZE91dFRlc3RzKQogICAgICAgICAgICAgXQogCiAgICAgZGVmIGV2YWx1YXRl
Q29tbWFuZChzZWxmLCBjbWQpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGEyMTNhYjM5MmIzLi4yNmU5OTU4ZGY5YSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE3
LTA4LTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBJbXByb3ZlIHRoZSB3YXkgdW5pdCB0ZXN0IGFyZSBydW4gYW5kIHRoZSByZXN1
bHRzIHJlcG9ydGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzYxMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVyZSBhcmUgc2V2ZXJhbCBpc3N1ZXMgd2l0aCB0aGUgd2F5IHVuaXQgdGVzdHMgYXJl
IHJ1biBieSBydW4tZ3RrLXRlc3RzIGFuZCBhbHNvIHdpdGggdGhlIHdheSByZXN1bHRzIGFyZQor
ICAgICAgICByZXBvcnRlZDoKKworICAgICAgICAgLSBUaGUgcmVzdWx0cyBzdW1tYXJ5IG9ubHkg
bWVudGlvbnMgdGhlIHRlc3QgYmluYXJpZXMsIG5vdCB0aGUgYWN0dWFsIHRlc3QgY2FzZXMsIHNv
IHlvdSBhbHdheXMgaGF2ZSB0byBzY3JvbGwKKyAgICAgICAgICAgdXAgdG8gZmluZCB0aGUgYWN0
dWFsIHRlc3QgY2FzZXMgZmFpbGluZy4KKyAgICAgICAgIC0gVGhlIG51bWJlciBvZiByZXBvcnRl
ZCBmYWlsdXJlcyBpcyB0aGUgbnVtYmVyIG9mIHRlc3QgYmluYXJpZXMgdGhhdCBmYWlsZWQsIHNv
IGlmIGEgbmV3IHRlc3QgY2FzZSBmYWlscyBmb3IKKyAgICAgICAgICAgdGhlIHNhbWUgYmluYXJ5
IGluIGEgbmV3IHJldmlzaW9uLCB3ZSB3b24ndCBub3RpY2UgaXQganVzdCBsb29raW5nIGF0IHRo
ZSBudW1iZXIgb2YgZmFpbHVyZXMuCisgICAgICAgICAtIFdlIHNob3cgZGV0YWlsZWQgaW5mb3Jt
YXRpb24gYWJvdXQgc2tpcHBlZCB0ZXN0IGlucyB0aGUgcmVzdWx0cyBzdW1tYXJ5LCB3aGljaCBp
cyBqdXN0IG5vaXNlLgorICAgICAgICAgLSBJbiB0aGUgY2FzZSBvZiBnbGliIHRlc3RzLCB3aGVu
IGEgdGVzdCBjYXNlIHRpbWVzIG91dCwgd2UgZmluaXNoIHRoZSB0ZXN0IHN1aXRlLCBpbnN0ZWFk
IG9mIGNvbnRpbnVlIHdpdGggdGhlCisgICAgICAgICAgIHJlc3Qgb2YgdGhlIHRlc3QgY2FzZSBs
aWtlIHdlIGRvIGZvciBub3JtYWwgZmFpbHVyZXMgb3IgY3Jhc2hlcy4gSWYgYSBuZXcgdGVzdCBj
YXNlIGZhaWxzIGFmdGVyIGEgdGVzdCBjYXNlIHRoYXQKKyAgICAgICAgICAgdGltZXMgb3V0IHdl
IHdpbGwgbm90IG5vdGljZSB1bnRpbCB3ZSBmaXggb3Igc2tpcCB0aGUgdGVzdCBjYXNlcyB0aW1p
bmcgb3V0LgorICAgICAgICAgLSBJbiB0aGUgY2FzZSBvZiBnbGliIHRlc3RzLCB0aGUgdGltZW91
dCBpcyBhcGxpZWQgdG8gdGhlIHdob2xlIHN1aXRlLCBpbnN0ZWFkIG9mIHBlciB0ZXN0IGNhc2Us
IHdlIGhhdmUgYSBoYWNrCisgICAgICAgICAgIHRvIG1ha2UgaXQgbG9uZ2VyIG9ubHkgZm9yIHRo
YXQuIEl0IGhhcyB3b3JrZWQgc28gZmFyLCBidXQgaXQgZG9lc24ndCBzY2FsZSwgYW5kIGl0J3Mg
YW4gdWdseSBoYWNrLgorICAgICAgICAgLSBJdCdzIG5vdCBjdXJyZW50bHkgcG9zc2libGUgdG8g
ZGV0ZWN0IGZsYWt5IHRlc3RzLCBiZWNhdXNlIGFnYWluLCB3ZSBrbm93IHRoZSBiaW5hcmllcy9z
dWl0ZXMgdGhhdCBmYWlsZWQgYnV0CisgICAgICAgICAgIG5vdCB0aGUgYWN0dWFsIHRlc3QgY2Fz
ZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyBhbGwgdGhlc2UgaXNzdWVzIGFuZCBtYWtl
cyBpdCBwb3NzaWJsZSB0byBhZGQgc3VwcG9ydCBmb3IgZmxha3kgdGVzdHMgaW4gYSBmb2xsb3cg
dXAgcGF0Y2guCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9tYXN0ZXIuY2ZnOgorICAgICAgICAoUnVuR3RrQVBJVGVzdHMuY29tbWFuZENvbXBs
ZXRlKTogVXBkYXRlIHRoZSBSdW5HdGtBUElUZXN0cyBzdGVwIHRvIHBhcnNlIHRoZSBuZXcgb3V0
cHV0LgorICAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10ZXN0czoKKyAgICAgICAgKFRlc3RSdW5u
ZXIuX3N0YXJ0X3RpbWVvdXQpOiBIZWxwZXIgdG8gc3RhcnQgdGhlIHRpbWVvdXQgaWYgbmVlZGVk
LgorICAgICAgICAoVGVzdFJ1bm5lci5fc3RhcnRfdGltZW91dC5fYWxhcm1faGFuZGxlcik6IFJh
aXNlIHRpbWVvdXQgZXhjZXB0aW9uLgorICAgICAgICAoVGVzdFJ1bm5lci5fc3RvcF90aW1lb3V0
KTogSGVscGVyIHRvIHN0b3AgdGhlIHRpbWVvdXQgaWYgbmVlZGVkLgorICAgICAgICAoVGVzdFJ1
bm5lci5fd2FpdHBpZCk6IE1lcmdlZCB3YWl0cGlkIGFuZCByZXR1cm5fY29kZV9mcm9tX2V4aXRf
c3RhdHVzLgorICAgICAgICAoVGVzdFJ1bm5lci5fcnVuX3Rlc3RfZ2xpYik6IERvIG5vdCBkb3Vi
bGUgdGhlIHRpbW91dCBhbnltb3JlLCB3ZSBub3cgc3RhcnQvc3RvcCB0aGUgdGltZW91dCBmb3Ig
ZXZlcnkgdGVzdAorICAgICAgICBjYXNlLiBSZXR1cm4gYSBkaWN0aW9uYXJ5IHdoZXJlIGtleXMg
YXJlIHRlc3QgY2FzZXMgYW5kIHZhbHVlcyB0aGUgcmVzdWx0cyBvbmx5IGluIGNhc2Ugb2YgZmFp
bHVyZXMuCisgICAgICAgIChUZXN0UnVubmVyLl9ydW5fdGVzdF9nbGliLnBhcnNlX2xpbmUpOiBV
cGRhdGUgdGhlIHBhcnNlciB0byBhbHNvIGRldGVjdCB0ZXN0IGNhc2VzIGFuZCB0aGUgcmVzdWx0
cy4KKyAgICAgICAgKFRlc3RSdW5uZXIuX3J1bl90ZXN0X2dsaWIucGFyc2VfbGluZS5zZXRfdGVz
dF9yZXN1bHQpOiBIZWxwZXIgdG8gc2V0IHRoZSByZXN1bHQgb2YgYSB0ZXN0IGNhc2UuCisgICAg
ICAgIChUZXN0UnVubmVyLl9ydW5fZ29vZ2xlX3Rlc3QpOiBSZXR1cm4gYSBkaWN0aW9uYXJ5IHdo
ZXJlIGtleSBpcyB0aGUgdGVzdCBjYXNlIGFuZCB2YWx1ZSBpcyB0aGUgcmVzdWx0IG9ubHkgaW4K
KyAgICAgICAgY2FzZSBvZiBmYWlsdXJlLgorICAgICAgICAoVGVzdFJ1bm5lci5fcnVuX2dvb2ds
ZV90ZXN0X3N1aXRlKTogVXBkYXRlZCBub3cgdGhhdCBfcnVuX2dvb2dsZV90ZXN0IHJldHVybnMg
YSBkaWN0aW9uYXJ5LgorICAgICAgICAoVGVzdFJ1bm5lci5ydW5fdGVzdHMpOiBIYW5kbGUgdGhl
IHJlc3VsdHMgZGljdGlvbmFyeSBhbmQgc2hvdyB0aGUgcmVzdWx0cyB3aXRoIGluZm9ybWF0aW9u
IGFib3V0IHRlc3QgY2FzZXMKKyAgICAgICAgZmFpbGluZyBhbmQgZ3JvdXBlZCBieSB0ZXN0IGJp
bmFyaWVzLgorCiAyMDE3LTA4LTI5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMjEwNjQpOiBbR1RLXSBFZGl0b3Igbm90
IGNvcnJlY3RseSB3b3JraW5nIGFmdGVyIHIyMjEwNjQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvcnVuLWd0ay10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwppbmRleCBjZGY5
NTE2ZWI5My4uNmNhMzhlZmYzMTQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10
ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKQEAgLTI1OCwxNCArMjU4LDYg
QEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAg
ICAgcmV0dXJuIFRydWUKIAotICAgIGRlZiBfZ2V0X2NoaWxkX3BpZF9mcm9tX3Rlc3Rfb3V0cHV0
KHNlbGYsIG91dHB1dCk6Ci0gICAgICAgIGlmIG5vdCBvdXRwdXQ6Ci0gICAgICAgICAgICByZXR1
cm4gLTEKLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2gocidcKHBpZD0oP1A8Y2hpbGRfcGlkPlsw
LTldKylcKScsIG91dHB1dCkKLSAgICAgICAgaWYgbm90IG1hdGNoOgotICAgICAgICAgICAgcmV0
dXJuIC0xCi0gICAgICAgIHJldHVybiBpbnQobWF0Y2guZ3JvdXAoJ2NoaWxkX3BpZCcpKQotCiAg
ICAgZGVmIF9raWxsX3Byb2Nlc3Moc2VsZiwgcGlkKToKICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgb3Mua2lsbChwaWQsIFNJR0tJTEwpCkBAIC0yNzMsODMgKzI2NSwxMTkgQEAgY2xhc3MgVGVz
dFJ1bm5lcjoKICAgICAgICAgICAgICMgUHJvY2VzcyBhbHJlYWR5IGRpZWQuCiAgICAgICAgICAg
ICBwYXNzCiAKLSAgICBkZWYgX3J1bl90ZXN0X2NvbW1hbmQoc2VsZiwgY29tbWFuZCwgdGltZW91
dD0tMSk6Ci0gICAgICAgIGRlZiBhbGFybV9oYW5kbGVyKHNpZ251bSwgZnJhbWUpOgotICAgICAg
ICAgICAgcmFpc2UgVGVzdFRpbWVvdXQKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9zdGFy
dF90aW1lb3V0KHRpbWVvdXQpOgorICAgICAgICBpZiB0aW1lb3V0IDw9IDA6CisgICAgICAgICAg
ICByZXR1cm4KIAotICAgICAgICBjaGlsZF9waWQgPSBbLTFdCi0gICAgICAgIGRlZiBwYXJzZV9s
aW5lKGxpbmUsIGNoaWxkX3BpZCA9IGNoaWxkX3BpZCk6Ci0gICAgICAgICAgICBpZiBjaGlsZF9w
aWRbMF0gPT0gLTE6Ci0gICAgICAgICAgICAgICAgY2hpbGRfcGlkWzBdID0gc2VsZi5fZ2V0X2No
aWxkX3BpZF9mcm9tX3Rlc3Rfb3V0cHV0KGxpbmUpCisgICAgICAgIGRlZiBfYWxhcm1faGFuZGxl
cihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgIHJhaXNlIFRlc3RUaW1lb3V0CiAKLSAgICAg
ICAgICAgIHN5cy5zdGRvdXQud3JpdGUobGluZSkKKyAgICAgICAgc2lnbmFsKFNJR0FMUk0sIF9h
bGFybV9oYW5kbGVyKQorICAgICAgICBhbGFybSh0aW1lb3V0KQogCi0gICAgICAgIGRlZiB3YWl0
cGlkKHBpZCk6Ci0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLndhaXRwaWQocGlkLCAwKQotICAgICAgICAg
ICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSU9FcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICAg
ICAgaWYgZS5lcnJubyA9PSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0KLSAgICAgICAgZGVmIHJldHVybl9j
b2RlX2Zyb21fZXhpdF9zdGF0dXMoc3RhdHVzKToKLSAgICAgICAgICAgIGlmIG9zLldJRlNJR05B
TEVEKHN0YXR1cyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC1vcy5XVEVSTVNJRyhzdGF0dXMp
Ci0gICAgICAgICAgICBlbGlmIG9zLldJRkVYSVRFRChzdGF0dXMpOgotICAgICAgICAgICAgICAg
IHJldHVybiBvcy5XRVhJVFNUQVRVUyhzdGF0dXMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICMgU2hvdWxkIG5ldmVyIGhhcHBlbgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1
bnRpbWVFcnJvcigiVW5rbm93biBjaGlsZCBleGl0IHN0YXR1cyEiKQorICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgX3N0b3BfdGltZW91dCh0aW1lb3V0KToKKyAgICAgICAgaWYgdGltZW91dCA8
PSAwOgorICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgcGlkLCBmZCA9IG9zLmZvcmtwdHko
KQotICAgICAgICBpZiBwaWQgPT0gMDoKLSAgICAgICAgICAgIG9zLmV4ZWN2cGUoY29tbWFuZFsw
XSwgY29tbWFuZCwgc2VsZi5fdGVzdF9lbnYpCi0gICAgICAgICAgICBzeXMuZXhpdCgwKQorICAg
ICAgICBhbGFybSgwKQogCi0gICAgICAgIGlmIHRpbWVvdXQgPiAwOgotICAgICAgICAgICAgc2ln
bmFsKFNJR0FMUk0sIGFsYXJtX2hhbmRsZXIpCi0gICAgICAgICAgICBhbGFybSh0aW1lb3V0KQor
ICAgIGRlZiBfd2FpdHBpZChzZWxmLCBwaWQpOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGR1bW15LCBzdGF0dXMgPSBvcy53YWl0cGlkKHBp
ZCwgMCkKKyAgICAgICAgICAgICAgICBpZiBvcy5XSUZTSUdOQUxFRChzdGF0dXMpOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLW9zLldURVJNU0lHKHN0YXR1cykKKyAgICAgICAgICAgICAg
ICBpZiBvcy5XSUZFWElURUQoc3RhdHVzKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9z
LldFWElUU1RBVFVTKHN0YXR1cykKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb21tb24u
cGFyc2Vfb3V0cHV0X2xpbmVzKGZkLCBwYXJzZV9saW5lKQotICAgICAgICAgICAgaWYgdGltZW91
dCA+IDA6Ci0gICAgICAgICAgICAgICAgYWxhcm0oMCkKLSAgICAgICAgZXhjZXB0IFRlc3RUaW1l
b3V0OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHBpZCkKLSAgICAgICAgICAgIGlm
IGNoaWxkX3BpZFswXSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKGNo
aWxkX3BpZFswXSkKLSAgICAgICAgICAgIHJhaXNlCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgZHVtbXksIHN0YXR1cyA9IHdhaXRwaWQocGlkKQotICAgICAgICBleGNlcHQgT1NFcnJvciBh
cyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ0hJTEQ6CisgICAgICAgICAg
ICAgICAgIyBTaG91bGQgbmV2ZXIgaGFwcGVuCisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGlt
ZUVycm9yKCJVbmtub3duIGNoaWxkIGV4aXQgc3RhdHVzISIpCisgICAgICAgICAgICBleGNlcHQg
KE9TRXJyb3IsIElPRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBl
cnJuby5FSU5UUjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAg
ICBpZiBlLmVycm5vID09IGVycm5vLkVDSElMRDoKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlz
IGhhcHBlbnMgaWYgU0lHQ0xEIGlzIHNldCB0byBiZSBpZ25vcmVkIG9yIHdhaXRpbmcKKyAgICAg
ICAgICAgICAgICAgICAgIyBmb3IgY2hpbGQgcHJvY2Vzc2VzIGhhcyBvdGhlcndpc2UgYmVlbiBk
aXNhYmxlZCBmb3Igb3VyCisgICAgICAgICAgICAgICAgICAgICMgcHJvY2Vzcy4gIFRoaXMgY2hp
bGQgaXMgZGVhZCwgd2UgY2FuJ3QgZ2V0IHRoZSBzdGF0dXMuCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiAwCiAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICMgVGhpcyBoYXBw
ZW5zIGlmIFNJR0NMRCBpcyBzZXQgdG8gYmUgaWdub3JlZCBvciB3YWl0aW5nCi0gICAgICAgICAg
ICAjIGZvciBjaGlsZCBwcm9jZXNzZXMgaGFzIG90aGVyd2lzZSBiZWVuIGRpc2FibGVkIGZvciBv
dXIKLSAgICAgICAgICAgICMgcHJvY2Vzcy4gIFRoaXMgY2hpbGQgaXMgZGVhZCwgd2UgY2FuJ3Qg
Z2V0IHRoZSBzdGF0dXMuCi0gICAgICAgICAgICBzdGF0dXMgPSAwCi0KLSAgICAgICAgcmV0dXJu
IHJldHVybl9jb2RlX2Zyb21fZXhpdF9zdGF0dXMoc3RhdHVzKQogCiAgICAgZGVmIF9ydW5fdGVz
dF9nbGliKHNlbGYsIHRlc3RfcHJvZ3JhbSk6Ci0gICAgICAgIHRlc3Rlcl9jb21tYW5kID0gWydn
dGVzdGVyJywgJy1rJ10KKyAgICAgICAgY29tbWFuZCA9IFsnZ3Rlc3RlcicsICctayddCiAgICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMudmVyYm9zZToKLSAgICAgICAgICAgIHRlc3Rlcl9jb21tYW5k
LmFwcGVuZCgnLS12ZXJib3NlJykKKyAgICAgICAgICAgIGNvbW1hbmQuYXBwZW5kKCctLXZlcmJv
c2UnKQogICAgICAgICBmb3IgdGVzdF9jYXNlIGluIHNlbGYuX3Rlc3RfY2FzZXNfdG9fc2tpcCh0
ZXN0X3Byb2dyYW0pOgotICAgICAgICAgICAgdGVzdGVyX2NvbW1hbmQuZXh0ZW5kKFsnLXMnLCB0
ZXN0X2Nhc2VdKQotICAgICAgICB0ZXN0ZXJfY29tbWFuZC5hcHBlbmQodGVzdF9wcm9ncmFtKQot
ICAgICAgICAjIFRoaXMgdGltZW91dCBpcyBzdXBwb3NlZCB0byBiZSBwZXIgdGVzdCBjYXNlLCBi
dXQgaW4gdGhlIGNhc2Ugb2YgR0xpYiB0ZXN0cyBpdCBhZmZlY3RzIGFsbCB0aGUgdGVzdHMgY2Fz
ZXMgb2YKLSAgICAgICAgIyB0aGUgc2FtZSB0ZXN0IHByb2dyYW0uIFNvbWUgdGVzdCBwcm9ncmFt
cyBsaWtlIFRlc3RMb2FkZXJDbGllbnQsIHRoYXQgaGF2ZSBhIGxvdCBvZiB0ZXN0IGNhc2VzLCBv
ZnRlbiB0aW1lIG91dAotICAgICAgICAjIGluIHRoZSBib3RzIGJlY2F1c2UgdGhlIHRpbWVvdXQg
aXMgbm90IGVub3VnaCB0byBydW4gYWxsIHRoZSB0ZXN0cyBjYXNlcy4gU28sIHdlIHVzZSBhIGxv
bmdlciB0aW1lb3V0IGZvciBHTGliCi0gICAgICAgICMgdGVzdHMgKHRpbWVvdXQgKiAyKS4KLSAg
ICAgICAgdGltZW91dCA9IHNlbGYuX29wdGlvbnMudGltZW91dCAqIDIKKyAgICAgICAgICAgIGNv
bW1hbmQuZXh0ZW5kKFsnLXMnLCB0ZXN0X2Nhc2VdKQorICAgICAgICBjb21tYW5kLmFwcGVuZCh0
ZXN0X3Byb2dyYW0pCisKKyAgICAgICAgdGltZW91dCA9IHNlbGYuX29wdGlvbnMudGltZW91dAog
ICAgICAgICB0ZXN0ID0gb3MucGF0aC5qb2luKG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5kaXJu
YW1lKHRlc3RfcHJvZ3JhbSkpLCBvcy5wYXRoLmJhc2VuYW1lKHRlc3RfcHJvZ3JhbSkpCiAgICAg
ICAgIGlmIHRlc3QgaW4gVGVzdFJ1bm5lci5TTE9XOgogICAgICAgICAgICAgdGltZW91dCAqPSA1
CiAKLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl90ZXN0X2NvbW1hbmQodGVzdGVyX2NvbW1hbmQs
IHRpbWVvdXQpCisgICAgICAgIHRlc3RfY29udGV4dCA9IHsgImNoaWxkLXBpZCIgOiAtMSwgImRp
ZC10aW1lb3V0IiA6IEZhbHNlLCAiY3VycmVudF90ZXN0IiA6IE5vbmUgfQorICAgICAgICBkZWYg
cGFyc2VfbGluZShsaW5lLCB0ZXN0X2NvbnRleHQgPSB0ZXN0X2NvbnRleHQpOgorICAgICAgICAg
ICAgaWYgbm90IGxpbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIG1h
dGNoID0gcmUuc2VhcmNoKHInXChwaWQ9KD9QPGNoaWxkX3BpZD5bMC05XSspXCknLCBsaW5lKQor
ICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgdGVzdF9jb250ZXh0WyJjaGls
ZC1waWQiXSA9IGludChtYXRjaC5ncm91cCgnY2hpbGRfcGlkJykpCisgICAgICAgICAgICAgICAg
c3lzLnN0ZG91dC53cml0ZShsaW5lKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAg
ICAgICBkZWYgc2V0X3Rlc3RfcmVzdWx0KHRlc3QsIHJlc3VsdCk6CisgICAgICAgICAgICAgICAg
aWYgcmVzdWx0ID09ICJGQUlMIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdF9jb250ZXh0
WyJkaWQtdGltZW91dCJdIGFuZCByZXN1bHQgPT0gIkZBSUwiOgorICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9jb250ZXh0W3Rlc3RdID0gIlRJTUVPVVQiCisgICAgICAgICAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnRleHRbdGVzdF0gPSByZXN1
bHQKKyAgICAgICAgICAgICAgICB0ZXN0X2NvbnRleHRbImRpZC10aW1lb3V0Il0gPSBGYWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RfY29udGV4dFsiY3VycmVudF90ZXN0Il0gPSBOb25lCisgICAg
ICAgICAgICAgICAgc2VsZi5fc3RvcF90aW1lb3V0KHRpbWVvdXQpCisgICAgICAgICAgICAgICAg
c2VsZi5fc3RhcnRfdGltZW91dCh0aW1lb3V0KQorCisgICAgICAgICAgICBub3JtYWxpemVkX2xp
bmUgPSBsaW5lLnN0cmlwKCkucmVwbGFjZSgnICcsICcnKQorICAgICAgICAgICAgaWYgbm90IG5v
cm1hbGl6ZWRfbGluZToKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgaWYg
bm9ybWFsaXplZF9saW5lWzBdID09ICcvJzoKKyAgICAgICAgICAgICAgICB0ZXN0LCByZXN1bHQg
PSBub3JtYWxpemVkX2xpbmUuc3BsaXQoJzonLCAxKQorICAgICAgICAgICAgICAgIGlmIHJlc3Vs
dCBpbiBbIk9LIiwgIkZBSUwiXToKKyAgICAgICAgICAgICAgICAgICAgc2V0X3Rlc3RfcmVzdWx0
KHRlc3QsIHJlc3VsdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg
ICB0ZXN0X2NvbnRleHRbImN1cnJlbnRfdGVzdCJdID0gdGVzdAorICAgICAgICAgICAgZWxpZiBu
b3JtYWxpemVkX2xpbmUgaW4gWyJPSyIsICJGQUlMIl06CisgICAgICAgICAgICAgICAgc2V0X3Rl
c3RfcmVzdWx0KHRlc3RfY29udGV4dFsiY3VycmVudF90ZXN0Il0sIG5vcm1hbGl6ZWRfbGluZSkK
KworICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShsaW5lKQorCisgICAgICAgIHBpZCwgZmQg
PSBvcy5mb3JrcHR5KCkKKyAgICAgICAgaWYgcGlkID09IDA6CisgICAgICAgICAgICBvcy5leGVj
dnBlKGNvbW1hbmRbMF0sIGNvbW1hbmQsIHNlbGYuX3Rlc3RfZW52KQorICAgICAgICAgICAgc3lz
LmV4aXQoMCkKKworICAgICAgICBzZWxmLl9zdGFydF90aW1lb3V0KHRpbWVvdXQpCisKKyAgICAg
ICAgd2hpbGUgKFRydWUpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNvbW1v
bi5wYXJzZV9vdXRwdXRfbGluZXMoZmQsIHBhcnNlX2xpbmUpCisgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGV4Y2VwdCBUZXN0VGltZW91dDoKKyAgICAgICAgICAgICAgICBhc3Nl
cnQgdGVzdF9jb250ZXh0WyJjaGlsZC1waWQiXSA+IDAKKyAgICAgICAgICAgICAgICBzZWxmLl9r
aWxsX3Byb2Nlc3ModGVzdF9jb250ZXh0WyJjaGlsZC1waWQiXSkKKyAgICAgICAgICAgICAgICB0
ZXN0X2NvbnRleHRbImNoaWxkLXBpZCJdID0gLTEKKyAgICAgICAgICAgICAgICB0ZXN0X2NvbnRl
eHRbImRpZC10aW1lb3V0Il0gPSBUcnVlCisKKyAgICAgICAgc2VsZi5fc3RvcF90aW1lb3V0KHRp
bWVvdXQpCisgICAgICAgIGRlbCB0ZXN0X2NvbnRleHRbImNoaWxkLXBpZCJdCisgICAgICAgIGRl
bCB0ZXN0X2NvbnRleHRbImRpZC10aW1lb3V0Il0KKyAgICAgICAgZGVsIHRlc3RfY29udGV4dFsi
Y3VycmVudF90ZXN0Il0KKworICAgICAgICBzZWxmLl93YWl0cGlkKHBpZCkKKyAgICAgICAgcmV0
dXJuIHRlc3RfY29udGV4dAogCiAgICAgZGVmIF9nZXRfdGVzdHNfZnJvbV9nb29nbGVfdGVzdF9z
dWl0ZShzZWxmLCB0ZXN0X3Byb2dyYW0pOgogICAgICAgICB0cnk6CkBAIC0zNzQsMjMgKzQwMiw0
MSBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICByZXR1cm4gdGVzdHMKIAogICAgIGRlZiBf
cnVuX2dvb2dsZV90ZXN0KHNlbGYsIHRlc3RfcHJvZ3JhbSwgc3VidGVzdCk6Ci0gICAgICAgIHRl
c3RfY29tbWFuZCA9IFt0ZXN0X3Byb2dyYW0sICctLWd0ZXN0X2ZpbHRlcj0lcycgJSAoc3VidGVz
dCldCisgICAgICAgIGNvbW1hbmQgPSBbdGVzdF9wcm9ncmFtLCAnLS1ndGVzdF9maWx0ZXI9JXMn
ICUgKHN1YnRlc3QpXQogICAgICAgICB0aW1lb3V0ID0gc2VsZi5fb3B0aW9ucy50aW1lb3V0CiAg
ICAgICAgIGlmIHN1YnRlc3QgaW4gVGVzdFJ1bm5lci5TTE9XOgogICAgICAgICAgICAgdGltZW91
dCAqPSA1CiAKLSAgICAgICAgc3RhdHVzID0gc2VsZi5fcnVuX3Rlc3RfY29tbWFuZCh0ZXN0X2Nv
bW1hbmQsIHRpbWVvdXQpCisgICAgICAgIHBpZCwgZmQgPSBvcy5mb3JrcHR5KCkKKyAgICAgICAg
aWYgcGlkID09IDA6CisgICAgICAgICAgICBvcy5leGVjdnBlKGNvbW1hbmRbMF0sIGNvbW1hbmQs
IHNlbGYuX3Rlc3RfZW52KQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKKworICAgICAgICBzZWxm
Ll9zdGFydF90aW1lb3V0KHRpbWVvdXQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbW1v
bi5wYXJzZV9vdXRwdXRfbGluZXMoZmQsIHN5cy5zdGRvdXQud3JpdGUpCisgICAgICAgICAgICBz
dGF0dXMgPSBzZWxmLl93YWl0cGlkKHBpZCkKKyAgICAgICAgZXhjZXB0IFRlc3RUaW1lb3V0Ogor
ICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHBpZCkKKyAgICAgICAgICAgIHJldHVybiB7
IHN1YnRlc3QgOiAiVElNRU9VVCIgfQorCisgICAgICAgIHNlbGYuX3N0b3BfdGltZW91dCh0aW1l
b3V0KQorCiAgICAgICAgIGlmIHN0YXR1cyA9PSAtU0lHU0VHVjoKICAgICAgICAgICAgIHN5cy5z
dGRvdXQud3JpdGUoIioqQ1JBU0gqKiAlc1xuIiAlIHN1YnRlc3QpCiAgICAgICAgICAgICBzeXMu
c3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIHN0YXR1cworICAgICAgICAgICAgcmV0dXJu
IHsgc3VidGVzdCA6ICJDUkFTSCIgfQorCisgICAgICAgIGlmIHN0YXR1cyAhPSAwOgorICAgICAg
ICAgICAgcmV0dXJuIHsgc3VidGVzdCA6ICJGQUlMIiB9CisKKyAgICAgICAgcmV0dXJuIHsgfQog
CiAgICAgZGVmIF9ydW5fZ29vZ2xlX3Rlc3Rfc3VpdGUoc2VsZiwgdGVzdF9wcm9ncmFtKToKLSAg
ICAgICAgcmV0Y29kZSA9IDAKKyAgICAgICAgcmVzdWx0ID0geyB9CiAgICAgICAgIGZvciBzdWJ0
ZXN0IGluIHNlbGYuX2dldF90ZXN0c19mcm9tX2dvb2dsZV90ZXN0X3N1aXRlKHRlc3RfcHJvZ3Jh
bSk6Ci0gICAgICAgICAgICBpZiBzZWxmLl9ydW5fZ29vZ2xlX3Rlc3QodGVzdF9wcm9ncmFtLCBz
dWJ0ZXN0KToKLSAgICAgICAgICAgICAgICByZXRjb2RlID0gMQotICAgICAgICByZXR1cm4gcmV0
Y29kZQorICAgICAgICAgICAgcmVzdWx0LnVwZGF0ZShzZWxmLl9ydW5fZ29vZ2xlX3Rlc3QodGVz
dF9wcm9ncmFtLCBzdWJ0ZXN0KSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIF9y
dW5fdGVzdChzZWxmLCB0ZXN0X3Byb2dyYW0pOgogICAgICAgICBiYXNlZGlyID0gb3MucGF0aC5i
YXNlbmFtZShvcy5wYXRoLmRpcm5hbWUodGVzdF9wcm9ncmFtKSkKQEAgLTQxNSw0NyArNDYxLDQ0
IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICMgc29tZSB0ZXN0cyBtaWdodCBiZSBza2lw
cGVkIHdoaWxlIHNldHRpbmcgdXAgdGhlIHRlc3QgZW52aXJvbm1lbnQuCiAgICAgICAgIHNlbGYu
X3Rlc3RzID0gW3Rlc3QgZm9yIHRlc3QgaW4gc2VsZi5fdGVzdHMgaWYgc2VsZi5fc2hvdWxkX3J1
bl90ZXN0X3Byb2dyYW0odGVzdCldCiAKLSAgICAgICAgY3Jhc2hlZF90ZXN0cyA9IFtdCi0gICAg
ICAgIGZhaWxlZF90ZXN0cyA9IFtdCi0gICAgICAgIHRpbWVkX291dF90ZXN0cyA9IFtdCisgICAg
ICAgIGNyYXNoZWRfdGVzdHMgPSB7fQorICAgICAgICBmYWlsZWRfdGVzdHMgPSB7fQorICAgICAg
ICB0aW1lZF9vdXRfdGVzdHMgPSB7fQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmb3IgdGVz
dCBpbiBzZWxmLl90ZXN0czoKLSAgICAgICAgICAgICAgICBleGl0X3N0YXR1c19jb2RlID0gMAot
ICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZXhpdF9zdGF0dXNfY29k
ZSA9IHNlbGYuX3J1bl90ZXN0KHRlc3QpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFRlc3RUaW1l
b3V0OgotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJURVNUOiAlczogVElN
RU9VVFxuIiAlIHRlc3QpCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQot
ICAgICAgICAgICAgICAgICAgICB0aW1lZF9vdXRfdGVzdHMuYXBwZW5kKHRlc3QpCi0KLSAgICAg
ICAgICAgICAgICBpZiBleGl0X3N0YXR1c19jb2RlID09IC1TSUdTRUdWOgotICAgICAgICAgICAg
ICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJURVNUOiAlczogQ1JBU0hFRFxuIiAlIHRlc3QpCi0g
ICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICAgICAgICAgICAg
ICBjcmFzaGVkX3Rlc3RzLmFwcGVuZCh0ZXN0KQotICAgICAgICAgICAgICAgIGVsaWYgZXhpdF9z
dGF0dXNfY29kZSAhPSAwOgotICAgICAgICAgICAgICAgICAgICBmYWlsZWRfdGVzdHMuYXBwZW5k
KHRlc3QpCisgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHNlbGYuX3J1bl90ZXN0KHRlc3QpCisg
ICAgICAgICAgICAgICAgZm9yIHRlc3RfY2FzZSwgcmVzdWx0IGluIHJlc3VsdHMuaXRlcml0ZW1z
KCk6CisgICAgICAgICAgICAgICAgICAgIGlmIHJlc3VsdCA9PSAiRkFJTCI6CisgICAgICAgICAg
ICAgICAgICAgICAgICBmYWlsZWRfdGVzdHMuc2V0ZGVmYXVsdCh0ZXN0LCBbXSkuYXBwZW5kKHRl
c3RfY2FzZSkKKyAgICAgICAgICAgICAgICAgICAgZWxpZiByZXN1bHQgPT0gIlRJTUVPVVQiOgor
ICAgICAgICAgICAgICAgICAgICAgICAgdGltZWRfb3V0X3Rlc3RzLnNldGRlZmF1bHQodGVzdCwg
W10pLmFwcGVuZCh0ZXN0X2Nhc2UpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcmVzdWx0ID09
ICJDUkFTSCI6CisgICAgICAgICAgICAgICAgICAgICAgICBjcmFzaGVkX3Rlc3RzLnNldGRlZmF1
bHQodGVzdCwgW10pLmFwcGVuZCh0ZXN0X2Nhc2UpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAg
ICAgICBzZWxmLl90ZWFyX2Rvd25fdGVzdGluZ19lbnZpcm9ubWVudCgpCiAKICAgICAgICAgaWYg
ZmFpbGVkX3Rlc3RzOgotICAgICAgICAgICAgbmFtZXMgPSBbdGVzdC5yZXBsYWNlKHNlbGYuX3Rl
c3RfcHJvZ3JhbXNfYmFzZV9kaXIoKSwgJycsIDEpIGZvciB0ZXN0IGluIGZhaWxlZF90ZXN0c10K
LSAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlRlc3RzIGZhaWxlZCAoJWQpOiAlc1xuIiAl
IChsZW4obmFtZXMpLCAiLCAiLmpvaW4obmFtZXMpKSkKKyAgICAgICAgICAgIHN5cy5zdGRvdXQu
d3JpdGUoIlxuVW5leHBlY3RlZCBmYWlsdXJlcyAoJWQpXG4iICUgKHN1bShsZW4odmFsdWUpIGZv
ciB2YWx1ZSBpbiBmYWlsZWRfdGVzdHMuaXRlcnZhbHVlcygpKSkpCisgICAgICAgICAgICBmb3Ig
dGVzdCBpbiBmYWlsZWRfdGVzdHM6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgi
ICAgICVzXG4iICUgKHRlc3QucmVwbGFjZShzZWxmLl90ZXN0X3Byb2dyYW1zX2Jhc2VfZGlyKCks
ICcnLCAxKSkpCisgICAgICAgICAgICAgICAgZm9yIHRlc3RfY2FzZSBpbiBmYWlsZWRfdGVzdHNb
dGVzdF06CisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiAgICAgICAgJXNc
biIgJSAodGVzdF9jYXNlKSkKICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogCiAgICAg
ICAgIGlmIGNyYXNoZWRfdGVzdHM6Ci0gICAgICAgICAgICBuYW1lcyA9IFt0ZXN0LnJlcGxhY2Uo
c2VsZi5fdGVzdF9wcm9ncmFtc19iYXNlX2RpcigpLCAnJywgMSkgZm9yIHRlc3QgaW4gY3Jhc2hl
ZF90ZXN0c10KLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlRlc3RzIHRoYXQgY3Jhc2hl
ZCAoJWQpOiAlc1xuIiAlIChsZW4obmFtZXMpLCAiLCAiLmpvaW4obmFtZXMpKSkKKyAgICAgICAg
ICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVW5leHBlY3RlZCBjcmFzaGVzICglZClcbiIgJSAoc3Vt
KGxlbih2YWx1ZSkgZm9yIHZhbHVlIGluIGNyYXNoZWRfdGVzdHMuaXRlcnZhbHVlcygpKSkpCisg
ICAgICAgICAgICBmb3IgdGVzdCBpbiBjcmFzaGVkX3Rlc3RzOgorICAgICAgICAgICAgICAgIHN5
cy5zdGRvdXQud3JpdGUoIiAgICAlc1xuIiAlICh0ZXN0LnJlcGxhY2Uoc2VsZi5fdGVzdF9wcm9n
cmFtc19iYXNlX2RpcigpLCAnJywgMSkpKQorICAgICAgICAgICAgICAgIGZvciB0ZXN0X2Nhc2Ug
aW4gY3Jhc2hlZF90ZXN0c1t0ZXN0XToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53
cml0ZSgiICAgICAgICAlc1xuIiAlICh0ZXN0X2Nhc2UpKQogICAgICAgICAgICAgc3lzLnN0ZG91
dC5mbHVzaCgpCiAKICAgICAgICAgaWYgdGltZWRfb3V0X3Rlc3RzOgotICAgICAgICAgICAgbmFt
ZXMgPSBbdGVzdC5yZXBsYWNlKHNlbGYuX3Rlc3RfcHJvZ3JhbXNfYmFzZV9kaXIoKSwgJycsIDEp
IGZvciB0ZXN0IGluIHRpbWVkX291dF90ZXN0c10KLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3Jp
dGUoIlRlc3RzIHRoYXQgdGltZWQgb3V0ICglZCk6ICVzXG4iICUgKGxlbihuYW1lcyksICIsICIu
am9pbihuYW1lcykpKQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0KLSAgICAgICAg
aWYgc2VsZi5fc2tpcHBlZF90ZXN0cyBhbmQgc2VsZi5fb3B0aW9ucy5za2lwcGVkX2FjdGlvbiA9
PSAnc2tpcCc6Ci0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJUZXN0cyBza2lwcGVkICgl
ZCk6XG4lc1xuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW4oc2VsZi5fc2tp
cHBlZF90ZXN0cyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iLmpvaW4oW3N0
cihza2lwcGVkKSBmb3Igc2tpcHBlZCBpbiBzZWxmLl9za2lwcGVkX3Rlc3RzXSkpKQorICAgICAg
ICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5VbmV4cGVjdGVkIHRpbWVvdXRzICglZClcbiIgJSAo
c3VtKGxlbih2YWx1ZSkgZm9yIHZhbHVlIGluIHRpbWVkX291dF90ZXN0cy5pdGVydmFsdWVzKCkp
KSkKKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRpbWVkX291dF90ZXN0czoKKyAgICAgICAgICAg
ICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgICAgJXNcbiIgJSAodGVzdC5yZXBsYWNlKHNlbGYuX3Rl
c3RfcHJvZ3JhbXNfYmFzZV9kaXIoKSwgJycsIDEpKSkKKyAgICAgICAgICAgICAgICBmb3IgdGVz
dF9jYXNlIGluIHRpbWVkX291dF90ZXN0c1t0ZXN0XToKKyAgICAgICAgICAgICAgICAgICAgc3lz
LnN0ZG91dC53cml0ZSgiICAgICAgICAlc1xuIiAlICh0ZXN0X2Nhc2UpKQogICAgICAgICAgICAg
c3lzLnN0ZG91dC5mbHVzaCgpCiAKICAgICAgICAgcmV0dXJuIGxlbihmYWlsZWRfdGVzdHMpICsg
bGVuKHRpbWVkX291dF90ZXN0cykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319364</attachid>
            <date>2017-08-30 08:50:16 -0700</date>
            <delta_ts>2017-08-31 07:22:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-run-gtk-tests.diff</filename>
            <type>text/plain</type>
            <size>18211</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL21hc3Rlci5jZmcgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9tYXN0ZXIuY2ZnCmluZGV4IGI0MzAzMDhiODk5Li5mZTQ2NjI5M2JiNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFz
dGVyLmNmZworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9tYXN0ZXIuY2ZnCkBAIC02NTgsMjggKzY1OCwyMyBAQCBjbGFzcyBSdW5HdGtBUElUZXN0
cyhzaGVsbC5UZXN0KToKICAgICAgICAgc2VsZi5za2lwcGVkVGVzdHMgPSAwCiAgICAgICAgIHNl
bGYuc3RhdHVzTGluZSA9IFtdCiAKLSAgICAgICAgZm91bmRJdGVtcyA9IHJlLmZpbmRhbGwoIlRl
c3RzIGZhaWxlZCBcKChcZCspXCk6IiwgbG9nVGV4dCkKKyAgICAgICAgZm91bmRJdGVtcyA9IHJl
LmZpbmRhbGwoIlVuZXhwZWN0ZWQgZmFpbHVyZXMgXCgoXGQrKVwpOiIsIGxvZ1RleHQpCiAgICAg
ICAgIGlmIChmb3VuZEl0ZW1zKToKICAgICAgICAgICAgIHNlbGYuaW5jb3JyZWN0VGVzdHMgPSBp
bnQoZm91bmRJdGVtc1swXSkKIAotICAgICAgICBmb3VuZEl0ZW1zID0gcmUuZmluZGFsbCgiVGVz
dHMgdGhhdCBjcmFzaGVkIFwoKFxkKylcKToiLCBsb2dUZXh0KQorICAgICAgICBmb3VuZEl0ZW1z
ID0gcmUuZmluZGFsbCgiVW5leHBlY3RlZCBjcmFzaGVzIFwoKFxkKylcKToiLCBsb2dUZXh0KQog
ICAgICAgICBpZiAoZm91bmRJdGVtcyk6CiAgICAgICAgICAgICBzZWxmLmNyYXNoZWRUZXN0cyA9
IGludChmb3VuZEl0ZW1zWzBdKQogCi0gICAgICAgIGZvdW5kSXRlbXMgPSByZS5maW5kYWxsKCJU
ZXN0cyB0aGF0IHRpbWVkIG91dCBcKChcZCspXCk6IiwgbG9nVGV4dCkKKyAgICAgICAgZm91bmRJ
dGVtcyA9IHJlLmZpbmRhbGwoIlVuZXhwZWN0ZWQgdGltZW91dHMgXCgoXGQrKVwpOiIsIGxvZ1Rl
eHQpCiAgICAgICAgIGlmIChmb3VuZEl0ZW1zKToKICAgICAgICAgICAgIHNlbGYudGltZWRPdXRU
ZXN0cyA9IGludChmb3VuZEl0ZW1zWzBdKQogCi0gICAgICAgIGZvdW5kSXRlbXMgPSByZS5maW5k
YWxsKCJUZXN0cyBza2lwcGVkIFwoKFxkKylcKToiLCBsb2dUZXh0KQotICAgICAgICBpZiAoZm91
bmRJdGVtcyk6Ci0gICAgICAgICAgICBzZWxmLnNraXBwZWRUZXN0cyA9IGludChmb3VuZEl0ZW1z
WzBdKQotCiAgICAgICAgIHNlbGYudG90YWxGYWlsZWRUZXN0cyA9IHNlbGYuaW5jb3JyZWN0VGVz
dHMgKyBzZWxmLmNyYXNoZWRUZXN0cyArIHNlbGYudGltZWRPdXRUZXN0cwogCiAgICAgICAgIGlm
IHNlbGYudG90YWxGYWlsZWRUZXN0cyA+IDA6CiAgICAgICAgICAgICBzZWxmLnN0YXR1c0xpbmUg
PSBbCi0gICAgICAgICAgICAgICAgIiVkIEFQSSB0ZXN0cyBmYWlsZWQsICVkIGNyYXNoZWQsICVk
IHRpbWVkIG91dCwgJWQgc2tpcHBlZCIgJQotICAgICAgICAgICAgICAgIChzZWxmLmluY29ycmVj
dFRlc3RzLCBzZWxmLmNyYXNoZWRUZXN0cywgc2VsZi50aW1lZE91dFRlc3RzLCBzZWxmLnNraXBw
ZWRUZXN0cykKKyAgICAgICAgICAgICAgICAiJWQgQVBJIHRlc3RzIGZhaWxlZCwgJWQgY3Jhc2hl
ZCwgJWQgdGltZWQgb3V0IiAlIChzZWxmLmluY29ycmVjdFRlc3RzLCBzZWxmLmNyYXNoZWRUZXN0
cywgc2VsZi50aW1lZE91dFRlc3RzKQogICAgICAgICAgICAgXQogCiAgICAgZGVmIGV2YWx1YXRl
Q29tbWFuZChzZWxmLCBjbWQpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGEyMTNhYjM5MmIzLi5jYzA4MTFhMzMxYyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE3
LTA4LTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBJbXByb3ZlIHRoZSB3YXkgdW5pdCB0ZXN0IGFyZSBydW4gYW5kIHRoZSByZXN1
bHRzIHJlcG9ydGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzYxMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVyZSBhcmUgc2V2ZXJhbCBpc3N1ZXMgd2l0aCB0aGUgd2F5IHVuaXQgdGVzdHMgYXJl
IHJ1biBieSBydW4tZ3RrLXRlc3RzIGFuZCBhbHNvIHdpdGggdGhlIHdheSByZXN1bHRzIGFyZQor
ICAgICAgICByZXBvcnRlZDoKKworICAgICAgICAgLSBUaGUgcmVzdWx0cyBzdW1tYXJ5IG9ubHkg
bWVudGlvbnMgdGhlIHRlc3QgYmluYXJpZXMsIG5vdCB0aGUgYWN0dWFsIHRlc3QgY2FzZXMsIHNv
IHlvdSBhbHdheXMgaGF2ZSB0byBzY3JvbGwKKyAgICAgICAgICAgdXAgdG8gZmluZCB0aGUgYWN0
dWFsIHRlc3QgY2FzZXMgZmFpbGluZy4KKyAgICAgICAgIC0gVGhlIG51bWJlciBvZiByZXBvcnRl
ZCBmYWlsdXJlcyBpcyB0aGUgbnVtYmVyIG9mIHRlc3QgYmluYXJpZXMgdGhhdCBmYWlsZWQsIHNv
IGlmIGEgbmV3IHRlc3QgY2FzZSBmYWlscyBmb3IKKyAgICAgICAgICAgdGhlIHNhbWUgYmluYXJ5
IGluIGEgbmV3IHJldmlzaW9uLCB3ZSB3b24ndCBub3RpY2UgaXQganVzdCBsb29raW5nIGF0IHRo
ZSBudW1iZXIgb2YgZmFpbHVyZXMuCisgICAgICAgICAtIFdlIHNob3cgZGV0YWlsZWQgaW5mb3Jt
YXRpb24gYWJvdXQgc2tpcHBlZCB0ZXN0IGluIHRoZSByZXN1bHRzIHN1bW1hcnksIHdoaWNoIGlz
IGp1c3Qgbm9pc2UuCisgICAgICAgICAtIEluIHRoZSBjYXNlIG9mIGdsaWIgdGVzdHMsIHdoZW4g
YSB0ZXN0IGNhc2UgdGltZXMgb3V0LCB3ZSBmaW5pc2ggdGhlIHRlc3Qgc3VpdGUsIGluc3RlYWQg
b2YgY29udGludWluZyB3aXRoIHRoZQorICAgICAgICAgICByZXN0IG9mIHRoZSB0ZXN0IGNhc2Vz
IGxpa2Ugd2UgZG8gZm9yIG5vcm1hbCBmYWlsdXJlcyBvciBjcmFzaGVzLiBJZiBhIG5ldyB0ZXN0
IGNhc2UgZmFpbHMgYWZ0ZXIgYSB0ZXN0IGNhc2UgdGhhdAorICAgICAgICAgICB0aW1lZCBvdXQg
d2Ugd2lsbCBub3Qgbm90aWNlIGl0IHVudGlsIHdlIGZpeCBvciBza2lwIHRoZSB0ZXN0IGNhc2Vz
IHRpbWluZyBvdXQuCisgICAgICAgICAtIEluIHRoZSBjYXNlIG9mIGdsaWIgdGVzdHMsIHRoZSB0
aW1lb3V0IGlzIGFwcGxpZWQgdG8gdGhlIHdob2xlIHN1aXRlLCBpbnN0ZWFkIG9mIHBlciB0ZXN0
IGNhc2UsIHdlIGhhdmUgYSBoYWNrCisgICAgICAgICAgIHRvIG1ha2UgaXQgbG9uZ2VyIG9ubHkg
Zm9yIHRoYXQuIEl0IGhhcyB3b3JrZWQgc28gZmFyLCBidXQgaXQgZG9lc24ndCBzY2FsZSwgYW5k
IGl0J3MgYW4gdWdseSBoYWNrLgorICAgICAgICAgLSBJdCdzIG5vdCBjdXJyZW50bHkgcG9zc2li
bGUgdG8gZGV0ZWN0IGZsYWt5IHRlc3RzLCBiZWNhdXNlIGFnYWluLCB3ZSBrbm93IHRoZSBiaW5h
cmllcy9zdWl0ZXMgdGhhdCBmYWlsZWQgYnV0CisgICAgICAgICAgIG5vdCB0aGUgYWN0dWFsIHRl
c3QgY2FzZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyBhbGwgdGhlc2UgaXNzdWVzIGFu
ZCBtYWtlcyBpdCBwb3NzaWJsZSB0byBhZGQgc3VwcG9ydCBmb3IgZmxha3kgdGVzdHMgaW4gYSBm
b2xsb3cgdXAgcGF0Y2guCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9tYXN0ZXIuY2ZnOgorICAgICAgICAoUnVuR3RrQVBJVGVzdHMuY29tbWFu
ZENvbXBsZXRlKTogVXBkYXRlIHRoZSBSdW5HdGtBUElUZXN0cyBzdGVwIHRvIHBhcnNlIHRoZSBu
ZXcgb3V0cHV0LgorICAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10ZXN0czoKKyAgICAgICAgKFRl
c3RSdW5uZXIuX3N0YXJ0X3RpbWVvdXQpOiBIZWxwZXIgdG8gc3RhcnQgdGhlIHRpbWVvdXQgaWYg
bmVlZGVkLgorICAgICAgICAoVGVzdFJ1bm5lci5fc3RhcnRfdGltZW91dC5fYWxhcm1faGFuZGxl
cik6IFJhaXNlIHRpbWVvdXQgZXhjZXB0aW9uLgorICAgICAgICAoVGVzdFJ1bm5lci5fc3RvcF90
aW1lb3V0KTogSGVscGVyIHRvIHN0b3AgdGhlIHRpbWVvdXQgaWYgbmVlZGVkLgorICAgICAgICAo
VGVzdFJ1bm5lci5fd2FpdHBpZCk6IE1lcmdlZCB3YWl0cGlkIGFuZCByZXR1cm5fY29kZV9mcm9t
X2V4aXRfc3RhdHVzLgorICAgICAgICAoVGVzdFJ1bm5lci5fcnVuX3Rlc3RfZ2xpYik6IERvIG5v
dCBkb3VibGUgdGhlIHRpbWVvdXQgYW55bW9yZSwgd2Ugbm93IHN0YXJ0L3N0b3AgdGhlIHRpbWVv
dXQgZm9yIGV2ZXJ5IHRlc3QKKyAgICAgICAgY2FzZS4gUmV0dXJuIGEgZGljdGlvbmFyeSB3aGVy
ZSBrZXlzIGFyZSB0ZXN0IGNhc2VzIGFuZCB2YWx1ZXMgdGhlIHJlc3VsdHMgb25seSBpbiBjYXNl
IG9mIGZhaWx1cmVzLgorICAgICAgICAoVGVzdFJ1bm5lci5fcnVuX3Rlc3RfZ2xpYi5wYXJzZV9s
aW5lKTogVXBkYXRlIHRoZSBwYXJzZXIgdG8gYWxzbyBkZXRlY3QgdGVzdCBjYXNlcyBhbmQgdGhl
IHJlc3VsdHMuCisgICAgICAgIChUZXN0UnVubmVyLl9ydW5fdGVzdF9nbGliLnBhcnNlX2xpbmUu
c2V0X3Rlc3RfcmVzdWx0KTogSGVscGVyIHRvIHNldCB0aGUgcmVzdWx0IG9mIGEgdGVzdCBjYXNl
LgorICAgICAgICAoVGVzdFJ1bm5lci5fcnVuX2dvb2dsZV90ZXN0KTogUmV0dXJuIGEgZGljdGlv
bmFyeSB3aGVyZSBrZXkgaXMgdGhlIHRlc3QgY2FzZSBhbmQgdmFsdWUgaXMgdGhlIHJlc3VsdCBv
bmx5IGluCisgICAgICAgIGNhc2Ugb2YgZmFpbHVyZS4KKyAgICAgICAgKFRlc3RSdW5uZXIuX3J1
bl9nb29nbGVfdGVzdF9zdWl0ZSk6IFVwZGF0ZWQgbm93IHRoYXQgX3J1bl9nb29nbGVfdGVzdCBy
ZXR1cm5zIGEgZGljdGlvbmFyeS4KKyAgICAgICAgKFRlc3RSdW5uZXIucnVuX3Rlc3RzKTogSGFu
ZGxlIHRoZSByZXN1bHRzIGRpY3Rpb25hcnkgYW5kIHNob3cgdGhlIHJlc3VsdHMgd2l0aCBpbmZv
cm1hdGlvbiBhYm91dCB0ZXN0IGNhc2VzCisgICAgICAgIGZhaWxpbmcgYW5kIGdyb3VwZWQgYnkg
dGVzdCBiaW5hcmllcy4KKwogMjAxNy0wOC0yOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjIxMDY0KTogW0dUS10gRWRp
dG9yIG5vdCBjb3JyZWN0bHkgd29ya2luZyBhZnRlciByMjIxMDY0CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3J1bi1ndGstdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKaW5k
ZXggY2RmOTUxNmViOTMuLjZjYTM4ZWZmMzE0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1
bi1ndGstdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCkBAIC0yNTgsMTQg
KzI1OCw2IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYgX2dldF9jaGlsZF9waWRfZnJvbV90ZXN0
X291dHB1dChzZWxmLCBvdXRwdXQpOgotICAgICAgICBpZiBub3Qgb3V0cHV0OgotICAgICAgICAg
ICAgcmV0dXJuIC0xCi0gICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHInXChwaWQ9KD9QPGNoaWxk
X3BpZD5bMC05XSspXCknLCBvdXRwdXQpCi0gICAgICAgIGlmIG5vdCBtYXRjaDoKLSAgICAgICAg
ICAgIHJldHVybiAtMQotICAgICAgICByZXR1cm4gaW50KG1hdGNoLmdyb3VwKCdjaGlsZF9waWQn
KSkKLQogICAgIGRlZiBfa2lsbF9wcm9jZXNzKHNlbGYsIHBpZCk6CiAgICAgICAgIHRyeToKICAg
ICAgICAgICAgIG9zLmtpbGwocGlkLCBTSUdLSUxMKQpAQCAtMjczLDgzICsyNjUsMTE5IEBAIGNs
YXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICAjIFByb2Nlc3MgYWxyZWFkeSBkaWVkLgogICAg
ICAgICAgICAgcGFzcwogCi0gICAgZGVmIF9ydW5fdGVzdF9jb21tYW5kKHNlbGYsIGNvbW1hbmQs
IHRpbWVvdXQ9LTEpOgotICAgICAgICBkZWYgYWxhcm1faGFuZGxlcihzaWdudW0sIGZyYW1lKToK
LSAgICAgICAgICAgIHJhaXNlIFRlc3RUaW1lb3V0CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRl
ZiBfc3RhcnRfdGltZW91dCh0aW1lb3V0KToKKyAgICAgICAgaWYgdGltZW91dCA8PSAwOgorICAg
ICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgY2hpbGRfcGlkID0gWy0xXQotICAgICAgICBkZWYg
cGFyc2VfbGluZShsaW5lLCBjaGlsZF9waWQgPSBjaGlsZF9waWQpOgotICAgICAgICAgICAgaWYg
Y2hpbGRfcGlkWzBdID09IC0xOgotICAgICAgICAgICAgICAgIGNoaWxkX3BpZFswXSA9IHNlbGYu
X2dldF9jaGlsZF9waWRfZnJvbV90ZXN0X291dHB1dChsaW5lKQorICAgICAgICBkZWYgX2FsYXJt
X2hhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICByYWlzZSBUZXN0VGltZW91dAog
Ci0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGxpbmUpCisgICAgICAgIHNpZ25hbChTSUdB
TFJNLCBfYWxhcm1faGFuZGxlcikKKyAgICAgICAgYWxhcm0odGltZW91dCkKIAotICAgICAgICBk
ZWYgd2FpdHBpZChwaWQpOgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy53YWl0cGlkKHBpZCwgMCkKLSAg
ICAgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIElPRXJyb3IpIGFzIGU6Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICByYWlzZQotCi0gICAgICAgIGRlZiBy
ZXR1cm5fY29kZV9mcm9tX2V4aXRfc3RhdHVzKHN0YXR1cyk6Ci0gICAgICAgICAgICBpZiBvcy5X
SUZTSUdOQUxFRChzdGF0dXMpOgotICAgICAgICAgICAgICAgIHJldHVybiAtb3MuV1RFUk1TSUco
c3RhdHVzKQotICAgICAgICAgICAgZWxpZiBvcy5XSUZFWElURUQoc3RhdHVzKToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gb3MuV0VYSVRTVEFUVVMoc3RhdHVzKQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICAjIFNob3VsZCBuZXZlciBoYXBwZW4KLSAgICAgICAgICAgICAgICBy
YWlzZSBSdW50aW1lRXJyb3IoIlVua25vd24gY2hpbGQgZXhpdCBzdGF0dXMhIikKKyAgICBAc3Rh
dGljbWV0aG9kCisgICAgZGVmIF9zdG9wX3RpbWVvdXQodGltZW91dCk6CisgICAgICAgIGlmIHRp
bWVvdXQgPD0gMDoKKyAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIHBpZCwgZmQgPSBvcy5m
b3JrcHR5KCkKLSAgICAgICAgaWYgcGlkID09IDA6Ci0gICAgICAgICAgICBvcy5leGVjdnBlKGNv
bW1hbmRbMF0sIGNvbW1hbmQsIHNlbGYuX3Rlc3RfZW52KQotICAgICAgICAgICAgc3lzLmV4aXQo
MCkKKyAgICAgICAgYWxhcm0oMCkKIAotICAgICAgICBpZiB0aW1lb3V0ID4gMDoKLSAgICAgICAg
ICAgIHNpZ25hbChTSUdBTFJNLCBhbGFybV9oYW5kbGVyKQotICAgICAgICAgICAgYWxhcm0odGlt
ZW91dCkKKyAgICBkZWYgX3dhaXRwaWQoc2VsZiwgcGlkKToKKyAgICAgICAgd2hpbGUgVHJ1ZToK
KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkdW1teSwgc3RhdHVzID0gb3Mud2Fp
dHBpZChwaWQsIDApCisgICAgICAgICAgICAgICAgaWYgb3MuV0lGU0lHTkFMRUQoc3RhdHVzKToK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1vcy5XVEVSTVNJRyhzdGF0dXMpCisgICAgICAg
ICAgICAgICAgaWYgb3MuV0lGRVhJVEVEKHN0YXR1cyk6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBvcy5XRVhJVFNUQVRVUyhzdGF0dXMpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
Y29tbW9uLnBhcnNlX291dHB1dF9saW5lcyhmZCwgcGFyc2VfbGluZSkKLSAgICAgICAgICAgIGlm
IHRpbWVvdXQgPiAwOgotICAgICAgICAgICAgICAgIGFsYXJtKDApCi0gICAgICAgIGV4Y2VwdCBU
ZXN0VGltZW91dDoKLSAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhwaWQpCi0gICAgICAg
ICAgICBpZiBjaGlsZF9waWRbMF0gPiAwOgotICAgICAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJv
Y2VzcyhjaGlsZF9waWRbMF0pCi0gICAgICAgICAgICByYWlzZQotCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIGR1bW15LCBzdGF0dXMgPSB3YWl0cGlkKHBpZCkKLSAgICAgICAgZXhjZXB0IE9T
RXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNISUxEOgorICAg
ICAgICAgICAgICAgICMgU2hvdWxkIG5ldmVyIGhhcHBlbgorICAgICAgICAgICAgICAgIHJhaXNl
IFJ1bnRpbWVFcnJvcigiVW5rbm93biBjaGlsZCBleGl0IHN0YXR1cyEiKQorICAgICAgICAgICAg
ZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJy
bm8gPT0gZXJybm8uRUlOVFI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
ICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FQ0hJTEQ6CisgICAgICAgICAgICAgICAgICAg
ICMgVGhpcyBoYXBwZW5zIGlmIFNJR0NMRCBpcyBzZXQgdG8gYmUgaWdub3JlZCBvciB3YWl0aW5n
CisgICAgICAgICAgICAgICAgICAgICMgZm9yIGNoaWxkIHByb2Nlc3NlcyBoYXMgb3RoZXJ3aXNl
IGJlZW4gZGlzYWJsZWQgZm9yIG91cgorICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3MuICBU
aGlzIGNoaWxkIGlzIGRlYWQsIHdlIGNhbid0IGdldCB0aGUgc3RhdHVzLgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMAogICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAjIFRo
aXMgaGFwcGVucyBpZiBTSUdDTEQgaXMgc2V0IHRvIGJlIGlnbm9yZWQgb3Igd2FpdGluZwotICAg
ICAgICAgICAgIyBmb3IgY2hpbGQgcHJvY2Vzc2VzIGhhcyBvdGhlcndpc2UgYmVlbiBkaXNhYmxl
ZCBmb3Igb3VyCi0gICAgICAgICAgICAjIHByb2Nlc3MuICBUaGlzIGNoaWxkIGlzIGRlYWQsIHdl
IGNhbid0IGdldCB0aGUgc3RhdHVzLgotICAgICAgICAgICAgc3RhdHVzID0gMAotCi0gICAgICAg
IHJldHVybiByZXR1cm5fY29kZV9mcm9tX2V4aXRfc3RhdHVzKHN0YXR1cykKIAogICAgIGRlZiBf
cnVuX3Rlc3RfZ2xpYihzZWxmLCB0ZXN0X3Byb2dyYW0pOgotICAgICAgICB0ZXN0ZXJfY29tbWFu
ZCA9IFsnZ3Rlc3RlcicsICctayddCisgICAgICAgIGNvbW1hbmQgPSBbJ2d0ZXN0ZXInLCAnLWsn
XQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICB0ZXN0ZXJf
Y29tbWFuZC5hcHBlbmQoJy0tdmVyYm9zZScpCisgICAgICAgICAgICBjb21tYW5kLmFwcGVuZCgn
LS12ZXJib3NlJykKICAgICAgICAgZm9yIHRlc3RfY2FzZSBpbiBzZWxmLl90ZXN0X2Nhc2VzX3Rv
X3NraXAodGVzdF9wcm9ncmFtKToKLSAgICAgICAgICAgIHRlc3Rlcl9jb21tYW5kLmV4dGVuZChb
Jy1zJywgdGVzdF9jYXNlXSkKLSAgICAgICAgdGVzdGVyX2NvbW1hbmQuYXBwZW5kKHRlc3RfcHJv
Z3JhbSkKLSAgICAgICAgIyBUaGlzIHRpbWVvdXQgaXMgc3VwcG9zZWQgdG8gYmUgcGVyIHRlc3Qg
Y2FzZSwgYnV0IGluIHRoZSBjYXNlIG9mIEdMaWIgdGVzdHMgaXQgYWZmZWN0cyBhbGwgdGhlIHRl
c3RzIGNhc2VzIG9mCi0gICAgICAgICMgdGhlIHNhbWUgdGVzdCBwcm9ncmFtLiBTb21lIHRlc3Qg
cHJvZ3JhbXMgbGlrZSBUZXN0TG9hZGVyQ2xpZW50LCB0aGF0IGhhdmUgYSBsb3Qgb2YgdGVzdCBj
YXNlcywgb2Z0ZW4gdGltZSBvdXQKLSAgICAgICAgIyBpbiB0aGUgYm90cyBiZWNhdXNlIHRoZSB0
aW1lb3V0IGlzIG5vdCBlbm91Z2ggdG8gcnVuIGFsbCB0aGUgdGVzdHMgY2FzZXMuIFNvLCB3ZSB1
c2UgYSBsb25nZXIgdGltZW91dCBmb3IgR0xpYgotICAgICAgICAjIHRlc3RzICh0aW1lb3V0ICog
MikuCi0gICAgICAgIHRpbWVvdXQgPSBzZWxmLl9vcHRpb25zLnRpbWVvdXQgKiAyCisgICAgICAg
ICAgICBjb21tYW5kLmV4dGVuZChbJy1zJywgdGVzdF9jYXNlXSkKKyAgICAgICAgY29tbWFuZC5h
cHBlbmQodGVzdF9wcm9ncmFtKQorCisgICAgICAgIHRpbWVvdXQgPSBzZWxmLl9vcHRpb25zLnRp
bWVvdXQKICAgICAgICAgdGVzdCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmJhc2VuYW1lKG9zLnBh
dGguZGlybmFtZSh0ZXN0X3Byb2dyYW0pKSwgb3MucGF0aC5iYXNlbmFtZSh0ZXN0X3Byb2dyYW0p
KQogICAgICAgICBpZiB0ZXN0IGluIFRlc3RSdW5uZXIuU0xPVzoKICAgICAgICAgICAgIHRpbWVv
dXQgKj0gNQogCi0gICAgICAgIHJldHVybiBzZWxmLl9ydW5fdGVzdF9jb21tYW5kKHRlc3Rlcl9j
b21tYW5kLCB0aW1lb3V0KQorICAgICAgICB0ZXN0X2NvbnRleHQgPSB7ICJjaGlsZC1waWQiIDog
LTEsICJkaWQtdGltZW91dCIgOiBGYWxzZSwgImN1cnJlbnRfdGVzdCIgOiBOb25lIH0KKyAgICAg
ICAgZGVmIHBhcnNlX2xpbmUobGluZSwgdGVzdF9jb250ZXh0ID0gdGVzdF9jb250ZXh0KToKKyAg
ICAgICAgICAgIGlmIG5vdCBsaW5lOgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAg
ICAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ1wocGlkPSg/UDxjaGlsZF9waWQ+WzAtOV0rKVwpJywg
bGluZSkKKyAgICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgICAgIHRlc3RfY29udGV4
dFsiY2hpbGQtcGlkIl0gPSBpbnQobWF0Y2guZ3JvdXAoJ2NoaWxkX3BpZCcpKQorICAgICAgICAg
ICAgICAgIHN5cy5zdGRvdXQud3JpdGUobGluZSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKwor
ICAgICAgICAgICAgZGVmIHNldF90ZXN0X3Jlc3VsdCh0ZXN0LCByZXN1bHQpOgorICAgICAgICAg
ICAgICAgIGlmIHJlc3VsdCA9PSAiRkFJTCI6CisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3Rf
Y29udGV4dFsiZGlkLXRpbWVvdXQiXSBhbmQgcmVzdWx0ID09ICJGQUlMIjoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RfY29udGV4dFt0ZXN0XSA9ICJUSU1FT1VUIgorICAgICAgICAgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb250ZXh0W3Rlc3Rd
ID0gcmVzdWx0CisgICAgICAgICAgICAgICAgdGVzdF9jb250ZXh0WyJkaWQtdGltZW91dCJdID0g
RmFsc2UKKyAgICAgICAgICAgICAgICB0ZXN0X2NvbnRleHRbImN1cnJlbnRfdGVzdCJdID0gTm9u
ZQorICAgICAgICAgICAgICAgIHNlbGYuX3N0b3BfdGltZW91dCh0aW1lb3V0KQorICAgICAgICAg
ICAgICAgIHNlbGYuX3N0YXJ0X3RpbWVvdXQodGltZW91dCkKKworICAgICAgICAgICAgbm9ybWFs
aXplZF9saW5lID0gbGluZS5zdHJpcCgpLnJlcGxhY2UoJyAnLCAnJykKKyAgICAgICAgICAgIGlm
IG5vdCBub3JtYWxpemVkX2xpbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAg
ICAgIGlmIG5vcm1hbGl6ZWRfbGluZVswXSA9PSAnLyc6CisgICAgICAgICAgICAgICAgdGVzdCwg
cmVzdWx0ID0gbm9ybWFsaXplZF9saW5lLnNwbGl0KCc6JywgMSkKKyAgICAgICAgICAgICAgICBp
ZiByZXN1bHQgaW4gWyJPSyIsICJGQUlMIl06CisgICAgICAgICAgICAgICAgICAgIHNldF90ZXN0
X3Jlc3VsdCh0ZXN0LCByZXN1bHQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdF9jb250ZXh0WyJjdXJyZW50X3Rlc3QiXSA9IHRlc3QKKyAgICAgICAgICAg
IGVsaWYgbm9ybWFsaXplZF9saW5lIGluIFsiT0siLCAiRkFJTCJdOgorICAgICAgICAgICAgICAg
IHNldF90ZXN0X3Jlc3VsdCh0ZXN0X2NvbnRleHRbImN1cnJlbnRfdGVzdCJdLCBub3JtYWxpemVk
X2xpbmUpCisKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUobGluZSkKKworICAgICAgICBw
aWQsIGZkID0gb3MuZm9ya3B0eSgpCisgICAgICAgIGlmIHBpZCA9PSAwOgorICAgICAgICAgICAg
b3MuZXhlY3ZwZShjb21tYW5kWzBdLCBjb21tYW5kLCBzZWxmLl90ZXN0X2VudikKKyAgICAgICAg
ICAgIHN5cy5leGl0KDApCisKKyAgICAgICAgc2VsZi5fc3RhcnRfdGltZW91dCh0aW1lb3V0KQor
CisgICAgICAgIHdoaWxlIChUcnVlKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg
ICBjb21tb24ucGFyc2Vfb3V0cHV0X2xpbmVzKGZkLCBwYXJzZV9saW5lKQorICAgICAgICAgICAg
ICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgVGVzdFRpbWVvdXQ6CisgICAgICAgICAgICAg
ICAgYXNzZXJ0IHRlc3RfY29udGV4dFsiY2hpbGQtcGlkIl0gPiAwCisgICAgICAgICAgICAgICAg
c2VsZi5fa2lsbF9wcm9jZXNzKHRlc3RfY29udGV4dFsiY2hpbGQtcGlkIl0pCisgICAgICAgICAg
ICAgICAgdGVzdF9jb250ZXh0WyJjaGlsZC1waWQiXSA9IC0xCisgICAgICAgICAgICAgICAgdGVz
dF9jb250ZXh0WyJkaWQtdGltZW91dCJdID0gVHJ1ZQorCisgICAgICAgIHNlbGYuX3N0b3BfdGlt
ZW91dCh0aW1lb3V0KQorICAgICAgICBkZWwgdGVzdF9jb250ZXh0WyJjaGlsZC1waWQiXQorICAg
ICAgICBkZWwgdGVzdF9jb250ZXh0WyJkaWQtdGltZW91dCJdCisgICAgICAgIGRlbCB0ZXN0X2Nv
bnRleHRbImN1cnJlbnRfdGVzdCJdCisKKyAgICAgICAgc2VsZi5fd2FpdHBpZChwaWQpCisgICAg
ICAgIHJldHVybiB0ZXN0X2NvbnRleHQKIAogICAgIGRlZiBfZ2V0X3Rlc3RzX2Zyb21fZ29vZ2xl
X3Rlc3Rfc3VpdGUoc2VsZiwgdGVzdF9wcm9ncmFtKToKICAgICAgICAgdHJ5OgpAQCAtMzc0LDIz
ICs0MDIsNDEgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgcmV0dXJuIHRlc3RzCiAKICAg
ICBkZWYgX3J1bl9nb29nbGVfdGVzdChzZWxmLCB0ZXN0X3Byb2dyYW0sIHN1YnRlc3QpOgotICAg
ICAgICB0ZXN0X2NvbW1hbmQgPSBbdGVzdF9wcm9ncmFtLCAnLS1ndGVzdF9maWx0ZXI9JXMnICUg
KHN1YnRlc3QpXQorICAgICAgICBjb21tYW5kID0gW3Rlc3RfcHJvZ3JhbSwgJy0tZ3Rlc3RfZmls
dGVyPSVzJyAlIChzdWJ0ZXN0KV0KICAgICAgICAgdGltZW91dCA9IHNlbGYuX29wdGlvbnMudGlt
ZW91dAogICAgICAgICBpZiBzdWJ0ZXN0IGluIFRlc3RSdW5uZXIuU0xPVzoKICAgICAgICAgICAg
IHRpbWVvdXQgKj0gNQogCi0gICAgICAgIHN0YXR1cyA9IHNlbGYuX3J1bl90ZXN0X2NvbW1hbmQo
dGVzdF9jb21tYW5kLCB0aW1lb3V0KQorICAgICAgICBwaWQsIGZkID0gb3MuZm9ya3B0eSgpCisg
ICAgICAgIGlmIHBpZCA9PSAwOgorICAgICAgICAgICAgb3MuZXhlY3ZwZShjb21tYW5kWzBdLCBj
b21tYW5kLCBzZWxmLl90ZXN0X2VudikKKyAgICAgICAgICAgIHN5cy5leGl0KDApCisKKyAgICAg
ICAgc2VsZi5fc3RhcnRfdGltZW91dCh0aW1lb3V0KQorICAgICAgICB0cnk6CisgICAgICAgICAg
ICBjb21tb24ucGFyc2Vfb3V0cHV0X2xpbmVzKGZkLCBzeXMuc3Rkb3V0LndyaXRlKQorICAgICAg
ICAgICAgc3RhdHVzID0gc2VsZi5fd2FpdHBpZChwaWQpCisgICAgICAgIGV4Y2VwdCBUZXN0VGlt
ZW91dDoKKyAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhwaWQpCisgICAgICAgICAgICBy
ZXR1cm4geyBzdWJ0ZXN0IDogIlRJTUVPVVQiIH0KKworICAgICAgICBzZWxmLl9zdG9wX3RpbWVv
dXQodGltZW91dCkKKwogICAgICAgICBpZiBzdGF0dXMgPT0gLVNJR1NFR1Y6CiAgICAgICAgICAg
ICBzeXMuc3Rkb3V0LndyaXRlKCIqKkNSQVNIKiogJXNcbiIgJSBzdWJ0ZXN0KQogICAgICAgICAg
ICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHJldHVybiBzdGF0dXMKKyAgICAgICAgICAg
IHJldHVybiB7IHN1YnRlc3QgOiAiQ1JBU0giIH0KKworICAgICAgICBpZiBzdGF0dXMgIT0gMDoK
KyAgICAgICAgICAgIHJldHVybiB7IHN1YnRlc3QgOiAiRkFJTCIgfQorCisgICAgICAgIHJldHVy
biB7IH0KIAogICAgIGRlZiBfcnVuX2dvb2dsZV90ZXN0X3N1aXRlKHNlbGYsIHRlc3RfcHJvZ3Jh
bSk6Ci0gICAgICAgIHJldGNvZGUgPSAwCisgICAgICAgIHJlc3VsdCA9IHsgfQogICAgICAgICBm
b3Igc3VidGVzdCBpbiBzZWxmLl9nZXRfdGVzdHNfZnJvbV9nb29nbGVfdGVzdF9zdWl0ZSh0ZXN0
X3Byb2dyYW0pOgotICAgICAgICAgICAgaWYgc2VsZi5fcnVuX2dvb2dsZV90ZXN0KHRlc3RfcHJv
Z3JhbSwgc3VidGVzdCk6Ci0gICAgICAgICAgICAgICAgcmV0Y29kZSA9IDEKLSAgICAgICAgcmV0
dXJuIHJldGNvZGUKKyAgICAgICAgICAgIHJlc3VsdC51cGRhdGUoc2VsZi5fcnVuX2dvb2dsZV90
ZXN0KHRlc3RfcHJvZ3JhbSwgc3VidGVzdCkpCisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAg
IGRlZiBfcnVuX3Rlc3Qoc2VsZiwgdGVzdF9wcm9ncmFtKToKICAgICAgICAgYmFzZWRpciA9IG9z
LnBhdGguYmFzZW5hbWUob3MucGF0aC5kaXJuYW1lKHRlc3RfcHJvZ3JhbSkpCkBAIC00MTUsNDcg
KzQ2MSw0NCBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAjIHNvbWUgdGVzdHMgbWlnaHQg
YmUgc2tpcHBlZCB3aGlsZSBzZXR0aW5nIHVwIHRoZSB0ZXN0IGVudmlyb25tZW50LgogICAgICAg
ICBzZWxmLl90ZXN0cyA9IFt0ZXN0IGZvciB0ZXN0IGluIHNlbGYuX3Rlc3RzIGlmIHNlbGYuX3No
b3VsZF9ydW5fdGVzdF9wcm9ncmFtKHRlc3QpXQogCi0gICAgICAgIGNyYXNoZWRfdGVzdHMgPSBb
XQotICAgICAgICBmYWlsZWRfdGVzdHMgPSBbXQotICAgICAgICB0aW1lZF9vdXRfdGVzdHMgPSBb
XQorICAgICAgICBjcmFzaGVkX3Rlc3RzID0ge30KKyAgICAgICAgZmFpbGVkX3Rlc3RzID0ge30K
KyAgICAgICAgdGltZWRfb3V0X3Rlc3RzID0ge30KICAgICAgICAgdHJ5OgogICAgICAgICAgICAg
Zm9yIHRlc3QgaW4gc2VsZi5fdGVzdHM6Ci0gICAgICAgICAgICAgICAgZXhpdF9zdGF0dXNfY29k
ZSA9IDAKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGV4aXRfc3Rh
dHVzX2NvZGUgPSBzZWxmLl9ydW5fdGVzdCh0ZXN0KQotICAgICAgICAgICAgICAgIGV4Y2VwdCBU
ZXN0VGltZW91dDoKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiVEVTVDog
JXM6IFRJTUVPVVRcbiIgJSB0ZXN0KQotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZs
dXNoKCkKLSAgICAgICAgICAgICAgICAgICAgdGltZWRfb3V0X3Rlc3RzLmFwcGVuZCh0ZXN0KQot
Ci0gICAgICAgICAgICAgICAgaWYgZXhpdF9zdGF0dXNfY29kZSA9PSAtU0lHU0VHVjoKLSAgICAg
ICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiVEVTVDogJXM6IENSQVNIRURcbiIgJSB0
ZXN0KQotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAg
ICAgICAgICAgY3Jhc2hlZF90ZXN0cy5hcHBlbmQodGVzdCkKLSAgICAgICAgICAgICAgICBlbGlm
IGV4aXRfc3RhdHVzX2NvZGUgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3Rlc3Rz
LmFwcGVuZCh0ZXN0KQorICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBzZWxmLl9ydW5fdGVzdCh0
ZXN0KQorICAgICAgICAgICAgICAgIGZvciB0ZXN0X2Nhc2UsIHJlc3VsdCBpbiByZXN1bHRzLml0
ZXJpdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBpZiByZXN1bHQgPT0gIkZBSUwiOgorICAg
ICAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3Rlc3RzLnNldGRlZmF1bHQodGVzdCwgW10pLmFw
cGVuZCh0ZXN0X2Nhc2UpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcmVzdWx0ID09ICJUSU1F
T1VUIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVkX291dF90ZXN0cy5zZXRkZWZhdWx0
KHRlc3QsIFtdKS5hcHBlbmQodGVzdF9jYXNlKQorICAgICAgICAgICAgICAgICAgICBlbGlmIHJl
c3VsdCA9PSAiQ1JBU0giOgorICAgICAgICAgICAgICAgICAgICAgICAgY3Jhc2hlZF90ZXN0cy5z
ZXRkZWZhdWx0KHRlc3QsIFtdKS5hcHBlbmQodGVzdF9jYXNlKQogICAgICAgICBmaW5hbGx5Ogog
ICAgICAgICAgICAgc2VsZi5fdGVhcl9kb3duX3Rlc3RpbmdfZW52aXJvbm1lbnQoKQogCiAgICAg
ICAgIGlmIGZhaWxlZF90ZXN0czoKLSAgICAgICAgICAgIG5hbWVzID0gW3Rlc3QucmVwbGFjZShz
ZWxmLl90ZXN0X3Byb2dyYW1zX2Jhc2VfZGlyKCksICcnLCAxKSBmb3IgdGVzdCBpbiBmYWlsZWRf
dGVzdHNdCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJUZXN0cyBmYWlsZWQgKCVkKTog
JXNcbiIgJSAobGVuKG5hbWVzKSwgIiwgIi5qb2luKG5hbWVzKSkpCisgICAgICAgICAgICBzeXMu
c3Rkb3V0LndyaXRlKCJcblVuZXhwZWN0ZWQgZmFpbHVyZXMgKCVkKVxuIiAlIChzdW0obGVuKHZh
bHVlKSBmb3IgdmFsdWUgaW4gZmFpbGVkX3Rlc3RzLml0ZXJ2YWx1ZXMoKSkpKQorICAgICAgICAg
ICAgZm9yIHRlc3QgaW4gZmFpbGVkX3Rlc3RzOgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQu
d3JpdGUoIiAgICAlc1xuIiAlICh0ZXN0LnJlcGxhY2Uoc2VsZi5fdGVzdF9wcm9ncmFtc19iYXNl
X2RpcigpLCAnJywgMSkpKQorICAgICAgICAgICAgICAgIGZvciB0ZXN0X2Nhc2UgaW4gZmFpbGVk
X3Rlc3RzW3Rlc3RdOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgICAg
ICAgICVzXG4iICUgKHRlc3RfY2FzZSkpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkK
IAogICAgICAgICBpZiBjcmFzaGVkX3Rlc3RzOgotICAgICAgICAgICAgbmFtZXMgPSBbdGVzdC5y
ZXBsYWNlKHNlbGYuX3Rlc3RfcHJvZ3JhbXNfYmFzZV9kaXIoKSwgJycsIDEpIGZvciB0ZXN0IGlu
IGNyYXNoZWRfdGVzdHNdCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJUZXN0cyB0aGF0
IGNyYXNoZWQgKCVkKTogJXNcbiIgJSAobGVuKG5hbWVzKSwgIiwgIi5qb2luKG5hbWVzKSkpCisg
ICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcblVuZXhwZWN0ZWQgY3Jhc2hlcyAoJWQpXG4i
ICUgKHN1bShsZW4odmFsdWUpIGZvciB2YWx1ZSBpbiBjcmFzaGVkX3Rlc3RzLml0ZXJ2YWx1ZXMo
KSkpKQorICAgICAgICAgICAgZm9yIHRlc3QgaW4gY3Jhc2hlZF90ZXN0czoKKyAgICAgICAgICAg
ICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgICAgJXNcbiIgJSAodGVzdC5yZXBsYWNlKHNlbGYuX3Rl
c3RfcHJvZ3JhbXNfYmFzZV9kaXIoKSwgJycsIDEpKSkKKyAgICAgICAgICAgICAgICBmb3IgdGVz
dF9jYXNlIGluIGNyYXNoZWRfdGVzdHNbdGVzdF06CisgICAgICAgICAgICAgICAgICAgIHN5cy5z
dGRvdXQud3JpdGUoIiAgICAgICAgJXNcbiIgJSAodGVzdF9jYXNlKSkKICAgICAgICAgICAgIHN5
cy5zdGRvdXQuZmx1c2goKQogCiAgICAgICAgIGlmIHRpbWVkX291dF90ZXN0czoKLSAgICAgICAg
ICAgIG5hbWVzID0gW3Rlc3QucmVwbGFjZShzZWxmLl90ZXN0X3Byb2dyYW1zX2Jhc2VfZGlyKCks
ICcnLCAxKSBmb3IgdGVzdCBpbiB0aW1lZF9vdXRfdGVzdHNdCi0gICAgICAgICAgICBzeXMuc3Rk
b3V0LndyaXRlKCJUZXN0cyB0aGF0IHRpbWVkIG91dCAoJWQpOiAlc1xuIiAlIChsZW4obmFtZXMp
LCAiLCAiLmpvaW4obmFtZXMpKSkKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotCi0g
ICAgICAgIGlmIHNlbGYuX3NraXBwZWRfdGVzdHMgYW5kIHNlbGYuX29wdGlvbnMuc2tpcHBlZF9h
Y3Rpb24gPT0gJ3NraXAnOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiVGVzdHMgc2tp
cHBlZCAoJWQpOlxuJXNcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuKHNl
bGYuX3NraXBwZWRfdGVzdHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIi5q
b2luKFtzdHIoc2tpcHBlZCkgZm9yIHNraXBwZWQgaW4gc2VsZi5fc2tpcHBlZF90ZXN0c10pKSkK
KyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVW5leHBlY3RlZCB0aW1lb3V0cyAoJWQp
XG4iICUgKHN1bShsZW4odmFsdWUpIGZvciB2YWx1ZSBpbiB0aW1lZF9vdXRfdGVzdHMuaXRlcnZh
bHVlcygpKSkpCisgICAgICAgICAgICBmb3IgdGVzdCBpbiB0aW1lZF9vdXRfdGVzdHM6CisgICAg
ICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiICAgICVzXG4iICUgKHRlc3QucmVwbGFjZShz
ZWxmLl90ZXN0X3Byb2dyYW1zX2Jhc2VfZGlyKCksICcnLCAxKSkpCisgICAgICAgICAgICAgICAg
Zm9yIHRlc3RfY2FzZSBpbiB0aW1lZF9vdXRfdGVzdHNbdGVzdF06CisgICAgICAgICAgICAgICAg
ICAgIHN5cy5zdGRvdXQud3JpdGUoIiAgICAgICAgJXNcbiIgJSAodGVzdF9jYXNlKSkKICAgICAg
ICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogCiAgICAgICAgIHJldHVybiBsZW4oZmFpbGVkX3Rl
c3RzKSArIGxlbih0aW1lZF9vdXRfdGVzdHMpCg==
</data>
<flag name="review"
          id="339655"
          type_id="1"
          status="+"
          setter="clopez"
    />
          </attachment>
      

    </bug>

</bugzilla>