<?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>79859</bug_id>
          
          <creation_ts>2012-02-28 19:34:43 -0800</creation_ts>
          <short_desc>Customize layout test timeout value for different ports.</short_desc>
          <delta_ts>2012-03-22 09:42:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hao Zheng">zhenghao</reporter>
          <assigned_to name="Hao Zheng">zhenghao</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>jberlin</cc>
    
    <cc>jnd</cc>
    
    <cc>ojan</cc>
    
    <cc>shezbaig.wk</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>567332</commentid>
    <comment_count>0</comment_count>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2012-02-28 19:34:43 -0800</bug_when>
    <thetext>Some ports, like chromium-android port, essentially have less power than desktop ones. As a result, some tests that could normally pass on desktop with timeout value 6 sec timeout for these ports. We have to add SLOW for all those tests, so I think it would be more convenient if the timeout value could be customized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574890</commentid>
    <comment_count>1</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2012-03-09 07:48:28 -0800</bug_when>
    <thetext>Currently webkit use a option &quot;--time-out-ms&quot; to control the timeout for each test, if it is not specified in command line, the default value 6000ms (defined in Manager.DEFAULT_TEST_TIMEOUT_MS) will be used, and the test marked as &quot;SLOW&quot; uses 5 times of time-out-ms as the timeout for slow test.

However Webkit now supports multiple platforms (AKA: ports) and their computing power are not same, using same default value and multiplier for all platforms seems not proper.
I know we can set different timeout for different platform by leveraging option &quot;--time-out-ms&quot;, but it is redundant to repeat passing the value to a platform you already know it always needs a special timeout rather than the default 6000ms. So I think it will be better if we can give each platform a ability to  customize its timeout/slow-timeout threshold.

The change seems pretty straightforward, the pseudo code in class Port looks like

Class Port(object)
  ...
  PLATFORM_DEFAULT_TIMEOUT_MS = 6000
  def get_default_timeout(for_slow_test):
    return x * LATFORM_DEFAULT_TIMEOUT_MS if for_slow_test else PLATFORM_DEFAULT_TIMEOUT_MS
  ...

Then each platform can have its own timeout/slow-timeout setting in its own Port implementation.

Does it sound good?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576556</commentid>
    <comment_count>2</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2012-03-12 14:47:03 -0700</bug_when>
    <thetext>@Adam, would you please give comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576616</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 15:29:49 -0700</bug_when>
    <thetext>&gt; Does it sound good?

Sounds fine.  Pls post a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582858</commentid>
    <comment_count>4</comment_count>
      <attachid>132778</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2012-03-20 01:47:38 -0700</bug_when>
    <thetext>Created attachment 132778
patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583205</commentid>
    <comment_count>5</comment_count>
      <attachid>132778</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-03-20 10:33:29 -0700</bug_when>
    <thetext>Comment on attachment 132778
patch v1

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:88
&gt; +    # The per-test timeout in milliseconds, if no --time-out-ms option was
&gt; +    # given to run_webkit_tests. Subclass can override it in default_test_timeout_ms
&gt; +    # according to the computing power on its platform.

This comment doesn&apos;t really add much value. It&apos;s pretty clear what DEFAULT_TEST_TIMEOUT_MS refers to.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:93
&gt; +    # The multiplier for per-test slow timeout. Subclass can override it in
&gt; +    # default_slowtest_timeout_multiplier according to the computing power on its platform.
&gt; +    DEFAULT_SLOWTEST_TIMEOUT_MULTIPLIER = 5

I don&apos;t really see the need for ports to make this configurable since it&apos;s a multiplier of the test timeout, which is configurable. Lets cut this out and add it in when we find a port actually needs it.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:157
&gt; +    def default_slowtest_timeout_multiplier(self):
&gt; +        return self.DEFAULT_SLOWTEST_TIMEOUT_MULTIPLIER

Ditto: above, lets remove this.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:620
&gt; +            kill_timeout_seconds = 3.0 * int(time_out_ms) / Port.DEFAULT_TEST_TIMEOUT_MS

Shouldn&apos;t this be using default_test_timeout_ms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583247</commentid>
    <comment_count>6</comment_count>
      <attachid>132778</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-20 11:09:05 -0700</bug_when>
    <thetext>Comment on attachment 132778
patch v1

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:620
&gt;&gt; +            kill_timeout_seconds = 3.0 * int(time_out_ms) / Port.DEFAULT_TEST_TIMEOUT_MS
&gt; 
&gt; Shouldn&apos;t this be using default_test_timeout_ms?

This is how long to wait for a process to shutdown before we just kill the process.  We try to cleanly shutdown DRT, but if it doesn&apos;t stop after a few seconds, we just kill it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583260</commentid>
    <comment_count>7</comment_count>
      <attachid>132778</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-03-20 11:17:58 -0700</bug_when>
    <thetext>Comment on attachment 132778
patch v1

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:620
&gt;&gt;&gt; +            kill_timeout_seconds = 3.0 * int(time_out_ms) / Port.DEFAULT_TEST_TIMEOUT_MS
&gt;&gt; 
&gt;&gt; Shouldn&apos;t this be using default_test_timeout_ms?
&gt; 
&gt; This is how long to wait for a process to shutdown before we just kill the process.  We try to cleanly shutdown DRT, but if it doesn&apos;t stop after a few seconds, we just kill it.

Right, but the number we divide by should be default_test_timeout_ms, not Port.DEFAULT_TEST_TIMEOUT_MS, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583282</commentid>
    <comment_count>8</comment_count>
      <attachid>132778</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-20 11:27:30 -0700</bug_when>
    <thetext>Comment on attachment 132778
patch v1

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

