<?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>199709</bug_id>
          
          <creation_ts>2019-07-11 06:31:07 -0700</creation_ts>
          <short_desc>[ews-build] Parse and display layout test failures</short_desc>
          <delta_ts>2021-02-19 08:53:38 -0800</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>Other</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aakash Jain">aakash_jain</reporter>
          <assigned_to name="Aakash Jain">aakash_jain</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1552041</commentid>
    <comment_count>0</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-07-11 06:31:07 -0700</bug_when>
    <thetext>Parse layout test failures and update step and build summary accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552046</commentid>
    <comment_count>1</comment_count>
      <attachid>373921</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-07-11 06:45:17 -0700</bug_when>
    <thetext>Created attachment 373921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552048</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-11 06:48:38 -0700</bug_when>
    <thetext>Attachment 373921 did not pass style-queue:


ERROR: Tools/BuildSlaveSupport/ews-build/steps.py:920:  [RunWebKitTests.getResultSummary] Use of super on an old style class  [pylint/E1002] [5]
ERROR: Tools/BuildSlaveSupport/ews-build/steps.py:923:  [RunWebKitTests.getResultSummary] Instance of &apos;RunWebKitTests&apos; has no &apos;results&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-build/steps_unittest.py:953:  [TestRunWebKitTests.test_warnings] Passing unexpected keyword argument &apos;state_string&apos; in function call  [pylint/E1123] [5]
ERROR: Tools/BuildSlaveSupport/ews-build/steps_unittest.py:953:  [TestRunWebKitTests.test_warnings] No value passed for parameter &apos;status_text&apos; in function call  [pylint/E1120] [5]
ERROR: Tools/BuildSlaveSupport/ews-build/steps_unittest.py:967:  [TestRunWebKitTests.test_unexpected_error] Passing unexpected keyword argument &apos;state_string&apos; in function call  [pylint/E1123] [5]
ERROR: Tools/BuildSlaveSupport/ews-build/steps_unittest.py:967:  [TestRunWebKitTests.test_unexpected_error] No value passed for parameter &apos;status_text&apos; in function call  [pylint/E1120] [5]
Total errors found: 6 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552058</commentid>
    <comment_count>3</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-07-11 07:58:55 -0700</bug_when>
    <thetext>Sample runs:

