!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache/2.2.22 (Debian). PHP/5.6.36 

uname -a: Linux h05.hvosting.ua 4.9.110-amd64 #3 SMP Sun Nov 4 16:27:09 UTC 2018 x86_64 

uid=1389(h33678) gid=1099(h33678) groups=1099(h33678),502(mgrsecure) 

Safe-mode: OFF (not secure)

/home/h33678/data/www/it-man.ztu.edu.ua/src/vendor/monolog/monolog/tests/Monolog/Handler/   drwxr-xr-x
Free 116.59 GB of 200.55 GB (58.13%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     ElasticSearchHandlerTest.php (7.51 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
 * This file is part of the Monolog package.
 *
 * (c) Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Monolog\Handler;

use 
Monolog\Formatter\ElasticaFormatter;
use 
Monolog\Formatter\NormalizerFormatter;
use 
Monolog\TestCase;
use 
Monolog\Logger;
use 
Elastica\Client;
use 
Elastica\Request;
use 
Elastica\Response;

class 
ElasticSearchHandlerTest extends TestCase
{
    
/**
     * @var Client mock
     */
    
protected $client;

    
/**
     * @var array Default handler options
     */
    
protected $options = array(
        
'index' => 'my_index',
        
'type'  => 'doc_type',
    );

    public function 
setUp()
    {
        
// Elastica lib required
        
if (!class_exists("Elastica\Client")) {
            
$this->markTestSkipped("ruflin/elastica not installed");
        }

        
// base mock Elastica Client object
        
$this->client $this->getMockBuilder('Elastica\Client')
            ->
setMethods(array('addDocuments'))
            ->
disableOriginalConstructor()
            ->
getMock();
    }

    
/**
     * @covers Monolog\Handler\ElasticSearchHandler::write
     * @covers Monolog\Handler\ElasticSearchHandler::handleBatch
     * @covers Monolog\Handler\ElasticSearchHandler::bulkSend
     * @covers Monolog\Handler\ElasticSearchHandler::getDefaultFormatter
     */
    
public function testHandle()
    {
        
// log message
        
$msg = array(
            
'level' => Logger::ERROR,
            
'level_name' => 'ERROR',
            
'channel' => 'meh',
            
'context' => array('foo' => 7'bar''class' => new \stdClass),
            
'datetime' => new \DateTime("@0"),
            
'extra' => array(),
            
'message' => 'log',
        );

        
// format expected result
        
$formatter = new ElasticaFormatter($this->options['index'], $this->options['type']);
        
$expected = array($formatter->format($msg));

        
// setup ES client mock
        
$this->client->expects($this->any())
            ->
method('addDocuments')
            ->
with($expected);

        
// perform tests
        
$handler = new ElasticSearchHandler($this->client$this->options);
        
$handler->handle($msg);
        
$handler->handleBatch(array($msg));
    }

    
/**
     * @covers Monolog\Handler\ElasticSearchHandler::setFormatter
     */
    
public function testSetFormatter()
    {
        
$handler = new ElasticSearchHandler($this->client);
        
$formatter = new ElasticaFormatter('index_new''type_new');
        
$handler->setFormatter($formatter);
        
$this->assertInstanceOf('Monolog\Formatter\ElasticaFormatter'$handler->getFormatter());
        
$this->assertEquals('index_new'$handler->getFormatter()->getIndex());
        
$this->assertEquals('type_new'$handler->getFormatter()->getType());
    }

    
/**
     * @covers                   Monolog\Handler\ElasticSearchHandler::setFormatter
     * @expectedException        InvalidArgumentException
     * @expectedExceptionMessage ElasticSearchHandler is only compatible with ElasticaFormatter
     */
    
public function testSetFormatterInvalid()
    {
        
$handler = new ElasticSearchHandler($this->client);
        
$formatter = new NormalizerFormatter();
        
$handler->setFormatter($formatter);
    }

    
/**
     * @covers Monolog\Handler\ElasticSearchHandler::__construct
     * @covers Monolog\Handler\ElasticSearchHandler::getOptions
     */
    
public function testOptions()
    {
        
$expected = array(
            
'index' => $this->options['index'],
            
'type' => $this->options['type'],
            
'ignore_error' => false,
        );
        
$handler = new ElasticSearchHandler($this->client$this->options);
        
$this->assertEquals($expected$handler->getOptions());
    }

    
/**
     * @covers       Monolog\Handler\ElasticSearchHandler::bulkSend
     * @dataProvider providerTestConnectionErrors
     */
    
public function testConnectionErrors($ignore$expectedError)
    {
        
$clientOpts = array('host' => '127.0.0.1''port' => 1);
        
$client = new Client($clientOpts);
        
$handlerOpts = array('ignore_error' => $ignore);
        
$handler = new ElasticSearchHandler($client$handlerOpts);

        if (
$expectedError) {
            
$this->setExpectedException($expectedError[0], $expectedError[1]);
            
$handler->handle($this->getRecord());
        } else {
            
$this->assertFalse($handler->handle($this->getRecord()));
        }
    }

    
/**
     * @return array
     */
    
public function providerTestConnectionErrors()
    {
        return array(
            array(
false, array('RuntimeException''Error sending messages to Elasticsearch')),
            array(
truefalse),
        );
    }

    
/**
     * Integration test using localhost Elastic Search server
     *
     * @covers Monolog\Handler\ElasticSearchHandler::__construct
     * @covers Monolog\Handler\ElasticSearchHandler::handleBatch
     * @covers Monolog\Handler\ElasticSearchHandler::bulkSend
     * @covers Monolog\Handler\ElasticSearchHandler::getDefaultFormatter
     */
    
public function testHandleIntegration()
    {
        
$msg = array(
            
'level' => Logger::ERROR,
            
'level_name' => 'ERROR',
            
'channel' => 'meh',
            
'context' => array('foo' => 7'bar''class' => new \stdClass),
            
'datetime' => new \DateTime("@0"),
            
'extra' => array(),
            
'message' => 'log',
        );

        
$expected $msg;
        
$expected['datetime'] = $msg['datetime']->format(\DateTime::ISO8601);
        
$expected['context'] = array(
            
'class' => '[object] (stdClass: {})',
            
'foo' => 7,
            
=> 'bar',
        );

        
$client = new Client();
        
$handler = new ElasticSearchHandler($client$this->options);
        try {
            
$handler->handleBatch(array($msg));
        } catch (\
RuntimeException $e) {
            
$this->markTestSkipped("Cannot connect to Elastic Search server on localhost");
        }

        
// check document id from ES server response
        
$documentId $this->getCreatedDocId($client->getLastResponse());
        
$this->assertNotEmpty($documentId'No elastic document id received');

        
// retrieve document source from ES and validate
        
$document $this->getDocSourceFromElastic(
            
$client,
            
$this->options['index'],
            
$this->options['type'],
            
$documentId
        
);
        
$this->assertEquals($expected$document);

        
// remove test index from ES
        
$client->request("/{$this->options['index']}"Request::DELETE);
    }

    
/**
     * Return last created document id from ES response
     * @param  Response    $response Elastica Response object
     * @return string|null
     */
    
protected function getCreatedDocId(Response $response)
    {
        
$data $response->getData();
        if (!empty(
$data['items'][0]['create']['_id'])) {
            return 
$data['items'][0]['create']['_id'];
        }
    }

    
/**
     * Retrieve document by id from Elasticsearch
     * @param  Client $client     Elastica client
     * @param  string $index
     * @param  string $type
     * @param  string $documentId
     * @return array
     */
    
protected function getDocSourceFromElastic(Client $client$index$type$documentId)
    {
        
$resp $client->request("/{$index}/{$type}/{$documentId}"Request::GET);
        
$data $resp->getData();
        if (!empty(
$data['_source'])) {
            return 
$data['_source'];
        }

        return array();
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by PinoyWH1Z | C99Shell Github | Generation time: 0.0111 ]--