<?php 
 
namespace KairosDB\Test; 
 
use KairosDB\QueryBuilder; 
 
class QueryBuilderTest extends \PHPUnit_Framework_TestCase 
{ 
    /** @var  QueryBuilder $queryBuilder */ 
    private $queryBuilder; 
 
    public function setUp() 
    { 
        $this->queryBuilder = new QueryBuilder(); 
    } 
 
 
    public function testAddMetricGroupingByValue() 
    { 
        $metricName = "network_in"; 
        $range_size = 1000; 
        $query = $this->queryBuilder 
            ->addMetric($metricName) 
            ->groupByValue($range_size) 
            ->build(); 
 
        $metric = array_pop($query['metrics']); 
 
        $this->assertArrayHasKey('group_by', $metric); 
        $this->assertEquals('value', $metric['group_by']['name']); 
        $this->assertEquals($range_size, $metric['group_by']['range_size']); 
    } 
 
    public function testAddMetricGroupingByTags() 
    { 
        $metricName = "network_in"; 
        $tags = ["host" => 'precise64']; 
        $query = $this->queryBuilder 
            ->addMetric($metricName) 
            ->groupByTags($tags) 
            ->build(); 
 
        $metric = array_pop($query['metrics']); 
 
        $this->assertArrayHasKey('group_by', $metric); 
        $this->assertEquals('tag', $metric['group_by']['name']); 
        $this->assertEquals($tags, $metric['group_by']['tags']); 
    } 
 
    public function testAddSeveralMetric() 
    { 
        $metricName = "network_in"; 
        $metricName2 = "network_out"; 
        $query = $this->queryBuilder->addMetric($metricName)->addMetric($metricName2)->build(); 
        $this->assertArrayHasKey('metrics', $query); 
 
        $this->assertCount(2, $query['metrics']); 
    } 
 
    public function testAddTagsToMetric() 
    { 
        $metricName = "network_in"; 
        $tags = ['host' => 'precise64']; 
        $query = $this->queryBuilder 
            ->addMetric($metricName) 
            ->tags($tags) 
            ->build(); 
 
        $metric = array_pop($query['metrics']); 
 
        $this->assertArrayHasKey('tags', $metric); 
 
    } 
 
    public function testAddLimiToMetric() 
    { 
        $metricName = "network_in"; 
        $query = $this->queryBuilder 
            ->addMetric($metricName) 
            ->limit(700) 
            ->build(); 
 
        $metric = array_pop($query['metrics']); 
 
        $this->assertArrayHasKey('limit', $metric); 
 
    } 
 
    public function testAddMetric() 
    { 
        $metricName = "network_in"; 
        $query = $this->queryBuilder->addMetric($metricName)->build(); 
        $this->assertArrayHasKey('metrics', $query); 
        $metric = array_pop($query['metrics']); 
 
        $this->assertEquals($metricName, $metric['name']); 
    } 
 
    public function testStartFromRelative() 
    { 
        $query = $this->queryBuilder->start(['value' => 1, 'unit' => 'days'])->build(); 
        $this->assertArrayHasKey('start_relative', $query); 
    } 
 
    public function testStartFromAbsolute() 
    { 
        $start = round(microtime(true) * 1000); 
        $query = $this->queryBuilder->start($start)->build(); 
        $this->assertArrayHasKey('start_absolute', $query); 
    } 
 
    public function testEndRelative() 
    { 
        $query = $this->queryBuilder->end(['value' => 1, 'unit' => 'days'])->build(); 
        $this->assertArrayHasKey('end_relative', $query); 
    } 
 
    public function testEndAbsolute() 
    { 
        $start = round(microtime(true) * 1000); 
        $query = $this->queryBuilder->end($start)->build(); 
        $this->assertArrayHasKey('end_absolute', $query); 
    } 
 
    public function testQueryCacheTime() 
    { 
        $seconds = 60*60; 
        $query = $this->queryBuilder->cache($seconds)->build(); 
        $this->assertArrayHasKey('cache_time', $query); 
    } 
 
} 
 
 |