<?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>186257</bug_id>
          
          <creation_ts>2018-06-03 21:48:41 -0700</creation_ts>
          <short_desc>Allow the ramp controller to run tests that take less time than the initial ramp-up phase</short_desc>
          <delta_ts>2018-06-06 17:48:05 -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>WebCore Misc.</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>186256</dependson>
          <blocked>186259</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1429764</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2018-06-03 21:48:41 -0700</bug_when>
    <thetext>Allow the ramp controller to run tests that take less time than the initial ramp-up phase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429765</commentid>
    <comment_count>1</comment_count>
      <attachid>341889</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2018-06-03 21:50:22 -0700</bug_when>
    <thetext>Created attachment 341889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429893</commentid>
    <comment_count>2</comment_count>
      <attachid>341889</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-06-04 13:57:41 -0700</bug_when>
    <thetext>Comment on attachment 341889
Patch

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

&gt; PerformanceTests/ChangeLog:14
&gt; +                In general testing with really short durations isn&apos;t practical, but sometimes it is

Wrong indentation.

&gt; PerformanceTests/MotionMark/tests/resources/main.js:382
&gt; +                this._endTimestamp = timestamp + this._testLength;

The logic of initializing and changing this._endTimestamp and this._startTimestamp is now hard to track. We initialize them like this:

        this._startTimestamp = 0;
        this._endTimestamp = options[&quot;test-interval&quot;];

And I would expect to see them changing at the same time like that 
 
        this._startTimestamp = timestamp;
        this._endTimestamp = timestamp + this._testLength;

But I do not see that happing always in the current code and the new changes. I see couple of places where we change this._endTimestamp only and one place where we change this._startTimestamp only. I am just worried that they may get out of sync and we end up having this._endTimestamp - this._startTimestamp != this._testLength.

I would suggest either getting rid of one of them, probably this._endTimestamp and replace all the instances of it by this._startTimestamp + this._testLength.  Or you may add a method to shift the start and end time stamps of the test. And use this method instead of directly changing only one of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430577</commentid>
    <comment_count>3</comment_count>
      <attachid>341889</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2018-06-06 13:57:52 -0700</bug_when>
    <thetext>Comment on attachment 341889
Patch

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

&gt;&gt; PerformanceTests/ChangeLog:14
&gt;&gt; +                In general testing with really short durations isn&apos;t practical, but sometimes it is
&gt; 
&gt; Wrong indentation.

It&apos;s a new paragraph. I can do it block style instead.

&gt;&gt; PerformanceTests/MotionMark/tests/resources/main.js:382
&gt;&gt; +                this._endTimestamp = timestamp + this._testLength;
&gt; 
&gt; The logic of initializing and changing this._endTimestamp and this._startTimestamp is now hard to track. We initialize them like this:
&gt; 
&gt;         this._startTimestamp = 0;
&gt;         this._endTimestamp = options[&quot;test-interval&quot;];
&gt; 
&gt; And I would expect to see them changing at the same time like that 
&gt;  
&gt;         this._startTimestamp = timestamp;
&gt;         this._endTimestamp = timestamp + this._testLength;
&gt; 
&gt; But I do not see that happing always in the current code and the new changes. I see couple of places where we change this._endTimestamp only and one place where we change this._startTimestamp only. I am just worried that they may get out of sync and we end up having this._endTimestamp - this._startTimestamp != this._testLength.
&gt; 
&gt; I would suggest either getting rid of one of them, probably this._endTimestamp and replace all the instances of it by this._startTimestamp + this._testLength.  Or you may add a method to shift the start and end time stamps of the test. And use this method instead of directly changing only one of them.

Ok. I got rid of the one place where only this._startTimestamp is updated. The call to Controller.start() updates both together anyway.

It is incorrect to always update this._endTimestamp to be this._startTimestamp + testLength. In the case of the ramp controller, the first phase can take a variable length of time, depending on what order of magnitude number of particles can be rendered. We want testLength to cover the time period after we do the initial tier estimate.

Finally, I don&apos;t think we should worry about the possibility that this._startTimestamp ends up after this._endTimestamp. The timestamp monotonically increases, and the updated calculations are always based on the most recent timestamp. Except for when _startTimestamp is updated from 0 to the wall clock time in Controller.start(), it is never updated.

_startTimestamp starts out at 0, but doesn&apos;t mean anything, because it supposed to represent wall clock time. After letting the test initialize for 100 ms, we then set it to the current time. That _startTimestamp never changes.

