version 1.5
This commit is contained in:
+115
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
namespace InfluxDB2Test;
|
||||
|
||||
use DateTime;
|
||||
use InfluxDB2\Client;
|
||||
use InfluxDB2\Model\WritePrecision;
|
||||
use InfluxDB2\Point;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @group integration
|
||||
*/
|
||||
class QueryApiIntegrationTest extends TestCase
|
||||
{
|
||||
private $client;
|
||||
private $writeApi;
|
||||
private $queryApi;
|
||||
|
||||
/**
|
||||
* @before
|
||||
*/
|
||||
public function setUp(): void
|
||||
{
|
||||
$this->client = new Client([
|
||||
"url" => "http://localhost:8086",
|
||||
"token" => "my-token",
|
||||
"bucket" => "my-bucket",
|
||||
"precision" => WritePrecision::NS,
|
||||
"org" => "my-org",
|
||||
"debug" => false
|
||||
]);
|
||||
$this->writeApi = $this->client->createWriteApi();
|
||||
$this->queryApi = $this->client->createQueryApi();
|
||||
}
|
||||
|
||||
public function testExistsApi()
|
||||
{
|
||||
$this->assertNotNull($this->writeApi);
|
||||
$this->assertNotNull($this->queryApi);
|
||||
}
|
||||
|
||||
public function testQueryRaw()
|
||||
{
|
||||
$now = new DateTime();
|
||||
$measurement = 'h2o_query_' . $now->getTimestamp();
|
||||
|
||||
$query = $this->prepareData($measurement, $now);
|
||||
print $query;
|
||||
|
||||
$result = $this->queryApi->queryRaw($query);
|
||||
|
||||
$this->assertStringContainsString(',result,table,_start,_stop,_time,_value,_field,_measurement,location', $result);
|
||||
$this->assertStringContainsString($measurement, $result);
|
||||
}
|
||||
|
||||
public function testQuery()
|
||||
{
|
||||
$now = new DateTime();
|
||||
$measurement = 'h2o_query_' . $now->getTimestamp();
|
||||
$query = $this->prepareData($measurement, $now);
|
||||
print $query;
|
||||
|
||||
$result = $this->queryApi->query($query);
|
||||
|
||||
$this->assertNotNull($result);
|
||||
$this->assertEquals(1, sizeof($result));
|
||||
$records = $result[0]->records;
|
||||
$this->assertEquals(1, sizeof($records));
|
||||
$record = $records[0];
|
||||
$this->assertEquals($measurement, $record->getMeasurement());
|
||||
$this->assertEquals('europe', $record->values['location']);
|
||||
$this->assertEquals(2, $record->getValue());
|
||||
$this->assertEquals(0, $record->table);
|
||||
$this->assertEquals(0, $record->values['table']);
|
||||
$this->assertEquals('level', $record->getField());
|
||||
}
|
||||
|
||||
public function testWriteQueryNewLine()
|
||||
{
|
||||
$measurement = 'h2o_QueryNewLine_' . (new DateTime())->getTimestamp();
|
||||
|
||||
$this->writeApi->write(Point::measurement($measurement)
|
||||
->addTag('location', 'europe')
|
||||
->addField('value', "some \n value"));
|
||||
|
||||
$result = $this->queryApi->query('from(bucket: "my-bucket") |> range(start: 0)
|
||||
|> filter(fn: (r) => r._measurement == "' . $measurement . '")');
|
||||
|
||||
$this->assertNotNull($result);
|
||||
$this->assertEquals(1, sizeof($result));
|
||||
$records = $result[0]->records;
|
||||
$this->assertEquals(1, sizeof($records));
|
||||
$record = $records[0];
|
||||
|
||||
$this->assertEquals("some \r\n value", $record->getValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $measurement
|
||||
* @param DateTime $now
|
||||
* @return string
|
||||
*/
|
||||
public function prepareData(string $measurement, DateTime $now): string
|
||||
{
|
||||
$this->writeApi->write(Point::measurement($measurement)
|
||||
->addTag('location', 'europe')
|
||||
->addField('level', 2)
|
||||
->time($now, WritePrecision::US));
|
||||
|
||||
$query = 'from(bucket: "my-bucket") |> range(start: 0)
|
||||
|> filter(fn: (r) => r._measurement == "' . $measurement . '")';
|
||||
return $query;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user