132 lines
3.2 KiB
Go
132 lines
3.2 KiB
Go
|
package unqlitego
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"fmt"
|
||
|
. "github.com/r7kamura/gospel"
|
||
|
"io/ioutil"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func Testモジュール(t *testing.T) {
|
||
|
var db *Database
|
||
|
var src []byte
|
||
|
src = []byte("value")
|
||
|
|
||
|
Describe(t, "正常系", func() {
|
||
|
Context("基本テスト", func() {
|
||
|
It("NewDatabase", func() {
|
||
|
f, err := ioutil.TempFile("", "sample.db")
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
db, err = NewDatabase(f.Name())
|
||
|
Expect(err).To(NotExist)
|
||
|
Expect(db).To(Exist)
|
||
|
})
|
||
|
It("Database.Begin", func() {
|
||
|
err := db.Begin()
|
||
|
Expect(err).To(NotExist)
|
||
|
})
|
||
|
It("Database.Store", func() {
|
||
|
err := db.Store([]byte("sample"), src)
|
||
|
Expect(err).To(NotExist)
|
||
|
})
|
||
|
It("Database.Fetch", func() {
|
||
|
dst, err := db.Fetch([]byte("sample"))
|
||
|
Expect(err).To(NotExist)
|
||
|
Expect(bytes.Compare(src, dst)).To(Equal, 0)
|
||
|
})
|
||
|
It("Database.Append", func() {
|
||
|
err1 := db.Append([]byte("sample"), []byte(" append"))
|
||
|
Expect(err1).To(NotExist)
|
||
|
dst, err2 := db.Fetch([]byte("sample"))
|
||
|
Expect(err2).To(NotExist)
|
||
|
Expect(bytes.Compare(append(src, []byte(" append")...), dst)).To(Equal, 0)
|
||
|
})
|
||
|
It("Database.Commit", func() {
|
||
|
err := db.Commit()
|
||
|
Expect(err).To(NotExist)
|
||
|
})
|
||
|
It("Database.Begin", func() {
|
||
|
err := db.Begin()
|
||
|
Expect(err).To(NotExist)
|
||
|
})
|
||
|
It("Database.Delete", func() {
|
||
|
err1 := db.Delete([]byte("sample"))
|
||
|
Expect(err1).To(NotExist)
|
||
|
_, err2 := db.Fetch([]byte("sample"))
|
||
|
Expect(err2).To(Exist)
|
||
|
})
|
||
|
It("Database.Rollback", func() {
|
||
|
err := db.Rollback()
|
||
|
Expect(err).To(NotExist)
|
||
|
value, err2 := db.Fetch([]byte("sample"))
|
||
|
Expect(err2).To(NotExist)
|
||
|
Expect(value).To(Exist)
|
||
|
})
|
||
|
It("Database.NewCursor", func() {
|
||
|
cursor, err := db.NewCursor()
|
||
|
Expect(err).To(NotExist)
|
||
|
Expect(cursor).To(Exist)
|
||
|
err = cursor.Seek([]byte("sample"))
|
||
|
Expect(err).To(NotExist)
|
||
|
})
|
||
|
It("Database.Close", func() {
|
||
|
err := db.Close()
|
||
|
Expect(err).To(NotExist)
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func BenchmarkFileStore(b *testing.B) {
|
||
|
b.StopTimer()
|
||
|
f, err := ioutil.TempFile("", "sample.db")
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
db, _ := NewDatabase(f.Name())
|
||
|
b.StartTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
db.Store([]byte(fmt.Sprintf("%d", i)), []byte("abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnop"))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkFileFetch(b *testing.B) {
|
||
|
b.StopTimer()
|
||
|
f, err := ioutil.TempFile("", "sample.db")
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
db, _ := NewDatabase(f.Name())
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
db.Store([]byte(fmt.Sprintf("%d", i)), []byte("abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnop"))
|
||
|
}
|
||
|
b.StartTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
_, _ = db.Fetch([]byte(fmt.Sprintf("%d", i)))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkMemStore(b *testing.B) {
|
||
|
b.StopTimer()
|
||
|
db, _ := NewDatabase("")
|
||
|
b.StartTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
db.Store([]byte(fmt.Sprintf("%d", i)), []byte("abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnop"))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkMemFetch(b *testing.B) {
|
||
|
b.StopTimer()
|
||
|
db, _ := NewDatabase("")
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
db.Store([]byte(fmt.Sprintf("%d", i)), []byte("abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnop"))
|
||
|
}
|
||
|
b.StartTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
_, _ = db.Fetch([]byte(fmt.Sprintf("%d", i)))
|
||
|
}
|
||
|
}
|