Skip to content

Commit

Permalink
client/http: add more interface for BR/lightning (#7602)
Browse files Browse the repository at this point in the history
ref #7300

Signed-off-by: lance6716 <lance6716@gmail.com>

Co-authored-by: ti-chi-bot[bot] <108142056+ti-chi-bot[bot]@users.noreply.github.com>
  • Loading branch information
lance6716 and ti-chi-bot[bot] committed Dec 21, 2023
1 parent d4ebef8 commit f15db4b
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
30 changes: 30 additions & 0 deletions client/http/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ type Client interface {
GetScheduleConfig(context.Context) (map[string]interface{}, error)
SetScheduleConfig(context.Context, map[string]interface{}) error
GetClusterVersion(context.Context) (string, error)
GetReplicateConfig(context.Context) (map[string]interface{}, error)
/* Scheduler-related interfaces */
GetSchedulers(context.Context) ([]string, error)
CreateScheduler(ctx context.Context, name string, storeID uint64) error
Expand All @@ -57,6 +58,7 @@ type Client interface {
GetAllPlacementRuleBundles(context.Context) ([]*GroupBundle, error)
GetPlacementRuleBundleByGroup(context.Context, string) (*GroupBundle, error)
GetPlacementRulesByGroup(context.Context, string) ([]*Rule, error)
GetPlacementRule(context.Context, string, string) (*Rule, error)
SetPlacementRule(context.Context, *Rule) error
SetPlacementRuleInBatch(context.Context, []*RuleOp) error
SetPlacementRuleBundles(context.Context, []*GroupBundle, bool) error
Expand Down Expand Up @@ -359,6 +361,20 @@ func (c *client) GetClusterVersion(ctx context.Context) (string, error) {
return version, nil
}

// GetReplicateConfig gets the replication configurations.
func (c *client) GetReplicateConfig(ctx context.Context) (map[string]interface{}, error) {
var config map[string]interface{}
err := c.request(ctx, newRequestInfo().
WithName(getReplicateConfigName).
WithURI(ReplicateConfig).
WithMethod(http.MethodGet).
WithResp(&config))
if err != nil {
return nil, err
}
return config, nil
}

// GetAllPlacementRuleBundles gets all placement rules bundles.
func (c *client) GetAllPlacementRuleBundles(ctx context.Context) ([]*GroupBundle, error) {
var bundles []*GroupBundle
Expand Down Expand Up @@ -401,6 +417,20 @@ func (c *client) GetPlacementRulesByGroup(ctx context.Context, group string) ([]
return rules, nil
}

// GetPlacementRule gets the placement rule by group and ID.
func (c *client) GetPlacementRule(ctx context.Context, group, id string) (*Rule, error) {
var rule Rule
err := c.request(ctx, newRequestInfo().
WithName(getPlacementRuleName).
WithURI(PlacementRuleByGroupAndID(group, id)).
WithMethod(http.MethodGet).
WithResp(&rule))
if err != nil {
return nil, err
}
return &rule, nil
}

// SetPlacementRule sets the placement rule.
func (c *client) SetPlacementRule(ctx context.Context, rule *Rule) error {
ruleJSON, err := json.Marshal(rule)
Expand Down
2 changes: 2 additions & 0 deletions client/http/request_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,14 @@ const (
getScheduleConfigName = "GetScheduleConfig"
setScheduleConfigName = "SetScheduleConfig"
getClusterVersionName = "GetClusterVersion"
getReplicateConfigName = "GetReplicateConfig"
getSchedulersName = "GetSchedulers"
createSchedulerName = "CreateScheduler"
setSchedulerDelayName = "SetSchedulerDelay"
getAllPlacementRuleBundlesName = "GetAllPlacementRuleBundles"
getPlacementRuleBundleByGroupName = "GetPlacementRuleBundleByGroup"
getPlacementRulesByGroupName = "GetPlacementRulesByGroup"
getPlacementRuleName = "GetPlacementRule"
setPlacementRuleName = "SetPlacementRule"
setPlacementRuleInBatchName = "SetPlacementRuleInBatch"
setPlacementRuleBundlesName = "SetPlacementRuleBundles"
Expand Down
14 changes: 14 additions & 0 deletions tests/integrations/client/http_client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,9 @@ func (suite *httpClientTestSuite) TearDownSuite() {

func (suite *httpClientTestSuite) TestMeta() {
re := suite.Require()
replicateConfig, err := suite.client.GetReplicateConfig(suite.ctx)
re.NoError(err)
re.Equal(3.0, replicateConfig["max-replicas"])
region, err := suite.client.GetRegionByID(suite.ctx, 10)
re.NoError(err)
re.Equal(int64(10), region.ID)
Expand Down Expand Up @@ -270,6 +273,17 @@ func (suite *httpClientTestSuite) checkRule(
re *require.Assertions,
rule *pd.Rule, totalRuleCount int, exist bool,
) {
if exist {
got, err := suite.client.GetPlacementRule(suite.ctx, rule.GroupID, rule.ID)
re.NoError(err)
// skip comparison of the generated field
got.StartKeyHex = rule.StartKeyHex
got.EndKeyHex = rule.EndKeyHex
re.Equal(rule, got)
} else {
_, err := suite.client.GetPlacementRule(suite.ctx, rule.GroupID, rule.ID)
re.ErrorContains(err, http.StatusText(http.StatusNotFound))
}
// Check through the `GetPlacementRulesByGroup` API.
rules, err := suite.client.GetPlacementRulesByGroup(suite.ctx, rule.GroupID)
re.NoError(err)
Expand Down

0 comments on commit f15db4b

Please sign in to comment.