@@ -183,7 +183,7 @@ var _ = Describe("Streaming Producers", func() {
183183 Expect (err ).To (HaveOccurred ())
184184 })
185185
186- It ("Smart Send Split frame" , func () {
186+ It ("Smart Send Split frame/BatchSize " , func () {
187187 producer , err := testEnvironment .NewProducer (testProducerStream ,
188188 NewProducerOptions ().SetBatchSize (50 ))
189189 Expect (err ).NotTo (HaveOccurred ())
@@ -206,9 +206,32 @@ var _ = Describe("Streaming Producers", func() {
206206 s := make ([]byte , 1148576 )
207207 err = producer .Send (amqp .NewMessage (s ))
208208 Expect (err ).To (HaveOccurred ())
209+ err = producer .Close ()
210+ Expect (err ).NotTo (HaveOccurred ())
211+
212+ producer , err = testEnvironment .NewProducer (testProducerStream ,
213+ NewProducerOptions ().SetBatchSize (2 ))
214+ Expect (err ).NotTo (HaveOccurred ())
215+ var messagesCountBatch int32
216+ chConfirmBatch := producer .NotifyPublishConfirmation ()
217+ go func (ch ChannelPublishConfirm ) {
218+ for ids := range ch {
219+ atomic .AddInt32 (& messagesCountBatch , int32 (len (ids )))
220+ }
221+ }(chConfirmBatch )
222+
223+ for i := 0 ; i < 100 ; i ++ {
224+ s := make ([]byte , 11 )
225+ err = producer .Send (amqp .NewMessage (s ))
226+ Expect (err ).NotTo (HaveOccurred ())
227+ }
228+
229+ time .Sleep (800 * time .Millisecond )
230+ Expect (atomic .LoadInt32 (& messagesCountBatch )).To (Equal (int32 (100 )))
209231
210232 err = producer .Close ()
211233 Expect (err ).NotTo (HaveOccurred ())
234+
212235 })
213236
214237 It ("Smart Send send after" , func () {
@@ -244,7 +267,7 @@ var _ = Describe("Streaming Producers", func() {
244267 Expect (err ).NotTo (HaveOccurred ())
245268 })
246269
247- It ("Already Closed" , func () {
270+ It ("Already Closed/Limits " , func () {
248271 env , err := NewEnvironment (NewEnvironmentOptions ().SetMaxProducersPerClient (5 ))
249272 Expect (err ).NotTo (HaveOccurred ())
250273 producer , err := env .NewProducer (testProducerStream , nil )
@@ -254,6 +277,27 @@ var _ = Describe("Streaming Producers", func() {
254277
255278 err = producer .Close ()
256279 Expect (err ).To (Equal (AlreadyClosed ))
280+
281+ /// validation limits
282+ /// options.QueueSize and options.BatchSize
283+ _ , err = env .NewProducer (testProducerStream , & ProducerOptions {
284+ QueueSize : 1 ,
285+ })
286+ Expect (err ).To (HaveOccurred ())
287+
288+ _ , err = env .NewProducer (testProducerStream , NewProducerOptions ().SetQueueSize (5000000 ))
289+ Expect (err ).To (HaveOccurred ())
290+
291+ _ , err = env .NewProducer (testProducerStream , & ProducerOptions {
292+ BatchSize : 0 ,
293+ })
294+ Expect (err ).To (HaveOccurred ())
295+
296+ _ , err = env .NewProducer (testProducerStream , & ProducerOptions {
297+ BatchSize : 5000000 ,
298+ })
299+ Expect (err ).To (HaveOccurred ())
300+
257301 err = env .Close ()
258302 Expect (err ).NotTo (HaveOccurred ())
259303 })
0 commit comments