xref: /aosp_15_r20/external/pytorch/test/test_utils_internal.py (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1*da0073e9SAndroid Build Coastguard Worker# Owner(s): ["module: unknown"]
2*da0073e9SAndroid Build Coastguard Worker
3*da0073e9SAndroid Build Coastguard Workerimport os
4*da0073e9SAndroid Build Coastguard Worker
5*da0073e9SAndroid Build Coastguard Workerfrom torch._utils_internal import justknobs_feature, JustKnobsConfig
6*da0073e9SAndroid Build Coastguard Workerfrom torch.testing._internal.common_utils import (  # type: ignore[attr-defined]
7*da0073e9SAndroid Build Coastguard Worker    load_tests,
8*da0073e9SAndroid Build Coastguard Worker)
9*da0073e9SAndroid Build Coastguard Worker
10*da0073e9SAndroid Build Coastguard Worker
11*da0073e9SAndroid Build Coastguard Worker# load_tests from torch.testing._internal.common_utils is used to automatically filter tests for
12*da0073e9SAndroid Build Coastguard Worker# sharding on sandcastle. This line silences flake warnings
13*da0073e9SAndroid Build Coastguard Workerload_tests = load_tests
14*da0073e9SAndroid Build Coastguard Worker
15*da0073e9SAndroid Build Coastguard Workerfrom torch.testing._internal.common_utils import run_tests, TestCase
16*da0073e9SAndroid Build Coastguard Worker
17*da0073e9SAndroid Build Coastguard Worker
18*da0073e9SAndroid Build Coastguard Workerclass TestJustKnob(TestCase):
19*da0073e9SAndroid Build Coastguard Worker    def test_justknob_config(self):
20*da0073e9SAndroid Build Coastguard Worker        with self.subTest("Returns True"):
21*da0073e9SAndroid Build Coastguard Worker            a = JustKnobsConfig()
22*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(a.get())
23*da0073e9SAndroid Build Coastguard Worker        with self.subTest("Returns False"):
24*da0073e9SAndroid Build Coastguard Worker            a = JustKnobsConfig(name="fake_name", default=False)
25*da0073e9SAndroid Build Coastguard Worker            self.assertFalse(a.get())
26*da0073e9SAndroid Build Coastguard Worker        with self.subTest("Returns True via config"):
27*da0073e9SAndroid Build Coastguard Worker            a = JustKnobsConfig(name="fake_name", default=False)
28*da0073e9SAndroid Build Coastguard Worker            a.set(True)
29*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(a.get())
30*da0073e9SAndroid Build Coastguard Worker        with self.subTest("Returns True via env"):
31*da0073e9SAndroid Build Coastguard Worker            os.environ["FAKE_FEATURE"] = "1"
32*da0073e9SAndroid Build Coastguard Worker            a = JustKnobsConfig(
33*da0073e9SAndroid Build Coastguard Worker                name="fake_name", env_name="FAKE_FEATURE", default=False
34*da0073e9SAndroid Build Coastguard Worker            )
35*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(a.get())
36*da0073e9SAndroid Build Coastguard Worker        with self.subTest("Returns same value consistently"):
37*da0073e9SAndroid Build Coastguard Worker            a = JustKnobsConfig(name="fake_name", default=False)
38*da0073e9SAndroid Build Coastguard Worker            a.set(True)
39*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(a.get())
40*da0073e9SAndroid Build Coastguard Worker            a.set(False)
41*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(a.get())
42*da0073e9SAndroid Build Coastguard Worker        with self.subTest("Checks __bool__"):
43*da0073e9SAndroid Build Coastguard Worker            a = JustKnobsConfig(name="fake_name", default=False)
44*da0073e9SAndroid Build Coastguard Worker            if a:
45*da0073e9SAndroid Build Coastguard Worker                raise RuntimeError("Should not be true")
46*da0073e9SAndroid Build Coastguard Worker            self.assertFalse(a)
47*da0073e9SAndroid Build Coastguard Worker
48*da0073e9SAndroid Build Coastguard Worker    def test_justknob_feature(self):
49*da0073e9SAndroid Build Coastguard Worker        with self.subTest("OSS is True"):
50*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(justknobs_feature("testname"))
51*da0073e9SAndroid Build Coastguard Worker        with self.subTest("OSS default=True"):
52*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(justknobs_feature("testname", default=True))
53*da0073e9SAndroid Build Coastguard Worker        with self.subTest("OSS default=False"):
54*da0073e9SAndroid Build Coastguard Worker            self.assertFalse(justknobs_feature("testname", default=False))
55*da0073e9SAndroid Build Coastguard Worker        with self.subTest("OSS config=True, default=False"):
56*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(
57*da0073e9SAndroid Build Coastguard Worker                justknobs_feature("testname", config_value=True, default=False)
58*da0073e9SAndroid Build Coastguard Worker            )
59*da0073e9SAndroid Build Coastguard Worker        with self.subTest("OSS config=None, default=False"):
60*da0073e9SAndroid Build Coastguard Worker            self.assertFalse(
61*da0073e9SAndroid Build Coastguard Worker                justknobs_feature("testname", config_value=None, default=False)
62*da0073e9SAndroid Build Coastguard Worker            )
63*da0073e9SAndroid Build Coastguard Worker        with self.subTest("OSS config=False, default=True"):
64*da0073e9SAndroid Build Coastguard Worker            self.assertFalse(
65*da0073e9SAndroid Build Coastguard Worker                justknobs_feature("testname", config_value=False, default=True)
66*da0073e9SAndroid Build Coastguard Worker            )
67*da0073e9SAndroid Build Coastguard Worker        with self.subTest("OSS env is missing, config=False, default=True"):
68*da0073e9SAndroid Build Coastguard Worker            self.assertFalse(
69*da0073e9SAndroid Build Coastguard Worker                justknobs_feature(
70*da0073e9SAndroid Build Coastguard Worker                    "testname", config_value=False, env_name="NOTDEFINED", default=False
71*da0073e9SAndroid Build Coastguard Worker                )
72*da0073e9SAndroid Build Coastguard Worker            )
73*da0073e9SAndroid Build Coastguard Worker        with self.subTest("OSS env is missing, default=False"):
74*da0073e9SAndroid Build Coastguard Worker            self.assertFalse(
75*da0073e9SAndroid Build Coastguard Worker                justknobs_feature("testname", env_name="NOTDEFINED", default=False)
76*da0073e9SAndroid Build Coastguard Worker            )
77*da0073e9SAndroid Build Coastguard Worker        with self.subTest(
78*da0073e9SAndroid Build Coastguard Worker            "OSS config overrides env, config=True, env=False, default=False"
79*da0073e9SAndroid Build Coastguard Worker        ):
80*da0073e9SAndroid Build Coastguard Worker            os.environ["FEATURE_ENV"] = "0"
81*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(
82*da0073e9SAndroid Build Coastguard Worker                justknobs_feature(
83*da0073e9SAndroid Build Coastguard Worker                    "testname",
84*da0073e9SAndroid Build Coastguard Worker                    config_value=True,
85*da0073e9SAndroid Build Coastguard Worker                    env_name="FEATURE_ENV",
86*da0073e9SAndroid Build Coastguard Worker                    default=False,
87*da0073e9SAndroid Build Coastguard Worker                )
88*da0073e9SAndroid Build Coastguard Worker            )
89*da0073e9SAndroid Build Coastguard Worker        with self.subTest("OSS env overrides default, , default=False"):
90*da0073e9SAndroid Build Coastguard Worker            os.environ["FEATURE_ENV"] = "1"
91*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(
92*da0073e9SAndroid Build Coastguard Worker                justknobs_feature("testname", env_name="FEATURE_ENV", default=False)
93*da0073e9SAndroid Build Coastguard Worker            )
94*da0073e9SAndroid Build Coastguard Worker        with self.subTest("OSS env truthy, config=False, default=False"):
95*da0073e9SAndroid Build Coastguard Worker            os.environ["FEATURE_ENV"] = "1"
96*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(
97*da0073e9SAndroid Build Coastguard Worker                justknobs_feature(
98*da0073e9SAndroid Build Coastguard Worker                    "testname",
99*da0073e9SAndroid Build Coastguard Worker                    env_name="FEATURE_ENV",
100*da0073e9SAndroid Build Coastguard Worker                    default=False,
101*da0073e9SAndroid Build Coastguard Worker                )
102*da0073e9SAndroid Build Coastguard Worker            )
103*da0073e9SAndroid Build Coastguard Worker            os.environ["FEATURE_ENV"] = "true"
104*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(
105*da0073e9SAndroid Build Coastguard Worker                justknobs_feature(
106*da0073e9SAndroid Build Coastguard Worker                    "testname",
107*da0073e9SAndroid Build Coastguard Worker                    env_name="FEATURE_ENV",
108*da0073e9SAndroid Build Coastguard Worker                    default=False,
109*da0073e9SAndroid Build Coastguard Worker                )
110*da0073e9SAndroid Build Coastguard Worker            )
111*da0073e9SAndroid Build Coastguard Worker            os.environ["FEATURE_ENV"] = "TRUE"
112*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(
113*da0073e9SAndroid Build Coastguard Worker                justknobs_feature(
114*da0073e9SAndroid Build Coastguard Worker                    "testname",
115*da0073e9SAndroid Build Coastguard Worker                    env_name="FEATURE_ENV",
116*da0073e9SAndroid Build Coastguard Worker                    default=False,
117*da0073e9SAndroid Build Coastguard Worker                )
118*da0073e9SAndroid Build Coastguard Worker            )
119*da0073e9SAndroid Build Coastguard Worker            os.environ["FEATURE_ENV"] = "very weird true"
120*da0073e9SAndroid Build Coastguard Worker            self.assertTrue(
121*da0073e9SAndroid Build Coastguard Worker                justknobs_feature(
122*da0073e9SAndroid Build Coastguard Worker                    "testname",
123*da0073e9SAndroid Build Coastguard Worker                    env_name="FEATURE_ENV",
124*da0073e9SAndroid Build Coastguard Worker                    default=False,
125*da0073e9SAndroid Build Coastguard Worker                )
126*da0073e9SAndroid Build Coastguard Worker            )
127*da0073e9SAndroid Build Coastguard Worker        with self.subTest("OSS env false, default=True"):
128*da0073e9SAndroid Build Coastguard Worker            os.environ["FEATURE_ENV"] = "0"
129*da0073e9SAndroid Build Coastguard Worker            self.assertFalse(
130*da0073e9SAndroid Build Coastguard Worker                justknobs_feature("testname", env_name="FEATURE_ENV", default=True)
131*da0073e9SAndroid Build Coastguard Worker            )
132*da0073e9SAndroid Build Coastguard Worker            os.environ["FEATURE_ENV"] = "false"
133*da0073e9SAndroid Build Coastguard Worker            self.assertFalse(
134*da0073e9SAndroid Build Coastguard Worker                justknobs_feature("testname", env_name="FEATURE_ENV", default=True)
135*da0073e9SAndroid Build Coastguard Worker            )
136*da0073e9SAndroid Build Coastguard Worker            os.environ["FEATURE_ENV"] = "FALSE"
137*da0073e9SAndroid Build Coastguard Worker            self.assertFalse(
138*da0073e9SAndroid Build Coastguard Worker                justknobs_feature("testname", env_name="FEATURE_ENV", default=True)
139*da0073e9SAndroid Build Coastguard Worker            )
140*da0073e9SAndroid Build Coastguard Worker
141*da0073e9SAndroid Build Coastguard Worker
142*da0073e9SAndroid Build Coastguard Workerif __name__ == "__main__":
143*da0073e9SAndroid Build Coastguard Worker    run_tests()
144