diff options
author | EuAndreh <eu@euandre.org> | 2024-10-02 13:43:47 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-10-02 13:43:47 -0300 |
commit | e6561e006273edc64baf6b3af30e26a3817214d2 (patch) | |
tree | 940042d3d791672caccc43b1056d8bc4078bdacc | |
parent | Makefile: Add fuzz target setup (diff) | |
download | golite-e6561e006273edc64baf6b3af30e26a3817214d2.tar.gz golite-e6561e006273edc64baf6b3af30e26a3817214d2.tar.xz |
Makefile: Setup benchmarking skeleton
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | Makefile | 19 | ||||
-rw-r--r-- | deps.mk | 16 | ||||
-rwxr-xr-x | mkdeps.sh | 8 | ||||
-rw-r--r-- | tests/benchmarks/exec.go | 29 | ||||
-rw-r--r-- | tests/benchmarks/query.go | 40 | ||||
-rw-r--r-- | tests/fuzz/api.go | 6 |
7 files changed, 104 insertions, 16 deletions
@@ -8,3 +8,5 @@ /tests/functional/*.so /tests/fuzz/*.a /tests/fuzz/*.bin +/tests/benchmarks/*.a +/tests/benchmarks/*.bin @@ -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) @@ -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 @@ -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()) } |