mirror of
https://github.com/amir20/dozzle.git
synced 2025-12-21 13:23:07 +01:00
@@ -42,12 +42,12 @@ func NewEventGenerator(reader io.Reader, tty bool) *EventGenerator {
|
||||
tty: tty,
|
||||
}
|
||||
generator.wg.Add(2)
|
||||
go generator.consumeReader(&generator.wg)
|
||||
go generator.processBuffer(&generator.wg)
|
||||
go generator.consumeReader()
|
||||
go generator.processBuffer()
|
||||
return generator
|
||||
}
|
||||
|
||||
func (g *EventGenerator) processBuffer(wg *sync.WaitGroup) {
|
||||
func (g *EventGenerator) processBuffer() {
|
||||
var current, next *LogEvent
|
||||
|
||||
for {
|
||||
@@ -70,10 +70,10 @@ func (g *EventGenerator) processBuffer(wg *sync.WaitGroup) {
|
||||
|
||||
g.Events <- current
|
||||
}
|
||||
wg.Done()
|
||||
g.wg.Done()
|
||||
}
|
||||
|
||||
func (g *EventGenerator) consumeReader(wg *sync.WaitGroup) {
|
||||
func (g *EventGenerator) consumeReader() {
|
||||
for {
|
||||
message, streamType, readerError := readEvent(g.reader, g.tty)
|
||||
if message != "" {
|
||||
@@ -90,7 +90,7 @@ func (g *EventGenerator) consumeReader(wg *sync.WaitGroup) {
|
||||
break
|
||||
}
|
||||
}
|
||||
wg.Done()
|
||||
g.wg.Done()
|
||||
}
|
||||
|
||||
func (g *EventGenerator) peek() *LogEvent {
|
||||
|
||||
@@ -126,3 +126,24 @@ func Test_createEvent(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
type mockReadCloser struct {
|
||||
bytes []byte
|
||||
}
|
||||
|
||||
func (m mockReadCloser) Read(p []byte) (int, error) {
|
||||
return copy(p, m.bytes), nil
|
||||
}
|
||||
|
||||
func Benchmark_readEvent(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
|
||||
data := makeMessage("2020-05-13T18:55:37.772853839Z {\"key\": \"value\"}\n", STDOUT)
|
||||
|
||||
reader := bufio.NewReader(mockReadCloser{bytes: data})
|
||||
|
||||
for i := 0; i < b.N; i++ {
|
||||
readEvent(reader, true)
|
||||
// println(message, stream)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user