Stability_test.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package test
  2. import (
  3. "database/sql"
  4. "log"
  5. "os"
  6. "testing"
  7. "time"
  8. )
  9. func setupDB() (*sql.DB, error) {
  10. db, err := sql.Open("xugusql", "IP=10.28.20.101;"+
  11. "DB=GODB;User=SYSDBA;PWD=SYSDBA;"+
  12. "Port= 5190;AUTO_COMMIT=on;CHAR_SET=UTF8")
  13. if err != nil {
  14. return nil, err
  15. }
  16. return db, nil
  17. }
  18. // TestStability 测试数据库的稳定性
  19. func TestStability(t *testing.T) {
  20. db, err := setupDB()
  21. if err != nil {
  22. t.Fatalf("Failed to connect to database: %v", err)
  23. }
  24. defer db.Close()
  25. duration := 1 * time.Hour // 测试运行时间
  26. endTime := time.Now().Add(duration)
  27. // 创建日志文件
  28. logFile, err := os.OpenFile("stability_test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
  29. if err != nil {
  30. log.Fatalf("Failed to open log file: %v", err)
  31. }
  32. defer logFile.Close()
  33. // 设置日志输出到文件
  34. log.SetOutput(logFile)
  35. for time.Now().Before(endTime) {
  36. // 执行插入操作
  37. stmt, err := db.Prepare("INSERT INTO users(name) VALUES(?)")
  38. if err != nil {
  39. t.Fatalf("Failed to prepare insert statement: %v", err)
  40. log.Fatalf("Failed to prepare insert statement: %v", err)
  41. }
  42. _, err = stmt.Exec("TestUser")
  43. stmt.Close()
  44. if err != nil {
  45. t.Fatalf("Failed to execute insert statement: %v", err)
  46. log.Fatalf("Failed to execute insert statement: %v", err)
  47. }
  48. // 执行查询操作
  49. stmt, err = db.Prepare("SELECT name FROM users WHERE name = ?")
  50. if err != nil {
  51. t.Fatalf("Failed to prepare select statement: %v", err)
  52. log.Fatalf("Failed to prepare select statement: %v", err)
  53. }
  54. var name string
  55. err = stmt.QueryRow("TestUser").Scan(&name)
  56. stmt.Close()
  57. if err != nil {
  58. t.Fatalf("Failed to query row: %v", err)
  59. log.Fatalf("Failed to prepare select statement: %v", err)
  60. }
  61. if name != "TestUser" {
  62. t.Errorf("Expected name 'TestUser', but got '%s'", name)
  63. log.Fatalf("Failed to prepare select statement: %v", err)
  64. }
  65. // 执行删除操作
  66. stmt, err = db.Prepare("DELETE FROM users WHERE name = ?")
  67. if err != nil {
  68. t.Fatalf("Failed to prepare delete statement: %v", err)
  69. log.Fatalf("Failed to prepare select statement: %v", err)
  70. }
  71. _, err = stmt.Exec("TestUser")
  72. stmt.Close()
  73. if err != nil {
  74. t.Fatalf("Failed to execute delete statement: %v", err)
  75. log.Fatalf("Failed to prepare select statement: %v", err)
  76. }
  77. }
  78. }