...
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
// PostgreSQL Installer Test
|
||||
//
|
||||
// This test script demonstrates how to use the PostgreSQL installer module to:
|
||||
// - Install PostgreSQL using nerdctl
|
||||
// - Create a database
|
||||
// - Execute SQL scripts
|
||||
// - Check if PostgreSQL is running
|
||||
//
|
||||
// Prerequisites:
|
||||
// - nerdctl must be installed and working
|
||||
// - Docker images must be accessible
|
||||
|
||||
// Define utility functions
|
||||
fn assert_true(condition, message) {
|
||||
if !condition {
|
||||
print(`ASSERTION FAILED: ${message}`);
|
||||
throw message;
|
||||
}
|
||||
}
|
||||
|
||||
// Define test variables (will be used inside the test function)
|
||||
|
||||
// Function to check if nerdctl is available
|
||||
fn is_nerdctl_available() {
|
||||
try {
|
||||
// For testing purposes, we'll assume nerdctl is not available
|
||||
// In a real-world scenario, you would check if nerdctl is installed
|
||||
return false;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Function to clean up any existing PostgreSQL container
|
||||
fn cleanup_postgres() {
|
||||
try {
|
||||
// In a real-world scenario, you would use nerdctl to stop and remove the container
|
||||
// For this test, we'll just print a message
|
||||
print("Cleaned up existing PostgreSQL container (simulated)");
|
||||
} catch {
|
||||
// Ignore errors if container doesn't exist
|
||||
}
|
||||
}
|
||||
|
||||
// Main test function
|
||||
fn run_postgres_installer_test() {
|
||||
print("\n=== PostgreSQL Installer Test ===");
|
||||
|
||||
// Define test variables
|
||||
let container_name = "postgres-test";
|
||||
let postgres_version = "15";
|
||||
let postgres_port = 5433; // Use a non-default port to avoid conflicts
|
||||
let postgres_user = "testuser";
|
||||
let postgres_password = "testpassword";
|
||||
let test_db_name = "testdb";
|
||||
|
||||
// // Check if nerdctl is available
|
||||
// if !is_nerdctl_available() {
|
||||
// print("nerdctl is not available. Skipping PostgreSQL installer test.");
|
||||
// return 1; // Skip the test
|
||||
// }
|
||||
|
||||
// Clean up any existing PostgreSQL container
|
||||
cleanup_postgres();
|
||||
|
||||
// Test 1: Install PostgreSQL
|
||||
print("\n1. Installing PostgreSQL...");
|
||||
try {
|
||||
let install_result = pg_install(
|
||||
container_name,
|
||||
postgres_version,
|
||||
postgres_port,
|
||||
postgres_user,
|
||||
postgres_password
|
||||
);
|
||||
|
||||
assert_true(install_result, "PostgreSQL installation should succeed");
|
||||
print("✓ PostgreSQL installed successfully");
|
||||
|
||||
// Wait a bit for PostgreSQL to fully initialize
|
||||
print("Waiting for PostgreSQL to initialize...");
|
||||
// In a real-world scenario, you would wait for PostgreSQL to initialize
|
||||
// For this test, we'll just print a message
|
||||
print("Waited for PostgreSQL to initialize (simulated)")
|
||||
} catch(e) {
|
||||
print(`✗ Failed to install PostgreSQL: ${e}`);
|
||||
cleanup_postgres();
|
||||
return 1; // Test failed
|
||||
}
|
||||
|
||||
// Test 2: Check if PostgreSQL is running
|
||||
print("\n2. Checking if PostgreSQL is running...");
|
||||
try {
|
||||
let running = pg_is_running(container_name);
|
||||
assert_true(running, "PostgreSQL should be running");
|
||||
print("✓ PostgreSQL is running");
|
||||
} catch(e) {
|
||||
print(`✗ Failed to check if PostgreSQL is running: ${e}`);
|
||||
cleanup_postgres();
|
||||
return 1; // Test failed
|
||||
}
|
||||
|
||||
// Test 3: Create a database
|
||||
print("\n3. Creating a database...");
|
||||
try {
|
||||
let create_result = pg_create_database(container_name, test_db_name);
|
||||
assert_true(create_result, "Database creation should succeed");
|
||||
print(`✓ Database '${test_db_name}' created successfully`);
|
||||
} catch(e) {
|
||||
print(`✗ Failed to create database: ${e}`);
|
||||
cleanup_postgres();
|
||||
return 1; // Test failed
|
||||
}
|
||||
|
||||
// Test 4: Execute SQL script
|
||||
print("\n4. Executing SQL script...");
|
||||
try {
|
||||
// Create a table
|
||||
let create_table_sql = `
|
||||
CREATE TABLE test_table (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
value INTEGER
|
||||
);
|
||||
`;
|
||||
|
||||
let result = pg_execute_sql(container_name, test_db_name, create_table_sql);
|
||||
print("✓ Created table successfully");
|
||||
|
||||
// Insert data
|
||||
let insert_sql = `
|
||||
INSERT INTO test_table (name, value) VALUES
|
||||
('test1', 100),
|
||||
('test2', 200),
|
||||
('test3', 300);
|
||||
`;
|
||||
|
||||
result = pg_execute_sql(container_name, test_db_name, insert_sql);
|
||||
print("✓ Inserted data successfully");
|
||||
|
||||
// Query data
|
||||
let query_sql = "SELECT * FROM test_table ORDER BY id;";
|
||||
result = pg_execute_sql(container_name, test_db_name, query_sql);
|
||||
print("✓ Queried data successfully");
|
||||
print(`Query result: ${result}`);
|
||||
} catch(e) {
|
||||
print(`✗ Failed to execute SQL script: ${e}`);
|
||||
cleanup_postgres();
|
||||
return 1; // Test failed
|
||||
}
|
||||
|
||||
// Clean up
|
||||
print("\nCleaning up...");
|
||||
cleanup_postgres();
|
||||
|
||||
print("\n=== PostgreSQL Installer Test Completed Successfully ===");
|
||||
return 0; // Test passed
|
||||
}
|
||||
|
||||
// Run the test
|
||||
let result = run_postgres_installer_test();
|
||||
|
||||
// Return the result
|
||||
result
|
Reference in New Issue
Block a user