aboutsummaryrefslogtreecommitdiffstats
path: root/storage/src/tests/storageserver/rpc/message_codec_provider_test.cpp
blob: 546b7604deebc488bb0b61aa35f4cd775681bd63 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/storageserver/rpc/message_codec_provider.h>
#include <vespa/storageapi/mbusprot/protocolserialization7.h>
#include <vespa/document/base/testdocman.h>
#include <vespa/vespalib/gtest/gtest.h>

using namespace ::testing;

namespace storage::rpc {

struct MessageCodecProviderTest : Test {
    std::shared_ptr<const document::DocumentTypeRepo> _repo1;
    std::shared_ptr<const document::DocumentTypeRepo> _repo2;
    MessageCodecProvider _provider;

    // We don't care about repo/set contents, just their pointer identities
    MessageCodecProviderTest()
        : _repo1(document::TestDocRepo().getTypeRepoSp()),
          _repo2(document::TestDocRepo().getTypeRepoSp()),
          _provider(_repo1)
    {}
    ~MessageCodecProviderTest() override;
};

MessageCodecProviderTest::~MessageCodecProviderTest() = default;

TEST_F(MessageCodecProviderTest, initially_provides_constructed_repos) {
    auto wrapped = _provider.wrapped_codec();
    EXPECT_EQ(&wrapped->codec().type_repo(), _repo1.get());
}

TEST_F(MessageCodecProviderTest, updated_repos_reflected_in_new_wrapped_codec) {
    _provider.update_atomically(_repo2);

    auto wrapped = _provider.wrapped_codec();
    EXPECT_EQ(&wrapped->codec().type_repo(), _repo2.get());
}

}