CloudWatch: fix log explorer context (#52118)
This commit is contained in:
@@ -34,8 +34,8 @@ type LogQueryJson struct {
|
||||
SubType string
|
||||
Limit *int64
|
||||
Time int64
|
||||
StartTime int64
|
||||
EndTime int64
|
||||
StartTime *int64
|
||||
EndTime *int64
|
||||
LogGroupName string
|
||||
LogGroupNames []string
|
||||
LogGroupNamePrefix string
|
||||
@@ -168,8 +168,13 @@ func (e *cloudWatchExecutor) handleGetLogEvents(ctx context.Context, logsClient
|
||||
}
|
||||
queryRequest.SetLogStreamName(parameters.LogStreamName)
|
||||
|
||||
queryRequest.SetStartTime(parameters.StartTime)
|
||||
queryRequest.SetEndTime(parameters.EndTime)
|
||||
if parameters.StartTime != nil && *parameters.StartTime != 0 {
|
||||
queryRequest.SetStartTime(*parameters.StartTime)
|
||||
}
|
||||
|
||||
if parameters.EndTime != nil && *parameters.EndTime != 0 {
|
||||
queryRequest.SetEndTime(*parameters.EndTime)
|
||||
}
|
||||
|
||||
logEvents, err := logsClient.GetLogEventsWithContext(ctx, queryRequest)
|
||||
if err != nil {
|
||||
|
||||
@@ -20,6 +20,92 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestQuery_GetLogEvents(t *testing.T) {
|
||||
origNewCWLogsClient := NewCWLogsClient
|
||||
t.Cleanup(func() {
|
||||
NewCWLogsClient = origNewCWLogsClient
|
||||
})
|
||||
|
||||
var cli fakeCWLogsClient
|
||||
|
||||
NewCWLogsClient = func(sess *session.Session) cloudwatchlogsiface.CloudWatchLogsAPI {
|
||||
return &cli
|
||||
}
|
||||
const refID = "A"
|
||||
|
||||
testCases := map[string]struct {
|
||||
query string
|
||||
expectedInput []*cloudwatchlogs.GetLogEventsInput
|
||||
}{
|
||||
"Nil startTime": {
|
||||
query: `{
|
||||
"type": "logAction",
|
||||
"subtype": "GetLogEvents",
|
||||
"logGroupName": "foo",
|
||||
"logStreamName": "bar",
|
||||
"endTime": 1,
|
||||
"startFromHead": false
|
||||
}`,
|
||||
expectedInput: []*cloudwatchlogs.GetLogEventsInput{
|
||||
{
|
||||
EndTime: aws.Int64(1),
|
||||
Limit: aws.Int64(10),
|
||||
LogGroupName: aws.String("foo"),
|
||||
LogStreamName: aws.String("bar"),
|
||||
StartFromHead: aws.Bool(false),
|
||||
},
|
||||
},
|
||||
},
|
||||
"Nil endTime": {
|
||||
query: `{
|
||||
"type": "logAction",
|
||||
"subtype": "GetLogEvents",
|
||||
"logGroupName": "foo",
|
||||
"logStreamName": "bar",
|
||||
"startTime": 1,
|
||||
"startFromHead": true
|
||||
}`,
|
||||
expectedInput: []*cloudwatchlogs.GetLogEventsInput{
|
||||
{
|
||||
StartTime: aws.Int64(1),
|
||||
Limit: aws.Int64(10),
|
||||
LogGroupName: aws.String("foo"),
|
||||
LogStreamName: aws.String("bar"),
|
||||
StartFromHead: aws.Bool(true),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for name, test := range testCases {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
cli = fakeCWLogsClient{}
|
||||
|
||||
im := datasource.NewInstanceManager(func(s backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
|
||||
return datasourceInfo{}, nil
|
||||
})
|
||||
|
||||
executor := newExecutor(im, newTestConfig(), &fakeSessionCache{}, featuremgmt.WithFeatures())
|
||||
_, err := executor.QueryData(context.Background(), &backend.QueryDataRequest{
|
||||
PluginContext: backend.PluginContext{
|
||||
DataSourceInstanceSettings: &backend.DataSourceInstanceSettings{},
|
||||
},
|
||||
Queries: []backend.DataQuery{
|
||||
{
|
||||
RefID: refID,
|
||||
TimeRange: backend.TimeRange{From: time.Unix(0, 0), To: time.Unix(1, 0)},
|
||||
JSON: json.RawMessage(test.query),
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Len(t, cli.calls.getEventsWithContext, 1)
|
||||
assert.Equal(t, test.expectedInput, cli.calls.getEventsWithContext)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestQuery_DescribeLogGroups(t *testing.T) {
|
||||
origNewCWLogsClient := NewCWLogsClient
|
||||
t.Cleanup(func() {
|
||||
|
||||
@@ -30,6 +30,7 @@ type fakeCWLogsClient struct {
|
||||
|
||||
type logsQueryCalls struct {
|
||||
startQueryWithContext []*cloudwatchlogs.StartQueryInput
|
||||
getEventsWithContext []*cloudwatchlogs.GetLogEventsInput
|
||||
}
|
||||
|
||||
func (m *fakeCWLogsClient) GetQueryResultsWithContext(ctx context.Context, input *cloudwatchlogs.GetQueryResultsInput, option ...request.Option) (*cloudwatchlogs.GetQueryResultsOutput, error) {
|
||||
@@ -58,6 +59,14 @@ func (m *fakeCWLogsClient) GetLogGroupFieldsWithContext(ctx context.Context, inp
|
||||
return &m.logGroupFields, nil
|
||||
}
|
||||
|
||||
func (m *fakeCWLogsClient) GetLogEventsWithContext(ctx context.Context, input *cloudwatchlogs.GetLogEventsInput, option ...request.Option) (*cloudwatchlogs.GetLogEventsOutput, error) {
|
||||
m.calls.getEventsWithContext = append(m.calls.getEventsWithContext, input)
|
||||
|
||||
return &cloudwatchlogs.GetLogEventsOutput{
|
||||
Events: []*cloudwatchlogs.OutputLogEvent{},
|
||||
}, nil
|
||||
}
|
||||
|
||||
type fakeCWClient struct {
|
||||
cloudwatchiface.CloudWatchAPI
|
||||
cloudwatch.GetMetricDataOutput
|
||||
|
||||
Reference in New Issue
Block a user