db_test.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. // Copyright 2013-2014 Fuzamei tech Ltd. All rights reserved.
  2. package market
  3. import (
  4. // "encoding/gob"
  5. "log"
  6. // "os"
  7. "testing"
  8. "time"
  9. )
  10. var db *MyDB
  11. func newDB() {
  12. if db == nil {
  13. mdb, err := NewMyDB("./fzm.db", true)
  14. if err != nil {
  15. log.Fatal("newMyDB error:", err)
  16. }
  17. db = mdb
  18. }
  19. }
  20. func benchmarkQuery(n int, b *testing.B) {
  21. b.StopTimer()
  22. newDB()
  23. tm := time.Date(2014, 8, 13, 10, 0, 0, 0, time.UTC)
  24. ts := tm.Unix() * 1000
  25. b.StartTimer()
  26. for i := 0; i < b.N; i++ {
  27. rows, err := db.query("lmax_4001", M1, n, ts)
  28. if err != nil {
  29. b.Error(err)
  30. }
  31. if len(rows) == 0 {
  32. b.Error("no rows return")
  33. }
  34. sum := 0
  35. for _, r := range rows {
  36. sum += r.Count
  37. }
  38. want := n
  39. if want < 0 {
  40. want = -want
  41. }
  42. if sum < want {
  43. b.Error("sum < want", sum, want)
  44. }
  45. }
  46. }
  47. func BenchmarkQuery(b *testing.B) {
  48. benchmarkQuery(1000, b)
  49. }
  50. func BenchmarkNQuery(b *testing.B) {
  51. benchmarkQuery(-1000, b)
  52. }
  53. // func TestConvCandle(t *testing.T) {
  54. // newDB()
  55. // tm := time.Date(2014, 5, 13, 10, 0, 0, 0, time.UTC)
  56. // ts := tm.Unix() * 1000
  57. // rows, err := db.query(0, M1, 1000, ts)
  58. // if err != nil {
  59. // t.Error(err)
  60. // }
  61. // if len(rows) == 0 {
  62. // t.Fatal("no rows return")
  63. // }
  64. // fname := rows[0].filePath
  65. // candles, err := readFile(fname)
  66. // if err != nil {
  67. // t.Error(err)
  68. // }
  69. // r := &candleReader{candles: candles}
  70. // buf, err := convCandle(0, M5, r)
  71. // if err != nil {
  72. // t.Error(err)
  73. // }
  74. // for _, c := range buf {
  75. // if c.Timestamp < 0 {
  76. // t.Fatal("c.Timestamp < 0")
  77. // }
  78. // }
  79. // }
  80. // func readFile(fname string) ([]Candle, error) {
  81. // f, err := os.Open(fname)
  82. // if err != nil {
  83. // return nil, err
  84. // }
  85. // defer f.Close()
  86. // dec := gob.NewDecoder(f)
  87. // var buf []Candle
  88. // err = dec.Decode(&buf)
  89. // if err != nil {
  90. // return nil, err
  91. // }
  92. // return buf, nil
  93. // }
  94. func TestGetLastN(t *testing.T) {
  95. newDB()
  96. rows, err := db.getLastN("lmax_4001", M1, 1024)
  97. if err != nil {
  98. t.Fatal(err)
  99. }
  100. sum := 0
  101. for _, r := range rows {
  102. sum += r.Count
  103. }
  104. if sum < 1024 {
  105. t.Error("getLastN return not enough")
  106. }
  107. }
  108. func TestGetLastTime(t *testing.T) {
  109. newDB()
  110. r1, err := db.getLastTime("lmax_4001", M1)
  111. if err != nil {
  112. t.Fatal(err)
  113. }
  114. t1 := time.Unix(r1.EndTime/1000, r1.EndTime%1000*1e6)
  115. log.Println(t1)
  116. r2, err := db.getLastTime("lmax_4002", M1)
  117. if err != nil {
  118. t.Fatal(err)
  119. }
  120. t2 := time.Unix(r2.EndTime/1000, r2.EndTime%1000*1e6)
  121. log.Println(t2)
  122. if r1.EndTime != r2.EndTime {
  123. t.Error("lt1 != lt2", r1.EndTime, r2.EndTime)
  124. }
  125. }
  126. func TestQuery(t *testing.T) {
  127. newDB()
  128. tm := time.Date(2014, 5, 13, 10, 0, 0, 0, time.UTC)
  129. ts := tm.Unix() * 1000
  130. want := 1000
  131. rows, err := db.query("lmax_4001", M1, 1000, ts)
  132. if err != nil {
  133. t.Error(err)
  134. }
  135. if len(rows) == 0 {
  136. t.Error("no rows return")
  137. }
  138. sum := 0
  139. for _, r := range rows {
  140. sum += r.Count
  141. }
  142. if want < 0 {
  143. want = -want
  144. }
  145. if sum < want {
  146. t.Error("sum < want", sum, want)
  147. }
  148. }