File size: 1,952 Bytes
aef804e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | """
Fuzzing Campaign Management Package
This package provides centralized campaign lifecycle management for all
API fuzzing tests, including campaign orchestration, crash deduplication,
and automated bug filing.
Components:
- FuzzingOrchestrator: Campaign lifecycle management (start, stop, monitor)
- CrashDeduplicator: Crash deduplication using error signature hashing
Campaign Lifecycle:
1. Start campaign with start_campaign(target_endpoint, test_file)
2. Monitor progress with monitor_campaign(campaign_id)
3. Stop campaign with stop_campaign(campaign_id)
4. Deduplicate crashes with CrashDeduplicator.deduplicate_crashes(crash_dir)
5. File bugs with file_bugs_for_crashes(target_endpoint, crashes_by_signature)
Example:
from tests.fuzzing.campaigns import FuzzingOrchestrator, CrashDeduplicator
orchestrator = FuzzingOrchestrator(github_token="...", github_repository="owner/repo")
result = orchestrator.start_campaign("/api/v1/agents", "tests/fuzzing/test_auth_api.py")
# Wait for campaign to complete
import time
time.sleep(3600)
stats = orchestrator.monitor_campaign(result["campaign_id"])
orchestrator.stop_campaign(result["campaign_id"])
# Deduplicate and file bugs
deduplicator = CrashDeduplicator()
crashes_by_signature = deduplicator.deduplicate_crashes(stats["crash_dir"])
bugs = orchestrator.file_bugs_for_crashes("/api/v1/agents", crashes_by_signature)
"""
from tests.fuzzing.campaigns.fuzzing_orchestrator import (
FuzzingOrchestrator,
start_campaign,
stop_campaign,
monitor_campaign,
file_bugs_for_crashes
)
from tests.fuzzing.campaigns.crash_deduplicator import (
CrashDeduplicator,
deduplicate_crashes
)
__all__ = [
# FuzzingOrchestrator
"FuzzingOrchestrator",
"start_campaign",
"stop_campaign",
"monitor_campaign",
"file_bugs_for_crashes",
# CrashDeduplicator
"CrashDeduplicator",
"deduplicate_crashes",
]
|