#pragma once #include #include #include #include namespace NYql { class TFailureInjector { public: struct TFailureSpec { ui64 Skip; ui64 CountOfFails; }; static void Activate(); static void Set(std::string_view name, ui64 skip, ui64 countOfFails); static void Reach(std::string_view name, std::function action); static THashMap GetCurrentState(); private: void ActivateImpl(); void SetImpl(std::string_view name, ui64 skip, ui64 countOfFails); void ReachImpl(std::string_view name, std::function action); THashMap GetCurrentStateImpl(); std::atomic Enabled_ = false; THashMap FailureSpecs; TMutex Lock; }; } // NYql