mirror of
https://github.com/talent-plan/tinykv.git
synced 2024-12-25 20:30:30 +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