You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ih...@apache.org on 2011/12/22 14:28:45 UTC
svn commit: r1222222 - in /logging/log4php/trunk/src: changes/changes.xml
main/php/appenders/LoggerAppenderMongoDB.php
site/xdoc/docs/appenders/mongodb.xml
test/php/appenders/LoggerAppenderMongoDBTest.php
Author: ihabunek
Date: Thu Dec 22 13:28:44 2011
New Revision: 1222222
URL: http://svn.apache.org/viewvc?rev=1222222&view=rev
Log:
LOG4PHP-166: Added connection timeout parameter to MongoDB appender.
Also removed redundant tests from the test class.
Modified:
logging/log4php/trunk/src/changes/changes.xml
logging/log4php/trunk/src/main/php/appenders/LoggerAppenderMongoDB.php
logging/log4php/trunk/src/site/xdoc/docs/appenders/mongodb.xml
logging/log4php/trunk/src/test/php/appenders/LoggerAppenderMongoDBTest.php
Modified: logging/log4php/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/changes/changes.xml?rev=1222222&r1=1222221&r2=1222222&view=diff
==============================================================================
--- logging/log4php/trunk/src/changes/changes.xml (original)
+++ logging/log4php/trunk/src/changes/changes.xml Thu Dec 22 13:28:44 2011
@@ -20,6 +20,9 @@
<title>Apache log4php changelog</title>
</properties>
<body>
+ <release version="2.3.0-SNAPSHOT" date="SVN">
+ <action date="2011-12-22" type="update" issue="LOG4PHP-166" dev="Ivan Habunek" due-to="David Hilowitz" due-to-email="dhilowitz at gmail dot com">Added connection timeout parameter to MongoDB appender.</action>
+ </release>
<release version="2.2.0" date="2011-12-20">
<action date="2011-12-13" type="fix" issue="LOG4PHP-158" dev="Ivan Habunek">LoggerAppenderFile throws wrong warning messages.</action>
<action date="2011-12-12" type="update" issue="LOG4PHP-161" dev="Ivan Habunek">All configurable components should report errors when given invalid values</action>
Modified: logging/log4php/trunk/src/main/php/appenders/LoggerAppenderMongoDB.php
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/appenders/LoggerAppenderMongoDB.php?rev=1222222&r1=1222221&r2=1222222&view=diff
==============================================================================
--- logging/log4php/trunk/src/main/php/appenders/LoggerAppenderMongoDB.php (original)
+++ logging/log4php/trunk/src/main/php/appenders/LoggerAppenderMongoDB.php Thu Dec 22 13:28:44 2011
@@ -52,6 +52,9 @@ class LoggerAppenderMongoDB extends Logg
/** Default value for {@link $collectionName} */
const DEFAULT_COLLECTION_NAME = 'logs';
+ /** Default value for {@link $timeout} */
+ const DEFAULT_TIMEOUT_VALUE = 3000;
+
// ******************************************
// ** Configurable parameters **
// ******************************************
@@ -74,6 +77,9 @@ class LoggerAppenderMongoDB extends Logg
/** Password used to connect to the database. */
protected $password;
+ /** Timeout value used when connecting to the database (in milliseconds). */
+ protected $timeout;
+
// ******************************************
// ** Member variables **
// ******************************************
@@ -116,7 +122,7 @@ class LoggerAppenderMongoDB extends Logg
*/
public function activateOptions() {
try {
- $this->connection = new Mongo(sprintf('%s:%d', $this->host, $this->port));
+ $this->connection = new Mongo(sprintf('%s:%d', $this->host, $this->port), array("timeout" => $this->timeout));
$db = $this->connection->selectDB($this->databaseName);
if ($this->userName !== null && $this->password !== null) {
$authResult = $db->authenticate($this->userName, $this->password);
@@ -279,6 +285,15 @@ class LoggerAppenderMongoDB extends Logg
return $this->password;
}
+ /** Sets the value of {@link $timeout} parameter. */
+ public function setTimeout($timeout) {
+ $this->setPositiveInteger('timeout', $timeout);
+ }
+
+ /** Returns the value of {@link $timeout} parameter. */
+ public function getTimeout() {
+ return $this->timeout;
+ }
/**
* Returns the mongodb connection.
* @return Mongo
Modified: logging/log4php/trunk/src/site/xdoc/docs/appenders/mongodb.xml
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/site/xdoc/docs/appenders/mongodb.xml?rev=1222222&r1=1222221&r2=1222222&view=diff
==============================================================================
--- logging/log4php/trunk/src/site/xdoc/docs/appenders/mongodb.xml (original)
+++ logging/log4php/trunk/src/site/xdoc/docs/appenders/mongodb.xml Thu Dec 22 13:28:44 2011
@@ -87,7 +87,13 @@
<td>-</td>
<td>Password used to connect to the database.</td>
</tr>
-
+ <tr>
+ <td>timeout</td>
+ <td>integer</td>
+ <td>No</td>
+ <td>3000</td>
+ <td>For how long the driver should try to connect to the database (in milliseconds).</td>
+ </tr>
</table>
</subsection>
Modified: logging/log4php/trunk/src/test/php/appenders/LoggerAppenderMongoDBTest.php
URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/test/php/appenders/LoggerAppenderMongoDBTest.php?rev=1222222&r1=1222221&r2=1222222&view=diff
==============================================================================
--- logging/log4php/trunk/src/test/php/appenders/LoggerAppenderMongoDBTest.php (original)
+++ logging/log4php/trunk/src/test/php/appenders/LoggerAppenderMongoDBTest.php Thu Dec 22 13:28:44 2011
@@ -48,126 +48,77 @@ class LoggerAppenderMongoDBTest extends
}
protected function setUp() {
- if (extension_loaded('mongo') == false) {
+ if (!extension_loaded('mongo')) {
$this->markTestSkipped(
'The Mongo extension is not available.'
);
}
}
- public function test__construct() {
- $appender = new LoggerAppenderMongoDB('mongo_appender');
- $this->assertTrue($appender instanceof LoggerAppenderMongoDB);
- }
-
- public function testSetGetHost() {
+ public function testHost() {
$expected = 'mongodb://localhost';
self::$appender->setHost($expected);
$result = self::$appender->getHost();
- $this->assertEquals($expected, $result, 'Host doesn\'t match expted value');
+ self::assertEquals($expected, $result);
}
- public function testSetGetHostMongoPrefix() {
- $expected = 'mongodb://localhost';
- self::$appender->setHost('localhost');
- $result = self::$appender->getHost();
- $this->assertEquals($expected, $result, 'Host doesn\'t match expted value');
- }
-
- public function testSetPort() {
+ public function testPort() {
$expected = 27017;
self::$appender->setPort($expected);
$result = self::$appender->getPort();
- $this->assertEquals($expected, $result, 'Port doesn\'t match expted value');
+ self::assertEquals($expected, $result);
}
- public function testGetPort() {
- $expected = 27017;
- self::$appender->setPort($expected);
- $result = self::$appender->getPort();
- $this->assertEquals($expected, $result, 'Port doesn\'t match expted value');
- }
-
- public function testSetDatabaseName() {
+ public function testDatabaseName() {
$expected = 'log4php_mongodb';
self::$appender->setDatabaseName($expected);
$result = self::$appender->getDatabaseName();
- $this->assertEquals($expected, $result, 'Database name doesn\'t match expted value');
+ self::assertEquals($expected, $result);
}
- public function testGetDatabaseName() {
- $expected = 'log4php_mongodb';
- self::$appender->setDatabaseName($expected);
- $result = self::$appender->getDatabaseName();
- $this->assertEquals($expected, $result, 'Database name doesn\'t match expted value');
- }
-
- public function testSetCollectionName() {
+ public function testCollectionName() {
$expected = 'logs';
self::$appender->setCollectionName($expected);
$result = self::$appender->getCollectionName();
- $this->assertEquals($expected, $result, 'Collection name doesn\'t match expted value');
+ self::assertEquals($expected, $result);
}
- public function testGetCollectionName() {
- $expected = 'logs';
- self::$appender->setCollectionName($expected);
- $result = self::$appender->getCollectionName();
- $this->assertEquals($expected, $result, 'Collection name doesn\'t match expted value');
- }
-
- public function testSetUserName() {
+ public function testUserName() {
$expected = 'char0n';
self::$appender->setUserName($expected);
$result = self::$appender->getUserName();
- $this->assertEquals($expected, $result, 'UserName doesn\'t match expted value');
+ self::assertEquals($expected, $result);
}
- public function testGetUserName() {
- $expected = 'char0n';
- self::$appender->setUserName($expected);
- $result = self::$appender->getUserName();
- $this->assertEquals($expected, $result, 'UserName doesn\'t match expted value');
- }
-
- public function testSetPassword() {
+ public function testPassword() {
$expected = 'secret pass';
self::$appender->setPassword($expected);
$result = self::$appender->getPassword();
- $this->assertEquals($expected, $result, 'Password doesn\'t match expted value');
+ self::assertEquals($expected, $result);
}
- public function testGetPassword() {
- $expected = 'secret pass';
- self::$appender->setPassword($expected);
- $result = self::$appender->getPassword();
- $this->assertEquals($expected, $result, 'Password doesn\'t match expted value');
- }
-
public function testActivateOptionsNoCredentials() {
self::$appender->setUserName(null);
self::$appender->setPassword(null);
self::$appender->activateOptions();
}
- public function testAppend() {
- self::$appender->append(self::$event);
- }
-
public function testFormat() {
- $record = $this->logOne(self::$event);
-
- $this->assertEquals('ERROR', $record['level']);
- $this->assertEquals('testmessage', $record['message']);
- $this->assertEquals('test.Logger', $record['loggerName']);
-
- $this->assertEquals('NA', $record['fileName']);
- $this->assertEquals('getLocationInformation', $record['method']);
- $this->assertEquals('NA', $record['lineNumber']);
- $this->assertEquals('LoggerLoggingEvent', $record['className']);
+ $event = LoggerTestHelper::getErrorEvent("testmessage");
+ $record = $this->logOne($event);
- $this->assertTrue(is_int($record['thread']));
- $this->assertTrue(is_int($record['lineNumber']) || $record['lineNumber'] == 'NA');
+ self::assertEquals('ERROR', $record['level']);
+ self::assertEquals('testmessage', $record['message']);
+ self::assertEquals('test', $record['loggerName']);
+
+ self::assertEquals('NA', $record['fileName']);
+ self::assertEquals('getLocationInformation', $record['method']);
+ self::assertEquals('NA', $record['lineNumber']);
+ self::assertEquals('LoggerLoggingEvent', $record['className']);
+
+ self::assertTrue(is_int($record['thread']));
+ self::assertSame(getmypid(), $record['thread']);
+ self::assertTrue(is_int($record['lineNumber']) || $record['lineNumber'] == 'NA');
}
public function testFormatThrowableInfo() {
@@ -182,10 +133,10 @@ class LoggerAppenderMongoDBTest extends
$record = $this->logOne($event);
- $this->assertArrayHasKey('exception', $record);
- $this->assertEquals(1, $record['exception']['code']);
- $this->assertEquals('test exception', $record['exception']['message']);
- $this->assertContains('[internal function]: LoggerAppenderMongoDBTest', $record['exception']['stackTrace']);
+ self::assertArrayHasKey('exception', $record);
+ self::assertEquals(1, $record['exception']['code']);
+ self::assertEquals('test exception', $record['exception']['message']);
+ self::assertContains('[internal function]: LoggerAppenderMongoDBTest', $record['exception']['stackTrace']);
}
public function testFormatThrowableInfoWithInnerException() {
@@ -206,14 +157,14 @@ class LoggerAppenderMongoDBTest extends
$record = $this->logOne($event);
- $this->assertArrayHasKey('exception', $record);
- $this->assertEquals(1, $record['exception']['code']);
- $this->assertEquals('test exception', $record['exception']['message']);
- $this->assertContains('[internal function]: LoggerAppenderMongoDBTest', $record['exception']['stackTrace']);
-
- $this->assertTrue(array_key_exists('innerException', $record['exception']));
- $this->assertEquals(2, $record['exception']['innerException']['code']);
- $this->assertEquals('test exception inner', $record['exception']['innerException']['message']);
+ self::assertArrayHasKey('exception', $record);
+ self::assertEquals(1, $record['exception']['code']);
+ self::assertEquals('test exception', $record['exception']['message']);
+ self::assertContains('[internal function]: LoggerAppenderMongoDBTest', $record['exception']['stackTrace']);
+
+ self::assertTrue(array_key_exists('innerException', $record['exception']));
+ self::assertEquals(2, $record['exception']['innerException']['code']);
+ self::assertEquals('test exception inner', $record['exception']['innerException']['message']);
}
public function testClose() {
@@ -223,20 +174,23 @@ class LoggerAppenderMongoDBTest extends
/** Logs the event and returns the record from the database. */
private function logOne($event)
{
- self::$appender = new LoggerAppenderMongoDB();
- self::$appender->setHost('localhost');
- self::$appender->activateOptions();
- $mongo = self::$appender->getConnection();
+ $appender = new LoggerAppenderMongoDB();
+ $appender->setHost('localhost');
+ $appender->activateOptions();
+
+ $mongo = $appender->getConnection();
$collection = $mongo->log4php_mongodb->logs;
$result = $collection->drop();
self::assertSame((float) 1, $result['ok'], "Could not clear the collection before logging.");
- self::$appender->append($event);
+ $appender->append($event);
$record = $collection->findOne();
self::assertNotNull($record, "Could not read the record from the database.");
+ $appender->close();
+
return $record;
}