@@ -366,6 +366,43 @@ private function prepareMocks()
366366 ->getMock ();
367367 }
368368
369+ public function testSortsEntriesChronologically ()
370+ {
371+ $ this ->prepareMocks ();
372+
373+ $ this
374+ ->clientMock
375+ ->expects ($ this ->once ())
376+ ->method ('PutLogEvents ' )
377+ ->willReturnCallback (function (array $ data ) {
378+ $ this ->assertContains ('record1 ' , $ data ['logEvents ' ][0 ]['message ' ]);
379+ $ this ->assertContains ('record2 ' , $ data ['logEvents ' ][1 ]['message ' ]);
380+ $ this ->assertContains ('record3 ' , $ data ['logEvents ' ][2 ]['message ' ]);
381+ $ this ->assertContains ('record4 ' , $ data ['logEvents ' ][3 ]['message ' ]);
382+
383+ return $ this ->awsResultMock ;
384+ });
385+
386+ $ handler = $ this ->getCUT (4 );
387+
388+ // created with chronological timestamps:
389+ $ records = [];
390+
391+ for ($ i = 1 ; $ i <= 4 ; ++$ i ) {
392+ $ record = $ this ->getRecord (Logger::INFO , 'record ' . $ i );
393+ $ record ['datetime ' ] = \DateTime::createFromFormat ('U ' , time () + $ i );
394+ $ records [] = $ record ;
395+ }
396+
397+ // but submitted in a different order:
398+ $ handler ->handle ($ records [2 ]);
399+ $ handler ->handle ($ records [0 ]);
400+ $ handler ->handle ($ records [3 ]);
401+ $ handler ->handle ($ records [1 ]);
402+
403+ $ handler ->close ();
404+ }
405+
369406 private function getCUT ($ batchSize = 1000 )
370407 {
371408 return new CloudWatch ($ this ->clientMock , $ this ->groupName , $ this ->streamName , 14 , $ batchSize );
0 commit comments