test-parse-server.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. const Parse = require('parse/node');
  2. const fs = require('fs');
  3. // 初始化Parse SDK
  4. Parse.initialize('ecommerce-ai-app', 'unused', 'master-key-change-this-in-production');
  5. Parse.serverURL = 'http://localhost:1337/parse';
  6. // 测试结果收集
  7. const testResults = {
  8. parseServer: {
  9. status: 'failed',
  10. responseTime: 0,
  11. error: null,
  12. details: {}
  13. }
  14. };
  15. // 颜色输出函数
  16. function colorLog(message, color) {
  17. const colors = {
  18. green: '\x1b[32m',
  19. red: '\x1b[31m',
  20. yellow: '\x1b[33m',
  21. blue: '\x1b[34m',
  22. reset: '\x1b[0m'
  23. };
  24. console.log(`${colors[color]}${message}${colors.reset}`);
  25. }
  26. // 测试Parse Server连接
  27. async function testParseServerConnection() {
  28. colorLog('===== 测试Parse Server连接 =====', 'blue');
  29. console.log('服务器地址:', Parse.serverURL);
  30. const startTime = Date.now();
  31. try {
  32. // 尝试获取服务器健康状态
  33. const healthResponse = await fetch(`${Parse.serverURL}/health`);
  34. const healthStatus = healthResponse.ok ? '成功' : '失败';
  35. const healthData = healthResponse.ok ? await healthResponse.json() : null;
  36. // 测试基本Parse操作
  37. const TestObject = Parse.Object.extend('TestObject');
  38. const testObject = new TestObject();
  39. testObject.set('message', 'Hello from connection test');
  40. const savedObject = await testObject.save();
  41. // 查询测试对象
  42. const query = new Parse.Query(TestObject);
  43. const results = await query.find();
  44. // 删除测试对象
  45. await savedObject.destroy();
  46. const responseTime = Date.now() - startTime;
  47. testResults.parseServer.status = 'success';
  48. testResults.parseServer.responseTime = responseTime;
  49. testResults.parseServer.details = {
  50. healthStatus,
  51. healthData,
  52. objectSaved: true,
  53. objectsQueried: results.length,
  54. objectDeleted: true
  55. };
  56. colorLog('✅ Parse Server连接成功!', 'green');
  57. console.log(` 响应时间: ${responseTime}ms`);
  58. console.log(` 健康检查: ${healthStatus}`);
  59. if (healthData) {
  60. console.log(` 健康数据:`, JSON.stringify(healthData, null, 2));
  61. }
  62. console.log(` 对象操作: 保存/查询/删除 成功`);
  63. } catch (error) {
  64. const responseTime = Date.now() - startTime;
  65. testResults.parseServer.responseTime = responseTime;
  66. testResults.parseServer.error = error.message;
  67. colorLog('❌ Parse Server连接失败!', 'red');
  68. console.log(` 响应时间: ${responseTime}ms`);
  69. console.log(` 错误信息: ${error.message}`);
  70. if (error.stack) {
  71. console.log(` 错误堆栈: ${error.stack}`);
  72. }
  73. }
  74. }
  75. // 生成测试报告
  76. function generateReport() {
  77. const report = {
  78. testTime: new Date().toISOString(),
  79. results: testResults
  80. };
  81. // 保存到文件
  82. fs.writeFileSync('parse-server-test-report.json', JSON.stringify(report, null, 2));
  83. // 打印报告
  84. colorLog('\n===== Parse Server连接测试报告 =====', 'blue');
  85. console.log('测试时间:', report.testTime);
  86. console.log('========================');
  87. console.log('\n【Parse Server】');
  88. if (testResults.parseServer.status === 'success') {
  89. colorLog(`状态: ✅ 成功`, 'green');
  90. console.log(`响应时间: ${testResults.parseServer.responseTime}ms`);
  91. console.log(`健康检查: ${testResults.parseServer.details.healthStatus}`);
  92. console.log(`对象操作: 保存/查询/删除 成功`);
  93. } else {
  94. colorLog(`状态: ❌ 失败`, 'red');
  95. console.log(`响应时间: ${testResults.parseServer.responseTime}ms`);
  96. console.log(`错误信息: ${testResults.parseServer.error}`);
  97. }
  98. console.log('========================');
  99. colorLog('\n详细报告已保存到: parse-server-test-report.json', 'blue');
  100. }
  101. // 执行测试
  102. async function runTests() {
  103. colorLog('开始执行Parse Server连接测试...\n', 'blue');
  104. await testParseServerConnection();
  105. generateReport();
  106. }
  107. // 运行测试
  108. runTests().catch(console.error);