public function onTerminate()
 {
     $spool = $this->sender->getSpool();
     if ($spool instanceof MemorySpool) {
         try {
             $spool->flush();
         } catch (\Exception $exception) {
             if (null !== $this->logger) {
                 $this->logger->error(sprintf('Exception occurred while flushing message queue: %s', $exception->getMessage()));
             }
         }
     }
 }
 public function testSpoolingAndFlushing()
 {
     /** @var \PHPUnit_Framework_MockObject_MockObject|TransportInterface $transport */
     $transport = $this->getMock('ScayTrase\\SmsDeliveryBundle\\Transport\\TransportInterface');
     $transport->expects(self::any())->method('send')->willReturn(true);
     $spool = new MemorySpool();
     $sender = new MessageDeliveryService($transport, $spool);
     /** @var ShortMessageInterface|\PHPUnit_Framework_MockObject_MockObject $message */
     $message = $this->getMock('ScayTrase\\SmsDeliveryBundle\\Service\\ShortMessageInterface');
     self::assertTrue($sender->spoolMessage($message));
     $profile = $sender->getProfile();
     self::assertCount(1, $profile);
     self::assertEquals(Package::STATUS_SPOOLED, $profile[0]->getStatus());
     self::assertTrue($sender->getSpool()->flush());
     self::assertCount(1, $profile);
     self::assertEquals(Package::STATUS_SUCCESS, $profile[0]->getStatus());
 }