// Service lifecycle management test script // This script tests REAL complete service lifecycle scenarios print("=== Service Lifecycle Management Test ==="); // Create service manager let manager = create_service_manager(); print("✓ Service manager created"); // Test configuration - real services for testing let test_services = [ #{ name: "lifecycle-test-1", binary_path: "/bin/echo", args: ["Lifecycle test 1"], working_directory: "/tmp", environment: #{}, auto_restart: false }, #{ name: "lifecycle-test-2", binary_path: "/bin/echo", args: ["Lifecycle test 2"], working_directory: "/tmp", environment: #{ "TEST_VAR": "test_value" }, auto_restart: false } ]; let total_tests = 0; let passed_tests = 0; // Test 1: Service Creation and Start print("\n1. Testing service creation and start..."); for service_config in test_services { print(`\nStarting service: ${service_config.name}`); try { start(manager, service_config); print(` ✓ Service ${service_config.name} started successfully`); passed_tests += 1; } catch(e) { print(` ✗ Service ${service_config.name} start failed: ${e}`); } total_tests += 1; } // Test 2: Service Existence Check print("\n2. Testing service existence checks..."); for service_config in test_services { print(`\nChecking existence of: ${service_config.name}`); try { let service_exists = exists(manager, service_config.name); if service_exists { print(` ✓ Service ${service_config.name} exists: ${service_exists}`); passed_tests += 1; } else { print(` ✗ Service ${service_config.name} doesn't exist after start`); } } catch(e) { print(` ✗ Existence check failed for ${service_config.name}: ${e}`); } total_tests += 1; } // Test 3: Status Check print("\n3. Testing status checks..."); for service_config in test_services { print(`\nChecking status of: ${service_config.name}`); try { let service_status = status(manager, service_config.name); print(` ✓ Service ${service_config.name} status: ${service_status}`); passed_tests += 1; } catch(e) { print(` ✗ Status check failed for ${service_config.name}: ${e}`); } total_tests += 1; } // Test 4: Service List Check print("\n4. Testing service list..."); try { let services = list(manager); print(` ✓ Service list retrieved (${services.len()} services)`); // Check if our test services are in the list for service_config in test_services { let found = false; for service in services { if service.contains(service_config.name) { found = true; print(` ✓ Found ${service_config.name} in list`); break; } } if !found { print(` ⚠ ${service_config.name} not found in service list`); } } passed_tests += 1; } catch(e) { print(` ✗ Service list failed: ${e}`); } total_tests += 1; // Test 5: Service Stop print("\n5. Testing service stop..."); for service_config in test_services { print(`\nStopping service: ${service_config.name}`); try { stop(manager, service_config.name); print(` ✓ Service ${service_config.name} stopped successfully`); passed_tests += 1; } catch(e) { print(` ✗ Service ${service_config.name} stop failed: ${e}`); } total_tests += 1; } // Test 6: Service Removal print("\n6. Testing service removal..."); for service_config in test_services { print(`\nRemoving service: ${service_config.name}`); try { remove(manager, service_config.name); print(` ✓ Service ${service_config.name} removed successfully`); passed_tests += 1; } catch(e) { print(` ✗ Service ${service_config.name} removal failed: ${e}`); } total_tests += 1; } // Test 7: Cleanup Verification print("\n7. Testing cleanup verification..."); for service_config in test_services { print(`\nVerifying removal of: ${service_config.name}`); try { let exists_after_remove = exists(manager, service_config.name); if !exists_after_remove { print(` ✓ Service ${service_config.name} correctly doesn't exist after removal`); passed_tests += 1; } else { print(` ✗ Service ${service_config.name} still exists after removal`); } } catch(e) { print(` ✗ Cleanup verification failed for ${service_config.name}: ${e}`); } total_tests += 1; } // Test Summary print("\n=== Lifecycle Test Summary ==="); print(`Services tested: ${test_services.len()}`); print(`Total operations: ${total_tests}`); print(`Successful operations: ${passed_tests}`); print(`Failed operations: ${total_tests - passed_tests}`); print(`Success rate: ${(passed_tests * 100) / total_tests}%`); if passed_tests == total_tests { print("\n🎉 All lifecycle tests passed!"); print("Service manager is working correctly across all scenarios."); } else { print(`\n⚠ ${total_tests - passed_tests} test(s) failed`); print("Some service manager operations need attention."); } print("\n=== Service Lifecycle Test Complete ==="); // Return test results #{ summary: #{ total_tests: total_tests, passed_tests: passed_tests, success_rate: (passed_tests * 100) / total_tests, services_tested: test_services.len() } }