issue a download progress event when install download starts

This commit is contained in:
Lincoln Stein
2024-05-28 19:30:42 -04:00
parent cd12ca6e85
commit ead1748c54
2 changed files with 11 additions and 8 deletions

View File

@ -815,10 +815,13 @@ class ModelInstallService(ModelInstallServiceBase):
if install_job := self._download_cache.get(download_job.id, None): if install_job := self._download_cache.get(download_job.id, None):
install_job.status = InstallStatus.DOWNLOADING install_job.status = InstallStatus.DOWNLOADING
assert download_job.download_path
if install_job.local_path == install_job._install_tmpdir: # first time if install_job.local_path == install_job._install_tmpdir: # first time
assert download_job.download_path
install_job.local_path = download_job.download_path install_job.local_path = download_job.download_path
install_job.download_parts = download_job.download_parts
install_job.bytes = sum(x.bytes for x in download_job.download_parts)
install_job.total_bytes = download_job.total_bytes install_job.total_bytes = download_job.total_bytes
self._signal_job_downloading(install_job)
def _download_progress_callback(self, download_job: MultiFileDownloadJob) -> None: def _download_progress_callback(self, download_job: MultiFileDownloadJob) -> None:
with self._lock: with self._lock:
@ -829,7 +832,6 @@ class ModelInstallService(ModelInstallServiceBase):
# update sizes # update sizes
install_job.bytes = sum(x.bytes for x in download_job.download_parts) install_job.bytes = sum(x.bytes for x in download_job.download_parts)
install_job.total_bytes = sum(x.total_bytes for x in download_job.download_parts) install_job.total_bytes = sum(x.total_bytes for x in download_job.download_parts)
install_job.download_parts = download_job.download_parts
self._signal_job_downloading(install_job) self._signal_job_downloading(install_job)
def _download_complete_callback(self, download_job: MultiFileDownloadJob) -> None: def _download_complete_callback(self, download_job: MultiFileDownloadJob) -> None:

View File

@ -251,11 +251,12 @@ def test_simple_download(mm2_installer: ModelInstallServiceBase, mm2_app_config:
model_record = store.get_model(key) model_record = store.get_model(key)
assert (mm2_app_config.models_path / model_record.path).exists() assert (mm2_app_config.models_path / model_record.path).exists()
assert len(bus.events) == 4 assert len(bus.events) == 5
assert isinstance(bus.events[0], ModelInstallDownloadProgressEvent) assert isinstance(bus.events[0], ModelInstallDownloadProgressEvent) # download starts
assert isinstance(bus.events[1], ModelInstallDownloadsCompleteEvent) assert isinstance(bus.events[1], ModelInstallDownloadProgressEvent) # download progresses
assert isinstance(bus.events[2], ModelInstallStartedEvent) assert isinstance(bus.events[2], ModelInstallDownloadsCompleteEvent) # download completed
assert isinstance(bus.events[3], ModelInstallCompleteEvent) assert isinstance(bus.events[3], ModelInstallStartedEvent) # install started
assert isinstance(bus.events[4], ModelInstallCompleteEvent) # install completed
@pytest.mark.timeout(timeout=10, method="thread") @pytest.mark.timeout(timeout=10, method="thread")