mirror of
https://github.com/amir20/dozzle.git
synced 2025-12-24 06:28:42 +01:00
@@ -42,12 +42,12 @@ func NewEventGenerator(reader io.Reader, tty bool) *EventGenerator {
|
|||||||
tty: tty,
|
tty: tty,
|
||||||
}
|
}
|
||||||
generator.wg.Add(2)
|
generator.wg.Add(2)
|
||||||
go generator.consumeReader(&generator.wg)
|
go generator.consumeReader()
|
||||||
go generator.processBuffer(&generator.wg)
|
go generator.processBuffer()
|
||||||
return generator
|
return generator
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *EventGenerator) processBuffer(wg *sync.WaitGroup) {
|
func (g *EventGenerator) processBuffer() {
|
||||||
var current, next *LogEvent
|
var current, next *LogEvent
|
||||||
|
|
||||||
for {
|
for {
|
||||||
@@ -70,10 +70,10 @@ func (g *EventGenerator) processBuffer(wg *sync.WaitGroup) {
|
|||||||
|
|
||||||
g.Events <- current
|
g.Events <- current
|
||||||
}
|
}
|
||||||
wg.Done()
|
g.wg.Done()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *EventGenerator) consumeReader(wg *sync.WaitGroup) {
|
func (g *EventGenerator) consumeReader() {
|
||||||
for {
|
for {
|
||||||
message, streamType, readerError := readEvent(g.reader, g.tty)
|
message, streamType, readerError := readEvent(g.reader, g.tty)
|
||||||
if message != "" {
|
if message != "" {
|
||||||
@@ -90,7 +90,7 @@ func (g *EventGenerator) consumeReader(wg *sync.WaitGroup) {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wg.Done()
|
g.wg.Done()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *EventGenerator) peek() *LogEvent {
|
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