mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Add awslogs benchmarks
Signed-off-by: Justin Menga <justin.menga@gmail.com>
This commit is contained in:
parent
ab74038df9
commit
84b03660da
1 changed files with 76 additions and 0 deletions
|
@ -26,8 +26,25 @@ const (
|
|||
sequenceToken = "sequenceToken"
|
||||
nextSequenceToken = "nextSequenceToken"
|
||||
logline = "this is a log line\r"
|
||||
multilineLogline = "2017-01-01 01:01:44 This is a multiline log entry\r"
|
||||
)
|
||||
|
||||
// Generates i multi-line events each with j lines
|
||||
func (l *logStream) logGenerator(lineCount int, multilineCount int) {
|
||||
for i := 0; i < multilineCount; i++ {
|
||||
l.Log(&logger.Message{
|
||||
Line: []byte(multilineLogline),
|
||||
Timestamp: time.Time{},
|
||||
})
|
||||
for j := 0; j < lineCount; j++ {
|
||||
l.Log(&logger.Message{
|
||||
Line: []byte(logline),
|
||||
Timestamp: time.Time{},
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewAWSLogsClientUserAgentHandler(t *testing.T) {
|
||||
info := logger.Info{
|
||||
Config: map[string]string{
|
||||
|
@ -539,6 +556,65 @@ func TestCollectBatchMultilinePattern(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func BenchmarkCollectBatch(b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
mockClient := newMockClient()
|
||||
stream := &logStream{
|
||||
client: mockClient,
|
||||
logGroupName: groupName,
|
||||
logStreamName: streamName,
|
||||
sequenceToken: aws.String(sequenceToken),
|
||||
messages: make(chan *logger.Message),
|
||||
}
|
||||
mockClient.putLogEventsResult <- &putLogEventsResult{
|
||||
successResult: &cloudwatchlogs.PutLogEventsOutput{
|
||||
NextSequenceToken: aws.String(nextSequenceToken),
|
||||
},
|
||||
}
|
||||
ticks := make(chan time.Time)
|
||||
newTicker = func(_ time.Duration) *time.Ticker {
|
||||
return &time.Ticker{
|
||||
C: ticks,
|
||||
}
|
||||
}
|
||||
|
||||
go stream.collectBatch()
|
||||
stream.logGenerator(10, 100)
|
||||
ticks <- time.Time{}
|
||||
stream.Close()
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkCollectBatchMultilinePattern(b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
mockClient := newMockClient()
|
||||
multilinePattern := regexp.MustCompile(`\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1,2][0-9]|3[0,1]) (?:[0,1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]`)
|
||||
stream := &logStream{
|
||||
client: mockClient,
|
||||
logGroupName: groupName,
|
||||
logStreamName: streamName,
|
||||
multilinePattern: multilinePattern,
|
||||
sequenceToken: aws.String(sequenceToken),
|
||||
messages: make(chan *logger.Message),
|
||||
}
|
||||
mockClient.putLogEventsResult <- &putLogEventsResult{
|
||||
successResult: &cloudwatchlogs.PutLogEventsOutput{
|
||||
NextSequenceToken: aws.String(nextSequenceToken),
|
||||
},
|
||||
}
|
||||
ticks := make(chan time.Time)
|
||||
newTicker = func(_ time.Duration) *time.Ticker {
|
||||
return &time.Ticker{
|
||||
C: ticks,
|
||||
}
|
||||
}
|
||||
go stream.collectBatch()
|
||||
stream.logGenerator(10, 100)
|
||||
ticks <- time.Time{}
|
||||
stream.Close()
|
||||
}
|
||||
}
|
||||
|
||||
func TestCollectBatchMultilinePatternMaxEventAge(t *testing.T) {
|
||||
mockClient := newMockClient()
|
||||
multilinePattern := regexp.MustCompile("xxxx")
|
||||
|
|
Loading…
Add table
Reference in a new issue