# WHOOSH Council Artifact Tests

## Overview

This directory contains integration tests for verifying that WHOOSH councils are properly generating project artifacts through the CHORUS agent collaboration system.

## Test Coverage

The `test_council_artifacts.py` script performs end-to-end testing of:

1. **WHOOSH Health Check** - Verifies WHOOSH API is accessible
2. **Project Creation** - Creates a test project with council formation
3. **Council Formation** - Verifies council was created with correct structure
4. **Role Claiming** - Waits for CHORUS agents to claim council roles
5. **Artifact Fetching** - Retrieves artifacts produced by the council
6. **Content Validation** - Verifies artifact content is complete and valid
7. **Cleanup** - Removes test data (optional)

## Requirements

```bash
pip install requests
```

Or install from requirements file:
```bash
pip install -r requirements.txt
```

## Usage

### Basic Test Run

```bash
python test_council_artifacts.py
```

### With Verbose Output

```bash
python test_council_artifacts.py --verbose
```

### Custom WHOOSH URL

```bash
python test_council_artifacts.py --whoosh-url http://whoosh.example.com:8080
```

### Extended Wait Time for Role Claims

```bash
python test_council_artifacts.py --wait-time 60
```

### Skip Cleanup (Keep Test Project)

```bash
python test_council_artifacts.py --skip-cleanup
```

### Full Example

```bash
python test_council_artifacts.py \
  --whoosh-url http://localhost:8800 \
  --verbose \
  --wait-time 45 \
  --skip-cleanup
```

## Command-Line Options

| Option | Description | Default |
|--------|-------------|---------|
| `--whoosh-url URL` | WHOOSH base URL | `http://localhost:8800` |
| `--verbose`, `-v` | Enable detailed output | `False` |
| `--skip-cleanup` | Don't delete test project | `False` |
| `--wait-time SECONDS` | Max wait for role claims | `30` |

## Expected Output

### Successful Test Run

```
======================================================================
COUNCIL ARTIFACT GENERATION TEST SUITE
======================================================================

[14:23:45] HEADER: TEST 1: Checking WHOOSH health...
[14:23:45] SUCCESS: ✓ WHOOSH is healthy and accessible

[14:23:45] HEADER: TEST 2: Creating test project...
[14:23:46] SUCCESS: ✓ Project created successfully: abc-123-def
[14:23:46] INFO:   Council ID: abc-123-def

[14:23:46] HEADER: TEST 3: Verifying council formation...
[14:23:46] SUCCESS: ✓ Council found: abc-123-def
[14:23:46] INFO:   Status: forming

[14:23:46] HEADER: TEST 4: Waiting for agent role claims (max 30s)...
[14:24:15] SUCCESS: ✓ Council activated! All roles claimed

[14:24:15] HEADER: TEST 5: Fetching council artifacts...
[14:24:15] SUCCESS: ✓ Found 3 artifact(s)

  Artifact 1:
    ID: art-001
    Type: architecture_document
    Name: System Architecture Design
    Status: approved
    Produced by: chorus-agent-002
    Produced at: 2025-10-06T14:24:10Z

[14:24:15] HEADER: TEST 6: Verifying artifact content...
[14:24:15] SUCCESS: ✓ All 3 artifact(s) are valid

[14:24:15] HEADER: TEST 7: Cleaning up test project...
[14:24:16] SUCCESS: ✓ Project deleted successfully: abc-123-def

======================================================================
TEST SUMMARY
======================================================================

Total Tests: 7
  Passed:  7 ✓✓✓✓✓✓✓

Success Rate: 100.0%
```

### Test Failure Example

```
[14:23:46] HEADER: TEST 5: Fetching council artifacts...
[14:23:46] WARNING: ⚠ No artifacts found yet
[14:23:46] INFO:   This is normal - councils need time to produce artifacts

======================================================================
TEST SUMMARY
======================================================================

Total Tests: 7
  Passed:  6 ✓✓✓✓✓✓
  Failed:  1 ✗

Success Rate: 85.7%
```

## Test Scenarios

### Scenario 1: Fresh Deployment Test

Tests a newly deployed WHOOSH/CHORUS system:

```bash
python test_council_artifacts.py --wait-time 60 --verbose
```

**Expected**: Role claiming may take longer on first run as agents initialize.

### Scenario 2: Production Readiness Test

Quick validation that production system is working:

```bash
python test_council_artifacts.py --whoosh-url https://whoosh.production.com
```

**Expected**: All tests should pass in < 1 minute.

### Scenario 3: Development/Debug Test

Keep test project for manual inspection:

```bash
python test_council_artifacts.py --skip-cleanup --verbose
```

**Expected**: Project remains in database for debugging.

## Troubleshooting

### Test 1 Fails: WHOOSH Not Accessible

**Problem**: Cannot connect to WHOOSH API

**Solutions**:
- Verify WHOOSH is running: `docker service ps CHORUS_whoosh`
- Check URL is correct: `--whoosh-url http://localhost:8800`
- Check firewall/network settings

### Test 4 Fails: Role Claims Timeout

**Problem**: CHORUS agents not claiming roles

**Solutions**:
- Increase wait time: `--wait-time 60`
- Check CHORUS agents are running: `docker service ps CHORUS_chorus`
- Check agent logs: `docker service logs CHORUS_chorus`
- Verify P2P discovery is working

### Test 5 Fails: No Artifacts Found

**Problem**: Council formed but no artifacts produced

**Solutions**:
- This is expected initially - councils need time to collaborate
- Check council status in UI or database
- Verify CHORUS agents have proper capabilities configured
- Check agent logs for artifact production errors

## Integration with CI/CD

### GitHub Actions Example

```yaml
name: Test Council Artifacts

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Start WHOOSH
        run: docker-compose up -d
      - name: Wait for services
        run: sleep 30
      - name: Run tests
        run: |
          cd tests
          python test_council_artifacts.py --verbose
```

### Jenkins Example

```groovy
stage('Test Council Artifacts') {
    steps {
        sh '''
            cd tests
            python test_council_artifacts.py \
                --whoosh-url http://whoosh-test:8080 \
                --wait-time 60 \
                --verbose
        '''
    }
}
```

## Test Data

The test creates a temporary project using:
- **Repository**: `https://gitea.chorus.services/tony/test-council-project`
- **Project Name**: Auto-generated from repository
- **Council**: Automatically formed with 8 core roles

All test data is cleaned up unless `--skip-cleanup` is specified.

## Exit Codes

- `0` - All tests passed
- `1` - One or more tests failed
- Non-zero - System error occurred

## Logging

Test logs include:
- Timestamp for each action
- Color-coded output (INFO/SUCCESS/WARNING/ERROR)
- Request/response details in verbose mode
- Complete artifact metadata

## Future Enhancements

- [ ] Test multiple concurrent project creations
- [ ] Verify artifact versioning
- [ ] Test artifact approval workflow
- [ ] Performance benchmarking
- [ ] Load testing with many councils
- [ ] WebSocket event stream validation
- [ ] Agent collaboration pattern verification

## Support

For issues or questions:
- Check logs: `docker service logs CHORUS_whoosh`
- Review integration status: `COUNCIL_AGENT_INTEGRATION_STATUS.md`
- Open issue on project repository