&gt;&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:620
&gt;&gt;&gt;&gt; +            kill_timeout_seconds = 3.0 * int(time_out_ms) / Port.DEFAULT_TEST_TIMEOUT_MS
&gt;&gt;&gt; 
&gt;&gt;&gt; Shouldn&apos;t this be using default_test_timeout_ms?
&gt;&gt; 
&gt;&gt; This is how long to wait for a process to shutdown before we just kill the process.  We try to cleanly shutdown DRT, but if it doesn&apos;t stop after a few seconds, we just kill it.
&gt; 
&gt; Right, but the number we divide by should be default_test_timeout_ms, not Port.DEFAULT_TEST_TIMEOUT_MS, right?

Either seems OK in this case, I doubt it matters much.  If someone runs chromium-android with --time-out-ms=60000, we will wait 30s or 18s.  This was originally added because running DRT under valgrind takes a long time to shutdown, but I suspect either 30s or 18s is fine for android.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583301</commentid>
    <comment_count>9</comment_count>
      <attachid>132778</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-03-20 11:41:50 -0700</bug_when>
    <thetext>Comment on attachment 132778
patch v1

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

&gt;&gt;&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:620
&gt;&gt;&gt;&gt;&gt; +            kill_timeout_seconds = 3.0 * int(time_out_ms) / Port.DEFAULT_TEST_TIMEOUT_MS
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Shouldn&apos;t this be using default_test_timeout_ms?
&gt;&gt;&gt; 
&gt;&gt;&gt; This is how long to wait for a process to shutdown before we just kill the process.  We try to cleanly shutdown DRT, but if it doesn&apos;t stop after a few seconds, we just kill it.
&gt;&gt; 
&gt;&gt; Right, but the number we divide by should be default_test_timeout_ms, not Port.DEFAULT_TEST_TIMEOUT_MS, right?
&gt; 
&gt; Either seems OK in this case, I doubt it matters much.  If someone runs chromium-android with --time-out-ms=60000, we will wait 30s or 18s.  This was originally added because running DRT under valgrind takes a long time to shutdown, but I suspect either 30s or 18s is fine for android.

