dummy-test-runner.cjsโข2.31 kB
#!/usr/bin/env node
/**
* Dummy Test Runner - for testing singleton process behavior
* Runs for 30 seconds and prints status updates
*/
const fs = require('fs');
const path = require('path');
const STATUS_FILE = path.join(__dirname, 'test-process-status.json');
function updateStatus(status) {
const statusData = {
isRunning: status.isRunning,
pid: process.pid,
startedAt: status.startedAt || new Date().toISOString(),
lastUpdate: new Date().toISOString(),
message: status.message,
progress: status.progress || 0
};
try {
fs.writeFileSync(STATUS_FILE, JSON.stringify(statusData, null, 2));
} catch (error) {
console.error('Failed to update status file:', error.message);
}
}
function cleanup() {
console.log('๐งน Dummy test cleaning up...');
updateStatus({
isRunning: false,
message: 'Test completed and stopped'
});
// Remove status file
try {
if (fs.existsSync(STATUS_FILE)) {
fs.unlinkSync(STATUS_FILE);
}
} catch (error) {
console.error('Failed to remove status file:', error.message);
}
console.log('โ
Dummy test completed');
process.exit(0);
}
// Handle shutdown signals
process.on('SIGTERM', cleanup);
process.on('SIGINT', cleanup);
async function runDummyTest() {
console.log('๐งช Starting dummy test runner...');
console.log(`๐ PID: ${process.pid}`);
// Initialize status
updateStatus({
isRunning: true,
message: 'Dummy test started',
progress: 0
});
const duration = 30000; // 30 seconds
const interval = 3000; // Update every 3 seconds
const steps = duration / interval;
for (let i = 0; i < steps; i++) {
const progress = Math.round(((i + 1) / steps) * 100);
const message = `Dummy test running... Step ${i + 1}/${steps} (${progress}%)`;
console.log(`๐ ${message}`);
updateStatus({
isRunning: true,
message: message,
progress: progress
});
// Simulate work
await new Promise(resolve => setTimeout(resolve, interval));
}
cleanup();
}
if (require.main === module) {
runDummyTest().catch(error => {
console.error('โ Dummy test failed:', error);
updateStatus({
isRunning: false,
message: `Test failed: ${error.message}`
});
process.exit(1);
});
}