RenderWidgetHostViewAuraOverscrollTest tests flaking in content_unittests on Fuchsia |
||||||||||
Issue descriptione.g. https://ci.chromium.org/buildbot/chromium.fyi/Fuchsia/10340 RenderWidgetHostViewAuraOverscrollTest.GestureScrollDebounceTimerOverscroll or https://ci.chromium.org/buildbot/chromium.fyi/Fuchsia/10342 and https://ci.chromium.org/buildbot/chromium.fyi/Fuchsia/10320 RenderWidgetHostViewAuraOverscrollTest.TouchGestureEndDispatchedAfterOverscrollComplete Seems to have started fairly recently. Going to disable for now, but I'm guessing it's probably not actually Fuchsia-specific.
,
Oct 25 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f732be588c806b44eab63e1370a7914d61cc7705 commit f732be588c806b44eab63e1370a7914d61cc7705 Author: Scott Graham <scottmg@chromium.org> Date: Wed Oct 25 05:24:05 2017 fuchsia: Disable some more tests to try to get content_unittests on to waterfall Bug: 776424, 761214, 777916, 777917 Change-Id: I9906ff9ec53c3afd045ece861f0f9cdfd1a24727 Reviewed-on: https://chromium-review.googlesource.com/733955 Reviewed-by: Wez <wez@chromium.org> Commit-Queue: Scott Graham <scottmg@chromium.org> Cr-Commit-Position: refs/heads/master@{#511380} [modify] https://crrev.com/f732be588c806b44eab63e1370a7914d61cc7705/testing/buildbot/filters/fuchsia.content_unittests.filter
,
Oct 28 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b2f8374043f52c891a6927b28b00a1b4dcc02249 commit b2f8374043f52c891a6927b28b00a1b4dcc02249 Author: Scott Graham <scottmg@chromium.org> Date: Sat Oct 28 00:12:11 2017 fuchsia: Disable yet another flaky RWHVA test TBR: wez@chromium.org Bug: 776424 Change-Id: I3d67e9aab9cbeab7296d834001dd456f8890de16 Reviewed-on: https://chromium-review.googlesource.com/742651 Reviewed-by: Scott Graham <scottmg@chromium.org> Cr-Commit-Position: refs/heads/master@{#512363} [modify] https://crrev.com/b2f8374043f52c891a6927b28b00a1b4dcc02249/testing/buildbot/filters/fuchsia.content_unittests.filter
,
Jan 10 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b8b08a20d346be226261ed758738f4aab5caf5ee commit b8b08a20d346be226261ed758738f4aab5caf5ee Author: Wez <wez@chromium.org> Date: Wed Jan 10 20:02:00 2018 Update Fuchsia filters for content_unittests for new test fixtures. Several timing-dependent tests were already filtered-out under Fuchsia, but https://chromium-review.googlesource.com/c/chromium/src/+/851054 added some new variants with names not matching the suppression. This CL updates the Fuchsia filters and removes the preprocessor conditional disabling, to make it easier for us to diagnose and fix them under Fuchsia. TBR: jochen Bug: 800771 , 800415 , 800841 , 776424 Change-Id: I524b77b65e9550e303c774dd7c1eb8751bbe8039 Reviewed-on: https://chromium-review.googlesource.com/860730 Reviewed-by: Wez <wez@chromium.org> Reviewed-by: Scott Graham <scottmg@chromium.org> Commit-Queue: Wez <wez@chromium.org> Cr-Commit-Position: refs/heads/master@{#528399} [modify] https://crrev.com/b8b08a20d346be226261ed758738f4aab5caf5ee/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc [modify] https://crrev.com/b8b08a20d346be226261ed758738f4aab5caf5ee/testing/buildbot/filters/fuchsia.content_unittests.filter
,
Jan 10 2018
,
Jan 10 2018
Issue 800415 has been merged into this issue.
,
Jan 10 2018
Issue 800771 has been merged into this issue.
,
Jan 10 2018
sahel: This is the tracking bug for the RenderWidgetHostViewAura*Tests which we found were flaky under Fuchsia. I think the recent flakes are just due to test names changing, so that our existing filters didn't disable them (see below). We run Chromium tests on Fuchsia under QEMU, which consumes some CPU cycles for the VM emulation (e.g. emulating hardware devices), potentially leading to a CPU appearing to stall for a little while. Fuchsia itself then has different thread-scheduling properties to typical desktop operating systems, at present. Then recent changes to move more things to TaskScheduler have introduced scope for some work occurring on background-priority worker threads, meaning it may be heavily delayed if the system is under load. The tests look to use the real TimeTicks clock, which means that any assumptions about e.g. certain tasks occurring within small intervals (e.g. I see time deltas of 17ms in various places in the tests) are especially likely to be invalid on the Fuchsia bots. Instructions on building & running tests for Fuchsia are here: https://cs.chromium.org/chromium/src/docs/fuchsia_build_instructions.md and you can find the current set of content_unittests filters for Fuchsia here: https://cs.chromium.org/chromium/src/testing/buildbot/filters/fuchsia.content_unittests.filter?l=42 For most of the test flakes we have investigated under Fuchsia, we have been able to reproduce equivalent flakes under Linux/Mac/Win by introducing sleep()s at specific points, FWIW.
,
Jan 10 2018
,
Jan 11 2018
Issue 800923 has been merged into this issue.
,
Jan 11 2018
Issue 800946 has been merged into this issue.
,
Jan 11 2018
sahel: I think we should zero the bug # in the try-flakes tool, so it doesn't re-use the Fuchsia-specific reports for new flakes, once we have the filters landed (which they should be by now - see https://chromium-review.googlesource.com/c/chromium/src/+/860730) - WDYT?
,
Jan 11 2018
Detected 13 new flakes for test/step "RenderWidgetHostViewAuraTest.SetCanScrollForWebMouseWheelEvent". To see the actual flakes, please visit https://chromium-try-flakes.appspot.com/all_flake_occurrences?key=ahVzfmNocm9taXVtLXRyeS1mbGFrZXNySQsSBUZsYWtlIj5SZW5kZXJXaWRnZXRIb3N0Vmlld0F1cmFUZXN0LlNldENhblNjcm9sbEZvcldlYk1vdXNlV2hlZWxFdmVudAw. This message was posted automatically by the chromium-try-flakes app. Since flakiness is ongoing, the issue was moved back into Sheriff Bug Queue (unless already there).
,
Jan 11 2018
re #12: So far all the flakes that I've seen for RenderWidgetHostViewAura* content_unittests are on Fuchsia, do you have any counter examples on mind? if not, I am not sure how we can benefit from setting the bug number to zero.
,
Jan 11 2018
Re #14: Now that these tests are filtered-out, they should no longer be running on Fuchsia, so any new flakes are presumably some other issue, is my rationale. :)
,
Jan 11 2018
https://chromium-review.googlesource.com/c/chromium/src/+/861864 clears the filters for the following tests and fixes the flaky tests: RenderWidgetHostViewAuraOverscrollTest.* RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest.* RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest.* I'd rather to wait for one day and see if the flakes happen again or not, and if not then reset the bug number, WDYT?
,
Jan 11 2018
That sounds great to me - thanks for the quick fix.
,
Jan 15 2018
Removing the label since an owner looks assigned.
,
Jan 15 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f3a04acf71e4d53036200acce97157861b9f107c commit f3a04acf71e4d53036200acce97157861b9f107c Author: Sahel Sharify <sahel@chromium.org> Date: Mon Jan 15 17:57:03 2018 Fix flaky content_unittests on Fuchsia This cl fixes the following flaky tests on Fuchsia: RenderWidgetHostViewAuraOverscrollTest.* RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest.* RenderWidgetHostViewAuraOverScrollAsyncWheelEventsEnabledTest.* Bug: 776424 Change-Id: I6e83584cd3d86c649960ec9b1dad79ac20934f87 Reviewed-on: https://chromium-review.googlesource.com/861864 Reviewed-by: Wez <wez@chromium.org> Reviewed-by: Timothy Dresser <tdresser@chromium.org> Commit-Queue: Sahel Sharifymoghaddam <sahel@chromium.org> Cr-Commit-Position: refs/heads/master@{#529309} [modify] https://crrev.com/f3a04acf71e4d53036200acce97157861b9f107c/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc [modify] https://crrev.com/f3a04acf71e4d53036200acce97157861b9f107c/testing/buildbot/filters/fuchsia.content_unittests.filter
,
Jan 16 2018
We appear to still be getting flakes on Fuchsia/x64 FYI: from https://ci.chromium.org/buildbot/chromium.fyi/Fuchsia/13042: [ RUN ] RenderWidgetHostViewAuraOverscrollTest.GestureScrollDebounceTimerOverscroll ../../content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:4957: Failure Expected equality of these values: 0U Which is: 0 GetAndResetDispatchedMessages().size() Which is: 1 ../../content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:4961: Failure Expected equality of these values: OVERSCROLL_EAST Which is: 4 overscroll_mode() Which is: 0 ../../content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:4962: Failure Expected equality of these values: OverscrollSource::TOUCHSCREEN Which is: 4-byte object <02-00 00-00> overscroll_source() Which is: 4-byte object <00-00 00-00> ../../content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:4963: Failure Expected equality of these values: OVERSCROLL_EAST Which is: 4 overscroll_delegate()->current_mode() Which is: 0 ../../content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:4964: Failure Expected equality of these values: 55.f Which is: 55 overscroll_delta_x() Which is: 0 ../../content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:4965: Failure Expected equality of these values: 5.f Which is: 5 overscroll_delegate()->delta_x() Which is: 0 ../../content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:4980: Failure Expected equality of these values: "GestureScrollEnd" GetMessageNames(events) Which is: "" [ FAILED ] RenderWidgetHostViewAuraOverscrollTest.GestureScrollDebounceTimerOverscroll (239 ms) and from RenderWidgetHostViewAuraOverscrollTest.TouchGestureEndDispatchedAfterOverscrollComplete: [ RUN ] RenderWidgetHostViewAuraOverscrollTest.TouchGestureEndDispatchedAfterOverscrollComplete ../../content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:5187: Failure Expected equality of these values: 0U Which is: 0 events.size() Which is: 1 ../../content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:5195: Failure Expected equality of these values: "GestureScrollEnd" GetMessageNames(events) Which is: "" [ FAILED ] RenderWidgetHostViewAuraOverscrollTest.TouchGestureEndDispatchedAfterOverscrollComplete (344 ms)
,
Jan 16 2018
I saw the build history after 15th of jan, looks like RenderWidgetHostViewAuraOverscrollTest.TouchGestureEndDispatchedAfterOverscrollComplete and RenderWidgetHostViewAuraOverscrollTest.GestureScrollDebounceTimerOverscroll are still flaky.. , I will take a look.
,
Jan 16 2018
,
Jan 16 2018
Issue 802389 has been merged into this issue.
,
Jan 16 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/21ee38c2e8ebd4f0646552e3face31472810d60d commit 21ee38c2e8ebd4f0646552e3face31472810d60d Author: Wez <wez@chromium.org> Date: Tue Jan 16 22:36:12 2018 Filter out RenderWidgetHostViewAuraOverscrollTest.* under Fuchsia. These tests are currently flaky under Fuchsia bots. Bug: 802375 , 776424 Change-Id: I7d7e6d2a5d2392eddf84cb35ef698022f673622b Reviewed-on: https://chromium-review.googlesource.com/868935 Commit-Queue: Wez <wez@chromium.org> Reviewed-by: Scott Graham <scottmg@chromium.org> Cr-Commit-Position: refs/heads/master@{#529511} [modify] https://crrev.com/21ee38c2e8ebd4f0646552e3face31472810d60d/testing/buildbot/filters/fuchsia.content_unittests.filter
,
Jan 19 2018
Detected 4 new flakes for test/step "RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest.TimerBasedWheelEventPhaseInfo". To see the actual flakes, please visit https://chromium-try-flakes.appspot.com/all_flake_occurrences?key=ahVzfmNocm9taXVtLXRyeS1mbGFrZXNyXAsSBUZsYWtlIlFSZW5kZXJXaWRnZXRIb3N0Vmlld0F1cmFBc3luY1doZWVsRXZlbnRzRW5hYmxlZFRlc3QuVGltZXJCYXNlZFdoZWVsRXZlbnRQaGFzZUluZm8M. This message was posted automatically by the chromium-try-flakes app. Since flakiness is ongoing, the issue was moved back into Sheriff Bug Queue (unless already there).
,
Jan 19 2018
Failures in the flake report from #25 are:
[ RUN ] RenderWidgetHostViewAuraAsyncWheelEventsEnabledTest.TimerBasedWheelEventPhaseInfo
../../content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:1794: Failure
Expected equality of these values:
WebMouseWheelEvent::kPhaseChanged
Which is: 4
wheel_event->phase
Which is: 1
which then crashes with:
#01: operator-> at ../../../c/b/linux/src/buildtools/third_party/libc++/trunk/include/memory:2515
(inlined by) Allocate at ../../../c/b/linux/src/cc/base/list_container_helper.cc:458
#02: AllocateAndConstruct<viz::SharedQuadState> at ../../../c/b/linux/src/cc/base/list_container.h:104
(inlined by) CreateAndAppendSharedQuadState at ../../../c/b/linux/src/components/viz/common/quads/render_pass.cc:260
#03: AppendQuads at ../../../c/b/linux/src/cc/layers/picture_layer_impl.cc:254
#04: TimerBasedWheelEventPhaseInfo at /b/c/b/linux/src/out/Release/../../buildtools/third_party/libc++/trunk/include/memory:?
#05: os_stack_trace_getter at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:4935
(inlined by) Run at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:2480
#06: os_stack_trace_getter at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:4935
(inlined by) Run at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:2655
#07: Run at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:2768
#08: RunAllTests at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:4664
#09: Run at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:4277
#10: RUN_ALL_TESTS at ../../../c/b/linux/src/third_party/googletest/src/googletest/include/gtest/gtest.h:2233
(inlined by) Run at ../../../c/b/linux/src/base/test/test_suite.cc:272
#11: Run at ../../../c/b/linux/src/base/callback.h:94
(inlined by) LaunchUnitTestsInternal at ../../../c/b/linux/src/base/test/launcher/unit_test_launcher.cc:220
#12: LaunchUnitTests at ../../../c/b/linux/src/base/test/launcher/unit_test_launcher.cc:558
#13: main at ../../../c/b/linux/src/content/test/run_all_unittests.cc:20
#14: pc 0x6cd17a52814e sp 0x5e1f81e62fe0 (libc.so,0x1b14e)
#15: pc 0 sp 0x5e1f81e63000
and
[ RUN ] RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest.TimerBasedWheelEventPhaseInfo
../../content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:1794: Failure
Expected equality of these values:
WebMouseWheelEvent::kPhaseChanged
Which is: 4
wheel_event->phase
Which is: 8
which crashes with:
#01: operator-> at ../../../c/b/linux/src/buildtools/third_party/libc++/trunk/include/memory:2515
(inlined by) TimerBasedWheelEventPhaseInfo at ../../../c/b/linux/src/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:1799
#02: os_stack_trace_getter at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:4935
(inlined by) Run at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:2480
#03: os_stack_trace_getter at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:4935
(inlined by) Run at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:2655
#04: Run at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:2768
#05: RunAllTests at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:4664
#06: Run at ../../../c/b/linux/src/third_party/googletest/src/googletest/src/gtest.cc:4277
#07: RUN_ALL_TESTS at ../../../c/b/linux/src/third_party/googletest/src/googletest/include/gtest/gtest.h:2233
(inlined by) Run at ../../../c/b/linux/src/base/test/test_suite.cc:272
#08: Run at ../../../c/b/linux/src/base/callback.h:94
(inlined by) LaunchUnitTestsInternal at ../../../c/b/linux/src/base/test/launcher/unit_test_launcher.cc:220
#09: LaunchUnitTests at ../../../c/b/linux/src/base/test/launcher/unit_test_launcher.cc:558
#10: main at ../../../c/b/linux/src/content/test/run_all_unittests.cc:20
#11: pc 0x64a45242b14e sp 0x431c7789efe0 (libc.so,0x1b14e)
#12: pc 0 sp 0x431c7789f000
,
Jan 19 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/525fac0c8be86c97eec45b7b58a0b602f523306b commit 525fac0c8be86c97eec45b7b58a0b602f523306b Author: Wez <wez@chromium.org> Date: Fri Jan 19 22:57:57 2018 Filter some more flaky RenderWidgetHostViewAura*Test tests. These tests flake under our Fuchsia/x64 try-bots. Bug: 776424 Change-Id: I706ed77b4a2e882c9f1f3d042fc11677ceee440e Reviewed-on: https://chromium-review.googlesource.com/876126 Commit-Queue: Wez <wez@chromium.org> Commit-Queue: Scott Graham <scottmg@chromium.org> Reviewed-by: Scott Graham <scottmg@chromium.org> Cr-Commit-Position: refs/heads/master@{#530645} [modify] https://crrev.com/525fac0c8be86c97eec45b7b58a0b602f523306b/testing/buildbot/filters/fuchsia.content_unittests.filter
,
Jan 22 2018
,
Apr 6 2018
,
Apr 6 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/622bc0ed5af4f6097eafd63059347e6f3fb531ae commit 622bc0ed5af4f6097eafd63059347e6f3fb531ae Author: Wez <wez@chromium.org> Date: Fri Apr 06 23:54:59 2018 Filter GestureScrollDebounceOverscrolls test under Fuchsia. Many of the tests in this suite have fragile timing dependencies, so they flake, especially when run under emulation. Bug: 818299 , 776424 Change-Id: I2fe239e2638a5a7944a38b65b27534d917d5636e Reviewed-on: https://chromium-review.googlesource.com/1000716 Commit-Queue: Wez <wez@chromium.org> Reviewed-by: Scott Graham <scottmg@chromium.org> Cr-Commit-Position: refs/heads/master@{#548977} [modify] https://crrev.com/622bc0ed5af4f6097eafd63059347e6f3fb531ae/testing/buildbot/filters/fuchsia.content_unittests.filter
,
Apr 11 2018
,
Jul 25
Observed RenderWidgetHostViewAuraTest.SyntheticFlingCancelAtTouchpadScrollBegin flake on Fuchsia/ARM64/Rel in https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/fuchsia-fyi-arm64-rel/477 Note that that bot is running content_unittests under Fuchsia under QEMU w/ software ARM64 emulation, so certain things are disproportionately slow. This test completes in ~1.5s when it fails, and ~1.1s when it passes.
,
Jul 25
Test in #35 was added in https://chromium-review.googlesource.com/1138637 by mcnee@ on July 19th, and has actually been flaking on Fuchsia/x64, not Fuchsia/ARM64.
,
Jul 26
So it looks like a lot of the flakiness here involves timing based wheel event phase. I would suspect this is the cause of flakiness in SyntheticFlingCancelAtTouchpadScrollBegin as well.
I see that the first failure is
../../content/browser/renderer_host/render_widget_host_view_aura_unittest.cc:2485: Failure
Expected equality of these values:
0U
Which is: 0
dispatched_events.size()
Which is: 1
...which indicates we have an unexpected event in the middle of the scroll sequence. Perhaps this is a wheel event with phase end?
,
Jul 26
To address the flakiness due to wheel timer-based phase, the timeout of timer is set to a large value: e.g. https://cs.chromium.org/chromium/src/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc?q=RenderWidgetHostViewAuraOverscrollTest&g=0&l=1943 The same logic can be used in the new test to avoid flakiness. The remaining flaky tests are due to debounce queue timer rather than wheel phase handler timer.
,
Jul 27
Re #38: Should the longer timeout be added to individual tests, or to the test base-class?
,
Jul 27
,
Jul 27
The default timeout is 500ms, in the test set up I set this to 100ms (https://cs.chromium.org/chromium/src/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc?type=cs&sq=package:chromium&g=0&l=566). I remember I did this since some of the tests needed to wait for the timer to expire and I did not want to slow them down. Then in tests that an active timer was required, I set them to the max timeout. However I briefly checked the tests now and I could not find a test that is waiting for timer expiration. I will double check the tests, and submit a patch to set the timer to max in set up if it doesn't break anything.
,
Jul 27
Whenever we are using timers we risk having flaky tests. I generally recommend for unit tests that we mock out any timers/time sources. Especially when we want to guarantee that a timer hasn't expired while we've done something else. It sounds like the tests might want to mock out MouseWheelPhaseHandler::mouse_wheel_end_dispatch_timer_ with one where the test case controls when it actually fires.
,
Jul 27
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/be677c94d91e9b092e97365c14344b2a2ed9d6d9 commit be677c94d91e9b092e97365c14344b2a2ed9d6d9 Author: Wez <wez@chromium.org> Date: Fri Jul 27 21:29:25 2018 Filter some delicious buttery, crumbly, flaky tests. Add the following tests to the Fuchsia filter for content_unittests: - BluetoothBlocklistTest.InvalidUUID - RenderWidgetHostViewAuraTest.SyntheticFlingCancelAtTouchpadScrollBegin - WebBluetoothDeviceIdTest.DefaultConstructor Bug: 776424, 867502 Change-Id: I7e588b3946e640cb77b46cace1ef8ab79385f5b8 Reviewed-on: https://chromium-review.googlesource.com/1150803 Commit-Queue: Sergey Ulanov <sergeyu@chromium.org> Reviewed-by: Sergey Ulanov <sergeyu@chromium.org> Cr-Commit-Position: refs/heads/master@{#578804} [modify] https://crrev.com/be677c94d91e9b092e97365c14344b2a2ed9d6d9/testing/buildbot/filters/fuchsia.content_unittests.filter
,
Sep 11
|
||||||||||
►
Sign in to add a comment |
||||||||||
Comment 1 by bugdroid1@chromium.org
, Oct 20 2017