test_balance.py 3.6 KB

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