Skip to content

Commit

Permalink
Support encoded plan in plan meta (#156)
Browse files Browse the repository at this point in the history
  • Loading branch information
zhongzc authored Jul 7, 2022
1 parent d6ec5f4 commit 1869d7b
Show file tree
Hide file tree
Showing 40 changed files with 2,047 additions and 140 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: '1.16'
go-version: '1.18'
- name: Format
run: make fmt
- name: Lint
Expand Down
3 changes: 2 additions & 1 deletion component/conprof/contprof.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package conprof

import (
"github.com/genjidb/genji"
"github.com/pingcap/ng-monitoring/component/conprof/scrape"
"github.com/pingcap/ng-monitoring/component/conprof/store"
"github.com/pingcap/ng-monitoring/component/topology"

"github.com/genjidb/genji"
)

var (
Expand Down
5 changes: 3 additions & 2 deletions component/conprof/http/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ import (
"strings"
"time"

"github.com/gin-gonic/gin"
"github.com/pingcap/log"
"github.com/pingcap/ng-monitoring/component/conprof"
"github.com/pingcap/ng-monitoring/component/conprof/meta"
"github.com/pingcap/ng-monitoring/component/topology"
"github.com/pingcap/ng-monitoring/config"

"github.com/gin-gonic/gin"
"github.com/pingcap/log"
"go.uber.org/zap"
)

Expand Down
5 changes: 3 additions & 2 deletions component/conprof/http/api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,14 @@ import (
"testing"
"time"

"github.com/genjidb/genji"
"github.com/gin-gonic/gin"
"github.com/pingcap/ng-monitoring/component/conprof"
"github.com/pingcap/ng-monitoring/component/conprof/meta"
"github.com/pingcap/ng-monitoring/component/topology"
"github.com/pingcap/ng-monitoring/config"
"github.com/pingcap/ng-monitoring/utils/testutil"

"github.com/genjidb/genji"
"github.com/gin-gonic/gin"
"github.com/stretchr/testify/require"
)

Expand Down
3 changes: 2 additions & 1 deletion component/conprof/scrape/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@ import (
"sync"
"time"

"github.com/pingcap/log"
"github.com/pingcap/ng-monitoring/component/conprof/meta"
"github.com/pingcap/ng-monitoring/component/conprof/store"
"github.com/pingcap/ng-monitoring/component/topology"
"github.com/pingcap/ng-monitoring/config"
"github.com/pingcap/ng-monitoring/utils"

"github.com/pingcap/log"
commonconfig "github.com/prometheus/common/config"
"go.uber.org/zap"
)
Expand Down
3 changes: 2 additions & 1 deletion component/conprof/scrape/manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ import (
"testing"
"time"

"github.com/pingcap/log"
"github.com/pingcap/ng-monitoring/component/conprof/meta"
"github.com/pingcap/ng-monitoring/component/conprof/store"
"github.com/pingcap/ng-monitoring/component/topology"
"github.com/pingcap/ng-monitoring/config"
"github.com/pingcap/ng-monitoring/utils/testutil"

"github.com/pingcap/log"
"github.com/stretchr/testify/require"
"go.uber.org/goleak"
"go.uber.org/zap"
Expand Down
3 changes: 2 additions & 1 deletion component/conprof/scrape/scrape.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@ import (
"strconv"
"time"

"github.com/pingcap/log"
"github.com/pingcap/ng-monitoring/component/conprof/meta"
"github.com/pingcap/ng-monitoring/component/conprof/store"
"github.com/pingcap/ng-monitoring/config"

"github.com/pingcap/log"
"github.com/pkg/errors"
"go.uber.org/atomic"
"go.uber.org/zap"
Expand Down
5 changes: 3 additions & 2 deletions component/conprof/store/gc.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@ import (
"fmt"
"time"

"github.com/pingcap/ng-monitoring/component/conprof/meta"
"github.com/pingcap/ng-monitoring/config"

"github.com/genjidb/genji/document"
"github.com/genjidb/genji/types"
"github.com/pingcap/log"
"github.com/pingcap/ng-monitoring/component/conprof/meta"
"github.com/pingcap/ng-monitoring/config"
"go.uber.org/zap"
)

Expand Down
5 changes: 3 additions & 2 deletions component/conprof/store/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@ import (
"sync"
"time"

"github.com/pingcap/ng-monitoring/component/conprof/meta"
"github.com/pingcap/ng-monitoring/utils"

"github.com/genjidb/genji"
"github.com/genjidb/genji/document"
"github.com/genjidb/genji/types"
"github.com/pingcap/log"
"github.com/pingcap/ng-monitoring/component/conprof/meta"
"github.com/pingcap/ng-monitoring/utils"
"github.com/valyala/gozstd"
"go.uber.org/atomic"
"go.uber.org/zap"
Expand Down
7 changes: 4 additions & 3 deletions component/conprof/store/store_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,15 @@ import (
"testing"
"time"

"github.com/pingcap/ng-monitoring/component/conprof/meta"
"github.com/pingcap/ng-monitoring/config"
"github.com/pingcap/ng-monitoring/utils/testutil"

"github.com/dgraph-io/badger/v3"
"github.com/genjidb/genji"
"github.com/genjidb/genji/document"
"github.com/genjidb/genji/engine/badgerengine"
"github.com/genjidb/genji/types"
"github.com/pingcap/ng-monitoring/component/conprof/meta"
"github.com/pingcap/ng-monitoring/config"
"github.com/pingcap/ng-monitoring/utils/testutil"
"github.com/stretchr/testify/require"
)

Expand Down
3 changes: 2 additions & 1 deletion component/domain/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ import (
"sync/atomic"
"time"

"github.com/pingcap/log"
"github.com/pingcap/ng-monitoring/config"

"github.com/pingcap/log"
"github.com/pingcap/tidb-dashboard/util/client/httpclient"
"github.com/pingcap/tidb-dashboard/util/client/pdclient"
clientv3 "go.etcd.io/etcd/client/v3"
Expand Down
1 change: 1 addition & 0 deletions component/domain/domain.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (

"github.com/pingcap/ng-monitoring/config"
"github.com/pingcap/ng-monitoring/utils"

"github.com/pingcap/tidb-dashboard/util/client/pdclient"
clientv3 "go.etcd.io/etcd/client/v3"
)
Expand Down
1 change: 1 addition & 0 deletions component/domain/domain_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

"github.com/pingcap/ng-monitoring/config"
"github.com/pingcap/ng-monitoring/utils/testutil"

"github.com/stretchr/testify/require"
"go.uber.org/goleak"
)
Expand Down
3 changes: 2 additions & 1 deletion component/topology/discovery.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ import (
"sync/atomic"
"time"

"github.com/pingcap/log"
"github.com/pingcap/ng-monitoring/component/domain"
"github.com/pingcap/ng-monitoring/utils"

"github.com/pingcap/log"
"github.com/pingcap/tidb-dashboard/util/topo"
"github.com/pingcap/tidb-dashboard/util/topo/pdtopo"
"go.uber.org/zap"
Expand Down
3 changes: 2 additions & 1 deletion component/topology/syncer.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@ import (
"strconv"
"time"

"github.com/pingcap/log"
"github.com/pingcap/ng-monitoring/component/domain"
"github.com/pingcap/ng-monitoring/config"
"github.com/pingcap/ng-monitoring/utils"
"github.com/pingcap/ng-monitoring/utils/printer"

"github.com/pingcap/log"
clientv3 "go.etcd.io/etcd/client/v3"
"go.etcd.io/etcd/client/v3/concurrency"
"go.uber.org/zap"
Expand Down
3 changes: 2 additions & 1 deletion component/topology/topology_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/pingcap/ng-monitoring/config"
"github.com/pingcap/ng-monitoring/utils/printer"
"github.com/pingcap/ng-monitoring/utils/testutil"

"github.com/stretchr/testify/require"
clientv3 "go.etcd.io/etcd/client/v3"
"go.etcd.io/etcd/tests/v3/integration"
Expand Down Expand Up @@ -39,7 +40,7 @@ func TestTopology(t *testing.T) {
t.Skip("integration.NewClusterV3 will create file contains a colon which is not allowed on Windows")
}

integration.BeforeTest(t)
integration.BeforeTestExternal(t)
cluster := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 1})
defer cluster.Terminate(t)
mockPD := testutil.MockPDHTTPServer{}
Expand Down
30 changes: 30 additions & 0 deletions component/topsql/codec/plan/plan.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package plan

import (
"encoding/base64"

"github.com/golang/snappy"
"github.com/pingcap/tidb/util/plancodec"
)

func Decode(planString string) (string, error) {
binaryPlan, err := decompress(planString)
if err != nil {
return "", err
}

return plancodec.DecodeNormalizedPlan(binaryPlan)
}

func decompress(str string) (string, error) {
decodeBytes, err := base64.StdEncoding.DecodeString(str)
if err != nil {
return "", err
}

bs, err := snappy.Decode(nil, decodeBytes)
if err != nil {
return "", err
}
return string(bs), nil
}
35 changes: 35 additions & 0 deletions component/topsql/codec/plan/plan_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package plan_test

import (
"io/ioutil"
"testing"

"github.com/pingcap/ng-monitoring/component/topsql/codec/plan"

"github.com/stretchr/testify/require"
)

func TestBigPlan(t *testing.T) {
t.Parallel()

bigEncodedPlan, err := ioutil.ReadFile("testdata/big_encoded_plan.txt")
require.NoError(t, err)

planText, err := plan.Decode(string(bigEncodedPlan))
require.NoError(t, err)

bigDecodedPlan, err := ioutil.ReadFile("testdata/big_decoded_plan.txt")
require.NoError(t, err)
require.Equal(t, planText, string(bigDecodedPlan))
}

func TestSmallPlan(t *testing.T) {
t.Parallel()

encodedPlan := "WrAwCTM4CTAJdGFibGU6R0xPQkFMX1ZBUklBQkxFUywgaW5kZXg6UFJJTUFSWSgRGZBfTkFNRSksIGtlZXAgb3JkZXI6ZmFsc2UsIGRlc2M6ZmFsc2UK"
expectedPlanText := "\tBatch_Point_Get\troot\ttable:GLOBAL_VARIABLES, index:PRIMARY(VARIABLE_NAME), keep order:false, desc:false"

planText, err := plan.Decode(encodedPlan)
require.NoError(t, err)
require.Equal(t, planText, expectedPlanText)
}
Loading

0 comments on commit 1869d7b

Please sign in to comment.