pytorch/caffe2/utils/knob_patcher.h
Adam Simpkins aeb55225e0 [caffe2] add a basic implementation of run-time feature rollout checks (#59355)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/59355

Add a `CheckKnob()` function for doing run-time checks of feature roll-out
knobs.  This provides an API for safely controlling the roll-out of new
functionality in the code.

Test Plan: Included some basic unit tests.

Reviewed By: voznesenskym

Differential Revision: D26536430

fbshipit-source-id: 2e53234c6d9ce624848fc8b2c76f6833f344f48b
2021-06-04 14:34:41 -07:00

33 lines
715 B
C++

#pragma once
#include <memory>
#include <c10/util/string_view.h>
namespace caffe2 {
/**
* Patch the value of a knob during a unit test.
*
* This forces the knob to the specified value for as long as the KnobPatcher
* object exists. When the KnobPatcher object is destroyed the knob will revert
* to its previous value.
*/
class KnobPatcher {
public:
KnobPatcher(c10::string_view name, bool value);
~KnobPatcher();
KnobPatcher(KnobPatcher&&) noexcept;
KnobPatcher& operator=(KnobPatcher&&) noexcept;
KnobPatcher(const KnobPatcher&) = delete;
KnobPatcher& operator=(const KnobPatcher&) = delete;
private:
class PatchState;
std::unique_ptr<PatchState> state_;
};
} // namespace caffe2