For the controllers that aren&apos;t the ramp controller, the _endTimestamp should be _startTimestamp + testLength.

For the ramp controller, however, we have to continue to extend the length because we don&apos;t know how long phase A runs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430581</commentid>
    <comment_count>4</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2018-06-06 14:41:05 -0700</bug_when>
    <thetext>(In reply to Jon Lee from comment #3)
&gt; Comment on attachment 341889 [details]
&gt; 
&gt; Ok. I got rid of the one place where only this._startTimestamp is updated.
&gt; The call to Controller.start() updates both together anyway.
&gt; 

Never mind. I can&apos;t get rid of the place where this._startTimestamp is updated. That is a _startTimestamp variable on the benchmark, whereas the other _startTimestamp update is in the controller.

I&apos;ll disambiguate by name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430583</commentid>
    <comment_count>5</comment_count>
      <attachid>342082</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2018-06-06 14:47:06 -0700</bug_when>
    <thetext>Created attachment 342082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430645</commentid>
    <comment_count>6</comment_count>
      <attachid>341889</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-06-06 17:39:12 -0700</bug_when>
    <thetext>Comment on attachment 341889
Patch

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

&gt;&gt;&gt; PerformanceTests/MotionMark/tests/resources/main.js:382
&gt;&gt;&gt; +                this._endTimestamp = timestamp + this._testLength;
&gt;&gt; 
&gt;&gt; The logic of initializing and changing this._endTimestamp and this._startTimestamp is now hard to track. We initialize them like this:
&gt;&gt; 
&gt;&gt;         this._startTimestamp = 0;
&gt;&gt;         this._endTimestamp = options[&quot;test-interval&quot;];
&gt;&gt; 
&gt;&gt; And I would expect to see them changing at the same time like that 
&gt;&gt;  
&gt;&gt;         this._startTimestamp = timestamp;
&gt;&gt;         this._endTimestamp = timestamp + this._testLength;
&gt;&gt; 
&gt;&gt; But I do not see that happing always in the current code and the new changes. I see couple of places where we change this._endTimestamp only and one place where we change this._startTimestamp only. I am just worried that they may get out of sync and we end up having this._endTimestamp - this._startTimestamp != this._testLength.
&gt;&gt; 
&gt;&gt; I would suggest either getting rid of one of them, probably this._endTimestamp and replace all the instances of it by this._startTimestamp + this._testLength.  Or you may add a method to shift the start and end time stamps of the test. And use this method instead of directly changing only one of them.
&gt; 
&gt; Ok. I got rid of the one place where only this._startTimestamp is updated. The call to Controller.start() updates both together anyway.
&gt; 
&gt; It is incorrect to always update this._endTimestamp to be this._startTimestamp + testLength. In the case of the ramp controller, the first phase can take a variable length of time, depending on what order of magnitude number of particles can be rendered. We want testLength to cover the time period after we do the initial tier estimate.
&gt; 
&gt; Finally, I don&apos;t think we should worry about the possibility that this._startTimestamp ends up after this._endTimestamp. The timestamp monotonically increases, and the updated calculations are always based on the most recent timestamp. Except for when _startTimestamp is updated from 0 to the wall clock time in Controller.start(), it is never updated.
&gt; 
&gt; _startTimestamp starts out at 0, but doesn&apos;t mean anything, because it supposed to represent wall clock time. After letting the test initialize for 100 ms, we then set it to the current time. That _startTimestamp never changes.
&gt; 
&gt; For the controllers that aren&apos;t the ramp controller, the _endTimestamp should be _startTimestamp + testLength.
&gt; 
&gt; For the ramp controller, however, we have to continue to extend the length because we don&apos;t know how long phase A runs.

Thanks for the explanation. I was confused about the test duration and I was thinking it has to be fixed and equal to testLength always.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430649</commentid>
    <comment_count>7</comment_count>
      <attachid>342082</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-06 17:45:41 -0700</bug_when>
    <thetext>Comment on attachment 342082
Patch

Clearing flags on attachment: 342082

Committed r232565: &lt;https://trac.webkit.org/changeset/232565&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430650</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-06 17:45:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430653</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-06 17:48:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/40875607&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341889</attachid>
            <date>2018-06-03 21:50:22 -0700</date>
            <delta_ts>2018-06-06 14:46:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186257-20180603215020.patch</filename>
            <type>text/plain</type>
            <size>2890</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNDU2CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAxYmY3YzFjNTJj
YjEyMmY0MzhmY2Y2Mzg1YjNmN2UxMTU3MDQ1ZTIuLjgzZDY3YWIyNGIwZmJkNzc4NDQ5YjhkYTRj
OTRiMDliZWExOTE2ZDYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDYt
MDMgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHRoZSByYW1w
IGNvbnRyb2xsZXIgdG8gcnVuIHRlc3RzIHRoYXQgdGFrZSBsZXNzIHRpbWUgdGhhbiB0aGUgaW5p
dGlhbCByYW1wLXVwIHBoYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODYyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1vdGlvbk1hcmsvdGVzdHMvcmVzb3VyY2VzL21haW4uanM6IEV4dGVuZCB0
aGUgZGVzaXJlZCBlbmQgdGltZXN0YW1wIHdoZW4gcmFtcC11cCBvY2N1cnMuCisgICAgICAgIFBy
ZXZpb3VzbHkgdGhlIGNvbnRyb2xsZXIgYXNzdW1lZCB0aGF0IHRoZSBkdXJhdGlvbiBvZiB0aGUg
dGVzdCB3YXMgYWx3YXlzIGxvbmdlciB0aGFuIHRoZQorICAgICAgICB0aW1lIGl0IHRvb2sgdG8g
ZmlndXJlIG91dCB0aGUgb3JkZXIgb2YgbWFnbml0dWRlIG9mIHBhcnRpY2xlcyB0byByZW5kZXIu
IFdoZW4gdGhhdCByYW5nZQorICAgICAgICBpcyBkZXRlcm1pbmVkLCB0aGUgZW5kIHRpbWVzdGFt
cCBpcyB0aGVuIGV4dGVuZGVkLiBJZiB0aGUgZHVyYXRpb24gaXMgdG9vIHNob3J0LCB0aGUgY29u
dHJvbGxlcgorICAgICAgICB3b3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIFRoZSBmaXggaXMgdG8g
Y29udGludWUgZXh0ZW5kaW5nIHRoZSB0aW1lc3RhbXAgZXZlcnkgdGltZSB0aGUgb3JkZXIgb2YK
KyAgICAgICAgbWFnbml0dWRlIHRpZXJzIHVwLgorICAgICAgICAgICAgICAgIEluIGdlbmVyYWwg
dGVzdGluZyB3aXRoIHJlYWxseSBzaG9ydCBkdXJhdGlvbnMgaXNuJ3QgcHJhY3RpY2FsLCBidXQg
c29tZXRpbWVzIGl0IGlzCisgICAgICAgIGRlc2lyZWQgZm9yIGRlYnVnZ2luZy4KKwogMjAxOC0w
Ni0wMyAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVubmVl
ZGVkIGRhdGEgcHJvY2Vzc2luZyBpbiBNb3Rpb25NYXJrCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL01vdGlvbk1hcmsvdGVzdHMvcmVzb3VyY2VzL21haW4uanMgYi9QZXJmb3JtYW5jZVRl
c3RzL01vdGlvbk1hcmsvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKaW5kZXggYmZlZWZkZmUwNGQ0
NjczMDc5ZjU4ZmIxZGQyMTg1M2UwMTAwMTcwNi4uMTExNzhmNDFjY2I1MzI0YjUxMzFiMDIyMTgw
N2IxMGJmZDMyMmM1ZiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Nb3Rpb25NYXJrL3Rl
c3RzL3Jlc291cmNlcy9tYWluLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTW90aW9uTWFyay90
ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcwpAQCAtMzE0LDYgKzMxNCw4IEBAIFJhbXBDb250cm9sbGVy
ID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKENvbnRyb2xsZXIsCiAgICAgICAgIHRoaXMuX21p
bmltdW1Db21wbGV4aXR5ID0gMTsKICAgICAgICAgdGhpcy5fbWF4aW11bUNvbXBsZXhpdHkgPSAx
OwogCisgICAgICAgIHRoaXMuX3Rlc3RMZW5ndGggPSBvcHRpb25zWyJ0ZXN0LWludGVydmFsIl07
CisKICAgICAgICAgLy8gQWZ0ZXIgdGhlIHRpZXIgcmFuZ2UgaXMgZGV0ZXJtaW5lZCwgZmlndXJl
IG91dCB0aGUgbnVtYmVyIG9mIHJhbXAgaXRlcmF0aW9ucwogICAgICAgICB2YXIgbWluaW11bVJh
bXBMZW5ndGggPSAzMDAwOwogICAgICAgICB2YXIgdG90YWxSYW1wSXRlcmF0aW9ucyA9IE1hdGgu
bWF4KDEsIE1hdGguZmxvb3IodGhpcy5fZW5kVGltZXN0YW1wIC8gbWluaW11bVJhbXBMZW5ndGgp
KTsKQEAgLTM3Nyw2ICszNzksNyBAQCBSYW1wQ29udHJvbGxlciA9IFV0aWxpdGllcy5jcmVhdGVT
dWJjbGFzcyhDb250cm9sbGVyLAogICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RUaWVyRnJhbWVM
ZW5ndGggPSBjdXJyZW50RnJhbWVMZW5ndGg7CiAKICAgICAgICAgICAgICAgICB0aGlzLl90aWVy
ICs9IC41OworICAgICAgICAgICAgICAgIHRoaXMuX2VuZFRpbWVzdGFtcCA9IHRpbWVzdGFtcCAr
IHRoaXMuX3Rlc3RMZW5ndGg7CiAgICAgICAgICAgICAgICAgdmFyIG5leHRUaWVyQ29tcGxleGl0
eSA9IE1hdGgucm91bmQoTWF0aC5wb3coMTAsIHRoaXMuX3RpZXIpKTsKICAgICAgICAgICAgICAg
ICBzdGFnZS50dW5lKG5leHRUaWVyQ29tcGxleGl0eSAtIGN1cnJlbnRDb21wbGV4aXR5KTsKIApA
QCAtMzk0LDcgKzM5Nyw3IEBAIFJhbXBDb250cm9sbGVyID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNs
YXNzKENvbnRyb2xsZXIsCiAgICAgICAgICAgICB0aGlzLmludGVydmFsU2FtcGxpbmdMZW5ndGgg
PSAxMjA7CiAKICAgICAgICAgICAgIC8vIEV4dGVuZCB0aGUgdGVzdCBsZW5ndGggc28gdGhhdCB0
aGUgZnVsbCB0ZXN0IGxlbmd0aCBpcyBtYWRlIG9mIHRoZSByYW1wcwotICAgICAgICAgICAgdGhp
cy5fZW5kVGltZXN0YW1wICs9IHRpbWVzdGFtcDsKKyAgICAgICAgICAgIHRoaXMuX2VuZFRpbWVz
dGFtcCA9IHRpbWVzdGFtcCArIHRoaXMuX3Rlc3RMZW5ndGg7CiAgICAgICAgICAgICB0aGlzLm1h
cmsoU3RyaW5ncy5qc29uLnNhbXBsaW5nU3RhcnRUaW1lT2Zmc2V0LCB0aW1lc3RhbXApOwogCiAg
ICAgICAgICAgICB0aGlzLl9taW5pbXVtQ29tcGxleGl0eSA9IDE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342082</attachid>
            <date>2018-06-06 14:47:06 -0700</date>
            <delta_ts>2018-06-06 17:45:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186257-20180606144705.patch</filename>
            <type>text/plain</type>
            <size>4140</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNTQ2CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU5M2IxYzBlZjky
Yzg3YTg0MDE3NjAyMWJiMjUwZjY1ODc4MTJlZTEuLjlmNjZjZDA1YWYxZDg5YWJkMDc3NmM4MWQ4
NmZiOTM5OTQwMjBlNGMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTgtMDYt
MDYgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHRoZSByYW1w
IGNvbnRyb2xsZXIgdG8gcnVuIHRlc3RzIHRoYXQgdGFrZSBsZXNzIHRpbWUgdGhhbiB0aGUgaW5p
dGlhbCByYW1wLXVwIHBoYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODYyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1vdGlvbk1hcmsvdGVzdHMvcmVzb3VyY2VzL21haW4uanM6IEV4dGVuZCB0
aGUgZGVzaXJlZCBlbmQgdGltZXN0YW1wIHdoZW4gcmFtcC11cCBvY2N1cnMuCisgICAgICAgIFBy
ZXZpb3VzbHkgdGhlIGNvbnRyb2xsZXIgYXNzdW1lZCB0aGF0IHRoZSBkdXJhdGlvbiBvZiB0aGUg
dGVzdCB3YXMgYWx3YXlzIGxvbmdlciB0aGFuIHRoZQorICAgICAgICB0aW1lIGl0IHRvb2sgdG8g
ZmlndXJlIG91dCB0aGUgb3JkZXIgb2YgbWFnbml0dWRlIG9mIHBhcnRpY2xlcyB0byByZW5kZXIu
IFdoZW4gdGhhdCByYW5nZQorICAgICAgICBpcyBkZXRlcm1pbmVkLCB0aGUgZW5kIHRpbWVzdGFt
cCBpcyB0aGVuIGV4dGVuZGVkLiBJZiB0aGUgZHVyYXRpb24gaXMgdG9vIHNob3J0LCB0aGUgY29u
dHJvbGxlcgorICAgICAgICB3b3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIFRoZSBmaXggaXMgdG8g
Y29udGludWUgZXh0ZW5kaW5nIHRoZSB0aW1lc3RhbXAgZXZlcnkgdGltZSB0aGUgb3JkZXIgb2YK
KyAgICAgICAgbWFnbml0dWRlIHRpZXJzIHVwLgorCisgICAgICAgIEluIGdlbmVyYWwgdGVzdGlu
ZyB3aXRoIHJlYWxseSBzaG9ydCBkdXJhdGlvbnMgaXNuJ3QgcHJhY3RpY2FsLCBidXQgc29tZXRp
bWVzIGl0IGlzCisgICAgICAgIGRlc2lyZWQgZm9yIGRlYnVnZ2luZy4KKworICAgICAgICBUbyBh
dm9pZCBjb25mdXNpb24gb2YgdGhlIHByaXZhdGUgdmFyaWFibGVzLCBJIHJlbmFtZWQgQmVuY2ht
YXJrLl9zdGFydFRpbWVzdGFtcCB0bworICAgICAgICBCZW5jaG1hcmsuX2JlbmNobWFya1N0YXJ0
VGltZXN0YW1wLCB0byBkaXNhbWJpZ3VhdGUgZnJvbSBDb250cm9sbGVyLl9zdGFydFRpbWVzdGFt
cC4KKyAgICAgICAgQmVuY2htYXJrLl9zdGFydFRpbWVzdGFtcCBpcyBzZXQgb25jZSBhbmQgbmV2
ZXIgY2hhbmdlZCwgYWZ0ZXIgdGhlIGluaXRpYWwgMTAwbXMgd2FybS11cC4KKyAgICAgICAgQ29u
dHJvbGxlci5fc3RhcnRUaW1lc3RhbXAgaXMgaW5pdGlhbGl6ZWQgdG8gMCAod2hpY2ggbWVhbnMg
Im5vdCBpbml0aWFsaXplZCIpLCBhbmQgdGhlbiBhZnRlcgorICAgICAgICB0aGUgd2FybSB1cCBp
cyBjb21wbGV0ZSwgc2V0IGluIENvbnRyb2xsZXIuc3RhcnQoKSB0byB0aGUgc2FtZSB3YWxsIGNs
b2NrIHRpbWVzdGFtcCwgYW5kIG5ldmVyCisgICAgICAgIGNoYW5nZWQgYWZ0ZXJ3YXJkcy4KKwog
MjAxOC0wNi0wNiAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyaXAg
b3V0IG1vcmUgY2hhcmFjdGVycyB3aGVuIGNyZWF0aW5nIHBlcm1hbGlua3MKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvTW90aW9uTWFyay90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvTW90aW9uTWFyay90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcwppbmRleCAw
OTNlYjU4MGU5NmVjYzI3ZTNmZGVhYWQwZWRmYzEyYzlhYjE3ZDJkLi4zZGI0NmEwY2NhMTNiZTEz
MjY3YzJhODBiZjJkZmRkMTM5NmE4MDVmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL01v
dGlvbk1hcmsvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9N
b3Rpb25NYXJrL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzCkBAIC0zNDEsNiArMzQxLDggQEAgUmFt
cENvbnRyb2xsZXIgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoQ29udHJvbGxlciwKICAgICAg
ICAgdGhpcy5fbWluaW11bUNvbXBsZXhpdHkgPSAxOwogICAgICAgICB0aGlzLl9tYXhpbXVtQ29t
cGxleGl0eSA9IDE7CiAKKyAgICAgICAgdGhpcy5fdGVzdExlbmd0aCA9IG9wdGlvbnNbInRlc3Qt
aW50ZXJ2YWwiXTsKKwogICAgICAgICAvLyBBZnRlciB0aGUgdGllciByYW5nZSBpcyBkZXRlcm1p
bmVkLCBmaWd1cmUgb3V0IHRoZSBudW1iZXIgb2YgcmFtcCBpdGVyYXRpb25zCiAgICAgICAgIHZh
ciBtaW5pbXVtUmFtcExlbmd0aCA9IDMwMDA7CiAgICAgICAgIHZhciB0b3RhbFJhbXBJdGVyYXRp
b25zID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcih0aGlzLl9lbmRUaW1lc3RhbXAgLyBtaW5pbXVt
UmFtcExlbmd0aCkpOwpAQCAtNDA0LDYgKzQwNiw3IEBAIFJhbXBDb250cm9sbGVyID0gVXRpbGl0
aWVzLmNyZWF0ZVN1YmNsYXNzKENvbnRyb2xsZXIsCiAgICAgICAgICAgICAgICAgdGhpcy5fbGFz
dFRpZXJGcmFtZUxlbmd0aCA9IGN1cnJlbnRGcmFtZUxlbmd0aDsKIAogICAgICAgICAgICAgICAg
IHRoaXMuX3RpZXIgKz0gLjU7CisgICAgICAgICAgICAgICAgdGhpcy5fZW5kVGltZXN0YW1wID0g
dGltZXN0YW1wICsgdGhpcy5fdGVzdExlbmd0aDsKICAgICAgICAgICAgICAgICB2YXIgbmV4dFRp
ZXJDb21wbGV4aXR5ID0gTWF0aC5yb3VuZChNYXRoLnBvdygxMCwgdGhpcy5fdGllcikpOwogICAg
ICAgICAgICAgICAgIHN0YWdlLnR1bmUobmV4dFRpZXJDb21wbGV4aXR5IC0gY3VycmVudENvbXBs
ZXhpdHkpOwogCkBAIC00MjEsNyArNDI0LDcgQEAgUmFtcENvbnRyb2xsZXIgPSBVdGlsaXRpZXMu
Y3JlYXRlU3ViY2xhc3MoQ29udHJvbGxlciwKICAgICAgICAgICAgIHRoaXMuaW50ZXJ2YWxTYW1w
bGluZ0xlbmd0aCA9IDEyMDsKIAogICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSB0ZXN0IGxlbmd0
aCBzbyB0aGF0IHRoZSBmdWxsIHRlc3QgbGVuZ3RoIGlzIG1hZGUgb2YgdGhlIHJhbXBzCi0gICAg
ICAgICAgICB0aGlzLl9lbmRUaW1lc3RhbXAgKz0gdGltZXN0YW1wOworICAgICAgICAgICAgdGhp
cy5fZW5kVGltZXN0YW1wID0gdGltZXN0YW1wICsgdGhpcy5fdGVzdExlbmd0aDsKICAgICAgICAg
ICAgIHRoaXMubWFyayhTdHJpbmdzLmpzb24uc2FtcGxpbmdTdGFydFRpbWVPZmZzZXQsIHRpbWVz
dGFtcCk7CiAKICAgICAgICAgICAgIHRoaXMuX21pbmltdW1Db21wbGV4aXR5ID0gMTsKQEAgLTg1
MSw3ICs4NTQsNyBAQCBCZW5jaG1hcmsgPSBVdGlsaXRpZXMuY3JlYXRlQ2xhc3MoCiAKICAgICBn
ZXQgdGltZXN0YW1wKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGltZXN0
YW1wIC0gdGhpcy5fc3RhcnRUaW1lc3RhbXA7CisgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50
VGltZXN0YW1wIC0gdGhpcy5fYmVuY2htYXJrU3RhcnRUaW1lc3RhbXA7CiAgICAgfSwKIAogICAg
IGJhY2tncm91bmRDb2xvcjogZnVuY3Rpb24oKQpAQCAtODk1LDcgKzg5OCw3IEBAIEJlbmNobWFy
ayA9IFV0aWxpdGllcy5jcmVhdGVDbGFzcygKICAgICAgICAgICAgICAgICB0aGlzLl9wcmV2aW91
c1RpbWVzdGFtcCA9IHRpbWVzdGFtcDsKICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWVzdGFtcCAt
IHRoaXMuX3ByZXZpb3VzVGltZXN0YW1wID49IDEwMCkgewogICAgICAgICAgICAgICAgIHRoaXMu
X2RpZFdhcm1VcCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRUaW1lc3RhbXAg
PSB0aW1lc3RhbXA7CisgICAgICAgICAgICAgICAgdGhpcy5fYmVuY2htYXJrU3RhcnRUaW1lc3Rh
bXAgPSB0aW1lc3RhbXA7CiAgICAgICAgICAgICAgICAgdGhpcy5fY29udHJvbGxlci5zdGFydCh0
aW1lc3RhbXAsIHRoaXMuX3N0YWdlKTsKICAgICAgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1Rp
bWVzdGFtcCA9IHRpbWVzdGFtcDsKICAgICAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>