// Copyright 2013-2014 Fuzamei tech Ltd. All rights reserved. package market import ( // "encoding/gob" "log" // "os" "testing" "time" ) var db *MyDB func newDB() { if db == nil { mdb, err := NewMyDB("./fzm.db", true) if err != nil { log.Fatal("newMyDB error:", err) } db = mdb } } func benchmarkQuery(n int, b *testing.B) { b.StopTimer() newDB() tm := time.Date(2014, 8, 13, 10, 0, 0, 0, time.UTC) ts := tm.Unix() * 1000 b.StartTimer() for i := 0; i < b.N; i++ { rows, err := db.query("lmax_4001", M1, n, ts) if err != nil { b.Error(err) } if len(rows) == 0 { b.Error("no rows return") } sum := 0 for _, r := range rows { sum += r.Count } want := n if want < 0 { want = -want } if sum < want { b.Error("sum < want", sum, want) } } } func BenchmarkQuery(b *testing.B) { benchmarkQuery(1000, b) } func BenchmarkNQuery(b *testing.B) { benchmarkQuery(-1000, b) } // func TestConvCandle(t *testing.T) { // newDB() // tm := time.Date(2014, 5, 13, 10, 0, 0, 0, time.UTC) // ts := tm.Unix() * 1000 // rows, err := db.query(0, M1, 1000, ts) // if err != nil { // t.Error(err) // } // if len(rows) == 0 { // t.Fatal("no rows return") // } // fname := rows[0].filePath // candles, err := readFile(fname) // if err != nil { // t.Error(err) // } // r := &candleReader{candles: candles} // buf, err := convCandle(0, M5, r) // if err != nil { // t.Error(err) // } // for _, c := range buf { // if c.Timestamp < 0 { // t.Fatal("c.Timestamp < 0") // } // } // } // func readFile(fname string) ([]Candle, error) { // f, err := os.Open(fname) // if err != nil { // return nil, err // } // defer f.Close() // dec := gob.NewDecoder(f) // var buf []Candle // err = dec.Decode(&buf) // if err != nil { // return nil, err // } // return buf, nil // } func TestGetLastN(t *testing.T) { newDB() rows, err := db.getLastN("lmax_4001", M1, 1024) if err != nil { t.Fatal(err) } sum := 0 for _, r := range rows { sum += r.Count } if sum < 1024 { t.Error("getLastN return not enough") } } func TestGetLastTime(t *testing.T) { newDB() r1, err := db.getLastTime("lmax_4001", M1) if err != nil { t.Fatal(err) } t1 := time.Unix(r1.EndTime/1000, r1.EndTime%1000*1e6) log.Println(t1) r2, err := db.getLastTime("lmax_4002", M1) if err != nil { t.Fatal(err) } t2 := time.Unix(r2.EndTime/1000, r2.EndTime%1000*1e6) log.Println(t2) if r1.EndTime != r2.EndTime { t.Error("lt1 != lt2", r1.EndTime, r2.EndTime) } } func TestQuery(t *testing.T) { newDB() tm := time.Date(2014, 5, 13, 10, 0, 0, 0, time.UTC) ts := tm.Unix() * 1000 want := 1000 rows, err := db.query("lmax_4001", M1, 1000, ts) if err != nil { t.Error(err) } if len(rows) == 0 { t.Error("no rows return") } sum := 0 for _, r := range rows { sum += r.Count } if want < 0 { want = -want } if sum < want { t.Error("sum < want", sum, want) } }