mirror of
https://github.com/talent-plan/tinykv.git
synced 2024-12-27 05:10:19 +08:00
add .get_perf.sh
This commit is contained in:
parent
d0ecd597da
commit
b55eef8e62
82
scripts/.get_perf.sh
Normal file
82
scripts/.get_perf.sh
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
bench_file='
|
||||||
|
package test_raftstore
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
|
"strconv"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/pingcap-incubator/tinykv/kv/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestReadWrite(t *testing.T) {
|
||||||
|
nservers := 3
|
||||||
|
cfg := config.NewTestConfig()
|
||||||
|
cfg.RaftLogGcCountLimit = uint64(100)
|
||||||
|
cfg.RegionMaxSize = 300
|
||||||
|
cfg.RegionSplitSize = 200
|
||||||
|
cluster := NewTestCluster(nservers, cfg)
|
||||||
|
cluster.Start()
|
||||||
|
defer cluster.Shutdown()
|
||||||
|
|
||||||
|
electionTimeout := cfg.RaftBaseTickInterval * time.Duration(cfg.RaftElectionTimeoutTicks)
|
||||||
|
// Wait for leader election
|
||||||
|
time.Sleep(2 * electionTimeout)
|
||||||
|
|
||||||
|
nclients := 16
|
||||||
|
ch_tasks := make(chan int, 1000)
|
||||||
|
clnts := make([]chan bool, nclients)
|
||||||
|
for i := 0; i < nclients; i++ {
|
||||||
|
clnts[i] = make(chan bool, 1)
|
||||||
|
go func(cli int) {
|
||||||
|
defer func() {
|
||||||
|
clnts[cli] <- true
|
||||||
|
}()
|
||||||
|
for {
|
||||||
|
j, more := <-ch_tasks
|
||||||
|
if more {
|
||||||
|
key := fmt.Sprintf("%02d%08d", cli, j)
|
||||||
|
value := "x " + strconv.Itoa(j) + " y"
|
||||||
|
cluster.MustPut([]byte(key), []byte(value))
|
||||||
|
if (rand.Int() % 1000) < 500 {
|
||||||
|
value := cluster.Get([]byte(key))
|
||||||
|
if value == nil {
|
||||||
|
t.Fatal("value is emtpy")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
start := time.Now()
|
||||||
|
for i := 0; i < 10000; i++ {
|
||||||
|
ch_tasks <- i
|
||||||
|
}
|
||||||
|
close(ch_tasks)
|
||||||
|
for cli := 0; cli < nclients; cli++ {
|
||||||
|
ok := <-clnts[cli]
|
||||||
|
if ok == false {
|
||||||
|
t.Fatalf("failure")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elasped := time.Since(start)
|
||||||
|
t.Logf("QPS: %v", 10000 / elasped.Seconds())
|
||||||
|
}
|
||||||
|
'
|
||||||
|
|
||||||
|
echo "$bench_file" > kv/test_raftstore/bench_test.go
|
||||||
|
go test ./kv/test_raftstore/ -run ReadWrite -v > bench.log
|
||||||
|
score=$(grep QPS: bench.log | awk '{print $3}')
|
||||||
|
if [ $(expr $score \> 1000) ]; then
|
||||||
|
echo "PASS"
|
||||||
|
else
|
||||||
|
echo "FAILED"
|
||||||
|
fi
|
||||||
|
rm bench.log
|
Loading…
Reference in New Issue
Block a user