Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Time-range for XRANGE filtering #225

Merged
merged 2 commits into from
Nov 3, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pkg/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,9 @@ func query(ctx context.Context, query backend.DataQuery, client redisClient, qm
case models.XInfoStream:
return queryXInfoStream(qm, client)
case models.XRange:
return queryXRange(qm, client)
return queryXRange(from, to, qm, client)
case models.XRevRange:
return queryXRevRange(qm, client)
return queryXRevRange(from, to, qm, client)

/**
* Cluster
Expand Down
8 changes: 4 additions & 4 deletions pkg/redis-gears_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
*/
func TestRgPystatsIntegration(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

// Response
Expand All @@ -37,7 +37,7 @@ func TestRgPystatsIntegration(t *testing.T) {
*/
func TestRgDumpregistrationsIntegration(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

// Response
Expand Down Expand Up @@ -70,7 +70,7 @@ func TestRgPyexecuteIntegration(t *testing.T) {
)
}

radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10, radix.PoolConnFunc(customConnFunc))
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10, radix.PoolConnFunc(customConnFunc))
client := radixV3Impl{radixClient: radixClient}

// Results
Expand Down Expand Up @@ -127,7 +127,7 @@ func TestRgPyexecuteIntegration(t *testing.T) {
*/
func TestRgDumpReqsIntegration(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

// Response
Expand Down
6 changes: 3 additions & 3 deletions pkg/redis-graph_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import (
*/
func TestGraphQueryIntegration(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

// Response
Expand All @@ -39,7 +39,7 @@ func TestGraphQueryIntegration(t *testing.T) {

func TestGraphQueryIntegrationWithoutRelations(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

// Response
Expand All @@ -53,7 +53,7 @@ func TestGraphQueryIntegrationWithoutRelations(t *testing.T) {

func TestGraphQueryIntegrationWithoutNodes(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

// Response
Expand Down
12 changes: 6 additions & 6 deletions pkg/redis-stream.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,17 +95,17 @@ func queryXInfoStream(qm queryModel, client redisClient) backend.DataResponse {
*
* @see https://redis.io/commands/xrange
*/
func queryXRange(qm queryModel, client redisClient) backend.DataResponse {
func queryXRange(from int64, to int64, qm queryModel, client redisClient) backend.DataResponse {
response := backend.DataResponse{}

// Start
start := "-"
start := fmt.Sprint(from) + "-0"
if qm.Start != "" {
start = qm.Start
}

// End
end := "+"
end := fmt.Sprint(to) + "-0"
if qm.End != "" {
end = qm.End
}
Expand Down Expand Up @@ -141,17 +141,17 @@ func queryXRange(qm queryModel, client redisClient) backend.DataResponse {
*
* @see https://redis.io/commands/xrevrange
*/
func queryXRevRange(qm queryModel, client redisClient) backend.DataResponse {
func queryXRevRange(from int64, to int64, qm queryModel, client redisClient) backend.DataResponse {
response := backend.DataResponse{}

// Start
start := "-"
start := fmt.Sprint(from) + "-0"
if qm.Start != "" {
start = qm.Start
}

// End
end := "+"
end := fmt.Sprint(to) + "-0"
if qm.End != "" {
end = qm.End
}
Expand Down
18 changes: 9 additions & 9 deletions pkg/redis-stream_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
*/
func TestXInfoStreamIntegration(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

// Customers
Expand All @@ -41,11 +41,11 @@ func TestXInfoStreamIntegration(t *testing.T) {

func TestXRangeStreamIntegration(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

t.Run("query stream queue:customers", func(t *testing.T) {
resp := queryXRange(queryModel{Key: "queue:customers"}, &client)
resp := queryXRange(1611019111439, 1611019111985, queryModel{Key: "queue:customers"}, &client)
require.Len(t, resp.Frames, 1)
require.Len(t, resp.Frames[0].Fields, 3)
require.Equal(t, "$streamId", resp.Frames[0].Fields[0].Name)
Expand All @@ -55,7 +55,7 @@ func TestXRangeStreamIntegration(t *testing.T) {
})

t.Run("query stream queue:customers with COUNT", func(t *testing.T) {
resp := queryXRange(queryModel{Key: "queue:customers", Count: 3}, &client)
resp := queryXRange(1611019111439, 1611019111985, queryModel{Key: "queue:customers", Count: 3}, &client)
require.Len(t, resp.Frames, 1)
require.Len(t, resp.Frames[0].Fields, 3)
require.Equal(t, "$streamId", resp.Frames[0].Fields[0].Name)
Expand All @@ -65,7 +65,7 @@ func TestXRangeStreamIntegration(t *testing.T) {
})

t.Run("query stream queue:customers with start and end", func(t *testing.T) {
resp := queryXRange(queryModel{Key: "queue:customers", Start: "1611019111439-0", End: "1611019111985-0"}, &client)
resp := queryXRange(0, 0, queryModel{Key: "queue:customers", Start: "1611019111439-0", End: "1611019111985-0"}, &client)
require.Len(t, resp.Frames, 1)
require.Len(t, resp.Frames[0].Fields, 3)
require.Equal(t, "$streamId", resp.Frames[0].Fields[0].Name)
Expand All @@ -83,11 +83,11 @@ func TestXRangeStreamIntegration(t *testing.T) {

func TestXRevRangeStreamIntegration(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

t.Run("query stream queue:customers", func(t *testing.T) {
resp := queryXRange(queryModel{Key: "queue:customers"}, &client)
resp := queryXRange(1611019111439, 1611019111985, queryModel{Key: "queue:customers"}, &client)
require.Len(t, resp.Frames, 1)
require.Len(t, resp.Frames[0].Fields, 3)
require.Equal(t, "$streamId", resp.Frames[0].Fields[0].Name)
Expand All @@ -97,7 +97,7 @@ func TestXRevRangeStreamIntegration(t *testing.T) {
})

t.Run("query stream queue:customers with COUNT", func(t *testing.T) {
resp := queryXRevRange(queryModel{Key: "queue:customers", Count: 3}, &client)
resp := queryXRevRange(1611019111439, 1611019111985, queryModel{Key: "queue:customers", Count: 3}, &client)
require.Len(t, resp.Frames, 1)
require.Len(t, resp.Frames[0].Fields, 3)
require.Equal(t, "$streamId", resp.Frames[0].Fields[0].Name)
Expand All @@ -108,7 +108,7 @@ func TestXRevRangeStreamIntegration(t *testing.T) {
})

t.Run("query stream queue:customers with start and end", func(t *testing.T) {
resp := queryXRevRange(queryModel{Key: "queue:customers", End: "1611019111985-0", Start: "1611019111439-0"}, &client)
resp := queryXRevRange(0, 0, queryModel{Key: "queue:customers", End: "1611019111985-0", Start: "1611019111439-0"}, &client)
require.Len(t, resp.Frames, 1)
require.Len(t, resp.Frames[0].Fields, 3)
require.Equal(t, "$streamId", resp.Frames[0].Fields[0].Name)
Expand Down
8 changes: 4 additions & 4 deletions pkg/redis-stream_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ func TestQueryXRange(t *testing.T) {
}

// Response
resp := queryXRange(queryModel{Command: models.XRange, Key: "queue:customers", Start: "1611019111439-0", End: "1611019111985-0", Count: 4}, &client)
resp := queryXRange(0, 0, queryModel{Command: models.XRange, Key: "queue:customers", Start: "1611019111439-0", End: "1611019111985-0", Count: 4}, &client)
require.Len(t, resp.Frames, 1)
require.Len(t, resp.Frames[0].Fields, 6)
require.Equal(t, "$time", resp.Frames[0].Fields[1].Name)
Expand Down Expand Up @@ -201,7 +201,7 @@ func TestQueryXRange(t *testing.T) {
client := testClient{err: errors.New("some error")}

// Response
resp := queryXRange(queryModel{Command: models.XRange, Key: "queue:customers", Start: "1611019111439-0", End: "1611019111985-0"}, &client)
resp := queryXRange(0, 0, queryModel{Command: models.XRange, Key: "queue:customers", Start: "1611019111439-0", End: "1611019111985-0"}, &client)
require.Len(t, resp.Frames, 0)
require.EqualError(t, resp.Error, "some error")
})
Expand Down Expand Up @@ -257,7 +257,7 @@ func TestQueryXRevRange(t *testing.T) {
}

// Response
resp := queryXRevRange(queryModel{Command: models.XRevRange, Key: "queue:customers", End: "1611019111985-0", Start: "1611019111439-0", Count: 4}, &client)
resp := queryXRevRange(0, 0, queryModel{Command: models.XRevRange, Key: "queue:customers", End: "1611019111985-0", Start: "1611019111439-0", Count: 4}, &client)
require.Len(t, resp.Frames, 1)
require.Len(t, resp.Frames[0].Fields, 6)
require.Equal(t, "$time", resp.Frames[0].Fields[1].Name)
Expand Down Expand Up @@ -301,7 +301,7 @@ func TestQueryXRevRange(t *testing.T) {
client := testClient{err: errors.New("some error")}

// Response
resp := queryXRevRange(queryModel{Command: models.XRevRange, Key: "queue:customers", Start: "1611019111439-0", End: "1611019111985-0"}, &client)
resp := queryXRevRange(0, 0, queryModel{Command: models.XRevRange, Key: "queue:customers", Start: "1611019111439-0", End: "1611019111985-0"}, &client)
require.Len(t, resp.Frames, 0)
require.EqualError(t, resp.Error, "some error")
})
Expand Down
2 changes: 1 addition & 1 deletion pkg/redis-time-series_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import (
*/
func TestTSInfoIntegration(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

// Response
Expand Down
10 changes: 5 additions & 5 deletions pkg/redis-tmscan_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ var memory = map[string]int64{
*/
func TestTMScanIntegration(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

// Response
Expand All @@ -62,7 +62,7 @@ func TestTMScanIntegration(t *testing.T) {
*/
func TestTMScanIntegrationWithNoMatched(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

// Response
Expand All @@ -83,7 +83,7 @@ func TestTMScanIntegrationWithNoMatched(t *testing.T) {
*/
func TestTMScanIntegrationWithMatched(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

// Response
Expand Down Expand Up @@ -115,7 +115,7 @@ func TestTMScanIntegrationWithMatched(t *testing.T) {
* TMSCAN with Samples count
*/
func TestTMScanIntegrationWithSamples(t *testing.T) {
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)

// Client
client := radixV3Impl{radixClient: radixClient}
Expand All @@ -138,7 +138,7 @@ func TestTMScanIntegrationWithSamples(t *testing.T) {
*/
func TestTMScanIntegrationWithSize(t *testing.T) {
// Client
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("127.0.0.1:%d", integrationTestPort), 10)
radixClient, _ := radix.NewPool("tcp", fmt.Sprintf("%s:%d", integrationTestIP, integrationTestPort), 10)
client := radixV3Impl{radixClient: radixClient}

// Response
Expand Down
5 changes: 5 additions & 0 deletions pkg/testing-utilities_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

package main

/**
* Integration Test IP
*/
const integrationTestIP = "127.0.0.1"

/**
* Integration Test port
*/
Expand Down
41 changes: 21 additions & 20 deletions src/components/query-editor/query-editor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -383,15 +383,33 @@ export class QueryEditor extends PureComponent<Props> {
label="Match pattern"
/>
)}
</div>
)}

{command && CommandParameters.cypher.includes(command as RedisGraph) && (
<div className="gf-form">
<InlineFormLabel
tooltip="The syntax is based on Cypher, and only a subset of the language currently supported: \
https://oss.redislabs.com/redisgraph/commands/#query-language"
width={8}
>
Cypher
</InlineFormLabel>
<TextArea value={cypher} className="gf-form-input" onChange={this.onCypherChange} />
</div>
)}

{type !== QueryTypeValue.CLI && command && (
<div className="gf-form">
{CommandParameters.start.includes(command as Redis) && (
<FormField
labelWidth={8}
inputWidth={10}
value={start}
onChange={this.onStartChange}
placeholder="-"
placeholder="time range"
label="Start"
tooltip="Based on the selected time range, if not specified"
/>
)}

Expand All @@ -401,28 +419,12 @@ export class QueryEditor extends PureComponent<Props> {
inputWidth={10}
value={end}
onChange={this.onEndChange}
placeholder="+"
placeholder="time range"
label="End"
tooltip="Based on the selected time range, if not specified"
/>
)}
</div>
)}

{command && CommandParameters.cypher.includes(command as RedisGraph) && (
<div className="gf-form">
<InlineFormLabel
tooltip="The syntax is based on Cypher, and only a subset of the language currently supported: \
https://oss.redislabs.com/redisgraph/commands/#query-language"
width={8}
>
Cypher
</InlineFormLabel>
<TextArea value={cypher} className="gf-form-input" onChange={this.onCypherChange} />
</div>
)}

{type !== QueryTypeValue.CLI && command && (
<div className="gf-form">
{CommandParameters.count.includes(command as Redis) && (
<FormField
labelWidth={8}
Expand All @@ -431,7 +433,6 @@ export class QueryEditor extends PureComponent<Props> {
type="number"
onChange={this.onCountChange}
label="Count"
tooltip="Can cause latency and is not recommended to use in Production."
/>
)}

Expand Down