test-tools.js•2.32 kB
#!/usr/bin/env node
import { ProcessManager } from '../src/process-manager.js';
import { LogManager } from '../src/log-manager.js';
import { handleToolCall } from '../src/tools/index.js';
import { loadConfig } from '../src/config.js';
const config = loadConfig();
const processManager = new ProcessManager(config);
const logManager = new LogManager(config);
processManager.on('stdout', (data) => {
console.log('STDOUT:', data);
logManager.addLogEntry('stdout', data, 'INFO');
});
processManager.on('stderr', (data) => {
console.log('STDERR:', data);
logManager.addLogEntry('stderr', data, 'ERROR');
});
async function testTool(toolName, args = {}) {
console.log(`\n=== Testing ${toolName} ===`);
console.log('Args:', JSON.stringify(args, null, 2));
try {
const result = await handleToolCall(toolName, args, processManager, logManager);
console.log('Result:', JSON.stringify(result, null, 2));
return result;
} catch (error) {
console.error('Error:', error.message);
return { error: true, message: error.message };
}
}
async function runTests() {
console.log('Gradle Tomcat MCP Server - Tool Tests');
console.log('====================================');
await testTool('get_tomcat_status');
console.log('\nPress Ctrl+C to stop tests at any time...');
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
function prompt(question) {
return new Promise(resolve => {
readline.question(question, resolve);
});
}
try {
const startTest = await prompt('Start Tomcat? (y/n): ');
if (startTest.toLowerCase() === 'y') {
await testTool('start_tomcat', { gradle_command: 'appRun' });
setTimeout(async () => {
await testTool('get_tomcat_status');
await testTool('get_logs', { lines: 10 });
const stopTest = await prompt('Stop Tomcat? (y/n): ');
if (stopTest.toLowerCase() === 'y') {
await testTool('stop_tomcat');
}
readline.close();
}, 5000);
} else {
readline.close();
}
} catch (error) {
console.error('Test error:', error);
readline.close();
}
}
if (import.meta.url === `file://${process.argv[1]}`) {
runTests().catch(console.error);
}