A comprehensive GUI application for testing download speeds across different methods (cURL, Google Chrome, Iconik Agent) for Iconik assets across multiple cloud storage providers.
- Multiple Test Methods: Test downloads using cURL, Google Chrome, or Iconik Agent
- Multi-Cloud Support: Test across AWS S3, Google Cloud Storage, Azure Blob Storage, and Backblaze B2
- Real-time Console Logging: Live console output with timestamps showing detailed test progress
- Dynamic UI Scaling: Responsive interface that scales with window resizing
- Professional Results Display: Comprehensive results table with statistics (avg, min, max times)
- Export Capabilities: Export test results to CSV format
- Modern GUI: Built with ttkbootstrap for a professional, modern interface
- Iconik Branding: Includes official Iconik logo and styling
- Console Log Section: Real-time console output at the bottom of the main window
- Dynamic Window Scaling: Main window now scales like the results window
- Centered Button Layout: Run Tests and Preferences buttons are properly centered
- Enhanced Error Handling: Better error reporting and logging
- Azure Storage Fix: Fixed filename extraction for Azure Blob Storage
- Comprehensive Logging: Detailed progress reporting for each storage and test
-
Clone the repository:
git clone <repository-url> cd iconik_download_speed_test
-
Create a virtual environment (recommended):
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Set up configuration:
cp config.json.example config.json
Then edit
config.json
with your Iconik API credentials and settings.
Edit config.json
with your Iconik API details:
{
"agent_api_url": "http://localhost:6286/download-requests",
"app_id": "your-app-id-here",
"auth_token": "your-auth-token-here",
"log_file": "/path/to/your/iconik/agent/log/file.log",
"iconik_api_url": "https://app.iconik.io/API"
}
-
Run the application:
python app.py
-
Configure Settings (optional):
- Click "Preferences" to open the configuration window
- Set your Iconik API credentials and settings
- Click "Save Config" to save your settings
-
Enter Asset ID: Provide the Iconik asset ID you want to test
-
Select Run Count: Choose how many times to run each test (1-5)
-
Select Tests: Check the tests you want to run:
- cURL: Command-line download test
- Google Chrome: Browser-based download test (requires Chrome)
- Iconik Agent: Agent API download test (requires local agent)
-
Run Tests: Click "Run Tests" and watch the real-time results in both the console and results window
- Dynamic Scaling: Window elements scale with window resizing
- Console Log: Black console with white text showing real-time test progress
- Centered Buttons: Run Tests and Preferences buttons are centered together
- Clear Console: Button to clear console output
- Real-time Progress: Live progress bars for each storage
- Comprehensive Results Table: Shows storage, provider, test type, and timing statistics
- Export Functionality: Export results to CSV
- Professional Styling: Modern grid layout with proper spacing
The application now supports all major cloud storage providers:
- AWS S3: Full support with proper filename extraction
- Google Cloud Storage: Full support with proper filename extraction
- Azure Blob Storage: Full support with
rscd
parameter handling - Backblaze B2: Full support with path-based filename extraction
The application includes a built-in preferences window for editing config.json
:
- Agent API URL: Local endpoint for Iconik Agent (default:
http://localhost:6286/download-requests
) - App ID: Your Iconik application ID
- Auth Token: Your Iconik authentication token (hidden by default, click "Show" to reveal)
- Log File Path: Path to Iconik Agent log file
- Iconik API URL: Iconik API endpoint (default:
https://app.iconik.io/API
)
- Load Config: Load current settings from
config.json
- Save Config: Save current settings to
config.json
- Reset to Defaults: Restore default configuration values
- Secure Token Display: Auth token is hidden by default for security
- Python: 3.8 or higher
- Operating System: macOS (for Chrome testing - uses AppleScript)
- Browser: Google Chrome (for Chrome download tests)
- Network: Internet connection for API calls and downloads
- Iconik Access: Valid Iconik API credentials
- Iconik Agent: Running locally (for Agent tests)
ttkbootstrap==1.14.1
- Modern GUI framework with professional stylingPillow==10.4.0
- Image processing for logo displayrequests==2.32.4
- HTTP requests for API calls
- Chrome Tests: Require Google Chrome to be installed and use AppleScript for automation
- Agent Tests: Require the Iconik Agent to be running locally on port 6286
- File Cleanup: Test files are automatically cleaned up after each run
- URL Handling: Supports complex signed URLs from various cloud providers
- Threading: Tests run in background threads to prevent GUI freezing
- Error Recovery: Comprehensive error handling with detailed logging
- Chrome Tests Failing: Ensure Google Chrome is installed and accessible
- Agent Tests Failing: Verify Iconik Agent is running on localhost:6286
- API Errors: Check your Iconik credentials in the Preferences window
- File Permission Errors: Ensure the application has write access to the Downloads folder
The console log provides detailed information about:
- Test progress and timing
- Storage provider detection
- File download status
- Error messages and stack traces
- API response details
This project is designed for use with Iconik.io services. Please ensure you have proper Iconik API access before using this tool.