@@ -142,6 +142,33 @@ func TestListenerManagerPacketListenerCreatesListenerOnDemand(t *testing.T) {
142142 <- done
143143}
144144
145+ func TestMultiPacketListener_SequentialReads (t * testing.T ) {
146+ m := NewListenerManager ()
147+ conn , err := m .ListenPacket ("127.0.0.1:0" )
148+ require .NoError (t , err )
149+ udpConn , err := net .Dial ("udp" , conn .LocalAddr ().String ())
150+ require .NoError (t , err )
151+
152+ // Send and receive the first packet.
153+ data1 := []byte ("hello" )
154+ _ , err = udpConn .Write (data1 )
155+ require .NoError (t , err )
156+ received1 := make ([]byte , serverUDPBufferSize )
157+ n1 , _ , err := conn .ReadFrom (received1 )
158+ require .NoError (t , err )
159+
160+ // Send and receive a second larger packet.
161+ data2 := []byte ("a longer message than the first one" )
162+ _ , err = udpConn .Write (data2 )
163+ require .NoError (t , err )
164+ received2 := make ([]byte , serverUDPBufferSize )
165+ n2 , _ , err := conn .ReadFrom (received2 )
166+ require .NoError (t , err )
167+
168+ require .Equal (t , string (data1 ), string (received1 [:n1 ]))
169+ require .Equal (t , string (data2 ), string (received2 [:n2 ]))
170+ }
171+
145172func BenchmarkMultiStreamListener_Acquire (b * testing.B ) {
146173 lm := NewListenerManager ()
147174
0 commit comments