Skip to content

iconik-io/iconik_download_speed_test

Repository files navigation

Iconik Download Speed Test

A comprehensive GUI application for testing download speeds across different methods (cURL, Google Chrome, Iconik Agent) for Iconik assets across multiple cloud storage providers.

Features

  • 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

New Features (Latest Update)

  • 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

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd iconik_download_speed_test
  2. Create a virtual environment (recommended):

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. Install dependencies:

    pip install -r requirements.txt
  4. Set up configuration:

    cp config.json.example config.json

    Then edit config.json with your Iconik API credentials and settings.

Configuration

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"
}

Usage

  1. Run the application:

    python app.py
  2. Configure Settings (optional):

    • Click "Preferences" to open the configuration window
    • Set your Iconik API credentials and settings
    • Click "Save Config" to save your settings
  3. Enter Asset ID: Provide the Iconik asset ID you want to test

  4. Select Run Count: Choose how many times to run each test (1-5)

  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)
  6. Run Tests: Click "Run Tests" and watch the real-time results in both the console and results window

UI Features

Main 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

Results Window

  • 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

Storage Provider Support

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

Configuration

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)

Configuration Features

  • 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

Requirements

  • 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)

Dependencies

  • ttkbootstrap==1.14.1 - Modern GUI framework with professional styling
  • Pillow==10.4.0 - Image processing for logo display
  • requests==2.32.4 - HTTP requests for API calls

Technical Notes

  • 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

Troubleshooting

Common Issues

  1. Chrome Tests Failing: Ensure Google Chrome is installed and accessible
  2. Agent Tests Failing: Verify Iconik Agent is running on localhost:6286
  3. API Errors: Check your Iconik credentials in the Preferences window
  4. File Permission Errors: Ensure the application has write access to the Downloads folder

Debug Information

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

License

This project is designed for use with Iconik.io services. Please ensure you have proper Iconik API access before using this tool.

About

GUI Speed test tool for doing longer tests with multiple tools

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages