@@ -68,6 +68,56 @@ def test_enable_hard_pin_default_off(self):
6868 assert restored .enable_hard_pin is False
6969
7070
71+ class TestMooncakeEnvDefaults :
72+ def test_tcp_memcpy_default_is_applied_by_export_env (self ):
73+ config = MooncakeConfig (protocol = "tcp" )
74+
75+ with patch .dict (os .environ , {}, clear = True ):
76+ config .export_env ()
77+
78+ assert os .environ ["MC_STORE_MEMCPY" ] == "0"
79+
80+ def test_tcp_memcpy_default_preserves_user_override (self ):
81+ config = MooncakeConfig (protocol = "tcp" )
82+
83+ with patch .dict (os .environ , {"MC_STORE_MEMCPY" : "1" }, clear = True ):
84+ config .apply_env_defaults ()
85+
86+ assert os .environ ["MC_STORE_MEMCPY" ] == "1"
87+
88+ def test_tcp_memcpy_default_not_applied_for_rdma (self ):
89+ config = MooncakeConfig (protocol = "rdma" )
90+
91+ with patch .dict (os .environ , {}, clear = True ):
92+ config .apply_env_defaults ()
93+
94+ assert "MC_STORE_MEMCPY" not in os .environ
95+
96+ def test_direct_store_setup_applies_tcp_memcpy_before_mooncake_client_setup (self ):
97+ config = MooncakeConfig (protocol = "tcp" , async_put_pool_size = 0 )
98+ mock_raw_store = MagicMock ()
99+ mock_raw_store .setup .return_value = 0
100+
101+ class ConcreteStore (MooncakeHiddenStateStore ):
102+ pass
103+
104+ def make_raw_store ():
105+ assert os .environ ["MC_STORE_MEMCPY" ] == "0"
106+ return mock_raw_store
107+
108+ store = ConcreteStore (config )
109+ with (
110+ patch .dict (os .environ , {}, clear = True ),
111+ patch ("torchspec.transfer.mooncake.store.MooncakeDistributedStore" , make_raw_store ),
112+ patch .object (ConcreteStore , "_verify_force_delete" ),
113+ patch .object (ConcreteStore , "_build_replicate_config" ),
114+ patch ("torch.cuda.is_available" , return_value = False ),
115+ ):
116+ store .setup ()
117+
118+ mock_raw_store .setup .assert_called_once ()
119+
120+
71121# ---------------------------------------------------------------------------
72122# Tests 2-3: _verify_force_delete
73123# ---------------------------------------------------------------------------
0 commit comments