Pass: https://ews-build.webkit-uat.org/#/builders/40/builds/95
Retry in case of unexpected failure: https://ews-build.webkit-uat.org/#/builders/40/builds/91</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552075</commentid>
    <comment_count>4</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-07-11 09:15:50 -0700</bug_when>
    <thetext>(In reply to Aakash Jain from comment #3)
&gt; Sample runs:
&gt; 
&gt; Pass: https://ews-build.webkit-uat.org/#/builders/40/builds/95
&gt; Retry in case of unexpected failure:
&gt; https://ews-build.webkit-uat.org/#/builders/40/builds/91

Looking a† build 91...am I correct in understanding that 92, 93 and 94 are all retries of the same patch, right?

Do we have an early exit at any point, if too many retries are attempted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552077</commentid>
    <comment_count>5</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-07-11 09:28:02 -0700</bug_when>
    <thetext>&gt; Looking a† build 91...am I correct in understanding that 92, 93 and 94 are all retries of the same patch, right?
Yeah.

&gt; Do we have an early exit at any point, if too many retries are attempted?
Nope. This most likely indicate some infrastructure issue, and we don&apos;t want to burn through build-requests. Old EWS also has infinite retry logic for various scenarios.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552125</commentid>
    <comment_count>6</comment_count>
      <attachid>373921</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-07-11 11:18:14 -0700</bug_when>
    <thetext>Comment on attachment 373921
Patch

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

&gt; Tools/BuildSlaveSupport/ews-build/steps.py:842
&gt; +    # FIXME: This will break if run-webkit-tests changes its default log formatter.

What exactly is there to &apos;FIX&apos; here? Maybe an example of a line we&apos;re matching would be helpful. I&apos;m familiar enough with run-webkit-tests that I know that this ragex is correct, but others might not be.

&gt; Tools/BuildSlaveSupport/ews-build/steps.py:845
&gt; +    def _strip_python_logging_prefix(self, line):

Should this just be &apos;_strip_logging_prefix(...)&apos;?

&gt; Tools/BuildSlaveSupport/ews-build/steps.py:853
&gt; +        expressions = [

Why a list of pairs and not a dictionary, does order matter?

&gt; Tools/BuildSlaveSupport/ews-build/steps.py:872
&gt; +                # FIXME: Parse file names and put them in results

Do we have a bug number for this?

&gt; Tools/BuildSlaveSupport/ews-build/steps.py:897
&gt; +                    return FAILURE

So we return a failure if we have incorrectLayoutLines, even if the cmd.rc is 254?

&gt; Tools/BuildSlaveSupport/ews-build/steps.py:902
&gt; +        if cmd.rc == 254:

There is a danger here.

What happens if I upload a bad patch that causes run-webkit-tests to raise this exception? How do we stop the retry?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552839</commentid>
    <comment_count>7</comment_count>
      <attachid>373921</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-07-15 08:26:42 -0700</bug_when>
    <thetext>Comment on attachment 373921
Patch

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

&gt;&gt; Tools/BuildSlaveSupport/ews-build/steps.py:842
&gt;&gt; +    # FIXME: This will break if run-webkit-tests changes its default log formatter.
&gt; 
&gt; What exactly is there to &apos;FIX&apos; here? Maybe an example of a line we&apos;re matching would be helpful. I&apos;m familiar enough with run-webkit-tests that I know that this ragex is correct, but others might not be.

This code is copied from similar code in build.webkit.org buildbot config (and other internal buildbot configs). Ditto for most other comments. I prefer to not spend much time in it if we know it works.

&gt;&gt; Tools/BuildSlaveSupport/ews-build/steps.py:845
&gt;&gt; +    def _strip_python_logging_prefix(self, line):
&gt; 
&gt; Should this just be &apos;_strip_logging_prefix(...)&apos;?

Ditto. Copied from build.webkit.org, let&apos;s keep it same for consistency.

&gt;&gt; Tools/BuildSlaveSupport/ews-build/steps.py:853
&gt;&gt; +        expressions = [
&gt; 
&gt; Why a list of pairs and not a dictionary, does order matter?

Ditto, copied from build.webkit.org code.

&gt;&gt; Tools/BuildSlaveSupport/ews-build/steps.py:872
&gt;&gt; +                # FIXME: Parse file names and put them in results
&gt; 
&gt; Do we have a bug number for this?

Ditto, copied from build.webkit.org code.

&gt;&gt; Tools/BuildSlaveSupport/ews-build/steps.py:897
&gt;&gt; +                    return FAILURE
&gt; 
&gt; So we return a failure if we have incorrectLayoutLines, even if the cmd.rc is 254?

If cmd.rc is 254, that&apos;s probably an infrastructure failure, or an exception/hard-failure in which case the stdio wouldn&apos;t have required regexes (like &apos;Regressions: Unexpected.&apos;) and so self.incorrectLayoutLines would be empty. 

Also, this code is copied from internal buildbot config in which it has been working fine for a long time.

&gt;&gt; Tools/BuildSlaveSupport/ews-build/steps.py:902
&gt;&gt; +        if cmd.rc == 254:
&gt; 
&gt; There is a danger here.
&gt; 
&gt; What happens if I upload a bad patch that causes run-webkit-tests to raise this exception? How do we stop the retry?

It would stop once the patch is obsolete, else me/bot-watcher would have to manually click &apos;Stop&apos; button. When we add authentication for all the users, webkit developers might be able to click &apos;Stop&apos; button.

I am not sure what&apos;s the best thing to do in such scenario, should we RETRY here assuming it&apos;s an infrastructure issue (just like internal buildbot) or just fail the patch. 

Old EWS probably fails the patch in case of infrastructure issue, we are trying to do better here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552848</commentid>
    <comment_count>8</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-07-15 09:21:26 -0700</bug_when>
    <thetext>I&apos;ll rubber-stamp this since it&apos;s mostly code we&apos;re moving.

I think that infinitely retrying on an exit code of 254 could be something we end up regretting. Looking through run-webkit-tests, we use that return code when either the port arguments are wrong (which seems fair) or an exception is raised and never caught. The problem lies in that second case. When booting simulators, for example, we will raise an exception if this booting fails. It&apos;s fair to call this sort of failure an &apos;infrastructure&apos; failure, but my experience with a problem like this is that infinite-retry probably isn&apos;t going to help.

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552858</commentid>
    <comment_count>9</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-07-15 09:54:31 -0700</bug_when>
    <thetext>Committed r247433: &lt;https://trac.webkit.org/changeset/247433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552859</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-15 09:55:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/53108789&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373921</attachid>
            <date>2019-07-11 06:45:17 -0700</date>
            <delta_ts>2021-02-19 08:53:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199709-20190711094516.patch</filename>
            <type>text/plain</type>
            <size>8090</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0NzM0OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDE5LTA3LTExICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBbZXdzLWJ1aWxkXSBQYXJzZSBhbmQgZGlzcGxheSBsYXlvdXQgdGVzdCBm
YWlsdXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk5NzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHk6CisgICAgICAgIChSdW5XZWJL
aXRUZXN0cy5zdGFydCk6IEluaXRpYWxpemUgbG9nX29ic2VydmVyLgorICAgICAgICAoUnVuV2Vi
S2l0VGVzdHMuX3N0cmlwX3B5dGhvbl9sb2dnaW5nX3ByZWZpeCk6IENvcGllZCBmcm9tIHNpbWls
YXIgY29kZSBpbiBidWlsZC53ZWJraXQub3JnIGJ1aWxkYm90IGNvbmZpZy4KKyAgICAgICAgKFJ1
bldlYktpdFRlc3RzLl9wYXJzZVJ1bldlYktpdFRlc3RzT3V0cHV0KTogRGl0dG8uCisgICAgICAg
IChSdW5XZWJLaXRUZXN0cy5jb21tYW5kQ29tcGxldGUpOiBHYXRoZXIgYW5kIHBhcnNlIHRoZSBz
dGRvdXQgYW5kIHN0ZGVyciBsb2dzLgorICAgICAgICAoUnVuV2ViS2l0VGVzdHMuZXZhbHVhdGVS
ZXN1bHQpOiBBbmFseXplIHRoZSByZXN1bHRzIGFuZCBkZWNpZGUgYnVpbGQgc3RhdHVzLgorICAg
ICAgICAoUnVuV2ViS2l0VGVzdHMuZ2V0UmVzdWx0U3VtbWFyeSk6IFVwZGF0ZSBidWlsZCBhbmQg
c3RlcCBzdW1tYXJ5LgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9zdGVw
c191bml0dGVzdC5weTogQWRkZWQgYW5kIHVwZGF0ZWQgdW5pdC10ZXN0cy4KKwogMjAxOS0wNy0x
MSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtld3MtYnVpbGRdIFJlbW92ZSB3b3JrZXJzIHtsdGlsdmUsdGFudHl9LWd0ay13azItZXdzIGZy
b20gY29uZmlndXJhdGlvbgpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxk
L3N0ZXBzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWls
ZC9zdGVwcy5weQkocmV2aXNpb24gMjQ3MzQ3KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
ZXdzLWJ1aWxkL3N0ZXBzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC04MjUsNiArODI1LDkgQEAgY2xh
c3MgUnVuV2ViS2l0VGVzdHMoc2hlbGwuVGVzdCk6CiAgICAgICAgICAgICAgICBXaXRoUHJvcGVy
dGllcygnLS0lKGNvbmZpZ3VyYXRpb24pcycpXQogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAg
ICAgICBzZWxmLmxvZ19vYnNlcnZlciA9IGxvZ29ic2VydmVyLkJ1ZmZlckxvZ09ic2VydmVyKHdh
bnRTdGRlcnI9VHJ1ZSkKKyAgICAgICAgc2VsZi5hZGRMb2dPYnNlcnZlcignc3RkaW8nLCBzZWxm
LmxvZ19vYnNlcnZlcikKKwogICAgICAgICBwbGF0Zm9ybSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3Bs
YXRmb3JtJykKICAgICAgICAgYXBwZW5kQ3VzdG9tQnVpbGRGbGFncyhzZWxmLCBwbGF0Zm9ybSwg
c2VsZi5nZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJykpCiAgICAgICAgIGFkZGl0aW9uYWxBcmd1
bWVudHMgPSBzZWxmLmdldFByb3BlcnR5KCdhZGRpdGlvbmFsQXJndW1lbnRzJykKQEAgLTgzNiw5
ICs4MzksNzYgQEAgY2xhc3MgUnVuV2ViS2l0VGVzdHMoc2hlbGwuVGVzdCk6CiAgICAgICAgICAg
ICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgYWRkaXRpb25hbEFyZ3VtZW50cykKICAg
ICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3RhcnQoc2VsZikKIAorICAgICMgRklYTUU6IFRoaXMg
d2lsbCBicmVhayBpZiBydW4td2Via2l0LXRlc3RzIGNoYW5nZXMgaXRzIGRlZmF1bHQgbG9nIGZv
cm1hdHRlci4KKyAgICBucnd0X2xvZ19tZXNzYWdlX3JlZ2V4cCA9IHJlLmNvbXBpbGUocidcZHsy
fTpcZHsyfTpcZHsyfShcLlxkKyk/XHMrXGQrXHMrKD9QPG1lc3NhZ2U+LiopJykKKworICAgIGRl
ZiBfc3RyaXBfcHl0aG9uX2xvZ2dpbmdfcHJlZml4KHNlbGYsIGxpbmUpOgorICAgICAgICBtYXRj
aF9vYmplY3QgPSBzZWxmLm5yd3RfbG9nX21lc3NhZ2VfcmVnZXhwLm1hdGNoKGxpbmUpCisgICAg
ICAgIGlmIG1hdGNoX29iamVjdDoKKyAgICAgICAgICAgIHJldHVybiBtYXRjaF9vYmplY3QuZ3Jv
dXAoJ21lc3NhZ2UnKQorICAgICAgICByZXR1cm4gbGluZQorCisgICAgZGVmIF9wYXJzZVJ1bldl
YktpdFRlc3RzT3V0cHV0KHNlbGYsIGxvZ1RleHQpOgorICAgICAgICBpbmNvcnJlY3RMYXlvdXRM
aW5lcyA9IFtdCisgICAgICAgIGV4cHJlc3Npb25zID0gWworICAgICAgICAgICAgKCdmbGFrZXMn
LCByZS5jb21waWxlKHInVW5leHBlY3RlZCBmbGFraW5lc3MuK1woKFxkKylcKScpKSwKKyAgICAg
ICAgICAgICgnbmV3IHBhc3NlcycsIHJlLmNvbXBpbGUocidFeHBlY3RlZCB0byAuKywgYnV0IHBh
c3NlZDpccytcKChcZCspXCknKSksCisgICAgICAgICAgICAoJ21pc3NpbmcgcmVzdWx0cycsIHJl
LmNvbXBpbGUocidSZWdyZXNzaW9uczogVW5leHBlY3RlZCBtaXNzaW5nIHJlc3VsdHNccytcKChc
ZCspXCknKSksCisgICAgICAgICAgICAoJ2ZhaWx1cmVzJywgcmUuY29tcGlsZShyJ1JlZ3Jlc3Np
b25zOiBVbmV4cGVjdGVkLitcKChcZCspXCknKSksCisgICAgICAgIF0KKyAgICAgICAgdGVzdEZh
aWx1cmVzID0ge30KKworICAgICAgICBmb3IgbGluZSBpbiBsb2dUZXh0LnNwbGl0bGluZXMoKToK
KyAgICAgICAgICAgIGlmIGxpbmUuZmluZCgnRXhpdGluZyBlYXJseScpID49IDAgb3IgbGluZS5m
aW5kKCdsZWFrcyBmb3VuZCcpID49IDA6CisgICAgICAgICAgICAgICAgaW5jb3JyZWN0TGF5b3V0
TGluZXMuYXBwZW5kKHNlbGYuX3N0cmlwX3B5dGhvbl9sb2dnaW5nX3ByZWZpeChsaW5lKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZm9yIG5hbWUsIGV4cHJlc3Npb24g
aW4gZXhwcmVzc2lvbnM6CisgICAgICAgICAgICAgICAgbWF0Y2ggPSBleHByZXNzaW9uLnNlYXJj
aChsaW5lKQorCisgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsdXJlc1tuYW1lXSA9IHRlc3RGYWlsdXJlcy5nZXQobmFtZSwgMCkgKyBpbnQobWF0
Y2guZ3JvdXAoMSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAg
ICAjIEZJWE1FOiBQYXJzZSBmaWxlIG5hbWVzIGFuZCBwdXQgdGhlbSBpbiByZXN1bHRzCisKKyAg
ICAgICAgZm9yIG5hbWUgaW4gdGVzdEZhaWx1cmVzOgorICAgICAgICAgICAgaW5jb3JyZWN0TGF5
b3V0TGluZXMuYXBwZW5kKHN0cih0ZXN0RmFpbHVyZXNbbmFtZV0pICsgJyAnICsgbmFtZSkKKwor
ICAgICAgICBzZWxmLmluY29ycmVjdExheW91dExpbmVzID0gaW5jb3JyZWN0TGF5b3V0TGluZXMK
KworICAgIGRlZiBjb21tYW5kQ29tcGxldGUoc2VsZiwgY21kKToKKyAgICAgICAgc2hlbGwuVGVz
dC5jb21tYW5kQ29tcGxldGUoc2VsZiwgY21kKQorICAgICAgICBsb2dUZXh0ID0gc2VsZi5sb2df
b2JzZXJ2ZXIuZ2V0U3Rkb3V0KCkgKyBzZWxmLmxvZ19vYnNlcnZlci5nZXRTdGRlcnIoKQorICAg
ICAgICBzZWxmLl9wYXJzZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxvZ1RleHQpCisKKyAgICBkZWYg
ZXZhbHVhdGVSZXN1bHQoc2VsZiwgY21kKToKKyAgICAgICAgcmVzdWx0ID0gU1VDQ0VTUworCisg
ICAgICAgIGlmIHNlbGYuaW5jb3JyZWN0TGF5b3V0TGluZXM6CisgICAgICAgICAgICBpZiBsZW4o
c2VsZi5pbmNvcnJlY3RMYXlvdXRMaW5lcykgPT0gMToKKyAgICAgICAgICAgICAgICBsaW5lID0g
c2VsZi5pbmNvcnJlY3RMYXlvdXRMaW5lc1swXQorICAgICAgICAgICAgICAgIGlmIGxpbmUuZmlu
ZCgnd2VyZSBuZXcnKSA+PSAwIG9yIGxpbmUuZmluZCgnd2FzIG5ldycpID49IDAgb3IgbGluZS5m
aW5kKCcgbGVhaycpID49IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXQVJOSU5HUwor
CisgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmluY29ycmVjdExheW91dExpbmVzOgorICAg
ICAgICAgICAgICAgIGlmIGxpbmUuZmluZCgnZmxha2VzJykgPj0gMCBvciBsaW5lLmZpbmQoJ25l
dyBwYXNzZXMnKSA+PSAwIG9yIGxpbmUuZmluZCgnbWlzc2luZyByZXN1bHRzJykgPj0gMDoKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gV0FSTklOR1MKKyAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFJTFVSRQorCisgICAgICAgICMgUmV0dXJu
IGNvZGUgZnJvbSBUb29scy9TY3JpcHRzL2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
LgorICAgICAgICAjIFRoaXMgbWVhbnMgdGhhdCBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCB3aGVu
IHJ1bm5pbmcgcnVuLXdlYmtpdC10ZXN0cyBhbmQKKyAgICAgICAgIyB3YXMgbmV2ZXIgaGFuZGxl
ZC4KKyAgICAgICAgaWYgY21kLnJjID09IDI1NDoKKyAgICAgICAgICAgIHJldHVybiBSRVRSWQor
ICAgICAgICBpZiBjbWQucmMgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiBGQUlMVVJFCisKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdAorCiAgICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQp
OgotICAgICAgICByYyA9IHN1cGVyKFJ1bldlYktpdFRlc3RzLCBzZWxmKS5ldmFsdWF0ZUNvbW1h
bmQoY21kKQotICAgICAgICBpZiByYyA9PSBTVUNDRVNTOgorICAgICAgICByYyA9IHNlbGYuZXZh
bHVhdGVSZXN1bHQoY21kKQorICAgICAgICBpZiByYyA9PSBTVUNDRVNTIG9yIHJjID09IFdBUk5J
TkdTOgogICAgICAgICAgICAgbWVzc2FnZSA9ICdQYXNzZWQgbGF5b3V0IHRlc3RzJwogICAgICAg
ICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSBtZXNzYWdlCiAgICAgICAgICAgICBzZWxmLmJ1
aWxkLnJlc3VsdHMgPSBTVUNDRVNTCkBAIC04NDcsNiArOTE3LDE1IEBAIGNsYXNzIFJ1bldlYktp
dFRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVy
Q3VycmVudFN0ZXAoW0FyY2hpdmVUZXN0UmVzdWx0cygpLCBVcGxvYWRUZXN0UmVzdWx0cygpLCBF
eHRyYWN0VGVzdFJlc3VsdHMoKSwgUmVSdW5XZWJLaXRUZXN0cygpXSkKICAgICAgICAgcmV0dXJu
IHJjCiAKKyAgICBkZWYgZ2V0UmVzdWx0U3VtbWFyeShzZWxmKToKKyAgICAgICAgc3RhdHVzID0g
c2VsZi5uYW1lCisKKyAgICAgICAgaWYgc2VsZi5yZXN1bHRzICE9IFNVQ0NFU1MgYW5kIHNlbGYu
aW5jb3JyZWN0TGF5b3V0TGluZXM6CisgICAgICAgICAgICBzdGF0dXMgPSB1JyAnLmpvaW4oc2Vs
Zi5pbmNvcnJlY3RMYXlvdXRMaW5lcykKKyAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogc3Rh
dHVzfQorCisgICAgICAgIHJldHVybiBzdXBlcihSdW5XZWJLaXRUZXN0cywgc2VsZikuZ2V0UmVz
dWx0U3VtbWFyeSgpCisKIAogY2xhc3MgUmVSdW5XZWJLaXRUZXN0cyhSdW5XZWJLaXRUZXN0cyk6
CiAgICAgbmFtZSA9ICdyZS1ydW4tbGF5b3V0LXRlc3RzJwpJbmRleDogVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9zdGVwc191bml0dGVzdC5weQkocmV2aXNpb24g
MjQ3MzQ3KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0
ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC05MzcsNiArOTM3LDM3IEBAIGNsYXNzIFRlc3RSdW5X
ZWJLaXRUZXN0cyhCdWlsZFN0ZXBNaXhpbkEKICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJl
c3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVzdHMnKQogICAgICAg
ICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIAorICAgIGRlZiB0ZXN0X3dhcm5pbmdzKHNlbGYpOgor
ICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJLaXRUZXN0cygpKQorICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRvcicpCisgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIHNlbGYuZXhw
ZWN0UmVtb3RlQ29tbWFuZHMoCisgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2Rp
cicsCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1Nj
cmlwdHMvcnVuLXdlYmtpdC10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tbmV3LXRlc3QtcmVz
dWx0cycsICctLW5vLXNob3ctcmVzdWx0cycsICctLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcycsICcz
MCcsICctLXNraXAtZmFpbGluZy10ZXN0cycsICctLXJlbGVhc2UnLCAnLS1yZXN1bHRzLWRpcmVj
dG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywgJy0tZGVidWctcnd0LWxvZ2dpbmcnXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICsgMAorICAgICAgICAgICAgKyBF
eHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScnJ1VuZXhwZWN0ZWQgZmxha2luZXNzOiB0
aW1lb3V0cyAoMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGVkL2JsaW5r
L3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItdmFsaWQtYmVmb3JlLWNvbW1pdC5odG1sIFsgVGltZW91
dCBQYXNzIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9kZWxldGVpbmRleC0yLmh0bWwgWyBUaW1lb3V0IFBhc3MgXScnJyksCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1XQVJOSU5HUywgc3RhdGVfc3Ry
aW5nPScyIGZsYWtlcycpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAgZGVm
IHRlc3RfdW5leHBlY3RlZF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVu
V2ViS2l0VGVzdHMoKSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywg
J21hYy1oaWdoc2llcnJhJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlv
bicsICdkZWJ1ZycpCisgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCisgICAgICAg
ICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCisgICAgICAgICAgICAgICAgICAgICAg
ICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cycsICct
LW5vLWJ1aWxkJywgJy0tbm8tbmV3LXRlc3QtcmVzdWx0cycsICctLW5vLXNob3ctcmVzdWx0cycs
ICctLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcycsICczMCcsICctLXNraXAtZmFpbGluZy10ZXN0cycs
ICctLWRlYnVnJywgJy0tcmVzdWx0cy1kaXJlY3RvcnknLCAnbGF5b3V0LXRlc3QtcmVzdWx0cycs
ICctLWRlYnVnLXJ3dC1sb2dnaW5nJ10sCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J1VuZXhwZWN0ZWQgZXJy
b3IuJykKKyAgICAgICAgICAgICsgMjU0LAorICAgICAgICApCisgICAgICAgIHNlbGYuZXhwZWN0
T3V0Y29tZShyZXN1bHQ9UkVUUlksIHN0YXRlX3N0cmluZz0nbGF5b3V0LXRlc3RzIChyZXRyeSkn
KQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworCiAgICAgZGVmIHRlc3RfZmFpbHVy
ZShzZWxmKToKICAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuV2ViS2l0VGVzdHMoKSkKICAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2lvcy1zaW11bGF0b3InKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>