162 lines
3.4 KiB
Python
162 lines
3.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test script for MCP for Unity Telemetry System
|
|
Run this to verify telemetry is working correctly
|
|
"""
|
|
|
|
import os
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
# Add src to Python path for imports
|
|
sys.path.insert(0, str(Path(__file__).parent))
|
|
|
|
|
|
def test_telemetry_basic():
|
|
"""Test basic telemetry functionality"""
|
|
# Avoid stdout noise in tests
|
|
|
|
try:
|
|
from telemetry import (
|
|
get_telemetry, record_telemetry, record_milestone,
|
|
RecordType, MilestoneType, is_telemetry_enabled
|
|
)
|
|
pass
|
|
except ImportError as e:
|
|
# Silent failure path for tests
|
|
return False
|
|
|
|
# Test telemetry enabled status
|
|
_ = is_telemetry_enabled()
|
|
|
|
# Test basic record
|
|
try:
|
|
record_telemetry(RecordType.VERSION, {
|
|
"version": "3.0.2",
|
|
"test_run": True
|
|
})
|
|
pass
|
|
except Exception as e:
|
|
# Silent failure path for tests
|
|
return False
|
|
|
|
# Test milestone recording
|
|
try:
|
|
is_first = record_milestone(MilestoneType.FIRST_STARTUP, {
|
|
"test_mode": True
|
|
})
|
|
_ = is_first
|
|
except Exception as e:
|
|
# Silent failure path for tests
|
|
return False
|
|
|
|
# Test telemetry collector
|
|
try:
|
|
collector = get_telemetry()
|
|
_ = collector
|
|
except Exception as e:
|
|
# Silent failure path for tests
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
def test_telemetry_disabled():
|
|
"""Test telemetry with disabled state"""
|
|
# Silent for tests
|
|
|
|
# Set environment variable to disable telemetry
|
|
os.environ["DISABLE_TELEMETRY"] = "true"
|
|
|
|
# Re-import to get fresh config
|
|
import importlib
|
|
import telemetry
|
|
importlib.reload(telemetry)
|
|
|
|
from telemetry import is_telemetry_enabled, record_telemetry, RecordType
|
|
|
|
_ = is_telemetry_enabled()
|
|
|
|
if not is_telemetry_enabled():
|
|
pass
|
|
|
|
# Test that records are ignored when disabled
|
|
record_telemetry(RecordType.USAGE, {"test": "should_be_ignored"})
|
|
pass
|
|
|
|
return True
|
|
else:
|
|
pass
|
|
return False
|
|
|
|
|
|
def test_data_storage():
|
|
"""Test data storage functionality"""
|
|
# Silent for tests
|
|
|
|
try:
|
|
from telemetry import get_telemetry
|
|
|
|
collector = get_telemetry()
|
|
data_dir = collector.config.data_dir
|
|
|
|
_ = (data_dir, collector.config.uuid_file,
|
|
collector.config.milestones_file)
|
|
|
|
# Check if files exist
|
|
if collector.config.uuid_file.exists():
|
|
pass
|
|
else:
|
|
pass
|
|
|
|
if collector.config.milestones_file.exists():
|
|
pass
|
|
else:
|
|
pass
|
|
|
|
return True
|
|
|
|
except Exception as e:
|
|
# Silent failure path for tests
|
|
return False
|
|
|
|
|
|
def main():
|
|
"""Run all telemetry tests"""
|
|
# Silent runner for CI
|
|
|
|
tests = [
|
|
test_telemetry_basic,
|
|
test_data_storage,
|
|
test_telemetry_disabled,
|
|
]
|
|
|
|
passed = 0
|
|
failed = 0
|
|
|
|
for test in tests:
|
|
try:
|
|
if test():
|
|
passed += 1
|
|
pass
|
|
else:
|
|
failed += 1
|
|
pass
|
|
except Exception as e:
|
|
failed += 1
|
|
pass
|
|
|
|
_ = (passed, failed)
|
|
|
|
if failed == 0:
|
|
pass
|
|
return True
|
|
else:
|
|
pass
|
|
return False
|
|
|
|
|
|
if __name__ == "__main__":
|
|
success = main()
|
|
sys.exit(0 if success else 1)
|