Skip to content
This repository has been archived by the owner on Dec 9, 2024. It is now read-only.

Commit

Permalink
add stale-read test
Browse files Browse the repository at this point in the history
Signed-off-by: yisaer <[email protected]>
  • Loading branch information
Yisaer committed Jun 3, 2021
1 parent 95ffeda commit e9d1016
Show file tree
Hide file tree
Showing 6 changed files with 130 additions and 3 deletions.
2 changes: 1 addition & 1 deletion testcase/stale-read/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ FROM alpine:3.9

RUN apk update && apk add --no-cache wget bash sed
COPY ./bin/stale-read /bin/stale-read
ENTRYPOINT [ "/bin/cross-region" ]
ENTRYPOINT [ "/bin/stale-read" ]
52 changes: 51 additions & 1 deletion testcase/stale-read/bench.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,58 @@ func (c *SysbenchCase) InsertData(worker *sysbench.Worker, db *sql.DB) error {
}

func (c *SysbenchCase) Execute(worker *sysbench.Worker, db *sql.DB) error {
for i := 0; i < 100; i++ {
err := c.executeSET(db)
if err != nil {
return err
}
err = c.executeSTART(db)
if err != nil {
return err
}
err = c.executeSelect(db)
if err != nil {
return err
}
}
return nil
}

func (c *SysbenchCase) executeSET(db *sql.DB) error {
num := c.insertCount * c.rowsEachInsert
_, err := db.Exec("SET TRANSACTION READ ONLY AS OF TIMESTAMP tidb_bounded_staleness(DATE_SUB(NOW(), INTERVAL 10 SECOND)")
if err != nil {
return err
}
rows, err := db.Query("select id, k, c, pad from sbtest0 where k in (?, ?, ?)", rand.Intn(num), rand.Intn(num), rand.Intn(num))
defer rows.Close()
if err != nil {
return errors.WithStack(err)
}
return nil
}

func (c *SysbenchCase) executeSTART(db *sql.DB) error {
num := c.insertCount * c.rowsEachInsert
_, err := db.Exec("START TRANSACTION READ ONLY AS OF TIMESTAMP tidb_bounded_staleness(DATE_SUB(NOW(), INTERVAL 10 SECOND)")
if err != nil {
return err
}
rows, err := db.Query("select id, k, c, pad from sbtest0 where k in (?, ?, ?)", rand.Intn(num), rand.Intn(num), rand.Intn(num))
defer rows.Close()
if err != nil {
return errors.WithStack(err)
}
_, err = db.Exec("COMMIT")
if err != nil {
return err
}
return nil
}