default_test_timeout_ms seems more correct to me. We already have access to the port object, so it&apos;s just a simple function call. You could imagine a future world in which the port&apos;s default_test_timeout_ms is smaller than Port.DEFAULT_TEST_TIMEOUT_MS, in which case, this would be doing the wrong thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583689</commentid>
    <comment_count>10</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2012-03-20 18:49:12 -0700</bug_when>
    <thetext>(In reply to comment #9)

&gt; default_test_timeout_ms seems more correct to me. We already have access to the port object, so it&apos;s just a simple function call. You could imagine a future world in which the port&apos;s default_test_timeout_ms is smaller than Port.DEFAULT_TEST_TIMEOUT_MS, in which case, this would be doing the wrong thing.


If the input time_out_ms is smaller than the port&apos;s default_test_timeout_ms, which can lead same wrong. We probably should check it in the beginning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583697</commentid>
    <comment_count>11</comment_count>
      <attachid>132945</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2012-03-20 19:04:20 -0700</bug_when>
    <thetext>Created attachment 132945
patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583781</commentid>
    <comment_count>12</comment_count>
      <attachid>132945</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-03-20 21:27:20 -0700</bug_when>
    <thetext>Comment on attachment 132945
patch v2

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

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:165
&gt; +    else:
&gt; +        if int(options.time_out_ms) &lt; port_default_timeout_ms:
&gt; +            options.time_out_ms = str(port_default_timeout_ms)

You should be able to set the timeout to less than the port default.  I don&apos;t think we want this else statement. See my other coment below.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:86
&gt; +    DEFAULT_TEST_TIMEOUT_MS = 6 * 1000

Nit: I don&apos;t think we need this variable. You can just move the 6*1000 into default_test_timeout_ms

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:622
&gt;          if time_out_ms and not self._no_timeout:
&gt; -            # FIXME: Port object shouldn&apos;t be dependent on layout test manager.
&gt; -            kill_timeout_seconds = 3.0 * int(time_out_ms) / Manager.DEFAULT_TEST_TIMEOUT_MS
&gt; +            kill_timeout_seconds = 3.0 * int(time_out_ms) / self._port.default_test_timeout_ms()
&gt;          else:
&gt;              kill_timeout_seconds = 3.0

If you want, you can make sure that kill_timeout_seconds is at least 3.0 here. That would deal with the case of time_out_ms being less than default_test_timeout_ms.

Really this chunk of code is very confusing. Seems like we should always just set kill_timeout_seconds to 3.0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583875</commentid>
    <comment_count>13</comment_count>
      <attachid>132985</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2012-03-21 00:44:48 -0700</bug_when>
    <thetext>Created attachment 132985
patch v3

(In reply to comment #12)
&gt; If you want, you can make sure that kill_timeout_seconds is at least 3.0 here. That would deal with the case of time_out_ms being less than default_test_timeout_ms.
&gt; 
&gt; Really this chunk of code is very confusing. Seems like we should always just set kill_timeout_seconds to 3.0.

I don&apos;t know the context of this chunk, but if time_out_ms is greater than default_test_timeout_ms, the kill_timeout_seconds is greater than 3.0
Patch3 is  going to make sure that kill_timeout_seconds is at least 3.0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584895</commentid>
    <comment_count>14</comment_count>
      <attachid>132985</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 19:26:37 -0700</bug_when>
    <thetext>Comment on attachment 132985
patch v3

Clearing flags on attachment: 132985

Committed r111642: &lt;http://trac.webkit.org/changeset/111642&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584896</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 19:26:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585338</commentid>
    <comment_count>16</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-03-22 08:47:29 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; All reviewed patches have been landed.  Closing bug.

This caused 2 python tests to start failing on the Lion Release testers:

http://build.webkit.org/builders/Lion%20Intel%20Release%20%28Tests%29/builds/6708
http://build.webkit.org/builders/Lion%20Intel%20Release%20%28Tests%29/builds/6709/steps/webkitpy-test/logs/stdio

Suppressing most webkitpy logging while running unit tests.
Skipping tests in the following modules or packages because they are really, really slow:
    webkitpy.common.checkout.scm.scm_unittest
    (https://bugs.webkit.org/show_bug.cgi?id=31818; use --all to include)

...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................E.E..........................................................................................................................................................................................................................................................................................this should be logged
..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
======================================================================
ERROR: test_stop (webkitpy.layout_tests.port.chromium_unittest.ChromiumDriverTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/Volumes/Data/slave/lion-intel-release-tests/build/Tools/Scripts/webkitpy/layout_tests/port/chromium_unittest.py&quot;, line 136, in test_stop
    self.driver.stop()
  File &quot;/Volumes/Data/slave/lion-intel-release-tests/build/Tools/Scripts/webkitpy/layout_tests/port/chromium.py&quot;, line 627, in stop
    timeout_ratio = float(time_out_ms) / self._port.default_test_timeout_ms()
TypeError: unsupported operand type(s) for /: &apos;float&apos; and &apos;Mock&apos;

======================================================================
ERROR: test_two_drivers (webkitpy.layout_tests.port.chromium_unittest.ChromiumDriverTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/Volumes/Data/slave/lion-intel-release-tests/build/Tools/Scripts/webkitpy/layout_tests/port/chromium_unittest.py&quot;, line 158, in test_two_drivers
    driver1.stop()
  File &quot;/Volumes/Data/slave/lion-intel-release-tests/build/Tools/Scripts/webkitpy/layout_tests/port/chromium.py&quot;, line 627, in stop
    timeout_ratio = float(time_out_ms) / self._port.default_test_timeout_ms()
TypeError: unsupported operand type(s) for /: &apos;float&apos; and &apos;Mock&apos;

----------------------------------------------------------------------
Ran 1318 tests in 14.478s

http://build.webkit.org/builders/Lion%20Intel%20Release%20%28WebKit2%20Tests%29/builds/5606
http://build.webkit.org/builders/Lion%20Intel%20Release%20%28WebKit2%20Tests%29/builds/5607/steps/webkitpy-test/logs/stdio

Suppressing most webkitpy logging while running unit tests.
Skipping tests in the following modules or packages because they are really, really slow:
    webkitpy.common.checkout.scm.scm_unittest
    (https://bugs.webkit.org/show_bug.cgi?id=31818; use --all to include)

...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................E.E..........................................................................................................................................................................................................................................................................................this should be logged
..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
======================================================================
ERROR: test_stop (webkitpy.layout_tests.port.chromium_unittest.ChromiumDriverTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/Volumes/Data/slave/lion-intel-release-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/port/chromium_unittest.py&quot;, line 136, in test_stop
    self.driver.stop()
  File &quot;/Volumes/Data/slave/lion-intel-release-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/port/chromium.py&quot;, line 627, in stop
    timeout_ratio = float(time_out_ms) / self._port.default_test_timeout_ms()
TypeError: unsupported operand type(s) for /: &apos;float&apos; and &apos;Mock&apos;

======================================================================
ERROR: test_two_drivers (webkitpy.layout_tests.port.chromium_unittest.ChromiumDriverTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/Volumes/Data/slave/lion-intel-release-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/port/chromium_unittest.py&quot;, line 158, in test_two_drivers
    driver1.stop()
  File &quot;/Volumes/Data/slave/lion-intel-release-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/port/chromium.py&quot;, line 627, in stop
    timeout_ratio = float(time_out_ms) / self._port.default_test_timeout_ms()
TypeError: unsupported operand type(s) for /: &apos;float&apos; and &apos;Mock&apos;

----------------------------------------------------------------------
Ran 1318 tests in 15.276s

FAILED (errors=2)


Please fix this, or this patch will have to be rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585360</commentid>
    <comment_count>17</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2012-03-22 09:20:50 -0700</bug_when>
    <thetext>(In reply to comment #16)

&gt; Please fix this, or this patch will have to be rolled out.

Adding &quot;mock_port.default_test_timeout_ms = lambda : 6 * 1000&quot; after &quot;mock_port = Mock()&quot; can fix it. A patch will be posted soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585376</commentid>
    <comment_count>18</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2012-03-22 09:31:39 -0700</bug_when>
    <thetext>(In reply to comment #17)

Seems that has been fixed in http://trac.webkit.org/changeset/111662</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585388</commentid>
    <comment_count>19</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-03-22 09:42:39 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; 
&gt; Seems that has been fixed in http://trac.webkit.org/changeset/111662

Ah, looks like the release builders got stuck, which is why it didn&apos;t look fixed yet. Apologies for not double checking.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132778</attachid>
            <date>2012-03-20 01:47:38 -0700</date>
            <delta_ts>2012-03-20 19:04:20 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>customize_timeout_perport</filename>
            <type>text/plain</type>
            <size>6070</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExMTM3MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDEyLTAzLTIwICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgQ3VzdG9taXplIGxheW91dCB0ZXN0IHRpbWVvdXQgdmFsdWUgZm9yIGRpZmZlcmVu
dCBwb3J0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc5ODU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5Ogor
ICAgICAgICAoTWFuYWdlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydCk6CisgICAgICAgIChQb3J0LmNhbik6Cisg
ICAgICAgIChQb3J0LmRlZmF1bHRfdGVzdF90aW1lb3V0X21zKToKKyAgICAgICAgKFBvcnQuZGVm
YXVsdF9zbG93dGVzdF90aW1lb3V0X211bHRpcGxpZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bURy
aXZlci5zdG9wKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0LmRlZmF1
bHRfdGVzdF90aW1lb3V0X21zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAoX3NldF91cF9kZXJpdmVkX29wdGlv
bnMpOgorCiAyMDEyLTAzLTE5ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZDsgcm9sbCBvdXQgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTExMzA3IGFuZCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMTEyOTMK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0cy5weQkocmV2aXNpb24gMTExMTY3KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQkod29ya2luZyBjb3B5KQpA
QCAtMTU2LDExICsxNTYsMTEgQEAgZGVmIF9zZXRfdXBfZGVyaXZlZF9vcHRpb25zKHBvcnQsIG9w
dGlvbgogCiAgICAgaWYgbm90IG9wdGlvbnMudGltZV9vdXRfbXM6CiAgICAgICAgIGlmIG9wdGlv
bnMuY29uZmlndXJhdGlvbiA9PSAiRGVidWciOgotICAgICAgICAgICAgb3B0aW9ucy50aW1lX291
dF9tcyA9IHN0cigyICogTWFuYWdlci5ERUZBVUxUX1RFU1RfVElNRU9VVF9NUykKKyAgICAgICAg
ICAgIG9wdGlvbnMudGltZV9vdXRfbXMgPSBzdHIoMiAqIHBvcnQuZGVmYXVsdF90ZXN0X3RpbWVv
dXRfbXMoKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9wdGlvbnMudGltZV9vdXRfbXMg
PSBzdHIoTWFuYWdlci5ERUZBVUxUX1RFU1RfVElNRU9VVF9NUykKKyAgICAgICAgICAgIG9wdGlv
bnMudGltZV9vdXRfbXMgPSBzdHIocG9ydC5kZWZhdWx0X3Rlc3RfdGltZW91dF9tcygpKQogCi0g
ICAgb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zID0gc3RyKDUgKiBpbnQob3B0aW9ucy50aW1lX291
dF9tcykpCisgICAgb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zID0gc3RyKHBvcnQuZGVmYXVsdF9z
bG93dGVzdF90aW1lb3V0X211bHRpcGxpZXIoKSAqIGludChvcHRpb25zLnRpbWVfb3V0X21zKSkK
IAogICAgIGlmIG9wdGlvbnMuYWRkaXRpb25hbF9wbGF0Zm9ybV9kaXJlY3Rvcnk6CiAgICAgICAg
IG5vcm1hbGl6ZWRfcGxhdGZvcm1fZGlyZWN0b3JpZXMgPSBbXQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyLnB5CShyZXZpc2lvbiAxMTExNjcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yODQsMTIg
KzI4NCw2IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAiIiJBIGNsYXNzIGZvciBtYW5h
Z2luZyBydW5uaW5nIGEgc2VyaWVzIG9mIHRlc3RzIG9uIGEgc2VyaWVzIG9mIGxheW91dAogICAg
IHRlc3QgZmlsZXMuIiIiCiAKLQotICAgICMgVGhlIHBlci10ZXN0IHRpbWVvdXQgaW4gbWlsbGlz
ZWNvbmRzLCBpZiBubyAtLXRpbWUtb3V0LW1zIG9wdGlvbiB3YXMKLSAgICAjIGdpdmVuIHRvIHJ1
bl93ZWJraXRfdGVzdHMuIFRoaXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gdGhlIGRlZmF1bHQgdGlt
ZW91dAotICAgICMgaW4gRHVtcFJlbmRlclRyZWUuCi0gICAgREVGQVVMVF9URVNUX1RJTUVPVVRf
TVMgPSA2ICogMTAwMAotCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMsIHBy
aW50ZXIpOgogICAgICAgICAiIiJJbml0aWFsaXplIHRlc3QgcnVubmVyIGRhdGEgc3RydWN0dXJl
cy4KIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvYmFzZS5weQkocmV2aXNpb24gMTExMTY3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4MywxNSBA
QCBjbGFzcyBQb3J0KG9iamVjdCk6CiAKICAgICBBTExfQlVJTERfVFlQRVMgPSAoJ2RlYnVnJywg
J3JlbGVhc2UnKQogCisgICAgIyBUaGUgcGVyLXRlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMs
IGlmIG5vIC0tdGltZS1vdXQtbXMgb3B0aW9uIHdhcworICAgICMgZ2l2ZW4gdG8gcnVuX3dlYmtp
dF90ZXN0cy4gU3ViY2xhc3MgY2FuIG92ZXJyaWRlIGl0IGluIGRlZmF1bHRfdGVzdF90aW1lb3V0
X21zCisgICAgIyBhY2NvcmRpbmcgdG8gdGhlIGNvbXB1dGluZyBwb3dlciBvbiBpdHMgcGxhdGZv
cm0uCisgICAgREVGQVVMVF9URVNUX1RJTUVPVVRfTVMgPSA2ICogMTAwMAorCisgICAgIyBUaGUg
bXVsdGlwbGllciBmb3IgcGVyLXRlc3Qgc2xvdyB0aW1lb3V0LiBTdWJjbGFzcyBjYW4gb3ZlcnJp
ZGUgaXQgaW4KKyAgICAjIGRlZmF1bHRfc2xvd3Rlc3RfdGltZW91dF9tdWx0aXBsaWVyIGFjY29y
ZGluZyB0byB0aGUgY29tcHV0aW5nIHBvd2VyIG9uIGl0cyBwbGF0Zm9ybS4KKyAgICBERUZBVUxU
X1NMT1dURVNUX1RJTUVPVVRfTVVMVElQTElFUiA9IDUKKwogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBkZXRlcm1pbmVfZnVsbF9wb3J0X25hbWUoY2xzLCBob3N0LCBvcHRpb25zLCBwb3J0X25h
bWUpOgogICAgICAgICAiIiJSZXR1cm4gYSBmdWxseS1zcGVjaWZpZWQgcG9ydCBuYW1lIHRoYXQg
Y2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IG9iamVjdHMuIiIiCkBAIC0xNDEsNiArMTUwLDEyIEBA
IGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgc2VsZi5fcmVmdGVzdF9saXN0ID0ge30KICAg
ICAgICAgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkgPSBOb25lCiAKKyAgICBkZWYgZGVmYXVsdF90
ZXN0X3RpbWVvdXRfbXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLkRFRkFVTFRfVEVTVF9U
SU1FT1VUX01TCisKKyAgICBkZWYgZGVmYXVsdF9zbG93dGVzdF90aW1lb3V0X211bHRpcGxpZXIo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLkRFRkFVTFRfU0xPV1RFU1RfVElNRU9VVF9NVUxU
SVBMSUVSCisKICAgICBkZWYgd2RpZmZfYXZhaWxhYmxlKHNlbGYpOgogICAgICAgICBpZiBzZWxm
Ll93ZGlmZl9hdmFpbGFibGUgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX3dkaWZmX2F2YWls
YWJsZSA9IHNlbGYuY2hlY2tfd2RpZmYobG9nZ2luZz1GYWxzZSkKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQkocmV2
aXNpb24gMTExMTY3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bS5weQkod29ya2luZyBjb3B5KQpAQCAtNjE3LDggKzYxNyw3IEBAIGNsYXNzIENo
cm9taXVtRHJpdmVyKERyaXZlcik6CiAgICAgICAgICAgICBzZWxmLl9wcm9jLnN0ZGVyci5jbG9z
ZSgpCiAgICAgICAgIHRpbWVfb3V0X21zID0gc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd0aW1lX291
dF9tcycpCiAgICAgICAgIGlmIHRpbWVfb3V0X21zIGFuZCBub3Qgc2VsZi5fbm9fdGltZW91dDoK
LSAgICAgICAgICAgICMgRklYTUU6IFBvcnQgb2JqZWN0IHNob3VsZG4ndCBiZSBkZXBlbmRlbnQg
b24gbGF5b3V0IHRlc3QgbWFuYWdlci4KLSAgICAgICAgICAgIGtpbGxfdGltZW91dF9zZWNvbmRz
ID0gMy4wICogaW50KHRpbWVfb3V0X21zKSAvIE1hbmFnZXIuREVGQVVMVF9URVNUX1RJTUVPVVRf
TVMKKyAgICAgICAgICAgIGtpbGxfdGltZW91dF9zZWNvbmRzID0gMy4wICogaW50KHRpbWVfb3V0
X21zKSAvIFBvcnQuREVGQVVMVF9URVNUX1RJTUVPVVRfTVMKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIGtpbGxfdGltZW91dF9zZWNvbmRzID0gMy4wCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2Fu
ZHJvaWQucHkJKHJldmlzaW9uIDExMTE2NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQkod29ya2luZyBjb3B5KQpAQCAtMTUz
LDYgKzE1MywxMiBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9tCiAg
ICAgICAgIGlmIGFkYl9hcmdzOgogICAgICAgICAgICAgc2VsZi5fYWRiX2NvbW1hbmQgKz0gc2hs
ZXguc3BsaXQoYWRiX2FyZ3MpCiAKKyAgICBkZWYgZGVmYXVsdF90ZXN0X3RpbWVvdXRfbXMoc2Vs
Zik6CisgICAgICAgICMgQW5kcm9pZCBwbGF0Zm9ybSBoYXMgbGVzcyBjb21wdXRpbmcgcG93ZXIg
dGhhbiBkZXNrdG9wIHBsYXRmb3Jtcy4KKyAgICAgICAgIyBVc2luZyAxMCBzZWNvbmRzIGFsbG93
cyB1cyB0byBwYXNzIG1vc3Qgc2xvdyB0ZXN0cyB3aGljaCBhcmUgbm90CisgICAgICAgICMgbWFy
a2VkIGFzIHNsb3cgdGVzdHMgb24gZGVza3RvcCBwbGF0Zm9ybXMuCisgICAgICAgIHJldHVybiAx
MCAqIDEwMDAKKwogICAgIGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAg
ICAgIyBDdXJyZW50bHkgd2Ugb25seSB1c2Ugb25lIHByb2Nlc3MsIGJ1dCBpdCBtaWdodCBiZSBo
ZWxwZnVsIHRvIHVzZQogICAgICAgICAjIG1vcmUgdGhhdCBvbmUgcHJvY2VzcyBpbiB0aGUgZnV0
dXJlIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuCg==
</data>
<flag name="review"
          id="136530"
          type_id="1"
          status="-"
          setter="ojan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132945</attachid>
            <date>2012-03-20 19:04:20 -0700</date>
            <delta_ts>2012-03-21 00:44:48 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>customize_timeout_perport</filename>
            <type>text/plain</type>
            <size>5444</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExMTQ4MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIyIEBACisyMDEyLTAzLTIwICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgQ3VzdG9taXplIGxheW91dCB0ZXN0IHRpbWVvdXQgdmFsdWUgZm9yIGRpZmZlcmVu
dCBwb3J0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc5ODU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5Ogor
ICAgICAgICAoTWFuYWdlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydCk6CisgICAgICAgIChQb3J0LmRlZmF1bHRf
dGVzdF90aW1lb3V0X21zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAoQ2hyb21pdW1Ecml2ZXIuc3RvcCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lk
LnB5OgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5kZWZhdWx0X3Rlc3RfdGltZW91dF9t
cyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weToKKyAgICAgICAgKF9zZXRfdXBfZGVyaXZlZF9vcHRpb25zKToKKwogMjAxMi0wMy0y
MCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTExNDUzLgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CShyZXZpc2lvbiAx
MTExNjcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsMTEgKzE1NCwxNSBAQCBkZWYgX3NldF91
cF9kZXJpdmVkX29wdGlvbnMocG9ydCwgb3B0aW9uCiAgICAgaWYgb3B0aW9ucy5waXhlbF90ZXN0
cyBpcyBOb25lOgogICAgICAgICBvcHRpb25zLnBpeGVsX3Rlc3RzID0gVHJ1ZQogCisgICAgcG9y
dF9kZWZhdWx0X3RpbWVvdXRfbXMgPSBwb3J0LmRlZmF1bHRfdGVzdF90aW1lb3V0X21zKCkKICAg
ICBpZiBub3Qgb3B0aW9ucy50aW1lX291dF9tczoKICAgICAgICAgaWYgb3B0aW9ucy5jb25maWd1
cmF0aW9uID09ICJEZWJ1ZyI6Ci0gICAgICAgICAgICBvcHRpb25zLnRpbWVfb3V0X21zID0gc3Ry
KDIgKiBNYW5hZ2VyLkRFRkFVTFRfVEVTVF9USU1FT1VUX01TKQorICAgICAgICAgICAgb3B0aW9u
cy50aW1lX291dF9tcyA9IHN0cigyICogcG9ydF9kZWZhdWx0X3RpbWVvdXRfbXMpCiAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBvcHRpb25zLnRpbWVfb3V0X21zID0gc3RyKE1hbmFnZXIuREVG
QVVMVF9URVNUX1RJTUVPVVRfTVMpCisgICAgICAgICAgICBvcHRpb25zLnRpbWVfb3V0X21zID0g
c3RyKHBvcnRfZGVmYXVsdF90aW1lb3V0X21zKQorICAgIGVsc2U6CisgICAgICAgIGlmIGludChv
cHRpb25zLnRpbWVfb3V0X21zKSA8IHBvcnRfZGVmYXVsdF90aW1lb3V0X21zOgorICAgICAgICAg
ICAgb3B0aW9ucy50aW1lX291dF9tcyA9IHN0cihwb3J0X2RlZmF1bHRfdGltZW91dF9tcykKIAog
ICAgIG9wdGlvbnMuc2xvd190aW1lX291dF9tcyA9IHN0cig1ICogaW50KG9wdGlvbnMudGltZV9v
dXRfbXMpKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9tYW5hZ2VyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkJKHJldmlzaW9uIDExMTE2NykKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTI4NCwxMiArMjg0LDYgQEAgY2xhc3MgTWFuYWdlcihvYmpl
Y3QpOgogICAgICIiIkEgY2xhc3MgZm9yIG1hbmFnaW5nIHJ1bm5pbmcgYSBzZXJpZXMgb2YgdGVz
dHMgb24gYSBzZXJpZXMgb2YgbGF5b3V0CiAgICAgdGVzdCBmaWxlcy4iIiIKIAotCi0gICAgIyBU
aGUgcGVyLXRlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMsIGlmIG5vIC0tdGltZS1vdXQtbXMg
b3B0aW9uIHdhcwotICAgICMgZ2l2ZW4gdG8gcnVuX3dlYmtpdF90ZXN0cy4gVGhpcyBzaG91bGQg
Y29ycmVzcG9uZCB0byB0aGUgZGVmYXVsdCB0aW1lb3V0Ci0gICAgIyBpbiBEdW1wUmVuZGVyVHJl
ZS4KLSAgICBERUZBVUxUX1RFU1RfVElNRU9VVF9NUyA9IDYgKiAxMDAwCi0KICAgICBkZWYgX19p
bml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgcHJpbnRlcik6CiAgICAgICAgICIiIkluaXRpYWxp
emUgdGVzdCBydW5uZXIgZGF0YSBzdHJ1Y3R1cmVzLgogCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CShyZXZpc2lvbiAxMTExNjcp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAgY2xhc3MgUG9ydChvYmplY3QpOgogCiAgICAg
QUxMX0JVSUxEX1RZUEVTID0gKCdkZWJ1ZycsICdyZWxlYXNlJykKIAorICAgIERFRkFVTFRfVEVT
VF9USU1FT1VUX01TID0gNiAqIDEwMDAKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBkZXRl
cm1pbmVfZnVsbF9wb3J0X25hbWUoY2xzLCBob3N0LCBvcHRpb25zLCBwb3J0X25hbWUpOgogICAg
ICAgICAiIiJSZXR1cm4gYSBmdWxseS1zcGVjaWZpZWQgcG9ydCBuYW1lIHRoYXQgY2FuIGJlIHVz
ZWQgdG8gY29uc3RydWN0IG9iamVjdHMuIiIiCkBAIC0xNDEsNiArMTQzLDkgQEAgY2xhc3MgUG9y
dChvYmplY3QpOgogICAgICAgICBzZWxmLl9yZWZ0ZXN0X2xpc3QgPSB7fQogICAgICAgICBzZWxm
Ll9yZXN1bHRzX2RpcmVjdG9yeSA9IE5vbmUKIAorICAgIGRlZiBkZWZhdWx0X3Rlc3RfdGltZW91
dF9tcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuREVGQVVMVF9URVNUX1RJTUVPVVRfTVMK
KwogICAgIGRlZiB3ZGlmZl9hdmFpbGFibGUoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3dkaWZm
X2F2YWlsYWJsZSBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5fd2RpZmZfYXZhaWxhYmxlID0g
c2VsZi5jaGVja193ZGlmZihsb2dnaW5nPUZhbHNlKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CShyZXZpc2lvbiAx
MTExNjcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02MTcsOCArNjE3LDcgQEAgY2xhc3MgQ2hyb21pdW1E
cml2ZXIoRHJpdmVyKToKICAgICAgICAgICAgIHNlbGYuX3Byb2Muc3RkZXJyLmNsb3NlKCkKICAg
ICAgICAgdGltZV9vdXRfbXMgPSBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3RpbWVfb3V0X21zJykK
ICAgICAgICAgaWYgdGltZV9vdXRfbXMgYW5kIG5vdCBzZWxmLl9ub190aW1lb3V0OgotICAgICAg
ICAgICAgIyBGSVhNRTogUG9ydCBvYmplY3Qgc2hvdWxkbid0IGJlIGRlcGVuZGVudCBvbiBsYXlv
dXQgdGVzdCBtYW5hZ2VyLgotICAgICAgICAgICAga2lsbF90aW1lb3V0X3NlY29uZHMgPSAzLjAg
KiBpbnQodGltZV9vdXRfbXMpIC8gTWFuYWdlci5ERUZBVUxUX1RFU1RfVElNRU9VVF9NUworICAg
ICAgICAgICAga2lsbF90aW1lb3V0X3NlY29uZHMgPSAzLjAgKiBpbnQodGltZV9vdXRfbXMpIC8g
c2VsZi5fcG9ydC5kZWZhdWx0X3Rlc3RfdGltZW91dF9tcygpCiAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICBraWxsX3RpbWVvdXRfc2Vjb25kcyA9IDMuMAogCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9h
bmRyb2lkLnB5CShyZXZpc2lvbiAxMTExNjcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkJKHdvcmtpbmcgY29weSkKQEAgLTE1
Myw2ICsxNTMsMTIgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbQog
ICAgICAgICBpZiBhZGJfYXJnczoKICAgICAgICAgICAgIHNlbGYuX2FkYl9jb21tYW5kICs9IHNo
bGV4LnNwbGl0KGFkYl9hcmdzKQogCisgICAgZGVmIGRlZmF1bHRfdGVzdF90aW1lb3V0X21zKHNl
bGYpOgorICAgICAgICAjIEFuZHJvaWQgcGxhdGZvcm0gaGFzIGxlc3MgY29tcHV0aW5nIHBvd2Vy
IHRoYW4gZGVza3RvcCBwbGF0Zm9ybXMuCisgICAgICAgICMgVXNpbmcgMTAgc2Vjb25kcyBhbGxv
d3MgdXMgdG8gcGFzcyBtb3N0IHNsb3cgdGVzdHMgd2hpY2ggYXJlIG5vdAorICAgICAgICAjIG1h
cmtlZCBhcyBzbG93IHRlc3RzIG9uIGRlc2t0b3AgcGxhdGZvcm1zLgorICAgICAgICByZXR1cm4g
MTAgKiAxMDAwCisKICAgICBkZWYgZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6CiAgICAg
ICAgICMgQ3VycmVudGx5IHdlIG9ubHkgdXNlIG9uZSBwcm9jZXNzLCBidXQgaXQgbWlnaHQgYmUg
aGVscGZ1bCB0byB1c2UKICAgICAgICAgIyBtb3JlIHRoYXQgb25lIHByb2Nlc3MgaW4gdGhlIGZ1
dHVyZSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgo=
</data>
<flag name="review"
          id="136761"
          type_id="1"
          status="-"
          setter="ojan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132985</attachid>
            <date>2012-03-21 00:44:48 -0700</date>
            <delta_ts>2012-03-21 19:26:37 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>customize_timeout_perport</filename>
            <type>text/plain</type>
            <size>4941</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExMTUwNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDEyLTAzLTIxICBKb2hubnkgRGluZyAgPGpuZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgQ3VzdG9taXplIGxheW91dCB0ZXN0IHRpbWVvdXQgdmFsdWUgZm9yIGRpZmZlcmVu
dCBwb3J0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc5ODU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5Ogor
ICAgICAgICAoTWFuYWdlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC5kZWZhdWx0X3Rlc3RfdGltZW91dF9tcyk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5w
eToKKyAgICAgICAgKENocm9taXVtRHJpdmVyLnN0b3ApOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weToKKyAgICAgICAgKENo
cm9taXVtQW5kcm9pZFBvcnQuZGVmYXVsdF90ZXN0X3RpbWVvdXRfbXMpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAg
IChfc2V0X3VwX2Rlcml2ZWRfb3B0aW9ucyk6CisKIDIwMTItMDMtMjAgIEVyaWMgU2VpZGVsICA8
ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgd3RmL1BsYXRmb3JtLmggZnJvbSBKYXZh
U2NyaXB0Q29yZSB0byBTb3VyY2UvV1RGL3d0ZgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CShyZXZpc2lv
biAxMTExNjcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsOSArMTU2LDkgQEAgZGVmIF9zZXRf
dXBfZGVyaXZlZF9vcHRpb25zKHBvcnQsIG9wdGlvbgogCiAgICAgaWYgbm90IG9wdGlvbnMudGlt
ZV9vdXRfbXM6CiAgICAgICAgIGlmIG9wdGlvbnMuY29uZmlndXJhdGlvbiA9PSAiRGVidWciOgot
ICAgICAgICAgICAgb3B0aW9ucy50aW1lX291dF9tcyA9IHN0cigyICogTWFuYWdlci5ERUZBVUxU
X1RFU1RfVElNRU9VVF9NUykKKyAgICAgICAgICAgIG9wdGlvbnMudGltZV9vdXRfbXMgPSBzdHIo
MiAqIHBvcnQuZGVmYXVsdF90ZXN0X3RpbWVvdXRfbXMoKSkKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIG9wdGlvbnMudGltZV9vdXRfbXMgPSBzdHIoTWFuYWdlci5ERUZBVUxUX1RFU1RfVElN
RU9VVF9NUykKKyAgICAgICAgICAgIG9wdGlvbnMudGltZV9vdXRfbXMgPSBzdHIocG9ydC5kZWZh
dWx0X3Rlc3RfdGltZW91dF9tcygpKQogCiAgICAgb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zID0g
c3RyKDUgKiBpbnQob3B0aW9ucy50aW1lX291dF9tcykpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdl
ci5weQkocmV2aXNpb24gMTExMTY3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQkod29ya2luZyBjb3B5KQpAQCAtMjg0LDEyICsy
ODQsNiBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgIiIiQSBjbGFzcyBmb3IgbWFuYWdp
bmcgcnVubmluZyBhIHNlcmllcyBvZiB0ZXN0cyBvbiBhIHNlcmllcyBvZiBsYXlvdXQKICAgICB0
ZXN0IGZpbGVzLiIiIgogCi0KLSAgICAjIFRoZSBwZXItdGVzdCB0aW1lb3V0IGluIG1pbGxpc2Vj
b25kcywgaWYgbm8gLS10aW1lLW91dC1tcyBvcHRpb24gd2FzCi0gICAgIyBnaXZlbiB0byBydW5f
d2Via2l0X3Rlc3RzLiBUaGlzIHNob3VsZCBjb3JyZXNwb25kIHRvIHRoZSBkZWZhdWx0IHRpbWVv
dXQKLSAgICAjIGluIER1bXBSZW5kZXJUcmVlLgotICAgIERFRkFVTFRfVEVTVF9USU1FT1VUX01T
ID0gNiAqIDEwMDAKLQogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBvcHRpb25zLCBwcmlu
dGVyKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSB0ZXN0IHJ1bm5lciBkYXRhIHN0cnVjdHVyZXMu
CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkJKHJldmlzaW9uIDExMTE2NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw5IEBA
IGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgc2VsZi5fcmVmdGVzdF9saXN0ID0ge30KICAg
ICAgICAgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkgPSBOb25lCiAKKyAgICBkZWYgZGVmYXVsdF90
ZXN0X3RpbWVvdXRfbXMoc2VsZik6CisgICAgICAgIHJldHVybiA2ICogMTAwMAorCiAgICAgZGVm
IHdkaWZmX2F2YWlsYWJsZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5fd2RpZmZfYXZhaWxhYmxl
IGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl93ZGlmZl9hdmFpbGFibGUgPSBzZWxmLmNoZWNr
X3dkaWZmKGxvZ2dpbmc9RmFsc2UpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkJKHJldmlzaW9uIDExMTE2NykKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkJKHdv
cmtpbmcgY29weSkKQEAgLTYxNyw4ICs2MTcsOCBAQCBjbGFzcyBDaHJvbWl1bURyaXZlcihEcml2
ZXIpOgogICAgICAgICAgICAgc2VsZi5fcHJvYy5zdGRlcnIuY2xvc2UoKQogICAgICAgICB0aW1l
X291dF9tcyA9IHNlbGYuX3BvcnQuZ2V0X29wdGlvbigndGltZV9vdXRfbXMnKQogICAgICAgICBp
ZiB0aW1lX291dF9tcyBhbmQgbm90IHNlbGYuX25vX3RpbWVvdXQ6Ci0gICAgICAgICAgICAjIEZJ
WE1FOiBQb3J0IG9iamVjdCBzaG91bGRuJ3QgYmUgZGVwZW5kZW50IG9uIGxheW91dCB0ZXN0IG1h
bmFnZXIuCi0gICAgICAgICAgICBraWxsX3RpbWVvdXRfc2Vjb25kcyA9IDMuMCAqIGludCh0aW1l
X291dF9tcykgLyBNYW5hZ2VyLkRFRkFVTFRfVEVTVF9USU1FT1VUX01TCisgICAgICAgICAgICB0
aW1lb3V0X3JhdGlvID0gZmxvYXQodGltZV9vdXRfbXMpIC8gc2VsZi5fcG9ydC5kZWZhdWx0X3Rl
c3RfdGltZW91dF9tcygpCisgICAgICAgICAgICBraWxsX3RpbWVvdXRfc2Vjb25kcyA9IDMuMCAq
IHRpbWVvdXRfcmF0aW8gaWYgdGltZW91dF9yYXRpbyA+IDEuMCBlbHNlIDMuMAogICAgICAgICBl
bHNlOgogICAgICAgICAgICAga2lsbF90aW1lb3V0X3NlY29uZHMgPSAzLjAKIApJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fYW5kcm9pZC5weQkocmV2aXNpb24gMTExMTY3KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xNTMsNiArMTUzLDEyIEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21p
dW0uQ2hyb20KICAgICAgICAgaWYgYWRiX2FyZ3M6CiAgICAgICAgICAgICBzZWxmLl9hZGJfY29t
bWFuZCArPSBzaGxleC5zcGxpdChhZGJfYXJncykKIAorICAgIGRlZiBkZWZhdWx0X3Rlc3RfdGlt
ZW91dF9tcyhzZWxmKToKKyAgICAgICAgIyBBbmRyb2lkIHBsYXRmb3JtIGhhcyBsZXNzIGNvbXB1
dGluZyBwb3dlciB0aGFuIGRlc2t0b3AgcGxhdGZvcm1zLgorICAgICAgICAjIFVzaW5nIDEwIHNl
Y29uZHMgYWxsb3dzIHVzIHRvIHBhc3MgbW9zdCBzbG93IHRlc3RzIHdoaWNoIGFyZSBub3QKKyAg
ICAgICAgIyBtYXJrZWQgYXMgc2xvdyB0ZXN0cyBvbiBkZXNrdG9wIHBsYXRmb3Jtcy4KKyAgICAg
ICAgcmV0dXJuIDEwICogMTAwMAorCiAgICAgZGVmIGRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKHNl
bGYpOgogICAgICAgICAjIEN1cnJlbnRseSB3ZSBvbmx5IHVzZSBvbmUgcHJvY2VzcywgYnV0IGl0
IG1pZ2h0IGJlIGhlbHBmdWwgdG8gdXNlCiAgICAgICAgICMgbW9yZSB0aGF0IG9uZSBwcm9jZXNz
IGluIHRoZSBmdXR1cmUgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>