// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once #include #include #include #include #include #include namespace proton::test { /* * Mockup of gid to lid change handler, used by unit tests to track * proper add/remove of listeners. */ class MockGidToLidChangeHandler : public IGidToLidChangeHandler { public: using AddEntry = std::pair; using RemoveEntry = std::pair>; private: std::vector _adds; std::vector _removes; std::vector> _listeners; public: MockGidToLidChangeHandler() noexcept; ~MockGidToLidChangeHandler() override; void addListener(std::unique_ptr listener) override { _adds.emplace_back(listener->getDocTypeName(), listener->getName()); _listeners.push_back(std::move(listener)); } void removeListeners(const vespalib::string &docTypeName, const std::set &keepNames) override { _removes.emplace_back(docTypeName, keepNames); } void notifyPut(IDestructorCallbackSP, document::GlobalId, uint32_t, SerialNum) override { } void notifyRemoves(IDestructorCallbackSP, const std::vector &, SerialNum) override { } std::unique_ptr grab_pending_changes() override { return {}; } void assertAdds(const std::vector &expAdds) { EXPECT_EQUAL(expAdds, _adds); } void assertRemoves(const std::vector &expRemoves) { EXPECT_EQUAL(expRemoves, _removes); } const std::vector> &getListeners() const { return _listeners; } }; }