From 355dbd3b2aa28d479170c4e43265de186317dd86 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Sun, 11 Sep 2022 01:19:22 -0700 Subject: [PATCH] [test][clangd] Try to unbrake bots after 72142fbac4 --- .../clangd/unittests/TUSchedulerTests.cpp | 83 ++++++++++--------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp b/clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp index 4e95fcfea91c..66260ab64fbe 100644 --- a/clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp +++ b/clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp @@ -169,6 +169,7 @@ protected: MockFS FS; MockCompilationDatabase CDB; + Deadline BlockTimeout = timeoutSeconds(60); }; Key)>> @@ -241,7 +242,7 @@ TEST_F(TUSchedulerTests, WantDiagnostics) { [&](std::vector) { ++CallbackCount; }); Ready.notify(); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); } EXPECT_EQ(2, CallbackCount); } @@ -264,7 +265,7 @@ TEST_F(TUSchedulerTests, Debounce) { Notification N; updateWithDiags(S, Path, "auto (timed out)", WantDiagnostics::Auto, [&](std::vector) { N.notify(); }); - EXPECT_TRUE(N.wait(timeoutSeconds(5))); + EXPECT_TRUE(N.wait(BlockTimeout)); // Once we start shutting down the TUScheduler, this one becomes a dead write. updateWithDiags(S, Path, "auto (discarded)", WantDiagnostics::Auto, @@ -330,7 +331,7 @@ TEST_F(TUSchedulerTests, Cancellation) { Read("R3")(); Proceed.notify(); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); } EXPECT_THAT(DiagsSeen, ElementsAre("U2", "U3")) << "U1 and all dependent reads were cancelled. " @@ -351,7 +352,7 @@ TEST_F(TUSchedulerTests, InvalidationNoCrash) { // We expect invalidation logic to not crash by trying to invalidate a running // request. S.update(Path, getInputs(Path, ""), WantDiagnostics::Auto); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); S.runWithAST( "invalidatable-but-running", Path, [&](llvm::Expected AST) { @@ -363,7 +364,7 @@ TEST_F(TUSchedulerTests, InvalidationNoCrash) { StartedRunning.wait(); S.update(Path, getInputs(Path, ""), WantDiagnostics::Auto); ScheduledChange.notify(); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); } TEST_F(TUSchedulerTests, Invalidation) { @@ -419,7 +420,7 @@ TEST_F(TUSchedulerTests, Invalidation) { }, TUScheduler::InvalidateOnUpdate); Start.notify(); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); EXPECT_EQ(2, Builds.load()) << "Middle build should be skipped"; EXPECT_EQ(4, Actions.load()) << "All actions should run (some with error)"; @@ -452,7 +453,7 @@ TEST_F(TUSchedulerTests, InvalidationUnchanged) { ADD_FAILURE() << "Shouldn't build, identical to previous"; }); Start.notify(); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); EXPECT_EQ(1, Actions.load()) << "All actions should run"; } @@ -559,7 +560,7 @@ TEST_F(TUSchedulerTests, ManyUpdates) { } } } - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); } // TUScheduler destructor waits for all operations to finish. std::lock_guard Lock(Mut); @@ -601,7 +602,7 @@ TEST_F(TUSchedulerTests, EvictedAST) { // one that the cache will evict. updateWithCallback(S, Foo, SourceContents, WantDiagnostics::Yes, [&BuiltASTCounter]() { ++BuiltASTCounter; }); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); ASSERT_EQ(BuiltASTCounter.load(), 1); EXPECT_THAT(Tracer.takeMetric("ast_access_diag", "hit"), SizeIs(0)); EXPECT_THAT(Tracer.takeMetric("ast_access_diag", "miss"), SizeIs(1)); @@ -612,7 +613,7 @@ TEST_F(TUSchedulerTests, EvictedAST) { [&BuiltASTCounter]() { ++BuiltASTCounter; }); updateWithCallback(S, Baz, SourceContents, WantDiagnostics::Yes, [&BuiltASTCounter]() { ++BuiltASTCounter; }); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); ASSERT_EQ(BuiltASTCounter.load(), 3); EXPECT_THAT(Tracer.takeMetric("ast_access_diag", "hit"), SizeIs(0)); EXPECT_THAT(Tracer.takeMetric("ast_access_diag", "miss"), SizeIs(2)); @@ -623,7 +624,7 @@ TEST_F(TUSchedulerTests, EvictedAST) { // Access the old file again. updateWithCallback(S, Foo, OtherSourceContents, WantDiagnostics::Yes, [&BuiltASTCounter]() { ++BuiltASTCounter; }); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); ASSERT_EQ(BuiltASTCounter.load(), 4); EXPECT_THAT(Tracer.takeMetric("ast_access_diag", "hit"), SizeIs(0)); EXPECT_THAT(Tracer.takeMetric("ast_access_diag", "miss"), SizeIs(1)); @@ -649,16 +650,16 @@ TEST_F(TUSchedulerTests, NoopChangesDontThrashCache) { // After opening Foo then Bar, AST cache contains Bar. S.update(Foo, FooInputs, WantDiagnostics::Auto); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); S.update(Bar, BarInputs, WantDiagnostics::Auto); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); ASSERT_THAT(S.getFilesWithCachedAST(), ElementsAre(Bar)); // Any number of no-op updates to Foo don't dislodge Bar from the cache. S.update(Foo, FooInputs, WantDiagnostics::Auto); S.update(Foo, FooInputs, WantDiagnostics::Auto); S.update(Foo, FooInputs, WantDiagnostics::Auto); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); ASSERT_THAT(S.getFilesWithCachedAST(), ElementsAre(Bar)); // In fact each file has been built only once. ASSERT_EQ(S.fileStats().lookup(Foo).ASTBuilds, 1u); @@ -688,12 +689,12 @@ TEST_F(TUSchedulerTests, EmptyPreamble) { 0u); }); // Wait while the preamble is being built. - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); // Update the file which results in an empty preamble. S.update(Foo, getInputs(Foo, WithEmptyPreamble), WantDiagnostics::Auto); // Wait while the preamble is being built. - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); S.runWithPreamble( "getEmptyPreamble", Foo, TUScheduler::Stale, [&](Expected Preamble) { @@ -721,7 +722,7 @@ TEST_F(TUSchedulerTests, ASTSignalsSmokeTests) { // Update the file which results in an empty preamble. S.update(Foo, getInputs(Foo, Contents), WantDiagnostics::Yes); // Wait while the preamble is being built. - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); Notification TaskRun; S.runWithPreamble( "ASTSignals", Foo, TUScheduler::Stale, @@ -768,7 +769,7 @@ TEST_F(TUSchedulerTests, RunWaitsForPreamble) { Preambles[I] = cantFail(std::move(IP)).Preamble; }); } - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); // Check all actions got the same non-null preamble. std::lock_guard Lock(PreamblesMut); ASSERT_NE(Preambles[0], nullptr); @@ -795,7 +796,7 @@ TEST_F(TUSchedulerTests, NoopOnEmptyChanges) { Updated = false; updateWithDiags(S, Source, Contents, WantDiagnostics::Yes, [&Updated](std::vector) { Updated = true; }); - bool UpdateFinished = S.blockUntilIdle(timeoutSeconds(10)); + bool UpdateFinished = S.blockUntilIdle(BlockTimeout); if (!UpdateFinished) ADD_FAILURE() << "Updated has not finished in one second. Threading bug?"; return Updated; @@ -865,7 +866,7 @@ TEST_F(TUSchedulerTests, MissingHeader) { Field(&Diag::Message, "use of undeclared identifier 'b'"))); }); - S.blockUntilIdle(timeoutSeconds(10)); + S.blockUntilIdle(BlockTimeout); FS.Files[HeaderB] = "int b;"; FS.Timestamps[HeaderB] = time_t(1); @@ -878,7 +879,7 @@ TEST_F(TUSchedulerTests, MissingHeader) { }); // Ensure previous assertions are done before we touch the FS again. - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); // Add the high-priority header file, which should reintroduce the error. FS.Files[HeaderA] = "int a;"; FS.Timestamps[HeaderA] = time_t(1); @@ -900,7 +901,7 @@ TEST_F(TUSchedulerTests, MissingHeader) { ElementsAre(Field(&Diag::Message, "use of undeclared identifier 'b'")); }); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); EXPECT_EQ(DiagCount, 3U); } @@ -922,7 +923,7 @@ TEST_F(TUSchedulerTests, NoChangeDiags) { // Make sure the AST was actually built. cantFail(std::move(IA)); }); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); EXPECT_THAT(Tracer.takeMetric("ast_access_read", "hit"), SizeIs(0)); EXPECT_THAT(Tracer.takeMetric("ast_access_read", "miss"), SizeIs(1)); @@ -931,7 +932,7 @@ TEST_F(TUSchedulerTests, NoChangeDiags) { std::atomic SeenDiags(false); updateWithDiags(S, FooCpp, Contents, WantDiagnostics::Auto, [&](std::vector) { SeenDiags = true; }); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); ASSERT_TRUE(SeenDiags); EXPECT_THAT(Tracer.takeMetric("ast_access_diag", "hit"), SizeIs(1)); EXPECT_THAT(Tracer.takeMetric("ast_access_diag", "miss"), SizeIs(0)); @@ -941,7 +942,7 @@ TEST_F(TUSchedulerTests, NoChangeDiags) { updateWithDiags( S, FooCpp, Contents, WantDiagnostics::Auto, [&](std::vector) { ADD_FAILURE() << "Should not be called."; }); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); } TEST_F(TUSchedulerTests, Run) { @@ -953,7 +954,7 @@ TEST_F(TUSchedulerTests, Run) { std::atomic Counter(0); S.run("add 1", /*Path=*/"", [&] { ++Counter; }); S.run("add 2", /*Path=*/"", [&] { Counter += 2; }); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); EXPECT_EQ(Counter.load(), 3); Notification TaskRun; @@ -1145,7 +1146,7 @@ TEST_F(TUSchedulerTests, AsyncPreambleThread) { auto PI = getInputs(File, ""); PI.Version = InputsV0.str(); S.update(File, PI, WantDiagnostics::Auto); - S.blockUntilIdle(timeoutSeconds(10)); + S.blockUntilIdle(BlockTimeout); // Block preamble builds. PI.Version = InputsV1.str(); @@ -1181,15 +1182,15 @@ TEST_F(TUSchedulerTests, OnlyPublishWhenPreambleIsBuilt) { Path File = testPath("foo.cpp"); S.update(File, getInputs(File, ""), WantDiagnostics::Auto); - S.blockUntilIdle(timeoutSeconds(10)); + S.blockUntilIdle(BlockTimeout); EXPECT_EQ(PreamblePublishCount, 1); // Same contents, no publish. S.update(File, getInputs(File, ""), WantDiagnostics::Auto); - S.blockUntilIdle(timeoutSeconds(10)); + S.blockUntilIdle(BlockTimeout); EXPECT_EQ(PreamblePublishCount, 1); // New contents, should publish. S.update(File, getInputs(File, "#define FOO"), WantDiagnostics::Auto); - S.blockUntilIdle(timeoutSeconds(10)); + S.blockUntilIdle(BlockTimeout); EXPECT_EQ(PreamblePublishCount, 2); } @@ -1226,14 +1227,14 @@ TEST_F(TUSchedulerTests, IncluderCache) { TUScheduler S(CDB, optsForTest()); auto GetFlags = [&](PathRef Header) { S.update(Header, getInputs(Header, ";"), WantDiagnostics::Yes); - EXPECT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + EXPECT_TRUE(S.blockUntilIdle(BlockTimeout)); tooling::CompileCommand Cmd; S.runWithPreamble("GetFlags", Header, TUScheduler::StaleOrAbsent, [&](llvm::Expected Inputs) { ASSERT_FALSE(!Inputs) << Inputs.takeError(); Cmd = std::move(Inputs->Command); }); - EXPECT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + EXPECT_TRUE(S.blockUntilIdle(BlockTimeout)); return Cmd.CommandLine; }; @@ -1251,7 +1252,7 @@ TEST_F(TUSchedulerTests, IncluderCache) { #include "unreliable.h" )cpp"; S.update(Main, getInputs(Main, AllIncludes), WantDiagnostics::Yes); - EXPECT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + EXPECT_TRUE(S.blockUntilIdle(BlockTimeout)); EXPECT_THAT(GetFlags(NoCmd), Contains("-DMAIN")) << "Included from main file, has no own command"; EXPECT_THAT(GetFlags(Unreliable), Contains("-DMAIN")) @@ -1267,7 +1268,7 @@ TEST_F(TUSchedulerTests, IncluderCache) { #include "not_included.h" )cpp"; S.update(Main2, getInputs(Main2, SomeIncludes), WantDiagnostics::Yes); - EXPECT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + EXPECT_TRUE(S.blockUntilIdle(BlockTimeout)); EXPECT_THAT(GetFlags(NoCmd), AllOf(Contains("-DMAIN"), Not(Contains("-DMAIN2")))) << "mainfile association is stable"; @@ -1278,14 +1279,14 @@ TEST_F(TUSchedulerTests, IncluderCache) { // Remove includes from main - this marks the associations as invalid but // doesn't actually remove them until another preamble claims them. S.update(Main, getInputs(Main, ""), WantDiagnostics::Yes); - EXPECT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + EXPECT_TRUE(S.blockUntilIdle(BlockTimeout)); EXPECT_THAT(GetFlags(NoCmd), AllOf(Contains("-DMAIN"), Not(Contains("-DMAIN2")))) << "mainfile association not updated yet!"; // Open yet another file - this time it claims the associations. S.update(Main3, getInputs(Main3, SomeIncludes), WantDiagnostics::Yes); - EXPECT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + EXPECT_TRUE(S.blockUntilIdle(BlockTimeout)); EXPECT_THAT(GetFlags(NoCmd), Contains("-DMAIN3")) << "association invalidated and then claimed by main3"; EXPECT_THAT(GetFlags(Unreliable), Contains("-DMAIN")) @@ -1300,11 +1301,11 @@ TEST_F(TUSchedulerTests, IncluderCache) { // Also run update for Main3 to invalidate the preeamble to make sure next // update populates include cache associations. S.update(Main3, getInputs(Main3, SomeIncludes), WantDiagnostics::Yes); - EXPECT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + EXPECT_TRUE(S.blockUntilIdle(BlockTimeout)); // Re-add the file and make sure nothing crashes. CDB.FailAll = false; S.update(Main3, getInputs(Main3, SomeIncludes), WantDiagnostics::Yes); - EXPECT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + EXPECT_TRUE(S.blockUntilIdle(BlockTimeout)); EXPECT_THAT(GetFlags(NoCmd), Contains("-DMAIN3")) << "association invalidated and then claimed by main3"; } @@ -1318,7 +1319,7 @@ TEST_F(TUSchedulerTests, PreservesLastActiveFile) { auto CheckNoFileActionsSeesLastActiveFile = [&](llvm::StringRef LastActiveFile) { - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); std::atomic Counter(0); // We only check for run and runQuick as runWithAST and // runWithPreamble is always bound to a file. @@ -1330,7 +1331,7 @@ TEST_F(TUSchedulerTests, PreservesLastActiveFile) { ++Counter; EXPECT_EQ(LastActiveFile, boundPath()); }); - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); EXPECT_EQ(2, Counter.load()); }; @@ -1459,7 +1460,7 @@ TEST_F(TUSchedulerTests, PreambleThrottle) { Filenames.push_back(Path); S.update(Path, getInputs(Path, ""), WantDiagnostics::Yes); } - ASSERT_TRUE(S.blockUntilIdle(timeoutSeconds(10))); + ASSERT_TRUE(S.blockUntilIdle(BlockTimeout)); // The throttler saw all files, and we built them. EXPECT_THAT(Throttler.Acquires,