jan/autoqa/migration_utils.py
2025-08-15 12:06:52 +07:00

68 lines
2.2 KiB
Python

import os
import logging
import subprocess
import time
from pathlib import Path
from utils import force_close_jan, is_jan_running, start_jan_app
logger = logging.getLogger(__name__)
def install_jan_version(installer_path, version_type="old"):
"""
Install a specific version of Jan
Args:
installer_path: Path to the installer file
version_type: "old" or "new" for logging purposes
"""
logger.info(f"Installing Jan {version_type} version from: {installer_path}")
# Force close any running Jan instances first
force_close_jan("Jan.exe")
force_close_jan("Jan-nightly.exe")
try:
if installer_path.endswith('.exe'):
# Windows installer
subprocess.run([installer_path, '/S'], check=True)
elif installer_path.endswith('.deb'):
# Ubuntu installer
subprocess.run(['sudo', 'dpkg', '-i', installer_path], check=True)
elif installer_path.endswith('.dmg'):
# macOS installer - need to mount and copy
subprocess.run(['hdiutil', 'attach', installer_path], check=True)
# This is simplified - actual implementation would need to handle dmg mounting
logger.info(f"Successfully installed Jan {version_type} version")
# Wait for installation to complete
time.sleep(30)
except subprocess.CalledProcessError as e:
logger.error(f"Failed to install Jan {version_type} version: {e}")
raise
except Exception as e:
logger.error(f"Unexpected error installing Jan {version_type} version: {e}")
raise
# Backup functionality removed as it's redundant for direct persistence testing
def prepare_migration_environment():
"""
Prepare environment for migration testing
"""
logger.info("Preparing migration test environment...")
# Create migration logs directory
migration_logs_dir = "migration_logs"
os.makedirs(migration_logs_dir, exist_ok=True)
# Create migration artifacts directory
migration_artifacts_dir = "migration_artifacts"
os.makedirs(migration_artifacts_dir, exist_ok=True)
return {
"logs_dir": migration_logs_dir,
"artifacts_dir": migration_artifacts_dir
}