test_balance.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #!/usr/bin/env python3
  2. """
  3. Test script to verify Hyperliquid balance fetching with CCXT
  4. """
  5. import sys
  6. import os
  7. from pathlib import Path
  8. # Add the project root and src directory to the path
  9. project_root = Path(__file__).parent.parent
  10. sys.path.insert(0, str(project_root))
  11. sys.path.insert(0, str(project_root / 'src'))
  12. from hyperliquid_client import HyperliquidClient
  13. from config import Config
  14. def test_balance():
  15. """Test balance fetching functionality."""
  16. print("🧪 Testing Hyperliquid Balance Fetching")
  17. print("=" * 50)
  18. try:
  19. # Validate configuration first
  20. print("🔍 Validating configuration...")
  21. if not Config.validate():
  22. print("❌ Configuration validation failed!")
  23. return False
  24. print(f"✅ Configuration valid")
  25. print(f"🌐 Network: {'Testnet' if Config.HYPERLIQUID_TESTNET else 'Mainnet'}")
  26. print(f"🔑 Private Key: {Config.HYPERLIQUID_PRIVATE_KEY[:10]}..." if Config.HYPERLIQUID_PRIVATE_KEY else "❌ No private key")
  27. print()
  28. # Initialize client
  29. print("🔧 Initializing Hyperliquid client...")
  30. client = HyperliquidClient(use_testnet=Config.HYPERLIQUID_TESTNET)
  31. if not client.sync_client:
  32. print("❌ Failed to initialize client!")
  33. return False
  34. print("✅ Client initialized successfully")
  35. print()
  36. # Test balance fetching
  37. print("💰 Fetching account balance...")
  38. balance = client.get_balance()
  39. if balance:
  40. print("✅ Balance fetch successful!")
  41. print("📊 Balance data:")
  42. # Pretty print the balance
  43. if isinstance(balance, dict):
  44. for key, value in balance.items():
  45. if isinstance(value, dict):
  46. print(f" {key}:")
  47. for sub_key, sub_value in value.items():
  48. print(f" {sub_key}: {sub_value}")
  49. else:
  50. print(f" {key}: {value}")
  51. else:
  52. print(f" Raw balance: {balance}")
  53. return True
  54. else:
  55. print("❌ Balance fetch failed! Trying alternative method...")
  56. print()
  57. # Try alternative method
  58. print("🔄 Testing alternative balance fetching approaches...")
  59. balance_alt = client.get_balance_alternative()
  60. if balance_alt:
  61. print("✅ Alternative balance fetch successful!")
  62. print("📊 Balance data:")
  63. # Pretty print the balance
  64. if isinstance(balance_alt, dict):
  65. for key, value in balance_alt.items():
  66. if isinstance(value, dict):
  67. print(f" {key}:")
  68. for sub_key, sub_value in value.items():
  69. print(f" {sub_key}: {sub_value}")
  70. else:
  71. print(f" {key}: {value}")
  72. else:
  73. print(f" Raw balance: {balance_alt}")
  74. return True
  75. else:
  76. print("❌ Alternative balance fetch also failed!")
  77. return False
  78. except Exception as e:
  79. print(f"💥 Test failed with error: {e}")
  80. import traceback
  81. print("📜 Full traceback:")
  82. traceback.print_exc()
  83. return False
  84. if __name__ == "__main__":
  85. success = test_balance()
  86. if success:
  87. print("\n🎉 Balance test PASSED!")
  88. sys.exit(0)
  89. else:
  90. print("\n💥 Balance test FAILED!")
  91. sys.exit(1)