public function testConnect()
 {
     $listener = new EventListener(['socket_type' => \ZMQ::SOCKET_PUSH, 'socket_options' => [\ZMQ::SOCKOPT_SNDHWM => 2000], 'bind' => 'ipc://test-connect-bind.ipc', 'connect' => ['ipc://test-connect-1.ipc', 'ipc://test-connect-2.ipc'], 'confirmed' => true]);
     $socket = $listener->socket();
     $this->assertSame(\ZMQ::SOCKET_PUSH, $socket->getSocketType());
     $this->assertSame(2000, $socket->getSockOpt(\ZMQ::SOCKOPT_SNDHWM));
     $this->assertSame(['connect' => ['ipc://test-connect-1.ipc', 'ipc://test-connect-2.ipc'], 'bind' => ['ipc://test-connect-bind.ipc']], $socket->getEndpoints());
     $this->assertTrue($socket->confirmed());
 }
 public function testRun()
 {
     $dsn = 'ipc://test-run.ipc';
     if (!($pid = pcntl_fork())) {
         $listener = new EventListener(['bind' => $dsn]);
         Event::listen('request.event', function () use($listener) {
             $listener->socket()->push(Event::firing(), func_get_args());
             Event::fire('zeroevents.service.stop');
         });
         (new EventService())->listen($listener)->run();
         exit;
     }
     $listener = new EventListener(['connect' => $dsn]);
     Event::listen('request.event', $listener);
     Event::fire('request.event', ['source', 'parent']);
     $this->assertSame(['event' => 'request.event', 'payload' => ['source', 'parent'], 'address' => null], $listener->socket()->pull());
     pcntl_wait($status);
     posix_kill($pid, SIGKILL);
 }
 /**
  * @param EventListener $listener
  * @return self
  */
 public function listen(EventListener $listener)
 {
     $this->listen[] = $listener->socket();
     return $this;
 }