Skip to content

Commit

Permalink
[clangd] Bump timeouts for LSPServerTests
Browse files Browse the repository at this point in the history
We seem to be hitting limits in some windows build bots, see
clangd/clangd#1712 (comment).

So bumping the timeouts to 60 seconds and completely dropping them for sync
requests. As mentioned in the comment above, this should improve things,
considering even the tests that don't touch any complicated scheduler is
failing.

Differential Revision: https://reviews.llvm.org/D158426
  • Loading branch information
kadircet committed Aug 22, 2023
1 parent cce3e8e commit 8c21544
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 7 deletions.
23 changes: 21 additions & 2 deletions clang-tools-extra/clangd/unittests/ClangdLSPServerTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,38 @@

#include "Annotations.h"
#include "ClangdLSPServer.h"
#include "ClangdServer.h"
#include "ConfigProvider.h"
#include "Diagnostics.h"
#include "FeatureModule.h"
#include "LSPBinder.h"
#include "LSPClient.h"
#include "Protocol.h"
#include "TestFS.h"
#include "support/Function.h"
#include "support/Logger.h"
#include "support/TestTracer.h"
#include "support/Threading.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/LLVM.h"
#include "llvm/ADT/FunctionExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/JSON.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Testing/Support/Error.h"
#include "llvm/Testing/Support/SupportHelpers.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include <cassert>
#include <condition_variable>
#include <cstddef>
#include <deque>
#include <memory>
#include <mutex>
#include <optional>
#include <thread>
#include <utility>

namespace clang {
namespace clangd {
Expand Down Expand Up @@ -358,7 +377,7 @@ TEST_F(LSPTest, FeatureModulesThreadingTest) {
Client.notify("increment", nullptr);
Client.notify("increment", nullptr);
Client.notify("increment", nullptr);
EXPECT_THAT_EXPECTED(Client.call("sync", nullptr).take(), Succeeded());
Client.sync();
EXPECT_EQ(3, FeatureModules.get<AsyncCounter>()->getSync());
// Throw some work on the queue to make sure shutdown blocks on it.
Client.notify("increment", nullptr);
Expand Down
19 changes: 17 additions & 2 deletions clang-tools-extra/clangd/unittests/LSPClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,36 @@
#include "Transport.h"
#include "support/Logger.h"
#include "support/Threading.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/JSON.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
#include "gtest/gtest.h"
#include <condition_variable>
#include <cstddef>
#include <cstdint>
#include <deque>
#include <functional>
#include <memory>
#include <mutex>
#include <optional>
#include <queue>
#include <string>
#include <utility>
#include <vector>

namespace clang {
namespace clangd {

llvm::Expected<llvm::json::Value> clang::clangd::LSPClient::CallResult::take() {
std::unique_lock<std::mutex> Lock(Mu);
if (!clangd::wait(Lock, CV, timeoutSeconds(10),
static constexpr size_t TimeoutSecs = 60;
if (!clangd::wait(Lock, CV, timeoutSeconds(TimeoutSecs),
[this] { return Value.has_value(); })) {
ADD_FAILURE() << "No result from call after 10 seconds!";
ADD_FAILURE() << "No result from call after " << TimeoutSecs << " seconds!";
return llvm::json::Value(nullptr);
}
auto Res = std::move(*Value);
Expand Down
8 changes: 5 additions & 3 deletions clang-tools-extra/clangd/unittests/LSPClient.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@
#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_UNITTESTS_LSPCLIENT_H
#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_UNITTESTS_LSPCLIENT_H

#include "llvm/ADT/StringRef.h"
#include <condition_variable>
#include <llvm/Support/Error.h>
#include <llvm/Support/JSON.h>
#include <condition_variable>
#include <deque>
#include <memory>
#include <mutex>
#include <optional>
#include <vector>

namespace clang {
namespace clangd {
Expand All @@ -32,7 +34,7 @@ class LSPClient {
class CallResult {
public:
~CallResult();
// Blocks up to 10 seconds for the result to be ready.
// Blocks up to 60 seconds for the result to be ready.
// Records a test failure if there was no reply.
llvm::Expected<llvm::json::Value> take();
// Like take(), but records a test failure if the result was an error.
Expand Down

0 comments on commit 8c21544

Please sign in to comment.