@@ -3,6 +3,7 @@ package events
33import (
44 "context"
55 "encoding/json"
6+ "strings"
67 "sync"
78 "testing"
89 "time"
@@ -118,6 +119,25 @@ func TestEventOmitEmpty(t *testing.T) {
118119 assert .NotContains (t , s , `"event"` )
119120}
120121
122+ func TestTruncateIfNeededChecksLargeMetadata (t * testing.T ) {
123+ metadata := map [string ]string {"large" : strings .Repeat ("x" , maxS2RecordBytes )}
124+ env := Envelope {
125+ Event : Event {
126+ Type : "console.log" ,
127+ Category : Console ,
128+ Source : oapi.BrowserEventSource {Kind : oapi .Cdp , Metadata : & metadata },
129+ Data : json .RawMessage (`{"message":"hello"}` ),
130+ },
131+ }
132+
133+ truncated , data := truncateIfNeeded (env )
134+
135+ require .NotNil (t , data )
136+ assert .True (t , truncated .Event .Truncated )
137+ assert .Equal (t , json .RawMessage ("null" ), truncated .Event .Data )
138+ assert .Greater (t , len (data ), maxS2RecordBytes )
139+ }
140+
121141func mkEnv (seq uint64 , ev Event ) Envelope {
122142 return Envelope {Seq : seq , Event : ev }
123143}
@@ -133,6 +153,24 @@ func newTestRingBuffer(t *testing.T, capacity int) *ringBuffer {
133153 return rb
134154}
135155
156+ func TestEventStreamPublishAssignsSeq (t * testing.T ) {
157+ es , err := NewEventStream (EventStreamConfig {RingCapacity : 10 })
158+ require .NoError (t , err )
159+ reader := es .NewReader (0 )
160+
161+ first := es .Publish (Envelope {Event : cdpEvent ("console.log" , Console )})
162+ second := es .Publish (Envelope {Event : cdpEvent ("network.request" , Network )})
163+
164+ assert .Equal (t , uint64 (1 ), first .Seq )
165+ assert .Equal (t , uint64 (2 ), second .Seq )
166+ assert .Equal (t , uint64 (2 ), es .Seq ())
167+
168+ ctx , cancel := context .WithTimeout (context .Background (), 2 * time .Second )
169+ defer cancel ()
170+ assert .Equal (t , uint64 (1 ), readEnvelope (t , reader , ctx ).Seq )
171+ assert .Equal (t , uint64 (2 ), readEnvelope (t , reader , ctx ).Seq )
172+ }
173+
136174// TestRingBuffer: publish 3 envelopes; reader reads all 3 in order
137175func TestRingBuffer (t * testing.T ) {
138176 rb := newTestRingBuffer (t , 10 )
0 commit comments