104 lines
3.5 KiB
PHP
104 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace InfluxDB2Test;
|
|
|
|
use DateInterval;
|
|
use DateTime;
|
|
use GuzzleHttp\Psr7\Response;
|
|
use InfluxDB2\Model\Query;
|
|
|
|
require_once('BasicTest.php');
|
|
|
|
/**
|
|
* Class QueryApiTest
|
|
* @package InfluxDB2Test
|
|
*/
|
|
class QueryApiTest extends BasicTest
|
|
{
|
|
private const SUCCESS_DATA =
|
|
"#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,long,string,string,string,string\n"
|
|
. "#group,false,false,false,false,false,false,false,false,false,true\n" . "#default,_result,,,,,,,,,\n"
|
|
. ",result,table,_start,_stop,_time,_value,_field,_measurement,host,region\n"
|
|
. ",,0,1970-01-01T00:00:10Z,1970-01-01T00:00:20Z,1970-01-01T00:00:10Z,10,free,mem,A,west\n"
|
|
. ",,0,1970-01-01T00:00:10Z,1970-01-01T00:00:20Z,1970-01-01T00:00:10Z,20,free,mem,B,west\n"
|
|
. ",,0,1970-01-01T00:00:20Z,1970-01-01T00:00:30Z,1970-01-01T00:00:20Z,11,free,mem,A,west\n"
|
|
. ",,0,1970-01-01T00:00:20Z,1970-01-01T00:00:30Z,1970-01-01T00:00:20Z,22,free,mem,B,west";
|
|
|
|
public function testQueryRaw()
|
|
{
|
|
$this->mockHandler->append(new Response(204, [], QueryApiTest::SUCCESS_DATA));
|
|
|
|
$result = $this->queryApi->queryRaw(
|
|
'from(bucket:"my-bucket") |> range(start: 1970-01-01T00:00:00.000000001Z) |> last()'
|
|
);
|
|
|
|
$this->assertEquals(QueryApiTest::SUCCESS_DATA, $result);
|
|
}
|
|
|
|
public function testQuery()
|
|
{
|
|
$this->mockHandler->append(new Response(204, [], QueryApiTest::SUCCESS_DATA));
|
|
|
|
$bucket = 'my-bucket';
|
|
$result = $this->queryApi->query('from(bucket:"' . $bucket
|
|
. '") |> range(start: 1970-01-01T00:00:00.000000001Z) |> last()');
|
|
|
|
$this->assertEquals(1, count($result));
|
|
$this->assertEquals(4, count($result[0]->records));
|
|
|
|
$record = $result[0]->records[0];
|
|
|
|
$this->assertEquals('1970-01-01T00:00:10Z', $record->getTime());
|
|
$this->assertEquals('mem', $record->getMeasurement());
|
|
$this->assertEquals(10, $record->getValue());
|
|
$this->assertEquals('free', $record->getField());
|
|
}
|
|
|
|
public function testQueryParameterized()
|
|
{
|
|
$this->mockHandler->append(new Response(204, [], QueryApiTest::SUCCESS_DATA));
|
|
$q = new Query();
|
|
|
|
$q->setQuery('from(bucket: params.bucketParam) |> range(start: time(v: params.startParam)) |> last()');
|
|
|
|
$today = new DateTime("2021-12-15T11:33:28+00:00");
|
|
$yesterday = $today->sub(new DateInterval("P1D"));
|
|
|
|
$q->setParams([
|
|
"bucketParam" => "my-bucket",
|
|
"startParam" => $yesterday
|
|
]);
|
|
|
|
$result = $this->queryApi->query($q);
|
|
$contents = $this->mockHandler->getLastRequest()->getBody()->getContents();
|
|
$json = json_decode($contents, true);
|
|
|
|
$this->assertEquals("my-bucket", $json["params"]["bucketParam"]);
|
|
$this->assertEquals('2021-12-14T11:33:28+00:00', $json["params"]["startParam"]);
|
|
|
|
$this->assertCount(1, $result);
|
|
$this->assertCount(4, $result[0]->records);
|
|
|
|
$record = $result[0]->records[0];
|
|
|
|
$this->assertEquals('1970-01-01T00:00:10Z', $record->getTime());
|
|
$this->assertEquals('mem', $record->getMeasurement());
|
|
$this->assertEquals(10, $record->getValue());
|
|
$this->assertEquals('free', $record->getField());
|
|
}
|
|
|
|
public function testQueryRawEmptyData()
|
|
{
|
|
$result = $this->queryApi->queryRaw('');
|
|
|
|
$this->assertNull($result);
|
|
}
|
|
|
|
public function testQueryEmptyData()
|
|
{
|
|
$result = $this->queryApi->query(null);
|
|
|
|
$this->assertNull($result);
|
|
}
|
|
}
|