function getConnection()
{
    return new Connection(getConnectionOptions());
}
 /**
  * Test the enhanced tracer
  */
 public function testEnhancedTracer()
 {
     //Setup
     $self = $this;
     //Hack for PHP 5.3 compatibility
     $enhancedTracer = function ($data) use($self) {
         $self->assertTrue($data instanceof TraceRequest || $data instanceof TraceResponse, '$data must be instance of TraceRequest or TraceResponse.');
         $self->assertInternalType('array', $data->getHeaders(), 'Headers should be an array!');
         $self->assertNotEmpty($data->getHeaders(), 'Headers should not be an empty array!');
         $self->assertInternalType('string', $data->getBody(), 'Body must be a string!');
         if ($data instanceof TraceRequest) {
             $self->assertContains($data->getMethod(), array(HttpHelper::METHOD_DELETE, HttpHelper::METHOD_GET, HttpHelper::METHOD_HEAD, HttpHelper::METHOD_PATCH, HttpHelper::METHOD_POST, HttpHelper::METHOD_PUT), 'Invalid http method!');
             $self->assertInternalType('string', $data->getRequestUrl(), 'Request url must be a string!');
             $self->assertEquals('request', $data->getType());
             foreach ($data->getHeaders() as $header => $value) {
                 $self->assertInternalType('string', $value, "The header value should be a string");
                 $self->assertInternalType('string', $header, "The header should be a string");
             }
         } else {
             $self->assertInternalType('integer', $data->getHttpCode(), 'Http code must be an integer!');
             $self->assertInternalType('string', $data->getHttpCodeDefinition(), 'Http code definition must be a string!');
             $self->assertEquals('response', $data->getType());
             $self->assertInternalType('float', $data->getTimeTaken());
         }
     };
     $options = getConnectionOptions();
     $options[ConnectionOptions::OPTION_TRACE] = $enhancedTracer;
     $options[ConnectionOptions::OPTION_ENHANCED_TRACE] = true;
     $connection = new Connection($options);
     $collectionHandler = new CollectionHandler($connection);
     //Try creating a collection
     $collectionHandler->create('ArangoDB_PHP_TestSuite_TestTracer');
     //Delete the collection
     try {
         $collectionHandler->drop('ArangoDB_PHP_TestSuite_TestTracer');
     } catch (Exception $e) {
     }
 }