Ejemplo n.º 1
0
 function invoke($method)
 {
     ob_start();
     parent::invoke($method);
     $output = ob_get_contents();
     ob_end_clean();
     $sock = new SimpleSocket("127.0.0.1", $this->_port, 5);
     $sock->write($output);
     $sock->close();
     echo $sock->getError();
 }
Ejemplo n.º 2
0
 function testSocket()
 {
     $socket = new SimpleSocket("www.lastcraft.com", 80);
     $this->assertFalse($socket->isError(), "Error [" . $socket->getError() . "]");
     $this->assertTrue($socket->isOpen());
     $this->assertTrue($socket->write("GET www.lastcraft.com/test/network_confirm.php HTTP/1.0\r\n"));
     $socket->write("Host: localhost\r\n");
     $socket->write("Connection: close\r\n\r\n");
     $this->assertEqual($socket->read(8), "HTTP/1.1");
     $socket->close();
     $this->assertEqual($socket->read(8), "");
 }
Ejemplo n.º 3
0
 public function testRecordOfSentCharacters()
 {
     $socket = new SimpleSocket('www.lastcraft.com', 80, 15);
     $this->assertTrue($socket->write("GET /test/network_confirm.php HTTP/1.0\r\n"));
     $socket->write("Host: www.lastcraft.com\r\n");
     $socket->write("Connection: close\r\n\r\n");
     $socket->close();
     $this->assertEqual($socket->getSent(), "GET /test/network_confirm.php HTTP/1.0\r\n" . "Host: www.lastcraft.com\r\n" . "Connection: close\r\n\r\n");
 }
Ejemplo n.º 4
0
 public function testRecordOfSentCharacters()
 {
     $socket = new SimpleSocket($this->host, $this->port, 15);
     $this->assertTrue($socket->write("GET /network_confirm.php HTTP/1.0\r\n"));
     $socket->write("Host: {$this->host}\r\n");
     $socket->write("Connection: close\r\n\r\n");
     $socket->close();
     $this->assertEqual($socket->getSent(), "GET /network_confirm.php HTTP/1.0\r\n" . "Host: {$this->host}\r\n" . "Connection: close\r\n\r\n");
 }
Ejemplo n.º 5
0
 function testRecordOfSentCharacters()
 {
     $site = $this->getServerInfo();
     $socket = new SimpleSocket($site['host'], $site['port'], 15);
     $this->assertTrue($socket->write("GET {$site['path']}network_confirm.php HTTP/1.0\r\n"));
     $socket->write("Host: {$site['host']}\r\n");
     $socket->write("Connection: close\r\n\r\n");
     $socket->close();
     $this->assertEqual($socket->getSent(), "GET {$site['path']}network_confirm.php HTTP/1.0\r\n" . "Host: {$site['host']}\r\n" . "Connection: close\r\n\r\n");
 }
Ejemplo n.º 6
0
 /**
  *    Reads the whole of the socket output into a
  *    single string.
  *    @param SimpleSocket $socket  Unread socket.
  *    @return string               Raw output if successful
  *                                 else false.
  *    @access private
  */
 function _readAll(&$socket)
 {
     $all = '';
     while (!$this->_isLastPacket($next = $socket->read())) {
         $all .= $next;
     }
     return $all;
 }
Ejemplo n.º 7
0
 /**
  *    Actually opens the low level socket.
  *    @param string $host          Host to connect to.
  *    @param integer $port         Port on host.
  *    @param integer $error_number Recipient of error code.
  *    @param string $error         Recipient of error message.
  *    @param integer $timeout      Maximum time to wait for connection.
  *    @access protected
  */
 function _openSocket($host, $port, &$error_number, &$error, $timeout)
 {
     return parent::_openSocket("tls://{$host}", $port, $error_number, $error, $timeout);
 }
Ejemplo n.º 8
0
 /**
  *    Reads the whole of the socket output into a
  *    single string.
  *    @param SimpleSocket $socket  Unread socket.
  *    @return string               Raw output if successful
  *                                 else false.
  *    @access private
  */
 protected function readAll($socket)
 {
     $all = '';
     while (!$this->isLastPacket($next = $socket->read())) {
         $all .= $next;
     }
     return $all;
 }
Ejemplo n.º 9
0
 /**
  *    Dispatches the form data down the socket.
  *    @param SimpleSocket $socket        Socket to write to.
  *    @access public
  */
 function writeTo(&$socket)
 {
     $socket->write($this->encode());
 }
