blob: 9d0b4d4d57d342ea284154247eb90011929f9f59 [file] [log] [blame] [edit]
# Owner(s): ["module: unknown"]
import os
from torch._utils_internal import justknobs_feature, JustKnobsConfig
from torch.testing._internal.common_utils import ( # type: ignore[attr-defined]
load_tests,
)
# load_tests from torch.testing._internal.common_utils is used to automatically filter tests for
# sharding on sandcastle. This line silences flake warnings
load_tests = load_tests
from torch.testing._internal.common_utils import run_tests, TestCase
class TestJustKnob(TestCase):
def test_justknob_config(self):
with self.subTest("Returns True"):
a = JustKnobsConfig()
self.assertTrue(a.get())
with self.subTest("Returns False"):
a = JustKnobsConfig(name="fake_name", default=False)
self.assertFalse(a.get())
with self.subTest("Returns True via config"):
a = JustKnobsConfig(name="fake_name", default=False)
a.set(True)
self.assertTrue(a.get())
with self.subTest("Returns True via env"):
os.environ["FAKE_FEATURE"] = "1"
a = JustKnobsConfig(
name="fake_name", env_name="FAKE_FEATURE", default=False
)
self.assertTrue(a.get())
with self.subTest("Returns same value consistently"):
a = JustKnobsConfig(name="fake_name", default=False)
a.set(True)
self.assertTrue(a.get())
a.set(False)
self.assertTrue(a.get())
with self.subTest("Checks __bool__"):
a = JustKnobsConfig(name="fake_name", default=False)
if a:
raise RuntimeError("Should not be true")
self.assertFalse(a)
def test_justknob_feature(self):
with self.subTest("OSS is True"):
self.assertTrue(justknobs_feature("testname"))
with self.subTest("OSS default=True"):
self.assertTrue(justknobs_feature("testname", default=True))
with self.subTest("OSS default=False"):
self.assertFalse(justknobs_feature("testname", default=False))
with self.subTest("OSS config=True, default=False"):
self.assertTrue(
justknobs_feature("testname", config_value=True, default=False)
)
with self.subTest("OSS config=None, default=False"):
self.assertFalse(
justknobs_feature("testname", config_value=None, default=False)
)
with self.subTest("OSS config=False, default=True"):
self.assertFalse(
justknobs_feature("testname", config_value=False, default=True)
)
with self.subTest("OSS env is missing, config=False, default=True"):
self.assertFalse(
justknobs_feature(
"testname", config_value=False, env_name="NOTDEFINED", default=False
)
)
with self.subTest("OSS env is missing, default=False"):
self.assertFalse(
justknobs_feature("testname", env_name="NOTDEFINED", default=False)
)
with self.subTest(
"OSS config overrides env, config=True, env=False, default=False"
):
os.environ["FEATURE_ENV"] = "0"
self.assertTrue(
justknobs_feature(
"testname",
config_value=True,
env_name="FEATURE_ENV",
default=False,
)
)
with self.subTest("OSS env overrides default, , default=False"):
os.environ["FEATURE_ENV"] = "1"
self.assertTrue(
justknobs_feature("testname", env_name="FEATURE_ENV", default=False)
)
with self.subTest("OSS env truthy, config=False, default=False"):
os.environ["FEATURE_ENV"] = "1"
self.assertTrue(
justknobs_feature(
"testname",
env_name="FEATURE_ENV",
default=False,
)
)
os.environ["FEATURE_ENV"] = "true"
self.assertTrue(
justknobs_feature(
"testname",
env_name="FEATURE_ENV",
default=False,
)
)
os.environ["FEATURE_ENV"] = "TRUE"
self.assertTrue(
justknobs_feature(
"testname",
env_name="FEATURE_ENV",
default=False,
)
)
os.environ["FEATURE_ENV"] = "very weird true"
self.assertTrue(
justknobs_feature(
"testname",
env_name="FEATURE_ENV",
default=False,
)
)
with self.subTest("OSS env false, default=True"):
os.environ["FEATURE_ENV"] = "0"
self.assertFalse(
justknobs_feature("testname", env_name="FEATURE_ENV", default=True)
)
os.environ["FEATURE_ENV"] = "false"
self.assertFalse(
justknobs_feature("testname", env_name="FEATURE_ENV", default=True)
)
os.environ["FEATURE_ENV"] = "FALSE"
self.assertFalse(
justknobs_feature("testname", env_name="FEATURE_ENV", default=True)
)
if __name__ == "__main__":
run_tests()