// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include #include #include #include #include #include #include #include #include LOG_SETUP(".storageservertest"); using namespace std::chrono_literals; namespace storage { struct StorageServerTest : public ::testing::Test { std::unique_ptr slobrok; std::unique_ptr dist_config; std::unique_ptr stor_config; StorageServerTest(); ~StorageServerTest() override; void SetUp() override; void TearDown() override; }; StorageServerTest::StorageServerTest() = default; StorageServerTest::~StorageServerTest() = default; namespace { struct Node { virtual ~Node() = default; virtual StorageNode& getNode() = 0; virtual StorageNodeContext& getContext() = 0; }; struct Distributor final : public Node { DistributorProcess _process; explicit Distributor(const config::ConfigUri& config_uri); ~Distributor() override; StorageNode& getNode() override { return _process.getNode(); } StorageNodeContext& getContext() override { return _process.getContext(); } }; struct Storage final : public Node { DummyServiceLayerProcess _process; StorageComponent::UP _component; explicit Storage(const config::ConfigUri& config_uri); ~Storage() override; StorageNode& getNode() override { return _process.getNode(); } StorageNodeContext& getContext() override { return _process.getContext(); } }; Distributor::Distributor(const config::ConfigUri& config_uri) : _process(config_uri) { _process.setupConfig(60000ms); _process.createNode(); } Distributor::~Distributor() = default; Storage::Storage(const config::ConfigUri& config_uri) : _process(config_uri) { _process.setupConfig(60000ms); _process.createNode(); _component = std::make_unique(getContext().getComponentRegister(), "test"); } Storage::~Storage() = default; } void StorageServerTest::SetUp() { slobrok = std::make_unique(); dist_config = StorageConfigSet::make_distributor_node_config(); stor_config = StorageConfigSet::make_storage_node_config(); dist_config->set_slobrok_config_port(slobrok->port()); stor_config->set_slobrok_config_port(slobrok->port()); } void StorageServerTest::TearDown() { stor_config.reset(); dist_config.reset(); slobrok.reset(); } TEST_F(StorageServerTest, distributor_server_can_be_instantiated) { Distributor distServer(dist_config->config_uri()); } TEST_F(StorageServerTest, storage_server_can_be_instantiated) { Storage storServer(stor_config->config_uri()); } }