35 lines
2.4 KiB
Python
35 lines
2.4 KiB
Python
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
from unittest.mock import Mock,patch
|
|
from profiles import Profiles,LTX_REPO,LTX_FILE,LTX_COMPONENTS,video_recipe
|
|
from catalog import Catalog,file_role
|
|
from execution_setup import assess
|
|
|
|
class VideoComponentsTests(unittest.TestCase):
|
|
def test_recipe_assignment_and_worker_block(self):
|
|
model=dict(id='main',repo=LTX_REPO,file=LTX_FILE,kind='video',revision='a'*40)
|
|
entries=[dict(id=role,repo=LTX_REPO,file=info['files'][0],kind='video',revision='a'*40,size=10) for role,info in LTX_COMPONENTS.items()]
|
|
lookup={x['id']:x for x in [model]+entries}
|
|
c=Mock();c.entry.side_effect=lambda ident:lookup[ident] if ident in lookup else (_ for _ in ()).throw(ValueError('missing'))
|
|
c.status.return_value={'entries':entries};c.files.return_value=dict(repo=LTX_REPO,revision='a'*40,files=[dict(name=x['file'],size=10) for x in entries],gated=True,auth_configured=True,license='ltx')
|
|
with tempfile.TemporaryDirectory() as d:
|
|
p=Profiles(Path(d)/'profiles.json',c);p.rows=[dict(id='p',revision=1,name='LTX',kind='video',model_id='main',parameters={})]
|
|
result=p.components('main');self.assertEqual(len(result['requirements']),4);c.files.assert_called_with(LTX_REPO,'a'*40)
|
|
self.assertTrue(all(len(r['available'])==1 for r in result['requirements']))
|
|
p.assign(dict(id='p',revision=1,components={x['id']:x['id'] for x in entries}))
|
|
self.assertFalse(p.status()['profiles'][0]['runnable']);self.assertEqual(len(p.status()['profiles'][0]['blockers']),1)
|
|
entries[0]['revision']='b'*40
|
|
with self.assertRaises(ValueError):p._component(model,'text_encoder','text_encoder')
|
|
with self.assertRaises(ValueError):p.assign(dict(id='p',revision=2,components={'unknown':''}))
|
|
self.assertEqual(assess(model,{})['state'],'runtime_missing')
|
|
def test_no_guesses_and_auxiliary_files_not_models(self):
|
|
self.assertIsNone(video_recipe(dict(kind='video',repo='other/repo',file=LTX_FILE)))
|
|
self.assertIsNone(video_recipe(dict(kind='video',repo=LTX_REPO,file=LTX_FILE.replace('bf16','nvfp4'))))
|
|
for info in LTX_COMPONENTS.values():self.assertFalse(file_role(info['files'][0])['profile_eligible'])
|
|
def test_metadata_uses_pinned_revision(self):
|
|
with tempfile.TemporaryDirectory() as d,patch('catalog.metadata',return_value={'sha':'a'*40,'siblings':[]}) as get:
|
|
c=Catalog(d);c.files(LTX_REPO,'a'*40)
|
|
self.assertIn('/revision/'+'a'*40,get.call_args.args[0])
|
|
with self.assertRaises(ValueError):c.files(LTX_REPO,'main')
|