aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--Makefile19
-rw-r--r--deps.mk16
-rwxr-xr-xmkdeps.sh8
-rw-r--r--tests/benchmarks/exec.go29
-rw-r--r--tests/benchmarks/query.go40
-rw-r--r--tests/fuzz/api.go6
7 files changed, 104 insertions, 16 deletions
diff --git a/.gitignore b/.gitignore
index 3d9fb8b..35bfb45 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,5 @@
/tests/functional/*.so
/tests/fuzz/*.a
/tests/fuzz/*.bin
+/tests/benchmarks/*.a
+/tests/benchmarks/*.bin
diff --git a/Makefile b/Makefile
index 6ddd223..7b70f0a 100644
--- a/Makefile
+++ b/Makefile
@@ -39,6 +39,8 @@ functional-tests.a = $(functional-tests.go:.go=.a)
functional-tests.bin = $(functional-tests.go:.go=.bin)
fuzz-targets.a = $(fuzz-targets.go:.go=.a)
fuzz-targets.bin = $(fuzz-targets.go:.go=.bin)
+benchmarks.a = $(benchmarks.go:.go=.a)
+benchmarks.bin = $(benchmarks.go:.go=.bin)
cgo.go = \
src/_cgo_import.go \
@@ -71,6 +73,8 @@ derived-assets = \
tests/functional/streq.so \
$(fuzz-targets.a) \
$(fuzz-targets.bin) \
+ $(benchmarks.a) \
+ $(benchmarks.bin) \
side-assets = \
src/_cgo_export.h \
@@ -87,7 +91,7 @@ $(derived-assets): Makefile deps.mk
$(cgo.go) $(cgo.c) $(cgo.o): src/_cgo_.o
-$(functional-tests.a) $(fuzz-targets.a): src/$(NAME).a
+$(functional-tests.a) $(fuzz-targets.a) $(benchmarks.a): src/$(NAME).a
src/_cgo_.o: src/$(NAME).go
@@ -113,13 +117,13 @@ tests/main.bin: tests/main.a
src/version.go: Makefile
echo 'package $(NAME); const Version = "$(VERSION)"' > $@
-$(functional-tests.a):
+$(functional-tests.a) $(benchmarks.a):
go tool compile $(GOCFLAGS) -o $@ -p main -I src $*.go
$(fuzz-targets.a):
go tool compile -d=libfuzzer $(GOCFLAGS) -o $@ -p main -I src $*.go
-$(functional-tests.bin) $(fuzz-targets.bin):
+$(functional-tests.bin) $(fuzz-targets.bin) $(benchmarks.bin):
go tool link $(GOLDFLAGS) -o $@ -L src --extldflags '$(LDLIBS)' $*.a
tests/functional/streq.so: tests/functional/streq.c
@@ -165,14 +169,17 @@ FUZZSEC=1
fuzz-targets.bin-check = $(fuzz-targets.go:.go=.bin-check)
$(fuzz-targets.bin-check):
$(EXEC)$*.bin --test.fuzztime=$(FUZZSEC)s \
- --test.fuzz=Fuzz --test.fuzzcachedir=tests/fuzz/corpus
+ --test.fuzz='.*' --test.fuzzcachedir=tests/fuzz/corpus
fuzz: $(fuzz-targets.bin-check)
-bench: tests/main.bin
- $(EXEC)tests/main.bin -test.bench '.*'
+benchmarks.bin-check = $(benchmarks.go:.go=.bin-check)
+$(benchmarks.bin-check):
+ $(EXEC)$*.bin
+
+bench: $(benchmarks.bin-check)
diff --git a/deps.mk b/deps.mk
index 9de79a9..b2b43fe 100644
--- a/deps.mk
+++ b/deps.mk
@@ -1,10 +1,10 @@
-functional-tests.go = \
- tests/functional/extension.go \
+functional-tests-butone.go = \
tests/functional/json.go \
tests/functional/libbuild.go \
tests/functional/limit.go \
-functional-tests-butone.go = \
+functional-tests.go = \
+ tests/functional/extension.go \
tests/functional/json.go \
tests/functional/libbuild.go \
tests/functional/limit.go \
@@ -12,16 +12,26 @@ functional-tests-butone.go = \
fuzz-targets.go = \
tests/fuzz/api.go \
+benchmarks.go = \
+ tests/benchmarks/exec.go \
+ tests/benchmarks/query.go \
+
+tests/benchmarks/exec.a: tests/benchmarks/exec.go
+tests/benchmarks/query.a: tests/benchmarks/query.go
tests/functional/extension.a: tests/functional/extension.go
tests/functional/json.a: tests/functional/json.go
tests/functional/libbuild.a: tests/functional/libbuild.go
tests/functional/limit.a: tests/functional/limit.go
tests/fuzz/api.a: tests/fuzz/api.go
+tests/benchmarks/exec.bin: tests/benchmarks/exec.a
+tests/benchmarks/query.bin: tests/benchmarks/query.a
tests/functional/extension.bin: tests/functional/extension.a
tests/functional/json.bin: tests/functional/json.a
tests/functional/libbuild.bin: tests/functional/libbuild.a
tests/functional/limit.bin: tests/functional/limit.a
tests/fuzz/api.bin: tests/fuzz/api.a
+tests/benchmarks/exec.bin-check: tests/benchmarks/exec.bin
+tests/benchmarks/query.bin-check: tests/benchmarks/query.bin
tests/functional/extension.bin-check: tests/functional/extension.bin
tests/functional/json.bin-check: tests/functional/json.bin
tests/functional/libbuild.bin-check: tests/functional/libbuild.bin
diff --git a/mkdeps.sh b/mkdeps.sh
index 8ccfc69..1ff0acb 100755
--- a/mkdeps.sh
+++ b/mkdeps.sh
@@ -4,14 +4,14 @@ set -eu
export LANG=POSIX.UTF-8
-find tests/functional/*.go | varlist 'functional-tests.go'
find tests/functional/*.go -not -name extension.go | varlist 'functional-tests-butone.go'
-
-find tests/fuzz/*.go | varlist 'fuzz-targets.go'
+find tests/functional/*.go | varlist 'functional-tests.go'
+find tests/fuzz/*.go | varlist 'fuzz-targets.go'
+find tests/benchmarks/*.go | varlist 'benchmarks.go'
tfiles() {
- find tests/functional/*.go tests/fuzz/*.go | sort
+ find tests/functional/*.go tests/fuzz/*.go tests/benchmarks/*.go | sort
}
tfiles | sed 's/^\(.*\)\.go$/\1.a:\t\1.go/'
diff --git a/tests/benchmarks/exec.go b/tests/benchmarks/exec.go
new file mode 100644
index 0000000..11e4133
--- /dev/null
+++ b/tests/benchmarks/exec.go
@@ -0,0 +1,29 @@
+package main
+
+import (
+ "database/sql"
+ "flag"
+
+ _ "golite"
+)
+
+
+
+var nFlag = flag.Int("n", 1_000_000, "The number of iterations to execute")
+
+func main() {
+ flag.Parse()
+ n := *nFlag
+
+ db, err := sql.Open("sqlite3", "file:bench.db?mode=memory&cache=shared")
+ if err != nil {
+ panic(err)
+ }
+
+ for i := 0; i < n; i++ {
+ _, err = db.Exec("SELECT 1;")
+ if err != nil {
+ panic(err)
+ }
+ }
+}
diff --git a/tests/benchmarks/query.go b/tests/benchmarks/query.go
new file mode 100644
index 0000000..b56e186
--- /dev/null
+++ b/tests/benchmarks/query.go
@@ -0,0 +1,40 @@
+package main
+
+import (
+ "database/sql"
+ "flag"
+
+ _ "golite"
+)
+
+
+
+var nFlag = flag.Int("n", 100_000, "The number of iterations to execute")
+
+func main() {
+ flag.Parse()
+ n := *nFlag
+
+ db, err := sql.Open("sqlite3", "file:benchdb?mode=memory&cache=shared")
+ if err != nil {
+ panic(err)
+ }
+
+ var (
+ S sql.NullString
+ I int
+ f float64
+ s string
+ )
+ for i := 0; i < n; i++ {
+ err = db.QueryRow("SELECT NULL, 1, 1.1, 'string';").Scan(
+ &S,
+ &I,
+ &f,
+ &s,
+ )
+ if err != nil {
+ panic(err)
+ }
+ }
+}
diff --git a/tests/fuzz/api.go b/tests/fuzz/api.go
index 50a19d2..0d6db03 100644
--- a/tests/fuzz/api.go
+++ b/tests/fuzz/api.go
@@ -26,9 +26,9 @@ func main() {
}
deps := testdeps.TestDeps{}
- tests := []testing.InternalTest {}
- benchmarks := []testing.InternalBenchmark{}
- examples := []testing.InternalExample {}
+ tests := []testing.InternalTest {}
+ benchmarks := []testing.InternalBenchmark{}
+ examples := []testing.InternalExample {}
m := testing.MainStart(deps, tests, benchmarks, fuzzTargets, examples)
os.Exit(m.Run())
}