@@ -209,6 +209,34 @@ def test_lora_lru_cache_model_manager(dist_init, dummy_model):
209209 assert manager .activate_lora (3 )
210210 assert manager .lora_index_to_id [0 ] == 2
211211 assert manager .lora_index_to_id [1 ] == 3
212+ assert manager .pin_lora (2 )
213+ assert manager .lora_index_to_id [0 ] == 2
214+ assert manager .lora_index_to_id [1 ] == 3
215+ assert manager .activate_lora (1 )
216+ assert manager .lora_index_to_id [0 ] == 2
217+ assert manager .lora_index_to_id [1 ] == 1
218+ assert manager .deactivate_lora (2 )
219+ assert manager .lora_index_to_id [0 ] is None
220+ assert manager .lora_index_to_id [1 ] == 1
221+ assert manager .activate_lora (3 )
222+ assert manager .lora_index_to_id [0 ] == 3
223+ assert manager .lora_index_to_id [1 ] == 1
224+ assert manager .pin_lora (3 )
225+ assert manager .pin_lora (1 )
226+ with pytest .raises (RuntimeError ):
227+ assert manager .pin_lora (2 )
228+ assert manager .lora_index_to_id [0 ] == 3
229+ assert manager .lora_index_to_id [1 ] == 1
230+ with pytest .raises (RuntimeError ):
231+ assert manager .activate_lora (2 )
232+
233+ assert manager .deactivate_lora (3 )
234+ assert manager .pin_lora (2 )
235+ assert manager .lora_index_to_id [0 ] == 2
236+ assert manager .lora_index_to_id [1 ] == 1
237+ assert manager .remove_lora (3 )
238+ with pytest .raises (ValueError ):
239+ assert manager .pin_lora (3 )
212240
213241
214242def test_lru_lora_model_manager (dist_init , dummy_model ):
@@ -288,6 +316,42 @@ def test_lru_lora_model_manager(dist_init, dummy_model):
288316 assert set (manager .list_loras ()) == set ()
289317 assert all (x is None for x in manager .lora_index_to_id )
290318
319+ # pinning
320+ assert manager .add_lora (model_lora3 )
321+ assert manager .activate_lora (3 )
322+ assert manager .add_lora (model_lora4 )
323+ assert manager .activate_lora (4 )
324+ assert set (manager .list_loras ()) == {3 , 4 }
325+ with pytest .raises (ValueError ):
326+ assert manager .pin_lora (1 )
327+ assert manager .pin_lora (3 )
328+ # Remove manually
329+ assert manager .remove_lora (3 )
330+ assert not manager .remove_lora (3 )
331+
332+ assert set (manager .list_loras ()) == {4 }
333+ assert manager .lora_index_to_id [0 ] is None
334+ assert manager .lora_index_to_id [1 ] == 4
335+
336+ assert manager .add_lora (model_lora1 )
337+ assert manager .pin_lora (1 )
338+ assert manager .add_lora (model_lora2 )
339+ assert manager .activate_lora (2 )
340+
341+ assert set (manager .list_loras ()) == {1 , 2 }
342+ assert manager .lora_index_to_id [0 ] == 1
343+ assert manager .lora_index_to_id [1 ] == 2
344+
345+ assert manager .remove_oldest_lora ()
346+ assert set (manager .list_loras ()) == {1 }
347+ assert manager .lora_index_to_id [0 ] == 1
348+ assert manager .lora_index_to_id [1 ] is None
349+
350+ with pytest .raises (RuntimeError ):
351+ assert manager .remove_oldest_lora ()
352+
353+ assert set (manager .list_loras ()) == {1 }
354+
291355
292356def test_lru_cache_worker_lora_manager (llama_2_7b_model_extra_embeddings ,
293357 sql_lora_files ):
0 commit comments