mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
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
35 lines
953 B
C++
35 lines
953 B
C++
#include <gtest/gtest.h>
|
|
|
|
#include "caffe2/utils/knobs.h"
|
|
#include "caffe2/utils/knob_patcher.h"
|
|
|
|
using namespace caffe2;
|
|
|
|
TEST(KnobsTest, TestKnob) {
|
|
auto p = KnobPatcher("example_knob", false);
|
|
EXPECT_FALSE(CheckKnobExampleKnob());
|
|
EXPECT_FALSE(CheckKnob("example_knob"));
|
|
|
|
p = KnobPatcher("example_knob", true);
|
|
EXPECT_TRUE(CheckKnobExampleKnob());
|
|
EXPECT_TRUE(CheckKnob("example_knob"));
|
|
|
|
// Test nested patchers
|
|
{
|
|
auto p2 = KnobPatcher("example_knob", false);
|
|
EXPECT_FALSE(CheckKnobExampleKnob());
|
|
EXPECT_FALSE(CheckKnob("example_knob"));
|
|
|
|
auto p3 = KnobPatcher("example_knob", true);
|
|
EXPECT_TRUE(CheckKnobExampleKnob());
|
|
EXPECT_TRUE(CheckKnob("example_knob"));
|
|
}
|
|
EXPECT_TRUE(CheckKnobExampleKnob());
|
|
EXPECT_TRUE(CheckKnob("example_knob"));
|
|
}
|
|
|
|
TEST(KnobsTest, TestUnknownKnob) {
|
|
// Unknown knob names should throw an exception
|
|
EXPECT_THROW(CheckKnob("this_knob_does_not_exist"), std::exception);
|
|
}
|