Skip to content

Commit c0a0449

Browse files
author
Manish Kumar
authored
Removed --use-fake-symbol-table option. (envoyproxy#14178)
Signed-off-by: Manish Kumar <[email protected]>
1 parent c70b3e6 commit c0a0449

File tree

14 files changed

+29
-139
lines changed

14 files changed

+29
-139
lines changed

docs/root/operations/admin.rst

-3
Original file line numberDiff line numberDiff line change
@@ -511,9 +511,6 @@ modify different aspects of the server:
511511
but in response to user requests on high core-count machines, this
512512
can cause performance issues due to mutex contention.
513513

514-
This admin endpoint requires Envoy to be started with option
515-
`--use-fake-symbol-table 0`.
516-
517514
See :repo:`source/docs/stats.md` for more details.
518515

519516
Note also that actual mutex contention can be tracked via :http:get:`/contention`.

docs/root/version_history/current.rst

+1
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,4 @@ Deprecated
8585
* gzip: :ref:`HTTP Gzip filter <config_http_filters_gzip>` is rejected now unless explicitly allowed with :ref:`runtime override <config_runtime_deprecation>` `envoy.deprecated_features.allow_deprecated_gzip_http_filter` set to `true`.
8686
* logging: the `--log-format-prefix-with-location` option is removed.
8787
* ratelimit: the :ref:`dynamic metadata <envoy_v3_api_field_config.route.v3.RateLimit.Action.dynamic_metadata>` action is deprecated in favor of the more generic :ref:`metadata <envoy_v3_api_field_config.route.v3.RateLimit.Action.metadata>` action.
88+
* stats: the `--use-fake-symbol-table` option is removed.

include/envoy/server/options.h

-5
Original file line numberDiff line numberDiff line change
@@ -234,11 +234,6 @@ class Options {
234234
*/
235235
virtual bool mutexTracingEnabled() const PURE;
236236

237-
/**
238-
* @return whether to use the fake symbol table implementation.
239-
*/
240-
virtual bool fakeSymbolTableEnabled() const PURE;
241-
242237
/**
243238
* @return bool indicating whether cpuset size should determine the number of worker threads.
244239
*/

include/envoy/stats/symbol_table.h

-19
Original file line numberDiff line numberDiff line change
@@ -136,25 +136,6 @@ class SymbolTable {
136136
virtual void debugPrint() const PURE;
137137
#endif
138138

139-
/**
140-
* Calls the provided function with a string-view representation of the
141-
* elaborated name. This is useful during the interim period when we
142-
* are using FakeSymbolTableImpl, to avoid an extra allocation. Once
143-
* we migrate to using SymbolTableImpl, this interface will no longer
144-
* be helpful and can be removed. The reason it's useful now is that
145-
* it makes up, in part, for some extra runtime overhead that is spent
146-
* on the SymbolTable abstraction and API, without getting full benefit
147-
* from the improved representation.
148-
*
149-
* TODO(#6307): Remove this when the transition from FakeSymbolTableImpl to
150-
* SymbolTableImpl is complete.
151-
*
152-
* @param stat_name The stat name.
153-
* @param fn The function to call with the elaborated stat name as a string_view.
154-
*/
155-
virtual void callWithStringView(StatName stat_name,
156-
const std::function<void(absl::string_view)>& fn) const PURE;
157-
158139
using RecentLookupsFn = std::function<void(absl::string_view, uint64_t)>;
159140

160141
/**

source/common/stats/symbol_table_impl.cc

+1-6
Original file line numberDiff line numberDiff line change
@@ -236,11 +236,6 @@ std::string SymbolTableImpl::toString(const StatName& stat_name) const {
236236
return absl::StrJoin(decodeStrings(stat_name.data(), stat_name.dataSize()), ".");
237237
}
238238

239-
void SymbolTableImpl::callWithStringView(StatName stat_name,
240-
const std::function<void(absl::string_view)>& fn) const {
241-
fn(toString(stat_name));
242-
}
243-
244239
void SymbolTableImpl::incRefCount(const StatName& stat_name) {
245240
// Before taking the lock, decode the array of symbols from the SymbolTable::Storage.
246241
const SymbolVec symbols = Encoding::decodeSymbols(stat_name.data(), stat_name.dataSize());
@@ -615,7 +610,7 @@ void StatNameList::clear(SymbolTable& symbol_table) {
615610
}
616611

617612
StatNameSet::StatNameSet(SymbolTable& symbol_table, absl::string_view name)
618-
: name_(std::string(name)), symbol_table_(symbol_table), pool_(symbol_table) {
613+
: name_(std::string(name)), pool_(symbol_table) {
619614
builtin_stat_names_[""] = StatName();
620615
}
621616

source/common/stats/symbol_table_impl.h

+3-10
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,6 @@ class SymbolTableImpl : public SymbolTable {
186186
void populateList(const StatName* names, uint32_t num_names, StatNameList& list) override;
187187
StoragePtr encode(absl::string_view name) override;
188188
StoragePtr makeDynamicStorage(absl::string_view name) override;
189-
void callWithStringView(StatName stat_name,
190-
const std::function<void(absl::string_view)>& fn) const override;
191189

192190
#ifndef ENVOY_CONFIG_COVERAGE
193191
void debugPrint() const override;
@@ -585,7 +583,7 @@ class StatNamePool {
585583
* SymbolTable lock, but tokens are not shared across StatNames.
586584
*
587585
* The SymbolTable is required as a constructor argument to assist in encoding
588-
* the stat-names, which differs between FakeSymbolTableImpl and SymbolTableImpl.
586+
* the stat-names.
589587
*
590588
* Example usage:
591589
* StatNameDynamicPool pool(symbol_table);
@@ -652,7 +650,6 @@ class StatNameList {
652650
void clear(SymbolTable& symbol_table);
653651

654652
private:
655-
friend class FakeSymbolTableImpl;
656653
friend class SymbolTableImpl;
657654

658655
/**
@@ -666,10 +663,8 @@ class StatNameList {
666663
* ...
667664
*
668665
*
669-
* For FakeSymbolTableImpl, each symbol is a single char, casted into a
670-
* uint8_t. For SymbolTableImpl, each symbol is 1 or more bytes, in a
671-
* variable-length encoding. See SymbolTableImpl::Encoding::addSymbol for
672-
* details.
666+
* For SymbolTableImpl, each symbol is 1 or more bytes, in a variable-length
667+
* encoding. See SymbolTableImpl::Encoding::addSymbol for details.
673668
*/
674669
void moveStorageIntoList(SymbolTable::StoragePtr&& storage) { storage_ = std::move(storage); }
675670

@@ -841,13 +836,11 @@ class StatNameSet {
841836
}
842837

843838
private:
844-
friend class FakeSymbolTableImpl;
845839
friend class SymbolTableImpl;
846840

847841
StatNameSet(SymbolTable& symbol_table, absl::string_view name);
848842

849843
const std::string name_;
850-
Stats::SymbolTable& symbol_table_;
851844
Stats::StatNamePool pool_ ABSL_GUARDED_BY(mutex_);
852845
mutable absl::Mutex mutex_;
853846
using StringStatNameMap = absl::flat_hash_map<std::string, Stats::StatName>;

source/common/stats/thread_local_store.cc

+3-7
Original file line numberDiff line numberDiff line change
@@ -349,9 +349,8 @@ class StatNameTagHelper {
349349
: pool_(tls.symbolTable()), stat_name_tags_(stat_name_tags.value_or(StatNameTagVector())) {
350350
if (!stat_name_tags) {
351351
TagVector tags;
352-
tls.symbolTable().callWithStringView(name, [&tags, &tls, this](absl::string_view name_str) {
353-
tag_extracted_name_ = pool_.add(tls.tagProducer().produceTags(name_str, tags));
354-
});
352+
tag_extracted_name_ =
353+
pool_.add(tls.tagProducer().produceTags(tls.symbolTable().toString(name), tags));
355354
StatName empty;
356355
for (const auto& tag : tags) {
357356
StatName tag_name = tls.wellKnownTags().getBuiltin(tag.name_, empty);
@@ -603,10 +602,7 @@ Histogram& ThreadLocalStoreImpl::ScopeImpl::histogramFromStatNameWithTags(
603602
StatNameTagHelper tag_helper(parent_, joiner.tagExtractedName(), stat_name_tags);
604603

605604
ConstSupportedBuckets* buckets = nullptr;
606-
symbolTable().callWithStringView(final_stat_name,
607-
[&buckets, this](absl::string_view stat_name) {
608-
buckets = &parent_.histogram_settings_->buckets(stat_name);
609-
});
605+
buckets = &parent_.histogram_settings_->buckets(symbolTable().toString(final_stat_name));
610606

611607
RefcountPtr<ParentHistogramImpl> stat;
612608
{

source/docs/stats.md

+1-6
Original file line numberDiff line numberDiff line change
@@ -193,19 +193,14 @@ with a format-check, but we can determine whether symbol-table lookups are
193193
occurring during via an admin endpoint that shows 20 recent lookups by name, at
194194
`ENVOY_HOST:ADMIN_PORT/stats?recentlookups`.
195195

196-
As of October 6, 2020, the "fake" symbol table implementation has been removed
197-
from the system, and the "--use-fake-symbol-table" option is now a no-op,
198-
triggering a warning if set to "1". The option will be removed in a later
199-
release.
200-
201196
### Symbol Table Class Overview
202197

203198
Class | Superclass | Description
204199
-----| ---------- | ---------
205200
SymbolTable | | Abstract class providing an interface for symbol tables
206201
SymbolTableImpl | SymbolTable | Implementation of SymbolTable API where StatName share symbols held in a table
207202
SymbolTableImpl::Encoding | | Helper class for incrementally encoding strings into symbols
208-
StatName | | Provides an API and a view into a StatName (dynamic orsymbolized). Like absl::string_view, the backing store must be separately maintained.
203+
StatName | | Provides an API and a view into a StatName (dynamic or symbolized). Like absl::string_view, the backing store must be separately maintained.
209204
StatNameStorageBase | | Holds storage (an array of bytes) for a dynamic or symbolized StatName
210205
StatNameStorage | StatNameStorageBase | Holds storage for a symbolized StatName. Must be explicitly freed (not just destructed).
211206
StatNameManagedStorage | StatNameStorage | Like StatNameStorage, but is 8 bytes larger, and can be destructed without free().

source/server/options_impl.cc

+2-11
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,6 @@ OptionsImpl::OptionsImpl(std::vector<std::string> args,
147147
TCLAP::SwitchArg cpuset_threads(
148148
"", "cpuset-threads", "Get the default # of worker threads from cpuset size", cmd, false);
149149

150-
TCLAP::ValueArg<bool> use_fake_symbol_table("", "use-fake-symbol-table",
151-
"Use fake symbol table implementation", false, false,
152-
"bool", cmd);
153-
154150
TCLAP::ValueArg<std::string> disable_extensions("", "disable-extensions",
155151
"Comma-separated list of extensions to disable",
156152
false, "", "string", cmd);
@@ -181,11 +177,6 @@ OptionsImpl::OptionsImpl(std::vector<std::string> args,
181177

182178
hot_restart_disabled_ = disable_hot_restart.getValue();
183179
mutex_tracing_enabled_ = enable_mutex_tracing.getValue();
184-
fake_symbol_table_enabled_ = use_fake_symbol_table.getValue();
185-
if (fake_symbol_table_enabled_) {
186-
ENVOY_LOG(warn, "Fake symbol tables have been removed. Please remove references to "
187-
"--use-fake-symbol-table");
188-
}
189180

190181
cpuset_threads_ = cpuset_threads.getValue();
191182

@@ -423,8 +414,8 @@ OptionsImpl::OptionsImpl(const std::string& service_cluster, const std::string&
423414
service_zone_(service_zone), file_flush_interval_msec_(10000), drain_time_(600),
424415
parent_shutdown_time_(900), drain_strategy_(Server::DrainStrategy::Gradual),
425416
mode_(Server::Mode::Serve), hot_restart_disabled_(false), signal_handling_enabled_(true),
426-
mutex_tracing_enabled_(false), cpuset_threads_(false), fake_symbol_table_enabled_(false),
427-
socket_path_("@envoy_domain_socket"), socket_mode_(0) {}
417+
mutex_tracing_enabled_(false), cpuset_threads_(false), socket_path_("@envoy_domain_socket"),
418+
socket_mode_(0) {}
428419

429420
void OptionsImpl::disableExtensions(const std::vector<std::string>& names) {
430421
for (const auto& name : names) {

source/server/options_impl.h

-6
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,6 @@ class OptionsImpl : public Server::Options, protected Logger::Loggable<Logger::I
100100
ignore_unknown_dynamic_fields_ = ignore_unknown_dynamic_fields;
101101
}
102102

103-
void setFakeSymbolTableEnabled(bool fake_symbol_table_enabled) {
104-
fake_symbol_table_enabled_ = fake_symbol_table_enabled;
105-
}
106-
107103
void setSocketPath(const std::string& socket_path) { socket_path_ = socket_path; }
108104

109105
void setSocketMode(mode_t socket_mode) { socket_mode_ = socket_mode; }
@@ -150,7 +146,6 @@ class OptionsImpl : public Server::Options, protected Logger::Loggable<Logger::I
150146
bool hotRestartDisabled() const override { return hot_restart_disabled_; }
151147
bool signalHandlingEnabled() const override { return signal_handling_enabled_; }
152148
bool mutexTracingEnabled() const override { return mutex_tracing_enabled_; }
153-
bool fakeSymbolTableEnabled() const override { return fake_symbol_table_enabled_; }
154149
Server::CommandLineOptionsPtr toCommandLineOptions() const override;
155150
void parseComponentLogLevels(const std::string& component_log_levels);
156151
bool cpusetThreadsEnabled() const override { return cpuset_threads_; }
@@ -205,7 +200,6 @@ class OptionsImpl : public Server::Options, protected Logger::Loggable<Logger::I
205200
bool signal_handling_enabled_;
206201
bool mutex_tracing_enabled_;
207202
bool cpuset_threads_;
208-
bool fake_symbol_table_enabled_;
209203
std::vector<std::string> disabled_extensions_;
210204
uint32_t count_;
211205

test/common/stats/symbol_table_impl_test.cc

+1-2
Original file line numberDiff line numberDiff line change
@@ -704,8 +704,7 @@ TEST_F(StatNameTest, SupportsAbslHash) {
704704

705705
// Tests the memory savings realized from using symbol tables with 1k
706706
// clusters. This test shows the memory drops from almost 8M to less than
707-
// 2M. Note that only SymbolTableImpl is tested for memory consumption,
708-
// and not FakeSymbolTableImpl.
707+
// 2M.
709708
TEST(SymbolTableTest, Memory) {
710709
// Tests a stat-name allocation strategy.
711710
auto test_memory_usage = [](std::function<void(absl::string_view)> fn) -> size_t {

test/integration/hotrestart_test.sh

+13-47
Original file line numberDiff line numberDiff line change
@@ -78,18 +78,18 @@ echo "Hot restart test using dynamic base id"
7878

7979
TEST_INDEX=0
8080
function run_testsuite() {
81-
local BASE_ID BASE_ID_PATH HOT_RESTART_JSON="$1" FAKE_SYMBOL_TABLE="$2"
81+
local BASE_ID BASE_ID_PATH HOT_RESTART_JSON="$1"
8282
local SOCKET_PATH=@envoy_domain_socket
8383
local SOCKET_MODE=0
84-
if [ -n "$3" ] && [ -n "$4" ]
84+
if [ -n "$2" ] && [ -n "$3" ]
8585
then
86-
SOCKET_PATH="$3"
87-
SOCKET_MODE="$4"
86+
SOCKET_PATH="$2"
87+
SOCKET_MODE="$3"
8888
fi
8989

9090
start_test validation
9191
check "${ENVOY_BIN}" -c "${HOT_RESTART_JSON}" --mode validate --service-cluster cluster \
92-
--use-fake-symbol-table "$FAKE_SYMBOL_TABLE" --service-node node --disable-hot-restart
92+
--service-node node --disable-hot-restart
9393

9494
BASE_ID_PATH=$(mktemp 'envoy_test_base_id.XXXXXX')
9595
echo "Selected dynamic base id path ${BASE_ID_PATH}"
@@ -101,8 +101,7 @@ function run_testsuite() {
101101
ADMIN_ADDRESS_PATH_0="${TEST_TMPDIR}"/admin.0."${TEST_INDEX}".address
102102
run_in_background_saving_pid "${ENVOY_BIN}" -c "${HOT_RESTART_JSON}" \
103103
--restart-epoch 0 --use-dynamic-base-id --base-id-path "${BASE_ID_PATH}" \
104-
--service-cluster cluster --service-node node --use-fake-symbol-table "$FAKE_SYMBOL_TABLE" \
105-
--admin-address-path "${ADMIN_ADDRESS_PATH_0}" \
104+
--service-cluster cluster --service-node node --admin-address-path "${ADMIN_ADDRESS_PATH_0}" \
106105
--socket-path "${SOCKET_PATH}" --socket-mode "${SOCKET_MODE}"
107106

108107
BASE_ID=$(cat "${BASE_ID_PATH}")
@@ -140,22 +139,13 @@ function run_testsuite() {
140139
echo "The Envoy's hot restart version is ${CLI_HOT_RESTART_VERSION}"
141140
echo "Now checking that the above version is what we expected."
142141
check [ "${CLI_HOT_RESTART_VERSION}" = "${EXPECTED_CLI_HOT_RESTART_VERSION}" ]
143-
144-
start_test "Checking for consistency of /hot_restart_version with --use-fake-symbol-table ${FAKE_SYMBOL_TABLE}"
145-
CLI_HOT_RESTART_VERSION=$("${ENVOY_BIN}" --hot-restart-version --base-id "${BASE_ID}" \
146-
--use-fake-symbol-table "$FAKE_SYMBOL_TABLE" 2>&1)
147-
CLI_HOT_RESTART_VERSION=$(strip_fake_symbol_table_warning "$CLI_HOT_RESTART_VERSION" "$FAKE_SYMBOL_TABLE")
148-
EXPECTED_CLI_HOT_RESTART_VERSION="11.${SHARED_MEMORY_SIZE}"
149-
check [ "${CLI_HOT_RESTART_VERSION}" = "${EXPECTED_CLI_HOT_RESTART_VERSION}" ]
150-
142+
151143
start_test "Checking for match of --hot-restart-version and admin /hot_restart_version"
152144
ADMIN_ADDRESS_0=$(cat "${ADMIN_ADDRESS_PATH_0}")
153145
echo "fetching hot restart version from http://${ADMIN_ADDRESS_0}/hot_restart_version ..."
154146
ADMIN_HOT_RESTART_VERSION=$(curl -sg "http://${ADMIN_ADDRESS_0}/hot_restart_version")
155147
echo "Fetched ADMIN_HOT_RESTART_VERSION is ${ADMIN_HOT_RESTART_VERSION}"
156-
CLI_HOT_RESTART_VERSION=$("${ENVOY_BIN}" --hot-restart-version --base-id "${BASE_ID}" \
157-
--use-fake-symbol-table "$FAKE_SYMBOL_TABLE" 2>&1)
158-
CLI_HOT_RESTART_VERSION=$(strip_fake_symbol_table_warning "$CLI_HOT_RESTART_VERSION" "$FAKE_SYMBOL_TABLE")
148+
CLI_HOT_RESTART_VERSION=$("${ENVOY_BIN}" --hot-restart-version --base-id "${BASE_ID}" 2>&1)
159149
check [ "${ADMIN_HOT_RESTART_VERSION}" = "${CLI_HOT_RESTART_VERSION}" ]
160150

161151
start_test "Checking server.hot_restart_generation 1"
@@ -175,7 +165,7 @@ function run_testsuite() {
175165
ADMIN_ADDRESS_PATH_1="${TEST_TMPDIR}"/admin.1."${TEST_INDEX}".address
176166
run_in_background_saving_pid "${ENVOY_BIN}" -c "${UPDATED_HOT_RESTART_JSON}" \
177167
--restart-epoch 1 --base-id "${BASE_ID}" --service-cluster cluster --service-node node \
178-
--use-fake-symbol-table "$FAKE_SYMBOL_TABLE" --admin-address-path "${ADMIN_ADDRESS_PATH_1}" \
168+
--admin-address-path "${ADMIN_ADDRESS_PATH_1}" \
179169
--socket-path "${SOCKET_PATH}" --socket-mode "${SOCKET_MODE}"
180170

181171
SERVER_1_PID=$BACKGROUND_PID
@@ -216,7 +206,7 @@ function run_testsuite() {
216206
start_test "Starting epoch 2"
217207
run_in_background_saving_pid "${ENVOY_BIN}" -c "${UPDATED_HOT_RESTART_JSON}" \
218208
--restart-epoch 2 --base-id "${BASE_ID}" --service-cluster cluster --service-node node \
219-
--use-fake-symbol-table "$FAKE_SYMBOL_TABLE" --admin-address-path "${ADMIN_ADDRESS_PATH_2}" \
209+
--admin-address-path "${ADMIN_ADDRESS_PATH_2}" \
220210
--parent-shutdown-time-s 3 \
221211
--socket-path "${SOCKET_PATH}" --socket-mode "${SOCKET_MODE}"
222212

@@ -267,37 +257,14 @@ function run_testsuite() {
267257
wait "${SERVER_2_PID}"
268258
}
269259

270-
# TODO(#13399): remove this helper function and the references to it, as long as
271-
# the references to $FAKE_SYMBOL_TABLE.
272-
function strip_fake_symbol_table_warning() {
273-
local INPUT="$1"
274-
local FAKE_SYMBOL_TABLE="$2"
275-
if [ "$FAKE_SYMBOL_TABLE" = "1" ]; then
276-
echo "$INPUT" | grep -v "Fake symbol tables have been removed"
277-
else
278-
echo "$INPUT"
279-
fi
280-
}
281-
282260
# Hotrestart in abstract namespace
283261
for HOT_RESTART_JSON in "${JSON_TEST_ARRAY[@]}"
284262
do
285-
# Run one of the tests with real symbol tables. No need to do all of them.
286-
if [ "$TEST_INDEX" = "0" ]; then
287-
run_testsuite "$HOT_RESTART_JSON" "0" || exit 1
288-
fi
289-
290-
run_testsuite "$HOT_RESTART_JSON" "1" || exit 1
263+
run_testsuite "$HOT_RESTART_JSON" || exit 1
291264
done
292265

293266
# Hotrestart in specified UDS
294-
# Real symbol tables are the default, so I had run just one with fake symbol tables
295-
# (Switch the "0" and "1" in the second arg in the two run_testsuite calls below).
296-
if [ "$TEST_INDEX" = "0" ]; then
297-
run_testsuite "${HOT_RESTART_JSON_V4}" "0" "${SOCKET_DIR}/envoy_domain_socket" "600" || exit 1
298-
fi
299-
300-
run_testsuite "${HOT_RESTART_JSON_V4}" "1" "${SOCKET_DIR}/envoy_domain_socket" "600" || exit 1
267+
run_testsuite "${HOT_RESTART_JSON_V4}" "${SOCKET_DIR}/envoy_domain_socket" "600" || exit 1
301268

302269
start_test "disabling hot_restart by command line."
303270
CLI_HOT_RESTART_VERSION=$("${ENVOY_BIN}" --hot-restart-version --disable-hot-restart 2>&1)
@@ -308,8 +275,7 @@ start_test socket-mode for socket path
308275
run_in_background_saving_pid "${ENVOY_BIN}" -c "${HOT_RESTART_JSON}" \
309276
--restart-epoch 0 --base-id 0 --base-id-path "${BASE_ID_PATH}" \
310277
--socket-path "${SOCKET_DIR}"/envoy_domain_socket --socket-mode 644 \
311-
--service-cluster cluster --service-node node --use-fake-symbol-table "$FAKE_SYMBOL_TABLE" \
312-
--admin-address-path "${ADMIN_ADDRESS_PATH_0}"
278+
--service-cluster cluster --service-node node --admin-address-path "${ADMIN_ADDRESS_PATH_0}"
313279
sleep 3
314280
EXPECTED_SOCKET_MODE=$(stat -c '%a' "${SOCKET_DIR}"/envoy_domain_socket_parent_0)
315281
check [ "644" = "${EXPECTED_SOCKET_MODE}" ]

test/mocks/server/options.h

-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ class MockOptions : public Options {
4747
MOCK_METHOD(bool, hotRestartDisabled, (), (const));
4848
MOCK_METHOD(bool, signalHandlingEnabled, (), (const));
4949
MOCK_METHOD(bool, mutexTracingEnabled, (), (const));
50-
MOCK_METHOD(bool, fakeSymbolTableEnabled, (), (const));
5150
MOCK_METHOD(bool, cpusetThreadsEnabled, (), (const));
5251
MOCK_METHOD(const std::vector<std::string>&, disabledExtensions, (), (const));
5352
MOCK_METHOD(Server::CommandLineOptionsPtr, toCommandLineOptions, (), (const));

0 commit comments

Comments
 (0)