Skip to content

Commit

Permalink
fix: fixing wrong version of fullstack test
Browse files Browse the repository at this point in the history
  • Loading branch information
NarwhalChen committed Jan 13, 2025
1 parent cf221cb commit 370a453
Showing 1 changed file with 9 additions and 109 deletions.
118 changes: 9 additions & 109 deletions backend/src/build-system/__tests__/test.fullstack-gen.spec.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,8 @@
import { BuildSequence } from '../types';
import * as fs from 'fs';
import * as path from 'path';
import { executeBuildSequence, writeToFile } from './utils';
import { BuildMonitor } from '../monitor';
import { BuilderContext } from '../context';
import { executeBuildSequence, objectToMarkdown, writeToFile } from './utils';

describe('Sequence: PRD -> UXSD -> UXSS -> UXDD -> DATABASE_REQ -> DBSchemas -> Frontend_File_struct -> Frontend_File_arch -> BackendCodeGenerator', () => {
// Generate a unique folder with a timestamp
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
const logFolderPath = `./logs/Fullstack_code_generator-${timestamp}`;
fs.mkdirSync(logFolderPath, { recursive: true });

it('should execute the frontend and backend code generation sequence and log results to individual files', async () => {
// Define the build sequence up to Backend Code Generator
describe('Build Sequence Test', () => {
it('should execute build sequence successfully', async () => {
const sequence: BuildSequence = {
id: 'test-backend-sequence',
version: '1.0.0',
Expand Down Expand Up @@ -149,100 +139,10 @@ describe('Sequence: PRD -> UXSD -> UXSS -> UXDD -> DATABASE_REQ -> DBSchemas ->
},
],
};
const context = new BuilderContext(sequence, 'test-env');
const monitor = BuildMonitor.getInstance();

try {
console.time('Total Execution Time');

await context.execute();

console.timeEnd('Total Execution Time');

const monitorReport = monitor.generateTextReport(sequence.id);
fs.writeFileSync(
path.join(logFolderPath, 'execution-metrics.txt'),
monitorReport,
'utf8',
);

const sequenceMetrics = monitor.getSequenceMetrics(sequence.id);
if (sequenceMetrics) {
const metricsJson = {
totalDuration: `${sequenceMetrics.duration}ms`,
successRate: `${sequenceMetrics.successRate.toFixed(2)}%`,
totalSteps: sequenceMetrics.totalSteps,
completedSteps: sequenceMetrics.completedSteps,
failedSteps: sequenceMetrics.failedSteps,
totalNodes: sequenceMetrics.totalNodes,
startTime: new Date(sequenceMetrics.startTime).toISOString(),
endTime: new Date(sequenceMetrics.endTime).toISOString(),
};

fs.writeFileSync(
path.join(logFolderPath, 'metrics.json'),
JSON.stringify(metricsJson, null, 2),
'utf8',
);

console.log('\nSequence Metrics:');
console.table(metricsJson);
}

for (const step of sequence.steps) {
const stepMetrics = sequenceMetrics?.stepMetrics.get(step.id);
for (const node of step.nodes) {
const resultData = await context.getNodeData(node.id);
const nodeMetrics = stepMetrics?.nodeMetrics.get(node.id);
if (resultData) {
writeToFile(logFolderPath, `${node.name}`, resultData);
} else {
console.error(
` Error: Handler ${node.name} failed to produce result data`,
);
writeToFile(logFolderPath, `${node.name}-error`, {
error: 'No result data',
metrics: nodeMetrics,
});
}
}
}

const summary = {
timestamp: new Date().toISOString(),
sequenceId: sequence.id,
sequenceName: sequence.name,
totalExecutionTime: `${sequenceMetrics?.duration}ms`,
successRate: `${sequenceMetrics?.successRate.toFixed(2)}%`,
nodesExecuted: sequenceMetrics?.totalNodes,
completedNodes: sequenceMetrics?.stepMetrics.size,
logFolder: logFolderPath,
};

fs.writeFileSync(
path.join(logFolderPath, 'execution-summary.json'),
JSON.stringify(summary, null, 2),
'utf8',
);
} catch (error) {
const errorReport = {
error: {
message: error.message,
stack: error.stack,
},
metrics: monitor.getSequenceMetrics(sequence.id),
timestamp: new Date().toISOString(),
};

fs.writeFileSync(
path.join(logFolderPath, 'error-with-metrics.json'),
JSON.stringify(errorReport, null, 2),
'utf8',
);
const result = await executeBuildSequence('fullstack-code-gen', sequence);
expect(result.success).toBe(true);
expect(result.metrics).toBeDefined();
console.log(`Logs saved to: ${result.logFolderPath}`);
}
}, 300000); // Timeout set to 10 minutes
});
const result = await executeBuildSequence('fullstack-code-gen', sequence);
expect(result.success).toBe(true);
expect(result.metrics).toBeDefined();
console.log(`Logs saved to: ${result.logFolderPath}`);
}, 300000);
});

0 comments on commit 370a453

Please sign in to comment.