Many unit tests fails on Windows if High Performance Counter/Timer is not supported |
|||
Issue descriptionUserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.97 Safari/537.36 Vivaldi/1.94.1008.40 Steps to reproduce the problem: 1. Run unit tests (including browser tests) on a Windows system without High Performance Counter/Timer support. This can be simulated by changing this if statement in InitializeNowFunctionPointer() in base/time/time_win.cc from if (!QueryPerformanceFrequency(&ticks_per_sec)) to if (true || !QueryPerformanceFrequency(&ticks_per_sec)) What is the expected behavior? The tests should pass What went wrong? Many tests fails. In Vivaldi we have disabled approximately 100 tests for this reason because they pass when run locally, but fail on our Windows testers, but also fail when simulating missing HPC. Did this work before? N/A Chrome version: 62.0.3202.97 Channel: n/a OS Version: 10.0 Flash Version: Vivaldi is running our Windows testers on VMs hosted in a KVM VM manager system, on a Ubuntu host running on Xeon processor blades. We have determined that a number of tests fails due to HPC support being disabled on these VMs (by simulating the missing HPC support on local developer machines). In total we have currently disabled ~100 tests for this reason, with new ones being added with each chromium source upgrade. Attempts to simulate HPC support not just failed, but caused other functionality and tests to break. These failures may indicate the existence of hard to reproduce bugs that only occur on hardware (or VMs) with CPUs that does not support HPC. Our current list of disabled tests is included below. It may contain tests that have been removed (it's been a while since this list was last cleared of such tests). It is almost certainly not complete, since we are not running all the test used by the Chromium builders. MetricsWebContentsObserverTest.* DocumentWritePageLoadMetricsObserverTest.* FromGWSPageLoadMetricsObserverTest.* RenderWidgetUnittest.TouchStartDuringOrOutsideFlingUmaMetrics OfflinePageModelImplTest.DownloadMetrics ActivityAnalyzerTest.GlobalAnalyzerConstruction ActivityTrackerTest.ScopedTaskTest ActivityTrackerTest.ThreadDeathTest ActivityTrackerTest.ProcessDeathTest RenderWidgetUnittest.TouchDuringOrOutsideFlingUmaMetrics HttpStreamFactoryImplJobControllerTest.DelayedTCP DevToolsSanityTest.TestNetworkPushTime BidirectionalStreamTest.LoadTimingTwoRequests BidirectionalStreamTest.SimplePostRequest CacheStorageCacheTestP.DeleteWithIgnoreSearchFalse CacheStorageCacheTestP.TwoKeysThenOne CacheStorageCacheTestP.DeleteWithIgnoreSearchTrue CacheStorageCacheTestP.KeysWithIgnoreSearchTrue CacheStorageCacheTestP.MatchAll_TwoResponsesThenOne CacheStorageCacheTestP.TwoKeys CacheStorageCacheTestP.MatchAll_TwoResponsesThenOne InputEventFilterTest.NonBlockingWheel InputEventFilterTest.Basic RenderViewImplTest.RendererNavigationStartTransmittedToBrowser SRTFetcherTest.ReporterLogging_EnabledNoRecentLogging SpdySessionTest.MetricsCollectionOnPushStreams RenderThreadImplDiscardableMemoryBrowserTest.LockDiscardableMemory WebRtcMediaRecorderTest.PeerConnection WebRtcMediaRecorderTest.ResumeAndDataAvailable WebRtcMediaRecorderTest.StartAndDataAvailable WebRtcMediaRecorderTest.TwoChannelAudioRecording SBNavigationObserverTest.TestCleanUpStaleNavigationEvents SBNavigationObserverTest.TestCleanUpStaleIPAddresses SBNavigationObserverTest.TestCleanUpStaleUserGestures SBNavigationObserverTest.TestNavigationEventList SBNavigationObserverTest.TestRecordHostToIpMapping SBNavigationObserverBrowserTest.PPAPIDownloadWithUserGestureOnHostingFrame TemplateURLServiceTest.LastModifiedTimeUpdate UploadProgressTrackerTest.TimePassed SRTFetcherTest.ReporterLogging_EnabledFirstRun AutofillProfileComparatorTest.MergeAddressesMostUniqueTokens NetworkMetricsProviderTest.EffectiveConnectionType TimeTicks.WinRollover ReportingCacheTest.EvictOldestReport PaymentManagerTest.ClearPaymentInstruments PaymentManagerTest.KeysOfPaymentInstruments SubresourceFilterBrowserTest.ExpectPerformanceHistogramsAreRecorded UpdateClientTest.TwoCrxUpdateDownloadTimeout UpdateClientTest.TwoCrxUpdateNoUpdate UpdateClientTest.TwoCrxUpdate ServiceWorkerMetricsTest.EmbeddedWorkerStartTiming ServiceWorkerMetricsTest.EmbeddedWorkerStartTiming_BrowserStartup ServiceWorkerMetricsTest.EmbeddedWorkerStartTiming_WaitForRenderer ServiceWorkerMetricsTest.EmbeddedWorkerStartTiming_NegativeLatency ServiceWorkerURLRequestJobTest.NavPreloadMetrics_NavPreloadFirst_MainFrame ContentSubresourceFilterThrottleManagerTest.LogActivation SessionsSyncManagerTest.TrackTasksOnLocalTabModified CookieManagerImplTest.GetAllCookies DataReductionProxyNetworkDelegateTest.IncrementingMainFramePageId DataReductionProxyNetworkDelegateTest.RedirectSharePid DataReductionProxyNetworkDelegateTest.ResetSessionResetsId DataReductionProxyNetworkDelegateTest.SubResourceNoPageId DownloadArchivesTaskTest.MultipleLargeArchivesToDownload DownloadArchivesTaskTest.SingleArchiveToDownload DownloadArchivesTaskTest.TooManyArchivesToDownload MarkPageAccessedTaskTest.MarkPageAccessedTwice CookieManagerImplTest.GetCookieListAccessTime BackFwdMenuModelTest.ChapterStops SafeBrowsingBlockingPageTest.PageWithMultipleMalwareResourceProceedThenDontProceed SafeBrowsingBlockingPageTest.PageWithMultipleMalwareResourceDontProceed SafeBrowsingBlockingPageTest.NavigatingBackAndForth SafeBrowsingBlockingPageTest.PageWithMalwareResourceDontProceed CookieManagerTest.GetAllCookies CookieManagerTest.GetCookieListAccessTime ServiceWorkerURLLoaderJobTest.Basic ServiceWorkerURLLoaderJobTest.BlobResponse ServiceWorkerURLLoaderJobTest.StreamResponseAndCancel ServiceWorkerURLLoaderJobTest.Redirect ServiceWorkerURLLoaderJobTest.EarlyResponse ServiceWorkerURLLoaderJobTest.NonExistentBlobUUIDResponse ServiceWorkerURLLoaderJobTest.StreamResponse ServiceWorkerURLLoaderJobTest.StreamResponse_Abort ServiceWorkerURLLoaderJobTest.NavigationPreload ServiceWorkerURLLoaderJobTest.BrokenBlobResponse OverscrollNavigationOverlayTest.WithScreenshot OverscrollNavigationOverlayTest.OverlayWindowSwap OverscrollNavigationOverlayTest.Navigation_LoadingUpdate OverscrollNavigationOverlayTest.ForwardNavigation OverscrollNavigationOverlayTest.CancelAfterSuccessfulNavigation OverscrollNavigationOverlayTest.ImmediateLoadOnNavigate OverscrollNavigationOverlayTest.Navigation_PaintUpdate OverscrollNavigationOverlayTest.WithoutScreenshot OverscrollNavigationOverlayTest.ForwardNavigationCancelled WebContentsImplTest.CrossSiteNavigationBackPreempted SSLUITest.TestBadHTTPSDownload
,
Feb 6 2018
Suggest you open issues for each class of bugs and submit patches to fix them individually and then cross link them to this master bug.
,
Feb 6 2018
I am sorry, but I don't think that is practical. First of all, I am not familiar with the code in the relevant functionality, and AFAICT many/most of them fail due to problems deep in the metrics code. A few of them might conceivable completing so quickly that the before/after timestamps are the same, and a simple change to accepting before <= after, rather than before < after, _might_ fix it, but as I am unfamiliar with these parts of the code that could cause regressions to pass undetected. For reference, I did try to find other ways to fix these problems originally, but was not able to find solutions, so ever since I have been disabling these tests as they become an issue, and have been confirmed to be the timer issue (and please note that this is Windows-only issue, it does not affect our Linux tester, which is also a VM running in a similar environment, and I assume most of these tests are run by both platforms; it could conceivably be that the problem can be solved in the Windows time code). Secondly, these are just the failures from the tests we are running, there are a lot of other tests from the chromium project that we are not running and which likely have the same issue (AFAICT there is at least one other bug reported for a similar issue, https://bugs.chromium.org/p/chromium/issues/detail?id=723225 ).
,
Mar 7 2018
As this issue is related to unit tests unable to triage this issue from TE end. Hence adding TE-NeedsTriageHelp for further investigation on dev team. Could someone from Internals>Core team to please have a look at this issue. Thanks! |
|||
►
Sign in to add a comment |
|||
Comment 1 by krajshree@chromium.org
, Feb 4 2018