feat: add ci test
This commit is contained in:
parent
89bce99870
commit
975795a6e0
|
@ -0,0 +1,15 @@
|
||||||
|
version: '3.9'
|
||||||
|
|
||||||
|
services:
|
||||||
|
greptimedb:
|
||||||
|
container_name: greptimedb
|
||||||
|
image: greptime/greptimedb:0.3.2
|
||||||
|
expose:
|
||||||
|
- "4000"
|
||||||
|
- "4001"
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- emqx_bridge
|
||||||
|
command:
|
||||||
|
standalone start
|
||||||
|
--user-provider=static_user_provider:cmd:greptime_user=greptime_pwd
|
|
@ -51,6 +51,9 @@ services:
|
||||||
- 15670:5670
|
- 15670:5670
|
||||||
# Kinesis
|
# Kinesis
|
||||||
- 4566:4566
|
- 4566:4566
|
||||||
|
# GreptimeDB
|
||||||
|
- 4000:4000
|
||||||
|
- 4001:4001
|
||||||
command:
|
command:
|
||||||
- "-host=0.0.0.0"
|
- "-host=0.0.0.0"
|
||||||
- "-config=/config/toxiproxy.json"
|
- "-config=/config/toxiproxy.json"
|
||||||
|
|
|
@ -160,6 +160,17 @@
|
||||||
"name": "hstreamdb",
|
"name": "hstreamdb",
|
||||||
"listen": "0.0.0.0:6570",
|
"listen": "0.0.0.0:6570",
|
||||||
"upstream": "hstreamdb:6570",
|
"upstream": "hstreamdb:6570",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "greptimedb_http",
|
||||||
|
"listen": "0.0.0.0:4000",
|
||||||
|
"upstream": "iotdb:4000",
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "greptimedb_grpc",
|
||||||
|
"listen": "0.0.0.0:4001",
|
||||||
|
"upstream": "iotdb:4001",
|
||||||
"enabled": true
|
"enabled": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -200,14 +200,6 @@ fields(bridges) ->
|
||||||
desc => <<"Apache IoTDB Bridge Config">>,
|
desc => <<"Apache IoTDB Bridge Config">>,
|
||||||
required => false
|
required => false
|
||||||
}
|
}
|
||||||
)},
|
|
||||||
{greptimedb,
|
|
||||||
mk(
|
|
||||||
hoconsc:map(name, ref(emqx_bridge_greptimedb, "config")),
|
|
||||||
#{
|
|
||||||
desc => <<"GreptimeDB Bridge Config">>,
|
|
||||||
required => false
|
|
||||||
}
|
|
||||||
)}
|
)}
|
||||||
] ++ kafka_structs() ++ pulsar_structs() ++ gcp_pubsub_structs() ++ mongodb_structs() ++
|
] ++ kafka_structs() ++ pulsar_structs() ++ gcp_pubsub_structs() ++ mongodb_structs() ++
|
||||||
influxdb_structs() ++
|
influxdb_structs() ++
|
||||||
|
|
|
@ -107,6 +107,7 @@ method_fields(put, ConnectorType) ->
|
||||||
greptimedb_bridge_common_fields() ->
|
greptimedb_bridge_common_fields() ->
|
||||||
emqx_bridge_schema:common_bridge_fields() ++
|
emqx_bridge_schema:common_bridge_fields() ++
|
||||||
[
|
[
|
||||||
|
{local_topic, mk(binary(), #{desc => ?DESC("local_topic")})},
|
||||||
{write_syntax, fun write_syntax/1}
|
{write_syntax, fun write_syntax/1}
|
||||||
] ++
|
] ++
|
||||||
emqx_resource_schema:fields("resource_opts").
|
emqx_resource_schema:fields("resource_opts").
|
||||||
|
|
|
@ -30,11 +30,12 @@ groups() ->
|
||||||
{group, sync_query}
|
{group, sync_query}
|
||||||
]},
|
]},
|
||||||
{sync_query, [
|
{sync_query, [
|
||||||
{group, grpcv1_tcp},
|
{group, grpcv1_tcp}
|
||||||
{group, grpcv1_tls}
|
%% uncomment tls when we are ready
|
||||||
|
%% {group, grpcv1_tls}
|
||||||
]},
|
]},
|
||||||
{grpcv1_tcp, TCs},
|
{grpcv1_tcp, TCs}
|
||||||
{grpcv1_tls, TCs}
|
%%{grpcv1_tls, TCs}
|
||||||
].
|
].
|
||||||
|
|
||||||
init_per_suite(Config) ->
|
init_per_suite(Config) ->
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
emqx_bridge_greptimedb {
|
||||||
|
|
||||||
|
config_enable.desc:
|
||||||
|
"""Enable or disable this bridge."""
|
||||||
|
|
||||||
|
config_enable.label:
|
||||||
|
"""Enable Or Disable Bridge"""
|
||||||
|
|
||||||
|
desc_config.desc:
|
||||||
|
"""Configuration for an GreptimeDB bridge."""
|
||||||
|
|
||||||
|
desc_config.label:
|
||||||
|
"""GreptimeDB Bridge Configuration"""
|
||||||
|
|
||||||
|
desc_name.desc:
|
||||||
|
"""Bridge name."""
|
||||||
|
|
||||||
|
desc_name.label:
|
||||||
|
"""Bridge Name"""
|
||||||
|
|
||||||
|
desc_type.desc:
|
||||||
|
"""The Bridge Type."""
|
||||||
|
|
||||||
|
desc_type.label:
|
||||||
|
"""Bridge Type"""
|
||||||
|
|
||||||
|
local_topic.desc:
|
||||||
|
"""The MQTT topic filter to be forwarded to the GreptimeDB. All MQTT 'PUBLISH' messages with the topic
|
||||||
|
matching the local_topic will be forwarded.</br>
|
||||||
|
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
|
||||||
|
configured, then both the data got from the rule and the MQTT messages that match local_topic
|
||||||
|
will be forwarded."""
|
||||||
|
|
||||||
|
local_topic.label:
|
||||||
|
"""Local Topic"""
|
||||||
|
|
||||||
|
write_syntax.desc:
|
||||||
|
"""Conf of GreptimeDB gRPC protocol to write data points.The write syntax is a text-based format that provides the measurement, tag set, field set, and timestamp of a data point, and placeholder supported, which is the same as InfluxDB line protocol.
|
||||||
|
See also [InfluxDB 2.3 Line Protocol](https://docs.influxdata.com/influxdb/v2.3/reference/syntax/line-protocol/) and
|
||||||
|
[GreptimeDB 1.8 Line Protocol](https://docs.influxdata.com/influxdb/v1.8/write_protocols/line_protocol_tutorial/) </br>
|
||||||
|
TLDR:</br>
|
||||||
|
```
|
||||||
|
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]
|
||||||
|
```
|
||||||
|
Please note that a placeholder for an integer value must be annotated with a suffix `i`. For example `${payload.int_value}i`."""
|
||||||
|
|
||||||
|
write_syntax.label:
|
||||||
|
"""Write Syntax"""
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
emqx_bridge_greptimedb_connector {
|
||||||
|
|
||||||
|
dbname.desc:
|
||||||
|
"""GreptimeDB database."""
|
||||||
|
|
||||||
|
dbname.label:
|
||||||
|
"""Database"""
|
||||||
|
|
||||||
|
greptimedb_grpc_v1.desc:
|
||||||
|
"""GreptimeDB's protocol. Support GreptimeDB v1.8 and before."""
|
||||||
|
|
||||||
|
greptimedb_grpc_v1.label:
|
||||||
|
"""HTTP API Protocol"""
|
||||||
|
|
||||||
|
password.desc:
|
||||||
|
"""GreptimeDB password."""
|
||||||
|
|
||||||
|
password.label:
|
||||||
|
"""Password"""
|
||||||
|
|
||||||
|
precision.desc:
|
||||||
|
"""GreptimeDB time precision."""
|
||||||
|
|
||||||
|
precision.label:
|
||||||
|
"""Time Precision"""
|
||||||
|
|
||||||
|
protocol.desc:
|
||||||
|
"""GreptimeDB's protocol. gRPC API."""
|
||||||
|
|
||||||
|
protocol.label:
|
||||||
|
"""Protocol"""
|
||||||
|
|
||||||
|
server.desc:
|
||||||
|
"""The IPv4 or IPv6 address or the hostname to connect to.</br>
|
||||||
|
A host entry has the following form: `Host[:Port]`.</br>
|
||||||
|
The GreptimeDB default port 8086 is used if `[:Port]` is not specified."""
|
||||||
|
|
||||||
|
server.label:
|
||||||
|
"""Server Host"""
|
||||||
|
|
||||||
|
username.desc:
|
||||||
|
"""GreptimeDB username."""
|
||||||
|
|
||||||
|
username.label:
|
||||||
|
"""Username"""
|
||||||
|
|
||||||
|
}
|
|
@ -222,6 +222,9 @@ for dep in ${CT_DEPS}; do
|
||||||
kinesis)
|
kinesis)
|
||||||
FILES+=( '.ci/docker-compose-file/docker-compose-kinesis.yaml' )
|
FILES+=( '.ci/docker-compose-file/docker-compose-kinesis.yaml' )
|
||||||
;;
|
;;
|
||||||
|
greptimedb)
|
||||||
|
FILES+=( '.ci/docker-compose-file/docker-compose-greptimedb.yaml' )
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "unknown_ct_dependency $dep"
|
echo "unknown_ct_dependency $dep"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
Loading…
Reference in New Issue