Ejemplo n.º 10
0
 /**
  * Collects the results form the workers and processes any pending signals
  * @param int $sec timeout to wait for new results from the workers
  * @throws WorkerPoolException
  */
 protected function collectWorkerResults($sec = 0)
 {
     // dispatch signals
     pcntl_signal_dispatch();
     if (isset($this->workerProcesses) === FALSE) {
         throw new WorkerPoolException('There is no list of worker processes. Maybe you destroyed the worker pool?', 1401179881);
     }
     $result = SimpleSocket::select($this->workerProcesses->getSockets(), array(), array(), $sec);
     foreach ($result['read'] as $socket) {
         /** @var $socket SimpleSocket */
         $processId = $socket->annotation['pid'];
         $result = $socket->receive();
         $possibleArrayKeys = array('data', 'poolException', 'workerException');
         if (is_array($result) && count($resultTypes = array_intersect(array_keys($result), $possibleArrayKeys)) === 1) {
             // If the result has the expected format, free the worker and store the result.
             // Otherwise, the worker may be abnormally terminated (fatal error, exit(), ...) and will
             // fall in the reapers arms.
             $this->workerProcesses->registerFreeProcessId($processId);
             $result['pid'] = $processId;
             $resultType = reset($resultTypes);
             // Do not store NULL
             if ($resultType !== 'data' || $result['data'] !== NULL) {
                 array_push($this->results, $result);
             }
         }
     }
     // dispatch signals
     pcntl_signal_dispatch();
 }
Ejemplo n.º 11
0
 /**
  *    Fetches the content and parses the headers.
  *    @param $socket        Test override.
  *    @return               Either false or a HttpResponse.
  *    @access public
  */
 function fetch($socket = false)
 {
     if (!is_object($socket)) {
         $socket = new SimpleSocket($this->_url->getHost());
     }
     if ($socket->isError()) {
         return false;
     }
     $socket->write("GET " . $this->_url->getPath() . $this->_url->getEncodedRequest() . " HTTP/1.0\r\n");
     $socket->write("Host: " . $this->_url->getHost() . "\r\n");
     foreach ($this->_user_headers as $header_line) {
         $socket->write($header_line . "\r\n");
     }
     if (count($this->_cookies) > 0) {
         $socket->write("Cookie: " . $this->_marshallCookies($this->_cookies) . "\r\n");
     }
     $socket->write("Connection: close\r\n");
     $socket->write("\r\n");
     return $this->_createResponse($socket);
 }
Ejemplo n.º 12
0
 /**
  *    Reads the whole of the socket output into a
  *    single string.
  *    @param SimpleSocket $socket  Unread socket.
  *    @return string               Raw output if successful
  *                                 else false.
  *    @access private
  */
 function _readAll(&$socket) {
     $all = "";
     while ($next = $socket->read()) {
         $all .= $next;
     }
     return $all;
 }
Ejemplo n.º 13
0
 function skip()
 {
     $socket = new SimpleSocket($this->host, $this->port, 5, 8);
     parent::skipIf(!$socket->isOpen(), sprintf('The LiveHttpTestCase requires that a webserver runs at %s:%s', $this->host, $this->port));
 }
Ejemplo n.º 14
0
 /**
  *    Runs the test methods in the test case, or not if the
  *    scorer blocks it.
  *    @param SimpleTest $test_case    Test case to run test on.
  *    @param string $method           Name of test method.
  *    @access public
  */
 function run()
 {
     $methods = get_class_methods(get_class($this->_test_case));
     $invoker =& $this->_test_case->createInvoker();
     foreach ($methods as $method) {
         if (!$this->_isTest($method)) {
             continue;
         }
         if ($this->_isConstructor($method)) {
             continue;
         }
         ob_start();
         echo $this->_start;
         $this->_scorer->paintMethodStart($method);
         if ($this->_scorer->shouldInvoke($this->_test_case->getLabel(), $method)) {
             $invoker->invoke($method);
         }
         $this->_scorer->paintMethodEnd($method);
         echo $this->_end;
         $output = ob_get_contents();
         ob_end_clean();
         $sock = new SimpleSocket("127.0.0.1", $this->_port, 5);
         $sock->write($output);
         $sock->close();
         echo $sock->getError();
     }
 }