Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add db grpc server #148

Merged
merged 14 commits into from
Jul 6, 2023
Merged
7 changes: 5 additions & 2 deletions cluster/region/region_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,11 @@ func ReturnNewDB() *engine.DB {
func destroyRegion(r Region) {
// Close the region's database
db := r.(*TestRegionStruct).db
_ = db.Close()
err := os.RemoveAll(dirpath)
err := db.Close()
if err != nil {
return
}
err = os.RemoveAll(dirpath)
if err != nil {
return
}
Expand Down
10 changes: 0 additions & 10 deletions cmd/cli/flydb.go

This file was deleted.

2 changes: 1 addition & 1 deletion cmd/app.go → cmd/client/app.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cmd
package client

import (
"fmt"
Expand Down
19 changes: 19 additions & 0 deletions cmd/client/cli/flydb-client.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package main

import (
"fmt"
"github.com/ByteStorage/FlyDB/cmd/client"
"github.com/desertbit/grumble"
"os"
)

func main() {
if len(os.Args) != 2 {
fmt.Println("usage: flydb-cli [addr]")
return
}
client.Addr = os.Args[1]
os.Args = os.Args[:1]
// start client CLI
grumble.Main(client.App)
}
37 changes: 17 additions & 20 deletions cmd/data.go → cmd/client/data.go
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
package cmd
package client

import (
"fmt"
"github.com/ByteStorage/FlyDB/engine/grpc/client"
"github.com/desertbit/grumble"
)

var Addr string

func newClient() *client.Client {
return &client.Client{
Addr: Addr,
}
}

func putData(c *grumble.Context) error {
key := c.Args.String("key")
value := c.Args.String("value")
if key == "" || value == "" {
fmt.Println("key or value is empty")
return nil
}
if db == nil {
fmt.Println("start server first")
return nil
}
err := db.Put([]byte(key), []byte(value))
err := newClient().Put([]byte(key), []byte(value))
if err != nil {
fmt.Println("put data error: ", err)
return err
Expand All @@ -31,11 +36,7 @@ func getData(c *grumble.Context) error {
fmt.Println("key is empty")
return nil
}
if db == nil {
fmt.Println("start server first")
return nil
}
value, err := db.Get([]byte(key))
value, err := newClient().Get([]byte(key))
if err != nil {
fmt.Println("get data error: ", err)
return err
Expand All @@ -50,11 +51,7 @@ func deleteKey(c *grumble.Context) error {
fmt.Println("key is empty")
return nil
}
if db == nil {
fmt.Println("start server first")
return nil
}
err := db.Delete([]byte(key))
err := newClient().Del([]byte(key))
if err != nil {
fmt.Println("delete key error: ", err)
return err
Expand All @@ -64,11 +61,11 @@ func deleteKey(c *grumble.Context) error {
}

func getKeys(c *grumble.Context) error {
if db == nil {
fmt.Println("start server first")
return nil
list, err := newClient().Keys()
if err != nil {
fmt.Println("get keys error: ", err)
return err
}
list := db.GetListKeys()
fmt.Println("Total keys: ", len(list))
for i, bytes := range list {
fmt.Printf(string(bytes[:]) + "\t")
Expand Down
25 changes: 2 additions & 23 deletions cmd/root.go → cmd/client/root.go
Original file line number Diff line number Diff line change
@@ -1,28 +1,8 @@
package cmd
package client

import (
"github.com/desertbit/grumble"
)
import "github.com/desertbit/grumble"

func register(app *grumble.App) {
app.AddCommand(&grumble.Command{
Name: "start",
Help: "start server",
Run: startServer,
})

app.AddCommand(&grumble.Command{
Name: "stop",
Help: "stop server",
Run: stopServer,
})

app.AddCommand(&grumble.Command{
Name: "clean",
Help: "clean server",
Run: cleanServer,
})

app.AddCommand(&grumble.Command{
Name: "put",
Help: "put data",
Expand Down Expand Up @@ -56,5 +36,4 @@ func register(app *grumble.App) {
Help: "list keys",
Run: getKeys,
})

}
78 changes: 0 additions & 78 deletions cmd/server.go

This file was deleted.

28 changes: 28 additions & 0 deletions cmd/server/cli/flydb-server.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package main

import (
"fmt"
"github.com/ByteStorage/FlyDB/cmd/server"
"os"
)

func main() {
args := os.Args
if len(args) >= 2 {
fmt.Println("Usage: flydb-server [start|clean|stop]")
return
}
if len(args) == 1 {
//start server
server.StartServer()
return
}
switch args[1] {
case "start":
server.StartServer()
case "stop":
server.StopServer()
case "clean":
server.CleanServer()
}
}
27 changes: 27 additions & 0 deletions cmd/server/server.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package server

import (
"fmt"
"github.com/ByteStorage/FlyDB/config"
"github.com/ByteStorage/FlyDB/engine/grpc/service"
"github.com/ByteStorage/FlyDB/flydb"
)

func StartServer() {
options := config.DefaultOptions
db, err := flydb.NewFlyDB(options)
if err != nil {
fmt.Println("flydb start error: ", err)
return
}
s := service.NewService(config.DefaultAddr, db)
s.StartServer()
}

func StopServer() {
panic("implement me")
}

func CleanServer() {
panic("implement me")
}
4 changes: 4 additions & 0 deletions config/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ const (
ART
)

const (
DefaultAddr = "127.0.0.1:8999"
)

var DefaultOptions = Options{
DirPath: os.TempDir(),
DataFileSize: 256 * 1024 * 1024, // 256MB
Expand Down
2 changes: 1 addition & 1 deletion config/tcpConfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ type TcpServerConfiguration struct {
// Configuration is global tcp server config
var Configuration *TcpServerConfiguration

// Init init global tcp server config
// Init global tcp server config
func Init() *TcpServerConfiguration {
Configuration = &TcpServerConfiguration{
Host: "127.0.0.1",
Expand Down
8 changes: 6 additions & 2 deletions engine/batch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ import (
"github.com/stretchr/testify/assert"
"os"
"testing"
"time"
)

func TestDB_WriteBatch(t *testing.T) {
opts := config.DefaultOptions
dir, _ := os.MkdirTemp("", "flydb-batch-1")
opts.DirPath = dir
db, err := NewDB(opts)
defer destroyDB(db)
defer db.Clean()
assert.Nil(t, err)
assert.NotNil(t, db)

Expand Down Expand Up @@ -51,7 +52,7 @@ func TestDB_WriteBatchRestart(t *testing.T) {
dir, _ := os.MkdirTemp("", "flydb-batch-2")
opts.DirPath = dir
db, err := NewDB(opts)
defer destroyDB(db)
defer db.Clean()
assert.Nil(t, err)
assert.NotNil(t, db)

Expand All @@ -77,6 +78,8 @@ func TestDB_WriteBatchRestart(t *testing.T) {
assert.Nil(t, err)

db2, err := NewDB(opts)
time.Sleep(time.Millisecond * 100)
defer db2.Clean()
assert.Nil(t, err)

_, err = db2.Get(randkv.GetTestKey(1))
Expand All @@ -91,6 +94,7 @@ func TestDB_WriteBatch1(t *testing.T) {
dir := "/tmp/batch-3"
opts.DirPath = dir
db, err := NewDB(opts)
defer db.Clean()
assert.Nil(t, err)
assert.NotNil(t, db)

Expand Down
1 change: 1 addition & 0 deletions engine/benchmark/benchmark_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ func init() {
opts.DirPath = filepath.Join("benchmark", "flydbtest")

FlyDB, err = flydb.NewFlyDB(opts)
defer FlyDB.Clean()
if err != nil {
panic(err)
}
Expand Down
Loading