MDL-32250 import latest SimpleTest 1.1.0

This commit is contained in:
Petr Skoda
2012-03-29 15:07:53 +02:00
parent a280078197
commit 0bb48cc2a1
88 changed files with 17451 additions and 5860 deletions
Regular → Executable
+132 -36
View File
@@ -3,7 +3,7 @@
* base include file for SimpleTest
* @package SimpleTest
* @subpackage MockObjects
* @version $Id$
* @version $Id: socket.php 1953 2009-09-20 01:26:25Z jsweat $
*/
/**#@+
@@ -19,14 +19,14 @@ require_once(dirname(__FILE__) . '/compatibility.php');
* @subpackage WebTester
*/
class SimpleStickyError {
var $_error = 'Constructor not chained';
private $error = 'Constructor not chained';
/**
* Sets the error to empty.
* @access public
*/
function SimpleStickyError() {
$this->_clearError();
function __construct() {
$this->clearError();
}
/**
@@ -35,7 +35,7 @@ class SimpleStickyError {
* @access public
*/
function isError() {
return ($this->_error != '');
return ($this->error != '');
}
/**
@@ -45,7 +45,7 @@ class SimpleStickyError {
* @access public
*/
function getError() {
return $this->_error;
return $this->error;
}
/**
@@ -53,16 +53,112 @@ class SimpleStickyError {
* @param string Error message to stash.
* @access protected
*/
function _setError($error) {
$this->_error = $error;
function setError($error) {
$this->error = $error;
}
/**
* Resets the error state to no error.
* @access protected
*/
function _clearError() {
$this->_setError('');
function clearError() {
$this->setError('');
}
}
/**
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleFileSocket extends SimpleStickyError {
private $handle;
private $is_open = false;
private $sent = '';
private $block_size;
/**
* Opens a socket for reading and writing.
* @param SimpleUrl $file Target URI to fetch.
* @param integer $block_size Size of chunk to read.
* @access public
*/
function __construct($file, $block_size = 1024) {
parent::__construct();
if (! ($this->handle = $this->openFile($file, $error))) {
$file_string = $file->asString();
$this->setError("Cannot open [$file_string] with [$error]");
return;
}
$this->is_open = true;
$this->block_size = $block_size;
}
/**
* Writes some data to the socket and saves alocal copy.
* @param string $message String to send to socket.
* @return boolean True if successful.
* @access public
*/
function write($message) {
return true;
}
/**
* Reads data from the socket. The error suppresion
* is a workaround for PHP4 always throwing a warning
* with a secure socket.
* @return integer/boolean Incoming bytes. False
* on error.
* @access public
*/
function read() {
$raw = @fread($this->handle, $this->block_size);
if ($raw === false) {
$this->setError('Cannot read from socket');
$this->close();
}
return $raw;
}
/**
* Accessor for socket open state.
* @return boolean True if open.
* @access public
*/
function isOpen() {
return $this->is_open;
}
/**
* Closes the socket preventing further reads.
* Cannot be reopened once closed.
* @return boolean True if successful.
* @access public
*/
function close() {
if (!$this->is_open) return false;
$this->is_open = false;
return fclose($this->handle);
}
/**
* Accessor for content so far.
* @return string Bytes sent only.
* @access public
*/
function getSent() {
return $this->sent;
}
/**
* Actually opens the low level socket.
* @param SimpleUrl $file SimpleUrl file target.
* @param string $error Recipient of error message.
* @param integer $timeout Maximum time to wait for connection.
* @access protected
*/
protected function openFile($file, &$error) {
return @fopen($file->asString(), 'r');
}
}
@@ -72,10 +168,10 @@ class SimpleStickyError {
* @subpackage WebTester
*/
class SimpleSocket extends SimpleStickyError {
var $_handle;
var $_is_open = false;
var $_sent = '';
var $lock_size;
private $handle;
private $is_open = false;
private $sent = '';
private $lock_size;
/**
* Opens a socket for reading and writing.
@@ -85,15 +181,15 @@ class SimpleSocket extends SimpleStickyError {
* @param integer $block_size Size of chunk to read.
* @access public
*/
function SimpleSocket($host, $port, $timeout, $block_size = 255) {
$this->SimpleStickyError();
if (! ($this->_handle = $this->_openSocket($host, $port, $error_number, $error, $timeout))) {
$this->_setError("Cannot open [$host:$port] with [$error] within [$timeout] seconds");
function __construct($host, $port, $timeout, $block_size = 255) {
parent::__construct();
if (! ($this->handle = $this->openSocket($host, $port, $error_number, $error, $timeout))) {
$this->setError("Cannot open [$host:$port] with [$error] within [$timeout] seconds");
return;
}
$this->_is_open = true;
$this->_block_size = $block_size;
SimpleTestCompatibility::setTimeout($this->_handle, $timeout);
$this->is_open = true;
$this->block_size = $block_size;
SimpleTestCompatibility::setTimeout($this->handle, $timeout);
}
/**
@@ -106,16 +202,16 @@ class SimpleSocket extends SimpleStickyError {
if ($this->isError() || ! $this->isOpen()) {
return false;
}
$count = fwrite($this->_handle, $message);
$count = fwrite($this->handle, $message);
if (! $count) {
if ($count === false) {
$this->_setError('Cannot write to socket');
$this->setError('Cannot write to socket');
$this->close();
}
return false;
}
fflush($this->_handle);
$this->_sent .= $message;
fflush($this->handle);
$this->sent .= $message;
return true;
}
@@ -131,9 +227,9 @@ class SimpleSocket extends SimpleStickyError {
if ($this->isError() || ! $this->isOpen()) {
return false;
}
$raw = @fread($this->_handle, $this->_block_size);
$raw = @fread($this->handle, $this->block_size);
if ($raw === false) {
$this->_setError('Cannot read from socket');
$this->setError('Cannot read from socket');
$this->close();
}
return $raw;
@@ -145,7 +241,7 @@ class SimpleSocket extends SimpleStickyError {
* @access public
*/
function isOpen() {
return $this->_is_open;
return $this->is_open;
}
/**
@@ -155,8 +251,8 @@ class SimpleSocket extends SimpleStickyError {
* @access public
*/
function close() {
$this->_is_open = false;
return fclose($this->_handle);
$this->is_open = false;
return fclose($this->handle);
}
/**
@@ -165,7 +261,7 @@ class SimpleSocket extends SimpleStickyError {
* @access public
*/
function getSent() {
return $this->_sent;
return $this->sent;
}
/**
@@ -177,7 +273,7 @@ class SimpleSocket extends SimpleStickyError {
* @param integer $timeout Maximum time to wait for connection.
* @access protected
*/
function _openSocket($host, $port, &$error_number, &$error, $timeout) {
protected function openSocket($host, $port, &$error_number, &$error, $timeout) {
return @fsockopen($host, $port, $error_number, $error, $timeout);
}
}
@@ -196,8 +292,8 @@ class SimpleSecureSocket extends SimpleSocket {
* @param integer $timeout Connection timeout in seconds.
* @access public
*/
function SimpleSecureSocket($host, $port, $timeout) {
$this->SimpleSocket($host, $port, $timeout);
function __construct($host, $port, $timeout) {
parent::__construct($host, $port, $timeout);
}
/**
@@ -209,8 +305,8 @@ class SimpleSecureSocket extends SimpleSocket {
* @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);
function openSocket($host, $port, &$error_number, &$error, $timeout) {
return parent::openSocket("tls://$host", $port, $error_number, $error, $timeout);
}
}
?>