EU-Utility/TESTING.md

7.6 KiB

EU-Utility Testing Guide

Complete testing instructions for EU-Utility Premium with Entropia Universe.

🚀 Quick Start

1. Install Dependencies

cd ~/EU-Utility
pip install -r requirements.txt

Required packages:

  • PyQt6 (GUI framework)
  • psutil (process monitoring)
  • pywin32 (Windows API) - Windows only
  • pillow (screenshots)

2. Configure Game Path

Edit the config file (created automatically on first run):

# Windows default paths:
# C:\Program Files (x86)\Entropia Universe\ClientLoader.exe
# C:\Users\<username>\AppData\Local\Entropia Universe

# Or create manually:
python -c "
import json
from pathlib import Path
config = {
    'game_path': r'C:\\Program Files (x86)\\Entropia Universe',
    'overlay_enabled': True,
    'overlay_mode': 'overlay_toggle',
    'hotkey': 'ctrl+shift+b',
    'plugins_enabled': ['dashboard_widget'],
}
Path.home().joinpath('.eu-utility', 'config.json').write_text(json.dumps(config, indent=2))
"

3. Launch EU-Utility

python main.py

Command line options:

python main.py --verbose          # Debug logging
python main.py --test             # Test mode (no game required)
python main.py --no-overlay       # Headless mode

🎮 Testing With Entropia Universe

Test 1: Basic Launch

Steps:

  1. Launch EU-Utility: python main.py
  2. Check console output - should show "EU-Utility Premium initialized"
  3. Look for system tray icon (small EU logo)
  4. Press Ctrl+Shift+B to toggle overlay

Expected: Overlay appears with dashboard widget

Test 2: Game Detection

Steps:

  1. Launch Entropia Universe game client
  2. Wait 5-10 seconds
  3. Check EU-Utility console for "Game client detected"

Expected: Log shows process detection working

Debug: If not detected, check game path in config

Test 3: Overlay Modes

Test each overlay mode in config:

Mode: overlay_toggle (default)

  • Press Ctrl+Shift+B to show/hide overlay
  • Should toggle instantly (<100ms)

Mode: overlay_game

  • Overlay auto-shows when EU window is focused
  • Overlay auto-hides when EU loses focus
  • Should be smooth (no lag)

Mode: overlay_temp

  • Press hotkey to show for 8 seconds
  • Auto-hides after duration

Test 4: Dashboard Widget

Steps:

  1. Open overlay with hotkey
  2. Verify dashboard widget loads
  3. Check for player stats display

Features to test:

  • Player name display
  • Skill levels visible
  • Health/Energy bars
  • PED balance (if available)

Test 5: Log File Parsing

Steps:

  1. In game, get some loot or skill gain
  2. Check EU-Utility console for events
  3. Look for: [GameEvent] Loot: ... or [GameEvent] Skill: ...

Expected: Real-time event detection

Log locations:

%LOCALAPPDATA%\Entropia Universe\chat.log
%LOCALAPPDATA%\Entropia Universe\Entropia.log

Test 6: Performance Test

Steps:

  1. Run EU-Utility with game for 30 minutes
  2. Monitor CPU usage (should be <5%)
  3. Check for "Focus check took Xms" warnings

Expected:

  • No lag spikes
  • Smooth 60fps overlay
  • CPU usage minimal

Debug: If slow, check overlay_controller.py optimizations


🔧 Troubleshooting

Issue: "Game not detected"

Check:

  1. Game path in config is correct
  2. Game is actually running
  3. Try running EU-Utility as administrator

Fix:

# Update config with correct path
config['game_path'] = r'C:\Your\Actual\Path\To\Entropia Universe'

Issue: "Overlay not appearing"

Check:

  1. Hotkey is not conflicting with other apps
  2. Overlay mode is set correctly
  3. No Qt/OpenGL errors in console

Fix:

# Try test mode
python main.py --test