func (c *SysbenchCase) executeSelect(db *sql.DB) error {
num := c.insertCount * c.rowsEachInsert
rows, err := db.Query("select id, k, c, pad from sbtest2 where k in (?, ?, ?)", rand.Intn(num), rand.Intn(num), rand.Intn(num))
rows, err := db.Query("select id, k, c, pad from sbtest0 as of timestamp tidb_bounded_staleness(DATE_SUB(NOW(), INTERVAL 10 SECOND) where k in (?, ?, ?)", rand.Intn(num), rand.Intn(num), rand.Intn(num))
defer rows.Close()
if err != nil {
return errors.WithStack(err)
Expand Down
1 change: 1 addition & 0 deletions testcase/stale-read/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ module github.com/pingcap/tipocket/testcase/stale-read
go 1.16

require (
github.com/prometheus/client_golang v1.3.1-0.20200127144639-990321423786
github.com/go-sql-driver/mysql v1.5.0
github.com/pingcap/errors v0.11.5-0.20201126102027-b0a155152ca3
github.com/pingcap/log v0.0.0-20201112100606-8f1e84a3abc8 // indirect
Expand Down
3 changes: 3 additions & 0 deletions testcase/stale-read/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -937,6 +937,7 @@ github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U=
github.com/prometheus/client_golang v1.3.1-0.20200127144639-990321423786/go.mod h1:cIZceDV9orWe5SBFow7Vjdqt/eJlN5AZVC1Q2Uz/M7g=
github.com/prometheus/client_golang v1.5.0 h1:Ctq0iGpCmr3jeP77kbF2UxgvRwzWWz+4Bh9/vJTyg1A=
github.com/prometheus/client_golang v1.5.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
Expand All @@ -949,6 +950,7 @@ github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7q
github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
github.com/prometheus/common v0.9.0/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
github.com/prometheus/common v0.9.1 h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X7U=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
Expand Down Expand Up @@ -1343,6 +1345,7 @@ golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
Expand Down
51 changes: 51 additions & 0 deletions testcase/stale-read/revive.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
ignoreGeneratedHeader = false
severity = "error"
confidence = 0.8
errorCode = -1
warningCode = -1

[rule.blank-imports]
[rule.context-as-argument]
[rule.dot-imports]
[rule.error-return]
[rule.error-strings]
[rule.error-naming]
[rule.exported]
#[rule.if-return]
[rule.var-naming]
[rule.package-comments]
[rule.range]
[rule.receiver-naming]
[rule.indent-error-flow]
#[rule.superfluous-else]
[rule.modifies-parameter]

# This can be checked by other tools like megacheck
[rule.unreachable-code]


# Currently this makes too much noise, but should add it in
# and perhaps ignore it in a few files
#[rule.confusing-naming]
# severity = "warning"
#[rule.confusing-results]
# severity = "warning"
#[rule.unused-parameter]
# severity = "warning"
#[rule.deep-exit]
# severity = "warning"
#[rule.flag-parameter]
# severity = "warning"



# Adding these will slow down the linter
# They are already provided by megacheck
# [rule.unexported-return]
# [rule.time-naming]
# [rule.errorf]

# Adding these will slow down the linter
# Not sure if they are already provided by megacheck
# [rule.var-declaration]
# [rule.context-keys-type]
24 changes: 23 additions & 1 deletion testcase/stale-read/stale-read.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ package staleread
import (
"context"
"fmt"
"github.com/pingcap/log"
"github.com/prometheus/client_golang/api"
v1 "github.com/prometheus/client_golang/api/prometheus/v1"
"go.uber.org/zap"
"time"

"github.com/pingcap/tipocket/pkg/cluster"
Expand All @@ -22,6 +26,7 @@ func (l ClientCreator) Create(node cluster.ClientNode) core.Client {

type staleReadClient struct {
sysBenchConf *sysbench.Config
promCli api.Client
initialized bool
}

Expand All @@ -44,18 +49,31 @@ func (c *staleReadClient) SetUp(ctx context.Context, _ []cluster.Node, cnodes []
},
Run: sysbench.RunConfig{
WorkerCount: 4,
Duration: 30 * time.Second,
Duration: 5 * time.Minute,
Task: sysCase,
},
Cleanup: sysCase,
}

cfg := api.Config{Address: fmt.Sprintf("http://%s", buildPrometheusSvcName(name, namespace))}
promCli, err := api.NewClient(cfg)
if err != nil {
return err
}
c.promCli = promCli
c.initialized = true
return nil
}

// SetUp...
func (c *staleReadClient) Start(ctx context.Context, cfg interface{}, cnodes []cluster.ClientNode) error {
sysbench.RunTest(c.sysBenchConf)
v1api := v1.NewAPI(c.promCli)
v, _, err := v1api.QueryRange(ctx, "", v1.Range{Start: time.Now().Add(-5 * time.Minute), End: time.Now(), Step: 15 * time.Second})
if err != nil {
return err
}
log.Info("metrics", zap.String("metrics", v.String()))
return nil
}

Expand All @@ -67,3 +85,7 @@ func (c *staleReadClient) TearDown(ctx context.Context, _ []cluster.ClientNode,
func buildTiDBSvcName(name, namespace string) string {
return fmt.Sprintf("%s-tidb.%s.svc:4000", name, namespace)
}

func buildPrometheusSvcName(name, namespace string) string {
return fmt.Sprintf("%s-prometheus.%s.svc:9090", name, namespace)
}

0 comments on commit e9d1016

Please sign in to comment.