|
@@ -27,7 +27,7 @@ import (
|
|
|
// use to verify that the generated data are vizualized as expected, see
|
|
// use to verify that the generated data are vizualized as expected, see
|
|
|
// devenv/README.md for setup instructions.
|
|
// devenv/README.md for setup instructions.
|
|
|
func TestPostgres(t *testing.T) {
|
|
func TestPostgres(t *testing.T) {
|
|
|
- // change to true to run the MySQL tests
|
|
|
|
|
|
|
+ // change to true to run the PostgreSQL tests
|
|
|
runPostgresTests := false
|
|
runPostgresTests := false
|
|
|
// runPostgresTests := true
|
|
// runPostgresTests := true
|
|
|
|
|
|
|
@@ -102,6 +102,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": "SELECT * FROM postgres_types",
|
|
"rawSql": "SELECT * FROM postgres_types",
|
|
|
"format": "table",
|
|
"format": "table",
|
|
@@ -182,6 +183,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": "SELECT $__timeGroup(time, '5m') AS time, avg(value) as value FROM metric GROUP BY 1 ORDER BY 1",
|
|
"rawSql": "SELECT $__timeGroup(time, '5m') AS time, avg(value) as value FROM metric GROUP BY 1 ORDER BY 1",
|
|
|
"format": "time_series",
|
|
"format": "time_series",
|
|
@@ -226,6 +228,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": "SELECT $__timeGroup(time, '5m', NULL) AS time, avg(value) as value FROM metric GROUP BY 1 ORDER BY 1",
|
|
"rawSql": "SELECT $__timeGroup(time, '5m', NULL) AS time, avg(value) as value FROM metric GROUP BY 1 ORDER BY 1",
|
|
|
"format": "time_series",
|
|
"format": "time_series",
|
|
@@ -280,6 +283,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": "SELECT $__timeGroup(time, '5m', 1.5) AS time, avg(value) as value FROM metric GROUP BY 1 ORDER BY 1",
|
|
"rawSql": "SELECT $__timeGroup(time, '5m', 1.5) AS time, avg(value) as value FROM metric GROUP BY 1 ORDER BY 1",
|
|
|
"format": "time_series",
|
|
"format": "time_series",
|
|
@@ -401,6 +405,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT "timeInt64" as time, "timeInt64" FROM metric_values ORDER BY time LIMIT 1`,
|
|
"rawSql": `SELECT "timeInt64" as time, "timeInt64" FROM metric_values ORDER BY time LIMIT 1`,
|
|
|
"format": "time_series",
|
|
"format": "time_series",
|
|
@@ -423,6 +428,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT "timeInt64Nullable" as time, "timeInt64Nullable" FROM metric_values ORDER BY time LIMIT 1`,
|
|
"rawSql": `SELECT "timeInt64Nullable" as time, "timeInt64Nullable" FROM metric_values ORDER BY time LIMIT 1`,
|
|
|
"format": "time_series",
|
|
"format": "time_series",
|
|
@@ -445,6 +451,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT "timeFloat64" as time, "timeFloat64" FROM metric_values ORDER BY time LIMIT 1`,
|
|
"rawSql": `SELECT "timeFloat64" as time, "timeFloat64" FROM metric_values ORDER BY time LIMIT 1`,
|
|
|
"format": "time_series",
|
|
"format": "time_series",
|
|
@@ -467,6 +474,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT "timeFloat64Nullable" as time, "timeFloat64Nullable" FROM metric_values ORDER BY time LIMIT 1`,
|
|
"rawSql": `SELECT "timeFloat64Nullable" as time, "timeFloat64Nullable" FROM metric_values ORDER BY time LIMIT 1`,
|
|
|
"format": "time_series",
|
|
"format": "time_series",
|
|
@@ -511,6 +519,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT "timeInt32Nullable" as time, "timeInt32Nullable" FROM metric_values ORDER BY time LIMIT 1`,
|
|
"rawSql": `SELECT "timeInt32Nullable" as time, "timeInt32Nullable" FROM metric_values ORDER BY time LIMIT 1`,
|
|
|
"format": "time_series",
|
|
"format": "time_series",
|
|
@@ -533,6 +542,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT "timeFloat32" as time, "timeFloat32" FROM metric_values ORDER BY time LIMIT 1`,
|
|
"rawSql": `SELECT "timeFloat32" as time, "timeFloat32" FROM metric_values ORDER BY time LIMIT 1`,
|
|
|
"format": "time_series",
|
|
"format": "time_series",
|
|
@@ -555,6 +565,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT "timeFloat32Nullable" as time, "timeFloat32Nullable" FROM metric_values ORDER BY time LIMIT 1`,
|
|
"rawSql": `SELECT "timeFloat32Nullable" as time, "timeFloat32Nullable" FROM metric_values ORDER BY time LIMIT 1`,
|
|
|
"format": "time_series",
|
|
"format": "time_series",
|
|
@@ -577,6 +588,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT $__timeEpoch(time), measurement || ' - value one' as metric, "valueOne" FROM metric_values ORDER BY 1`,
|
|
"rawSql": `SELECT $__timeEpoch(time), measurement || ' - value one' as metric, "valueOne" FROM metric_values ORDER BY 1`,
|
|
|
"format": "time_series",
|
|
"format": "time_series",
|
|
@@ -625,6 +637,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT $__timeEpoch(time), "valueOne", "valueTwo" FROM metric_values ORDER BY 1`,
|
|
"rawSql": `SELECT $__timeEpoch(time), "valueOne", "valueTwo" FROM metric_values ORDER BY 1`,
|
|
|
"format": "time_series",
|
|
"format": "time_series",
|
|
@@ -682,6 +695,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT "time_sec" as time, description as text, tags FROM event WHERE $__unixEpochFilter(time_sec) AND tags='deploy' ORDER BY 1 ASC`,
|
|
"rawSql": `SELECT "time_sec" as time, description as text, tags FROM event WHERE $__unixEpochFilter(time_sec) AND tags='deploy' ORDER BY 1 ASC`,
|
|
|
"format": "table",
|
|
"format": "table",
|
|
@@ -705,6 +719,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT "time_sec" as time, description as text, tags FROM event WHERE $__unixEpochFilter(time_sec) AND tags='ticket' ORDER BY 1 ASC`,
|
|
"rawSql": `SELECT "time_sec" as time, description as text, tags FROM event WHERE $__unixEpochFilter(time_sec) AND tags='ticket' ORDER BY 1 ASC`,
|
|
|
"format": "table",
|
|
"format": "table",
|
|
@@ -731,6 +746,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": fmt.Sprintf(`SELECT
|
|
"rawSql": fmt.Sprintf(`SELECT
|
|
|
CAST('%s' AS TIMESTAMP) as time,
|
|
CAST('%s' AS TIMESTAMP) as time,
|
|
@@ -761,6 +777,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": fmt.Sprintf(`SELECT
|
|
"rawSql": fmt.Sprintf(`SELECT
|
|
|
%d as time,
|
|
%d as time,
|
|
@@ -791,6 +808,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": fmt.Sprintf(`SELECT
|
|
"rawSql": fmt.Sprintf(`SELECT
|
|
|
cast(%d as bigint) as time,
|
|
cast(%d as bigint) as time,
|
|
@@ -821,6 +839,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": fmt.Sprintf(`SELECT
|
|
"rawSql": fmt.Sprintf(`SELECT
|
|
|
%d as time,
|
|
%d as time,
|
|
@@ -849,6 +868,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT
|
|
"rawSql": `SELECT
|
|
|
cast(null as bigint) as time,
|
|
cast(null as bigint) as time,
|
|
@@ -877,6 +897,7 @@ func TestPostgres(t *testing.T) {
|
|
|
query := &tsdb.TsdbQuery{
|
|
query := &tsdb.TsdbQuery{
|
|
|
Queries: []*tsdb.Query{
|
|
Queries: []*tsdb.Query{
|
|
|
{
|
|
{
|
|
|
|
|
+ DataSource: &models.DataSource{JsonData: simplejson.New()},
|
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
|
|
"rawSql": `SELECT
|
|
"rawSql": `SELECT
|
|
|
cast(null as timestamp) as time,
|
|
cast(null as timestamp) as time,
|