zvec/tests/db/common/global_resource_test.cc

47 lines
1.8 KiB
C++

// Copyright 2025-present the zvec project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "db/common/global_resource.h"
#include <algorithm>
#include <thread>
#include <gtest/gtest.h>
#include <zvec/db/config.h>
using namespace zvec;
TEST(GlobalResource, UsesEffectiveCountsAndDisablesBindingByDefault) {
GlobalConfig::ConfigData config;
config.query_thread_count = 2;
config.optimize_thread_count = 1;
EXPECT_FALSE(config.query_thread_binding);
EXPECT_FALSE(config.optimize_thread_binding);
const auto status = GlobalConfig::Instance().Initialize(config);
ASSERT_TRUE(status.ok()) << status.message();
EXPECT_FALSE(GlobalConfig::Instance().query_thread_binding());
EXPECT_FALSE(GlobalConfig::Instance().optimize_thread_binding());
const auto max_workers =
std::max(std::thread::hardware_concurrency(), 1u);
const auto expected_query_workers = std::min(
GlobalConfig::Instance().query_thread_count(), max_workers);
const auto expected_optimize_workers = std::min(
GlobalConfig::Instance().optimize_thread_count(), max_workers);
EXPECT_EQ(expected_query_workers,
GlobalResource::Instance().query_thread_pool()->count());
EXPECT_EQ(expected_optimize_workers,
GlobalResource::Instance().optimize_thread_pool()->count());
}