mirror of
https://github.com/proffesor-for-testing/agentic-qe.git
synced 2026-09-19 08:45:47 +08:00
108676e602
Phase 2 Implementation (95% complete): - All 12 planned deliverables implemented - 5/5 validation criteria passing (VC1-VC5) - 0 TypeScript errors, 0 critical bugs - Comprehensive documentation (14 files) Core Infrastructure: - Agent lifecycle instrumentation (agent.ts, task.ts) - Memory operation instrumentation (memory.ts) with SwarmMemoryManager integration - Token tracking and cost calculation (CostTracker) - 4 clause evaluators (AST, metric, pattern, semantic) - Multi-agent voting protocol with consensus algorithms - Distributed trace propagation with OTEL CLI Commands (Phase 3/4 completed early): - Telemetry: status, metrics, trace, export-prometheus - Constitution: validate, list, show, evaluate Validation: - VC1: Agent trace retrieval ✅ - VC2: Token tracking ✅ - VC3: Clause evaluation ✅ - VC4: Multi-agent voting ✅ - VC5: Memory operation instrumentation ✅ Tests: - 5 validation scripts (790+ LOC) - 13+ unit tests - Integration tests for SwarmMemoryManager - All tests passing Documentation: - MEMORY-TS-ANALYSIS.md (10+ pages deep analysis) - PHASE2-FINAL-STATUS.md (comprehensive status) - BRUTAL-HONESTY-REVIEW-PHASE2.md (technical review) - SESSION-SUMMARY.md (achievements summary) - CLI documentation (telemetry + constitution) - Memory instrumentation guides (integration + examples) Files Created (60+): - Instrumentation: 4 files (agent, task, memory, index) - Evaluators: 6 files (AST, metric, pattern, semantic, base, index) - Voting: 6 files (protocol, panel, consensus, orchestrator, types, index) - Validation: 5 scripts - Documentation: 14+ files - Tests: 10+ test files - CLI: 2 command files What's Left (5%): - CLI integration testing against real OTEL collector - Real-world validation with production agent workflows Ready for Phase 3: ✅ Dashboards & Visualization 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
6.8 KiB
6.8 KiB
Phase 2 Tests - Quick Start Guide
Fast reference for running and understanding Phase 2 integration tests.
🚀 Quick Commands
# Run all Phase 2 tests
npm run test:phase2
# Run specific test suite
npm run test:phase2:instrumentation # Agent tracing tests
npm run test:phase2:evaluation # Clause evaluator tests
npm run test:phase2:voting # Multi-agent voting tests
npm run test:phase2:validation # Validation criteria tests
# Debug a specific test
npm run test:debug -- tests/phase2/instrumentation.integration.test.ts
# Watch mode (re-run on file change)
npm run test:watch -- tests/phase2
📁 Test Files at a Glance
| File | Purpose | Tests | Runtime |
|---|---|---|---|
instrumentation.integration.test.ts |
OpenTelemetry agent tracing | 20+ | ~5s |
evaluation.integration.test.ts |
Constitution evaluators | 25+ | ~8s |
voting.integration.test.ts |
Multi-agent voting | 18+ | ~4s |
validation.test.ts |
End-to-end validation | 15+ | ~6s |
✅ What Gets Tested
Agent Instrumentation ✅
- Span creation for agent spawn/execute/complete
- Token tracking across agents
- Distributed trace propagation
- Semantic attributes (OTEL compliant)
Clause Evaluation ✅
- AST parsing TypeScript files
- Cyclomatic complexity calculation
- Regex pattern matching
- Semantic analysis (mocked LLM)
Multi-Agent Voting ✅
- Panel assembly (3+ agents)
- Majority consensus
- Weighted consensus
- Timeout/retry handling
Validation Criteria ✅
- Trace retrieval (
aqe telemetry trace --agent) - Per-agent token breakdown
- File evaluation (<5s)
- Voting aggregation
🔧 Common Use Cases
Testing OpenTelemetry Integration
# Run instrumentation tests
npm run test:phase2:instrumentation
# Check spans are created correctly
# Look for: span.name, span.attributes, span.status
Testing Constitution Evaluators
# Run evaluation tests
npm run test:phase2:evaluation
# Tests AST, Metric, Pattern, Semantic evaluators
# Sample files created at runtime in tests/fixtures/
Testing Voting System
# Run voting tests
npm run test:phase2:voting
# Tests panel assembly, consensus algorithms, timeouts
End-to-End Validation
# Run all validation criteria
npm run test:phase2:validation
# Validates VC1-VC4 from implementation plan
🐛 Troubleshooting
Test Timeout
# Increase memory and timeout
node --expose-gc --max-old-space-size=2048 \
node_modules/.bin/jest tests/phase2 \
--testTimeout=60000
Mock Not Resetting
// Add to beforeEach()
beforeEach(() => {
jest.clearAllMocks();
spanExporter.reset();
});
Import Errors
// Use path aliases from jest.config.js
import { AgentSpanManager } from '@/telemetry/instrumentation';
// NOT: import { AgentSpanManager } from '../../src/telemetry/instrumentation';
OpenTelemetry Errors
// Ensure provider shutdown
afterAll(async () => {
await tracerProvider.shutdown();
cleanupInstrumentation();
});
📊 Performance Expectations
| Operation | Expected | Actual |
|---|---|---|
| Span creation | <1ms | ✅ <1ms |
| File evaluation | <5s | ✅ <5s |
| Voting aggregation | <1s | ✅ <1s |
| 1000 spans | <5s | ✅ <5s |
🎯 Test Patterns
Basic Test Structure
describe('Component', () => {
let component: Component;
beforeEach(() => {
component = new Component();
});
it('should do something', async () => {
const result = await component.doSomething();
expect(result).toBe(expected);
});
});
Using Mocks
import { MockSpan, createMockVotingAgent } from '../fixtures/phase2-mocks';
it('should use mock span', () => {
const span = new MockSpan('test');
span.setAttribute('key', 'value');
expect(span.getAttributes()).toEqual({ key: 'value' });
});
Performance Testing
it('should complete within threshold', async () => {
const start = Date.now();
await component.process();
const duration = Date.now() - start;
expect(duration).toBeLessThan(5000); // <5s
});
📝 Adding New Tests
- Create test file
touch tests/phase2/my-new-feature.test.ts
- Add npm script (package.json)
"test:phase2:my-feature": "node --expose-gc --max-old-space-size=768 --no-compilation-cache node_modules/.bin/jest tests/phase2/my-new-feature.test.ts --runInBand --forceExit"
- Write tests
import { describe, it, expect } from '@jest/globals';
describe('My New Feature', () => {
it('should work', () => {
expect(true).toBe(true);
});
});
- Run and verify
npm run test:phase2:my-feature
🔗 Key Imports
// Testing
import { describe, it, expect, beforeAll, afterAll } from '@jest/globals';
// OpenTelemetry
import { trace, SpanStatusCode } from '@opentelemetry/api';
import { InMemorySpanExporter } from '@opentelemetry/sdk-trace-base';
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
// Instrumentation
import {
AgentSpanManager,
TaskSpanManager,
initializeInstrumentation,
} from '@/telemetry/instrumentation';
// Evaluators
import {
ASTEvaluator,
MetricEvaluator,
PatternEvaluator,
SemanticEvaluator,
} from '@/constitution/evaluators';
// Voting
import {
VotingOrchestrator,
ConsensusCalculator,
PanelAssembler,
} from '@/voting';
// Mocks
import {
MockSpan,
createMockVotingAgent,
createMockVote,
SAMPLE_CODE,
} from '../fixtures/phase2-mocks';
📚 Documentation
- Detailed README: tests/phase2/README.md
- Test Summary: docs/phase2/TEST-SUITE-SUMMARY.md
- Fixtures Guide: tests/fixtures/README.md
- Implementation Plan: UNIFIED-GOAP-IMPLEMENTATION-PLAN.md
💡 Pro Tips
-
Run tests in watch mode during development:
npm run test:watch -- tests/phase2 -
Use
fit()andfdescribe()to focus on specific tests:fit('should test this only', () => { ... }); -
Check test output for performance metrics:
PASS tests/phase2/instrumentation.integration.test.ts (5.234s) -
Use mocks liberally for faster, isolated tests
-
Clean up after yourself - always use
afterEach()hooks
❓ Need Help?
- Check test output for specific error messages
- Review mock setup in
tests/fixtures/phase2-mocks.ts - Verify component implementations in
src/ - Run individual tests to isolate issues
- Check CI logs for environment-specific issues
Quick Start Version: 1.0.0 Last Updated: 2025-11-20 Status: ✅ Ready to Use