# Or disable overlay temporarily
python main.py --no-overlay

Issue: "App is slow/laggy"

Check:

  1. Focus check timing in logs
  2. CPU/memory usage
  3. Number of plugins loaded

Fix:

  • Reduce poll interval in config
  • Disable unused plugins
  • Check for window manager conflicts

Issue: "Plugins not loading"

Check:

  1. Plugin files exist in plugins/builtin/
  2. plugin.json is valid JSON
  3. No import errors in console

Fix:

# Verify plugin structure
ls plugins/builtin/dashboard_widget/
# Should show: plugin.json, main.py

# Check for syntax errors
python -m py_compile plugins/builtin/dashboard_widget/main.py

🧪 Advanced Testing

Test Plugin Development

Create a test plugin:

# plugins/user/test_plugin/main.py
from premium.plugins.api import BasePlugin, PluginManifest

class TestPlugin(BasePlugin):
    manifest = PluginManifest(
        name="Test Plugin",
        version="1.0.0",
        author="Tester"
    )
    
    def on_load(self):
        print("Test plugin loaded!")
        return True
    
    def on_enable(self):
        print("Test plugin enabled!")
    
    def on_disable(self):
        print("Test plugin disabled!")
// plugins/user/test_plugin/plugin.json
{
  "name": "Test Plugin",
  "version": "1.0.0",
  "author": "Tester",
  "main": "main.py",
  "entry_point": "TestPlugin"
}

Test Event System

# Test event bus
from premium.core.event_bus import EventBus, Event

bus = EventBus()

@bus.on("game.loot")
def on_loot(event):
    print(f"Got loot: {event.data}")

bus.emit("game.loot", {"item": "Ammunition", "amount": 100})

Test State Management

# Test state store
from premium.core.state.store import StateStore, ActionBase

class IncrementAction(ActionBase):
    type = "INCREMENT"

def counter_reducer(state, action):
    if action.type == "INCREMENT":
        return state + 1
    return state

store = StateStore(counter_reducer, initial_state=0)
store.dispatch(IncrementAction())
print(store.state)  # 1

📊 Performance Benchmarks

Expected Performance

Metric Target Acceptable
Startup time <3s <5s
Focus check <10ms <50ms
Overlay toggle <100ms <200ms
CPU usage <3% <10%
Memory usage <200MB <500MB
Log parsing Real-time <1s delay

Benchmark Script

# Run performance test
python -c "
import time
from premium.eu_integration.game_client import GameClient

start = time.time()
client = GameClient()
client.initialize()
print(f'Init time: {time.time() - start:.2f}s')

# Test detection
start = time.time()
found = client.find_game_process()
print(f'Detection time: {time.time() - start:.2f}s')
print(f'Game found: {found}')
"

🐛 Debug Mode

Enable Debug Logging

python main.py --verbose

Key Log Messages

Message Meaning
"Game client detected" Process found
"Window focused" EU window active
"Overlay shown/hidden" Toggle working
"Plugin loaded: X" Plugin loaded
"Focus check took Xms" Performance warning
"Event: game.loot" Game event detected

Check Logs

# Real-time log view
tail -f ~/.eu-utility/logs/app.log

# Search for errors
grep ERROR ~/.eu-utility/logs/app.log

Final Checklist

Before considering ready for production:

  • App launches without errors
  • Game detection works
  • Overlay appears with hotkey
  • Dashboard shows data
  • Log events are captured
  • Performance is smooth
  • No memory leaks (stable after 1 hour)
  • Plugins load/unload correctly
  • Settings save/load properly
  • Exits gracefully on close

🆘 Getting Help

If issues persist:

  1. Check logs: ~/.eu-utility/logs/
  2. Run tests: python -m pytest tests/
  3. Check config: ~/.eu-utility/config.json
  4. Verify game running and accessible

Debug info to collect:

  • Console output
  • Log files
  • System specs (CPU, RAM, GPU)
  • Windows version
  • Game version