From 10116f925d66982d55b55f48556880f8803bf6b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sad=C4=B1k=20S=C3=BCnb=C3=BCl?=
<109942759+SadikSunbul@users.noreply.github.com>
Date: Mon, 3 Feb 2025 21:48:06 +0300
Subject: [PATCH] workflow added
---
.github/workflows/test-leveldb.yml | 27 ++++++++++++++
README.md | 1 +
leveldb/leveldb_test.go | 58 ++++++++++++++++++++++++++++++
3 files changed, 86 insertions(+)
create mode 100644 .github/workflows/test-leveldb.yml
diff --git a/.github/workflows/test-leveldb.yml b/.github/workflows/test-leveldb.yml
new file mode 100644
index 00000000..98a479a0
--- /dev/null
+++ b/.github/workflows/test-leveldb.yml
@@ -0,0 +1,27 @@
+on:
+ push:
+ branches:
+ - master
+ - main
+ paths:
+ - 'leveldb/**'
+ pull_request:
+ paths:
+ - 'leveldb/**'
+name: "Tests LevelDB"
+jobs:
+ Tests:
+ strategy:
+ matrix:
+ go-version:
+ - 1.23.x
+ runs-on: ubuntu-latest
+ steps:
+ - name: Fetch Repository
+ uses: actions/checkout@v4
+ - name: Install Go
+ uses: actions/setup-go@v5
+ with:
+ go-version: '${{ matrix.go-version }}'
+ - name: Test LevelDB
+ run: cd ./leveldb && go test ./... -v -race
diff --git a/README.md b/README.md
index 8ec2fcb8..3f2352c1 100644
--- a/README.md
+++ b/README.md
@@ -77,3 +77,4 @@ type Storage interface {
- [SQLite3](./sqlite3/README.md)
- [ClickHouse](./clickhouse/README.md)
- [Valkey](./valkey/README.md)
+- [LevelDB](./leveldb/README.md)
diff --git a/leveldb/leveldb_test.go b/leveldb/leveldb_test.go
index 9b12086e..062acc2d 100644
--- a/leveldb/leveldb_test.go
+++ b/leveldb/leveldb_test.go
@@ -1,6 +1,7 @@
package leveldb
import (
+ "fmt"
"os"
"testing"
"time"
@@ -164,3 +165,60 @@ func Test_GarbageCollection_BeforeWorking(t *testing.T) {
err = removeAllFiles("./fiber.leveldb")
require.Nil(t, err)
}
+
+func Benchmark_Set(b *testing.B) {
+ db := New()
+ defer func() {
+ db.Close()
+ _ = removeAllFiles("./fiber.leveldb")
+ }()
+
+ b.ResetTimer()
+ b.RunParallel(func(pb *testing.PB) {
+ i := 0
+ for pb.Next() {
+ key := []byte(fmt.Sprintf("key_%d", i))
+ value := []byte(fmt.Sprintf("value_%d", i))
+ _ = db.Set(key, value, 0)
+ i++
+ }
+ })
+}
+
+func Benchmark_Get(b *testing.B) {
+ db := New()
+ defer func() {
+ db.Close()
+ _ = removeAllFiles("./fiber.leveldb")
+ }()
+
+ key := []byte("test_key")
+ value := []byte("test_value")
+ _ = db.Set(key, value, 0)
+
+ b.ResetTimer()
+ b.RunParallel(func(pb *testing.PB) {
+ for pb.Next() {
+ _, _ = db.Get(key)
+ }
+ })
+}
+
+func Benchmark_Delete(b *testing.B) {
+ db := New()
+ defer func() {
+ db.Close()
+ _ = removeAllFiles("./fiber.leveldb")
+ }()
+
+ b.ResetTimer()
+ b.RunParallel(func(pb *testing.PB) {
+ i := 0
+ for pb.Next() {
+ key := fmt.Sprintf("key_%d", i)
+ _ = db.Set([]byte(key), []byte("value"), 0)
+ _ = db.Delete(key)
+ i++
+ }
+ })
+}