Coverage for tests/test_wrapper_llamagen.py: 100%
48 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-09 04:47 +0000
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-09 04:47 +0000
1#!/usr/bin/env python3
3import sys
4import pytest
6from unittest.mock import patch
7from unittest.mock import MagicMock
8from tests.torch_mock import TorchMock
10mock_torch = TorchMock()
12sys.path.append("wrapper")
13with patch.dict(sys.modules, {
14 'nvidia_smi': MagicMock(),
15 'imageio': MagicMock(),
16 'cv2': MagicMock(),
17 'torch': mock_torch,
18 'torch.amp': MagicMock(),
19 'torch.distributed': MagicMock(),
20 'xfuser': MagicMock(),
21 'xfuser.config': MagicMock(),
22 'xfuser.core': MagicMock(),
23 'xfuser.core.distributed': MagicMock(),
24 'xfuser.model_executor': MagicMock(),
25 'xfuser.model_executor.layers': MagicMock(),
26 'xfuser.model_executor.layers.attention_processor': MagicMock(),
27 'tokenizer.tokenizer_image.vq_model': MagicMock(),
28 'language.t5': MagicMock(),
29 'autoregressive.models.gpt': MagicMock(),
30 'autoregressive.models.generate': MagicMock(),
31}):
32 from llamagen.wrapper_llamagen import LlamaGenGeneration
35@pytest.mark.asyncio
36async def test_wrapper_llamagen() -> None:
37 model = LlamaGenGeneration()
38 assert model is not None
39 assert model.model_name == "llamagen"
40 assert model.status == "initializing"
42 with pytest.raises(AssertionError): # vq_model not set
43 await model.generate(64, 48, "test prompt")
45 with pytest.raises(AttributeError, match="'LlamaGenGeneration' object has no attribute 'gpt_type'"):
46 model.init()
47 assert model.status == "failed"
49 # Mock pipeline return object
50 mock_output = MagicMock()
51 mock_output.images = ["image"]
52 model.pipeline = MagicMock(return_value=mock_output)
53 model.pipeline.vae_scale_factor = 8
54 model.pipeline.gpt_type = "llama"
55 model.vq_model_name = "vq_model"
56 model.gpt_model_name = "gpt_model"
57 model.t5_model_type = "t5_model"
58 model.gpt_type = "llama"
60 with pytest.raises(FileNotFoundError, match="T5 model directory 'google' does not exist."):
61 model.init()
63 health = model.get_health()
64 assert health is not None
65 assert "dtype" in health
66 assert "gpu" in health
67 assert "world_size" in health
69 timestamps = model.get_timestamps()
70 assert timestamps is not None
72 with pytest.raises(ValueError):
73 await model.get_rest_args(None)
74 with pytest.raises(ValueError):
75 await model.get_rest_args({})
76 await model.get_rest_args({
77 "job_id": "unittest",
78 "prompt": "Test prompt",
79 "width": 80,
80 "height": 60,
81 "seed": 7,
82 })
84 with pytest.raises(AssertionError):
85 await model.warmup()
87 with pytest.raises(AssertionError):
88 await model.generate(prompt="Test prompt")
89 # assert image is not None
91 del model