5
from torch._utils_internal import justknobs_feature, JustKnobsConfig
6
from torch.testing._internal.common_utils import (
13
load_tests = load_tests
15
from torch.testing._internal.common_utils import run_tests, TestCase
18
class TestJustKnob(TestCase):
19
def test_justknob_config(self):
20
with self.subTest("Returns True"):
22
self.assertTrue(a.get())
23
with self.subTest("Returns False"):
24
a = JustKnobsConfig(name="fake_name", default=False)
25
self.assertFalse(a.get())
26
with self.subTest("Returns True via config"):
27
a = JustKnobsConfig(name="fake_name", default=False)
29
self.assertTrue(a.get())
30
with self.subTest("Returns True via env"):
31
os.environ["FAKE_FEATURE"] = "1"
33
name="fake_name", env_name="FAKE_FEATURE", default=False
35
self.assertTrue(a.get())
36
with self.subTest("Returns same value consistently"):
37
a = JustKnobsConfig(name="fake_name", default=False)
39
self.assertTrue(a.get())
41
self.assertTrue(a.get())
42
with self.subTest("Checks __bool__"):
43
a = JustKnobsConfig(name="fake_name", default=False)
45
raise RuntimeError("Should not be true")
48
def test_justknob_feature(self):
49
with self.subTest("OSS is True"):
50
self.assertTrue(justknobs_feature("testname"))
51
with self.subTest("OSS default=True"):
52
self.assertTrue(justknobs_feature("testname", default=True))
53
with self.subTest("OSS default=False"):
54
self.assertFalse(justknobs_feature("testname", default=False))
55
with self.subTest("OSS config=True, default=False"):
57
justknobs_feature("testname", config_value=True, default=False)
59
with self.subTest("OSS config=None, default=False"):
61
justknobs_feature("testname", config_value=None, default=False)
63
with self.subTest("OSS config=False, default=True"):
65
justknobs_feature("testname", config_value=False, default=True)
67
with self.subTest("OSS env is missing, config=False, default=True"):
70
"testname", config_value=False, env_name="NOTDEFINED", default=False
73
with self.subTest("OSS env is missing, default=False"):
75
justknobs_feature("testname", env_name="NOTDEFINED", default=False)
78
"OSS config overrides env, config=True, env=False, default=False"
80
os.environ["FEATURE_ENV"] = "0"
85
env_name="FEATURE_ENV",
89
with self.subTest("OSS env overrides default, , default=False"):
90
os.environ["FEATURE_ENV"] = "1"
92
justknobs_feature("testname", env_name="FEATURE_ENV", default=False)
94
with self.subTest("OSS env truthy, config=False, default=False"):
95
os.environ["FEATURE_ENV"] = "1"
99
env_name="FEATURE_ENV",
103
os.environ["FEATURE_ENV"] = "true"
107
env_name="FEATURE_ENV",
111
os.environ["FEATURE_ENV"] = "TRUE"
115
env_name="FEATURE_ENV",
119
os.environ["FEATURE_ENV"] = "very weird true"
123
env_name="FEATURE_ENV",
127
with self.subTest("OSS env false, default=True"):
128
os.environ["FEATURE_ENV"] = "0"
130
justknobs_feature("testname", env_name="FEATURE_ENV", default=True)
132
os.environ["FEATURE_ENV"] = "false"
134
justknobs_feature("testname", env_name="FEATURE_ENV", default=True)
136
os.environ["FEATURE_ENV"] = "FALSE"
138
justknobs_feature("testname", env_name="FEATURE_ENV", default=True)
142
if __name__ == "__main__":