| 
<?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);
 }
 
 }
 |