failure_injector.h 867 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include <util/generic/hash.h>
  3. #include <util/generic/string.h>
  4. #include <util/system/mutex.h>
  5. #include <string_view>
  6. namespace NYql {
  7. class TFailureInjector {
  8. public:
  9. struct TFailureSpec {
  10. ui64 Skip;
  11. ui64 CountOfFails;
  12. };
  13. static void Activate();
  14. static void Set(std::string_view name, ui64 skip, ui64 countOfFails);
  15. static void Reach(std::string_view name, std::function<void()> action);
  16. static THashMap<TString, TFailureSpec> GetCurrentState();
  17. private:
  18. void ActivateImpl();
  19. void SetImpl(std::string_view name, ui64 skip, ui64 countOfFails);
  20. void ReachImpl(std::string_view name, std::function<void()> action);
  21. THashMap<TString, TFailureSpec> GetCurrentStateImpl();
  22. std::atomic<bool> Enabled_ = false;
  23. THashMap<TString, TFailureSpec> FailureSpecs;
  24. TMutex Lock;
  25. };
  26. } // NYql