const axios = require('axios');
const baseURL = 'https://aws-pricing.umbrellacost.io';
async function testInstanceDiscovery() {
console.log('='.repeat(80));
console.log('Testing Instance Type Discovery');
console.log(`Base URL: ${baseURL}`);
console.log('='.repeat(80));
// Test 1: List all EC2 instances in us-east-1
console.log('\n1. Testing list_instance_types - AWS EC2 in us-east-1');
try {
const response = await axios.get(`${baseURL}/provider-cost`, {
params: {
provider: 'AWS',
serviceCode: 'AmazonEC2',
regionCode: 'us-east-1'
},
timeout: 15000
});
console.log('✅ Success!');
console.log(`Found ${response.data.length} EC2 instance types`);
// Show first 5 instances
console.log('\nFirst 5 instances:');
response.data.slice(0, 5).forEach(instance => {
console.log(` - ${instance.InstanceType}: $${instance.OnDemandHour}/hour`);
});
// Show some t2 instances
const t2Instances = response.data.filter(i => i.InstanceType && i.InstanceType.startsWith('t2'));
console.log(`\nFound ${t2Instances.length} t2 instances`);
t2Instances.slice(0, 3).forEach(instance => {
console.log(` - ${instance.InstanceType}: $${instance.OnDemandHour}/hour`);
});
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 2: List all RDS instances in us-east-1
console.log('\n2. Testing list_instance_types - AWS RDS in us-east-1');
try {
const response = await axios.get(`${baseURL}/provider-cost`, {
params: {
provider: 'AWS',
serviceCode: 'AmazonRDS',
regionCode: 'us-east-1'
},
timeout: 15000
});
console.log('✅ Success!');
console.log(`Found ${response.data.length} RDS instance types`);
// Show first 5 RDS instances
console.log('\nFirst 5 RDS instances:');
response.data.slice(0, 5).forEach(instance => {
console.log(` - ${instance.InstanceType}: $${instance.OnDemandHour}/hour`);
});
// Show r5 RDS instances
const r5Instances = response.data.filter(i => i.InstanceType && i.InstanceType.includes('r5'));
console.log(`\nFound ${r5Instances.length} r5 RDS instances`);
r5Instances.slice(0, 5).forEach(instance => {
console.log(` - ${instance.InstanceType}: $${instance.OnDemandHour}/hour`);
});
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 3: List instance family types - t3 family
console.log('\n3. Testing list_instance_family_types - t3 family');
try {
const response = await axios.get(`${baseURL}/instance-family-types/AmazonEC2/t3`, {
timeout: 10000
});
console.log('✅ Success!');
console.log(`Found ${response.data.length} instance types in t3 family`);
console.log('All t3 instances:', response.data.join(', '));
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 4: List instance family types - m5 family
console.log('\n4. Testing list_instance_family_types - m5 family');
try {
const response = await axios.get(`${baseURL}/instance-family-types/AmazonEC2/m5`, {
timeout: 10000
});
console.log('✅ Success!');
console.log(`Found ${response.data.length} instance types in m5 family`);
console.log('All m5 instances:', response.data.join(', '));
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 5: List instance family types - r5 RDS family
console.log('\n5. Testing list_instance_family_types - db.r5 RDS family');
try {
const response = await axios.get(`${baseURL}/instance-family-types/AmazonRDS/db.r5`, {
timeout: 10000
});
console.log('✅ Success!');
console.log(`Found ${response.data.length} instance types in db.r5 family`);
console.log('All db.r5 instances:', response.data.join(', '));
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 6: Azure Virtual Machines
console.log('\n6. Testing list_instance_types - Azure Virtual Machines in eastus');
try {
const response = await axios.get(`${baseURL}/provider-cost`, {
params: {
provider: 'Azure',
serviceCode: 'Virtual Machines',
regionCode: 'eastus'
},
timeout: 15000
});
console.log('✅ Success!');
console.log(`Found ${response.data.length} Azure VM instance types`);
// Show first 10 instances
console.log('\nFirst 10 Azure VMs:');
response.data.slice(0, 10).forEach(instance => {
if (instance.InstanceType && instance.OnDemandHour) {
console.log(` - ${instance.InstanceType}: $${instance.OnDemandHour}/hour`);
}
});
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
console.log('\n' + '='.repeat(80));
console.log('Testing Complete!');
console.log('\n💡 Usage Examples:');
console.log(' - To discover all EC2 instances: list_instance_types(AWS, AmazonEC2, us-east-1)');
console.log(' - To find all t3 variants: list_instance_family_types(AmazonEC2, t3)');
console.log(' - To see all RDS r5 instances: list_instance_family_types(AmazonRDS, db.r5)');
console.log('='.repeat(80));
}
testInstanceDiscovery().catch(console.error);