|  | 
|  | 1 | +# OSS-Fuzz SDK Samples | 
|  | 2 | + | 
|  | 3 | +This directory contains practical examples demonstrating how to use the OSS-Fuzz SDK for various fuzzing workflows and use cases. | 
|  | 4 | + | 
|  | 5 | +## Sample Structure | 
|  | 6 | + | 
|  | 7 | +``` | 
|  | 8 | +samples/ | 
|  | 9 | +├── README.md                          # This file | 
|  | 10 | +├── basic/                             # Basic usage examples | 
|  | 11 | +│   ├── 01_quick_start.py             # Getting started with the SDK | 
|  | 12 | +│   ├── 02_configuration.py           # Configuration management | 
|  | 13 | +│   └── 03_simple_benchmark.py        # Running a single benchmark | 
|  | 14 | +├── intermediate/                      # Intermediate examples | 
|  | 15 | +│   ├── 01_build_operations.py        # Build operations and management | 
|  | 16 | +│   ├── 02_execution_workflows.py     # Execution and run management | 
|  | 17 | +│   ├── 03_result_analysis.py         # Result analysis and metrics | 
|  | 18 | +│   └── 04_pipeline_automation.py     # Automated pipeline workflows | 
|  | 19 | +├── advanced/                          # Advanced use cases | 
|  | 20 | +│   ├── 01_batch_processing.py        # Batch processing multiple projects | 
|  | 21 | +│   ├── 02_custom_workflows.py        # Custom workflow orchestration | 
|  | 22 | +│   ├── 03_monitoring_alerts.py       # Monitoring and alerting systems | 
|  | 23 | +│   └── 04_data_export_analysis.py    # Data export and analysis | 
|  | 24 | +├── production/                        # Production deployment examples | 
|  | 25 | +│   ├── 01_enterprise_config.py       # Enterprise configuration setup | 
|  | 26 | +│   ├── 02_ci_cd_integration.py       # CI/CD pipeline integration | 
|  | 27 | +│   ├── 03_monitoring_dashboard.py    # Monitoring dashboard setup | 
|  | 28 | +│   └── 04_automated_reporting.py     # Automated reporting system | 
|  | 29 | +├── utilities/                         # Utility scripts and helpers | 
|  | 30 | +│   ├── config_generator.py           # Configuration file generator | 
|  | 31 | +│   ├── health_checker.py             # System health checker | 
|  | 32 | +│   ├── data_migrator.py              # Data migration utilities | 
|  | 33 | +│   └── benchmark_validator.py        # Benchmark validation tools | 
|  | 34 | +└── data/                             # Sample data and configurations | 
|  | 35 | +    ├── sample_benchmarks.json        # Sample benchmark definitions | 
|  | 36 | +    ├── sample_configs/               # Sample configuration files | 
|  | 37 | +    └── test_data/                    # Test data for examples | 
|  | 38 | +``` | 
|  | 39 | + | 
|  | 40 | +## Getting Started | 
|  | 41 | + | 
|  | 42 | +### Prerequisites | 
|  | 43 | + | 
|  | 44 | +1. **Set up environment variables:** | 
|  | 45 | +   ```bash | 
|  | 46 | +   export OSSFUZZ_HISTORY_STORAGE_BACKEND=local | 
|  | 47 | +   export OSSFUZZ_HISTORY_STORAGE_PATH=/tmp/ossfuzz_data | 
|  | 48 | +   export WORK_DIR=/tmp/ossfuzz_work | 
|  | 49 | +   ``` | 
|  | 50 | + | 
|  | 51 | +2. **Run your first example:** | 
|  | 52 | +   ```bash | 
|  | 53 | +   cd samples/basic | 
|  | 54 | +   python 01_quick_start.py | 
|  | 55 | +   ``` | 
|  | 56 | + | 
|  | 57 | +## Sample Categories | 
|  | 58 | + | 
|  | 59 | +### Basic Examples (`basic/`) | 
|  | 60 | + | 
|  | 61 | +Perfect for users new to the OSS-Fuzz SDK. These examples cover: | 
|  | 62 | + | 
|  | 63 | +- **Quick Start**: Initialize the SDK and run your first benchmark | 
|  | 64 | +- **Configuration**: Set up SDK configuration for different environments | 
|  | 65 | +- **Simple Benchmark**: Run a single benchmark with basic options | 
|  | 66 | + | 
|  | 67 | +**Start here if you're new to the SDK!** | 
|  | 68 | + | 
|  | 69 | +### Intermediate Examples (`intermediate/`) | 
|  | 70 | + | 
|  | 71 | +For users familiar with basic concepts who want to explore more features: | 
|  | 72 | + | 
|  | 73 | +- **Build Operations**: Manage build processes and artifacts | 
|  | 74 | +- **Execution Workflows**: Control fuzzing execution and monitoring | 
|  | 75 | +- **Result Analysis**: Analyze results and extract meaningful metrics | 
|  | 76 | +- **Pipeline Automation**: Automate complete build → run → analyze workflows | 
|  | 77 | + | 
|  | 78 | +### Advanced Examples (`advanced/`) | 
|  | 79 | + | 
|  | 80 | +For experienced users implementing complex workflows: | 
|  | 81 | + | 
|  | 82 | +- **Batch Processing**: Process multiple projects and benchmarks efficiently | 
|  | 83 | +- **Custom Workflows**: Create custom orchestration and automation | 
|  | 84 | +- **Monitoring & Alerts**: Set up monitoring systems and alerting | 
|  | 85 | +- **Data Export & Analysis**: Advanced data analysis and reporting | 
|  | 86 | + | 
|  | 87 | +### Production Examples (`production/`) | 
|  | 88 | + | 
|  | 89 | +Enterprise-ready examples for production deployment: | 
|  | 90 | + | 
|  | 91 | +- **Enterprise Configuration**: Production-grade configuration management | 
|  | 92 | +- **CI/CD Integration**: Integrate with continuous integration systems | 
|  | 93 | +- **Monitoring Dashboard**: Set up comprehensive monitoring | 
|  | 94 | +- **Automated Reporting**: Create automated reporting systems | 
|  | 95 | + | 
|  | 96 | +### Utilities (`utilities/`) | 
|  | 97 | + | 
|  | 98 | +Helper scripts and tools to support your fuzzing workflows: | 
|  | 99 | + | 
|  | 100 | +- **Configuration Generator**: Generate configuration files | 
|  | 101 | +- **Health Checker**: Monitor system health and component status | 
|  | 102 | +- **Data Migrator**: Migrate data between storage backends | 
|  | 103 | +- **Benchmark Validator**: Validate benchmark definitions | 
|  | 104 | + | 
|  | 105 | +## Use Case Guide | 
|  | 106 | + | 
|  | 107 | +### I want to... | 
|  | 108 | + | 
|  | 109 | +#### **Get started quickly** | 
|  | 110 | +→ Start with `basic/01_quick_start.py` | 
|  | 111 | + | 
|  | 112 | +#### **Set up configuration for my environment** | 
|  | 113 | +→ Check `basic/02_configuration.py` and `production/01_enterprise_config.py` | 
|  | 114 | + | 
|  | 115 | +#### **Run a single benchmark** | 
|  | 116 | +→ Use `basic/03_simple_benchmark.py` | 
|  | 117 | + | 
|  | 118 | +#### **Automate my fuzzing pipeline** | 
|  | 119 | +→ Look at `intermediate/04_pipeline_automation.py` | 
|  | 120 | + | 
|  | 121 | +#### **Process multiple projects** | 
|  | 122 | +→ Try `advanced/01_batch_processing.py` | 
|  | 123 | + | 
|  | 124 | +#### **Set up monitoring and alerts** | 
|  | 125 | +→ Explore `advanced/03_monitoring_alerts.py` | 
|  | 126 | + | 
|  | 127 | +#### **Integrate with CI/CD** | 
|  | 128 | +→ Check `production/02_ci_cd_integration.py` | 
|  | 129 | + | 
|  | 130 | +#### **Export and analyze data** | 
|  | 131 | +→ Use `advanced/04_data_export_analysis.py` | 
|  | 132 | + | 
|  | 133 | +#### **Deploy in production** | 
|  | 134 | +→ Review all examples in `production/` | 
|  | 135 | + | 
|  | 136 | +## Running the Examples | 
|  | 137 | + | 
|  | 138 | +### Basic Usage | 
|  | 139 | + | 
|  | 140 | +```bash | 
|  | 141 | +# Navigate to the samples directory | 
|  | 142 | +cd samples | 
|  | 143 | + | 
|  | 144 | +# Run a basic example | 
|  | 145 | +python basic/01_quick_start.py | 
|  | 146 | + | 
|  | 147 | +# Run with custom configuration | 
|  | 148 | +python basic/02_configuration.py --config-file data/sample_configs/dev.json | 
|  | 149 | + | 
|  | 150 | +# Run an intermediate example | 
|  | 151 | +python intermediate/01_build_operations.py --project libpng | 
|  | 152 | +``` | 
|  | 153 | + | 
|  | 154 | +### Advanced Usage | 
|  | 155 | + | 
|  | 156 | +```bash | 
|  | 157 | +# Batch processing example | 
|  | 158 | +python advanced/01_batch_processing.py --projects libpng,libjpeg,zlib | 
|  | 159 | + | 
|  | 160 | +# Custom workflow with monitoring | 
|  | 161 | +python advanced/02_custom_workflows.py --enable-monitoring | 
|  | 162 | + | 
|  | 163 | +# Production deployment example | 
|  | 164 | +python production/01_enterprise_config.py --environment production | 
|  | 165 | +``` | 
|  | 166 | + | 
|  | 167 | +## Customization | 
|  | 168 | + | 
|  | 169 | +### Modifying Examples | 
|  | 170 | + | 
|  | 171 | +All examples are designed to be easily customizable: | 
|  | 172 | + | 
|  | 173 | +1. **Configuration**: Modify the configuration sections at the top of each file | 
|  | 174 | +2. **Parameters**: Adjust parameters like project names, timeouts, and options | 
|  | 175 | +3. **Workflows**: Customize the workflow steps to match your requirements | 
|  | 176 | +4. **Output**: Modify output formats and destinations | 
|  | 177 | + | 
|  | 178 | +### Creating Your Own Examples | 
|  | 179 | + | 
|  | 180 | +Use the existing examples as templates: | 
|  | 181 | + | 
|  | 182 | +1. Copy a similar example as a starting point | 
|  | 183 | +2. Modify the configuration and parameters | 
|  | 184 | +3. Customize the workflow logic | 
|  | 185 | +4. Add your specific requirements | 
|  | 186 | +5. Test thoroughly before production use | 
|  | 187 | + | 
|  | 188 | +## Sample Data | 
|  | 189 | + | 
|  | 190 | +The `data/` directory contains: | 
|  | 191 | + | 
|  | 192 | +- **Sample benchmark definitions** for testing | 
|  | 193 | +- **Configuration templates** for different environments | 
|  | 194 | +- **Test data** for running examples without real projects | 
|  | 195 | + | 
|  | 196 | +## Troubleshooting | 
|  | 197 | + | 
|  | 198 | +### Common Issues | 
|  | 199 | + | 
|  | 200 | +1. **Import Errors**: Ensure the SDK is installed and in your Python path | 
|  | 201 | +2. **Configuration Errors**: Check environment variables and configuration files | 
|  | 202 | +3. **Permission Errors**: Ensure proper permissions for work directories | 
|  | 203 | +4. **Component Unavailable**: Some examples require optional dependencies | 
|  | 204 | + | 
|  | 205 | +### Getting Help | 
|  | 206 | + | 
|  | 207 | +1. **Check the logs**: Most examples include detailed logging | 
|  | 208 | +2. **Review the API documentation**: See `docs/API_DOCUMENTATION.md` | 
|  | 209 | +3. **Run with debug mode**: Set `log_level='DEBUG'` in configuration | 
|  | 210 | +4. **Check component availability**: Use the health checker utility | 
|  | 211 | + | 
|  | 212 | +## Contributing | 
|  | 213 | + | 
|  | 214 | +We welcome contributions to the samples! To add a new example: | 
|  | 215 | + | 
|  | 216 | +1. Choose the appropriate category directory | 
|  | 217 | +2. Follow the existing naming convention | 
|  | 218 | +3. Include comprehensive comments and documentation | 
|  | 219 | +4. Add error handling and logging | 
|  | 220 | +5. Test thoroughly with different configurations | 
|  | 221 | +6. Update this README with your example | 
|  | 222 | + | 
|  | 223 | +## License | 
|  | 224 | + | 
|  | 225 | +These samples are provided under the same license as the OSS-Fuzz SDK project. | 
0 commit comments