// Service Manager - Service Lifecycle Test // Tests the complete lifecycle of service management operations print("🚀 Service Manager - Service Lifecycle Test"); print("============================================"); // Note: This test demonstrates the service manager API structure // In practice, service_manager would be integrated through SAL's Rhai bindings // Test service configuration structure let test_config = #{ name: "test-service", binary_path: "/bin/echo", args: ["Hello from service manager test!"], working_directory: "/tmp", environment: #{ "TEST_VAR": "test_value", "SERVICE_TYPE": "test" }, auto_restart: false }; print("📝 Test Service Configuration:"); print(` Name: ${test_config.name}`); print(` Binary: ${test_config.binary_path}`); print(` Args: ${test_config.args}`); print(` Working Dir: ${test_config.working_directory}`); print(` Auto Restart: ${test_config.auto_restart}`); // Test service lifecycle operations (API demonstration) print("\n🔄 Service Lifecycle Operations:"); print("1️⃣ Service Creation"); print(" - create_service_manager() -> ServiceManager"); print(" - Automatically detects platform (macOS: launchctl, Linux: zinit)"); print("\n2️⃣ Service Deployment"); print(" - manager.start(config) -> Result<(), Error>"); print(" - Creates platform-specific service files"); print(" - Starts the service"); print("\n3️⃣ Service Monitoring"); print(" - manager.status(service_name) -> Result"); print(" - manager.logs(service_name, lines) -> Result"); print(" - manager.list() -> Result, Error>"); print("\n4️⃣ Service Management"); print(" - manager.stop(service_name) -> Result<(), Error>"); print(" - manager.restart(service_name) -> Result<(), Error>"); print(" - manager.start_and_confirm(config, timeout) -> Result<(), Error>"); print("\n5️⃣ Service Cleanup"); print(" - manager.remove(service_name) -> Result<(), Error>"); print(" - Removes service files and configuration"); // Test error handling scenarios print("\n❌ Error Handling:"); print(" - ServiceNotFound: Service doesn't exist"); print(" - ServiceAlreadyExists: Service already running"); print(" - StartFailed: Service failed to start"); print(" - StopFailed: Service failed to stop"); print(" - Other: Platform-specific errors"); // Test platform-specific behavior print("\n🖥️ Platform-Specific Behavior:"); print(" macOS (launchctl):"); print(" - Creates .plist files in ~/Library/LaunchAgents/"); print(" - Uses launchctl load/unload commands"); print(" - Integrates with macOS service management"); print(""); print(" Linux (zinit):"); print(" - Communicates via zinit socket (/tmp/zinit.sock)"); print(" - Lightweight service management"); print(" - Fast startup and monitoring"); print("\n✅ Service Lifecycle Test Complete"); print(" All API operations demonstrated successfully");