Skip to main content
Glama
dependentTest.ts1.88 kB
#!/usr/bin/env ts-node import Docker from 'dockerode'; import path from 'path'; import { startDependentContainers, stopDependentContainers } from '../src/dependentContainers'; import { ensureNetwork, teardownNetwork } from '../src/docker'; interface DependentContainerSpec { name: string; image: string; ports?: string[]; env?: Record<string, string>; } // main async function main() { const networkName = 'smoke-dep-test-net'; const scenarioName = 'smoke-dep-test'; const deps: DependentContainerSpec[] = [ { name: 'nginx', image: 'nginx:alpine', ports: ['8080:80'], // map container 80→host 8080 }, ]; try { console.log(`→ Ensuring network "${networkName}" exists`); await ensureNetwork(networkName); console.log(`→ Starting dependent containers...`); const containers = await startDependentContainers(networkName, deps); console.log(`→ Started containers: ${containers.map((c) => c.id).join(', ')}`); // verify each one is actually running: const docker = new Docker(); for (const dep of deps) { const containerName = `${scenarioName}-${dep.name}`; console.log(`→ Inspecting container "${containerName}"`); const ctr = docker.getContainer(containerName); const info = await ctr.inspect(); if (!info.State.Running) { throw new Error(`Container ${containerName} is not running!`); } console.log(`✅ "${containerName}" is running`); } console.log('🎉 Smoke test passed'); } catch (err: any) { console.error('❌ Smoke test failed:', err.message); process.exit(1); } finally { console.log('→ Cleaning up dependent containers...'); await stopDependentContainers(deps); console.log('→ Removing network...'); await teardownNetwork(networkName); console.log('→ Cleanup complete'); } } main();

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TheLunarCompany/lunar'

If you have feedback or need assistance with the MCP directory API, please join our Discord server