Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 42 additions & 1 deletion e2e-tests/e2e-helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
} from '@aws-sdk/client-bedrock-agentcore-control';
import { execSync } from 'node:child_process';
import { randomUUID } from 'node:crypto';
import { mkdir, rm, writeFile } from 'node:fs/promises';
import { mkdir, readFile, rm, writeFile } from 'node:fs/promises';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
Expand Down Expand Up @@ -377,3 +377,44 @@ export async function teardownE2EProject(projectPath: string, agentName: string,
await deleteCredentialProvider(client, `${agentName}${modelProvider}`);
}
}

export async function dumpImportDebugInfo(
label: string,
result: RunResult,
projectPath: string,
stackName: string,
region: string
): Promise<void> {
console.log(`Import ${label} stdout:`, result.stdout);
console.log(`Import ${label} stderr:`, result.stderr);

const logMatch = /Log: (.+)/.exec(result.stderr);
if (logMatch) {
try {
const logContents = await readFile(join(projectPath, logMatch[1]!), 'utf-8');
console.log(`Import ${label} log:\n`, logContents);
} catch {
/* log file may not exist */
Comment thread
jesseturner21 marked this conversation as resolved.
}
}

const cfnEvents = await spawnAndCollect(
'aws',
[
'cloudformation',
'describe-stack-events',
'--stack-name',
stackName,
'--query',
'StackEvents[?ResourceStatus==`IMPORT_FAILED` || ResourceStatus==`IMPORT_ROLLBACK_IN_PROGRESS`]',
'--output',
'json',
'--region',
region,
],
projectPath
);
if (cfnEvents.exitCode === 0 && cfnEvents.stdout.trim() !== '[]') {
console.log(`CloudFormation failed events for ${label}:`, cfnEvents.stdout);
}
}
6 changes: 3 additions & 3 deletions e2e-tests/import-gateway.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
spawnAndCollect,
stripAnsi,
} from '../src/test-utils/index.js';
import { installCdkTarball, runAgentCoreCLI, writeAwsTargets } from './e2e-helper.js';
import { dumpImportDebugInfo, installCdkTarball, runAgentCoreCLI, writeAwsTargets } from './e2e-helper.js';
import { execSync } from 'node:child_process';
import { randomUUID } from 'node:crypto';
import { mkdir, readFile, rm } from 'node:fs/promises';
Expand Down Expand Up @@ -89,6 +89,7 @@ describe.sequential('e2e: import gateway', () => {
}, 600_000);

const run = (args: string[]): Promise<RunResult> => runAgentCoreCLI(args, projectPath);
const stackName = `AgentCore-${agentName}-default`;

// ── Import test ───────────────────────────────────────────────────

Expand All @@ -98,8 +99,7 @@ describe.sequential('e2e: import gateway', () => {
const result = await run(['import', 'gateway', '--arn', gatewayArn]);

if (result.exitCode !== 0) {
console.log('Import gateway stdout:', result.stdout);
console.log('Import gateway stderr:', result.stderr);
await dumpImportDebugInfo('gateway', result, projectPath, stackName, region);
}

expect(result.exitCode, `Import gateway failed: ${result.stderr}`).toBe(0);
Expand Down
12 changes: 5 additions & 7 deletions e2e-tests/import-resources.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
spawnAndCollect,
stripAnsi,
} from '../src/test-utils/index.js';
import { installCdkTarball, runAgentCoreCLI, writeAwsTargets } from './e2e-helper.js';
import { dumpImportDebugInfo, installCdkTarball, runAgentCoreCLI, writeAwsTargets } from './e2e-helper.js';
import { execSync } from 'node:child_process';
import { randomUUID } from 'node:crypto';
import { mkdir, readFile, rm } from 'node:fs/promises';
Expand Down Expand Up @@ -112,6 +112,7 @@ describe.sequential('e2e: import runtime/memory/evaluator', () => {
}, 600_000);

const run = (args: string[]): Promise<RunResult> => runAgentCoreCLI(args, projectPath);
const stackName = `AgentCore-${agentName}-default`;

// ── Import tests ──────────────────────────────────────────────────

Expand All @@ -121,8 +122,7 @@ describe.sequential('e2e: import runtime/memory/evaluator', () => {
const result = await run(['import', 'runtime', '--arn', runtimeArn, '--code', appDir, '--name', agentName, '-y']);

if (result.exitCode !== 0) {
console.log('Import runtime stdout:', result.stdout);
console.log('Import runtime stderr:', result.stderr);
await dumpImportDebugInfo('runtime', result, projectPath, stackName, region);
}

expect(result.exitCode, `Import runtime failed: ${result.stderr}`).toBe(0);
Expand All @@ -137,8 +137,7 @@ describe.sequential('e2e: import runtime/memory/evaluator', () => {
const result = await run(['import', 'memory', '--arn', memoryArn, '-y']);

if (result.exitCode !== 0) {
console.log('Import memory stdout:', result.stdout);
console.log('Import memory stderr:', result.stderr);
await dumpImportDebugInfo('memory', result, projectPath, stackName, region);
}

expect(result.exitCode, `Import memory failed: ${result.stderr}`).toBe(0);
Expand All @@ -153,8 +152,7 @@ describe.sequential('e2e: import runtime/memory/evaluator', () => {
const result = await run(['import', 'evaluator', '--arn', evaluatorArn]);

if (result.exitCode !== 0) {
console.log('Import evaluator stdout:', result.stdout);
console.log('Import evaluator stderr:', result.stderr);
await dumpImportDebugInfo('evaluator', result, projectPath, stackName, region);
}

expect(result.exitCode, `Import evaluator failed: ${result.stderr}`).toBe(0);
Expand Down
Loading