blob: bd9524e32615ffc4708eb7ba250235cd57478bb1 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
from iotdb.IoTDBContainer import IoTDBContainer
from iotdb.Session import Session
from iotdb.template.InternalNode import InternalNode
from iotdb.template.MeasurementNode import MeasurementNode
from iotdb.template.Template import Template
from iotdb.utils.IoTDBConstants import TSDataType, Compressor, TSEncoding
def test_template_create():
with IoTDBContainer("iotdb:dev") as db:
db: IoTDBContainer
session = Session(db.get_container_host_ip(), db.get_exposed_port(6667))
session.open(False)
measurement_template_name = "template_python"
template = Template(name=measurement_template_name, share_time=False)
m_node_1 = MeasurementNode(
name="s1",
data_type=TSDataType.INT64,
encoding=TSEncoding.RLE,
compression_type=Compressor.SNAPPY,
)
m_node_2 = MeasurementNode(
name="s2",
data_type=TSDataType.INT64,
encoding=TSEncoding.RLE,
compression_type=Compressor.SNAPPY,
)
m_node_3 = MeasurementNode(
name="s3",
data_type=TSDataType.INT64,
encoding=TSEncoding.RLE,
compression_type=Compressor.SNAPPY,
)
template.add_template(m_node_1)
template.add_template(m_node_2)
template.add_template(m_node_3)
session.create_schema_template(template)
assert session.show_measurements_in_template(measurement_template_name) == [
"s3",
"s1",
"s2",
]
assert session.count_measurements_in_template(measurement_template_name) == 3
assert (
session.is_measurement_in_template(measurement_template_name, "s1") is True
)
assert (
session.is_path_exist_in_template(measurement_template_name, "s1") is True
)
assert (
session.is_path_exist_in_template(measurement_template_name, "s4") is False
)
session.delete_node_in_template(measurement_template_name, "s1")
assert session.show_measurements_in_template(measurement_template_name) == [
"s3",
"s2",
]
assert session.count_measurements_in_template(measurement_template_name) == 2
assert (
session.is_path_exist_in_template(measurement_template_name, "s1") is False
)
tree_template_name = "treeTemplate_python"
template = Template(name=tree_template_name, share_time=True)
i_node_gps = InternalNode(name="GPS", share_time=False)
i_node_v = InternalNode(name="vehicle", share_time=True)
m_node_x = MeasurementNode(
"x", TSDataType.FLOAT, TSEncoding.RLE, Compressor.SNAPPY
)
i_node_gps.add_child(m_node_x)
i_node_v.add_child(m_node_x)
template.add_template(i_node_gps)
template.add_template(i_node_v)
template.add_template(m_node_x)
session.create_schema_template(template)
assert session.show_measurements_in_template(tree_template_name) == [
"x",
"GPS.x",
"vehicle.x",
]
assert session.count_measurements_in_template(tree_template_name) == 3
assert session.show_all_templates() == [
measurement_template_name,
tree_template_name,
]
assert session.is_measurement_in_template(tree_template_name, "GPS") is False
assert session.is_measurement_in_template(tree_template_name, "GPS.x") is True
session.drop_schema_template(measurement_template_name)
session.drop_schema_template(tree_template_name)
session.close()
def test_add_measurements_template():
with IoTDBContainer("iotdb:dev") as db:
db: IoTDBContainer
session = Session(db.get_container_host_ip(), db.get_exposed_port(6667))
session.open(False)
template_name = "add_template_python"
template = Template(name=template_name, share_time=False)
i_node_v = InternalNode(name="GPS", share_time=False)
i_node_gps_x = MeasurementNode(
"x", TSDataType.FLOAT, TSEncoding.RLE, Compressor.SNAPPY
)
i_node_v.add_child(i_node_gps_x)
template.add_template(i_node_v)
session.create_schema_template(template)
# # append schema template
data_types = [TSDataType.FLOAT, TSDataType.FLOAT, TSDataType.DOUBLE]
encoding_list = [TSEncoding.RLE, TSEncoding.RLE, TSEncoding.GORILLA]
compressor_list = [Compressor.SNAPPY, Compressor.SNAPPY, Compressor.LZ4]
measurements_aligned_path = ["aligned.s1", "aligned.s2", "aligned.s3"]
session.add_measurements_in_template(
template_name,
measurements_aligned_path,
data_types,
encoding_list,
compressor_list,
is_aligned=True,
)
# session.drop_schema_template("add_template_python")
measurements_aligned_path = ["unaligned.s1", "unaligned.s2", "unaligned.s3"]
session.add_measurements_in_template(
template_name,
measurements_aligned_path,
data_types,
encoding_list,
compressor_list,
is_aligned=False,
)
measurements_aligned_path = ["s1", "s2", "s3"]
session.add_measurements_in_template(
template_name,
measurements_aligned_path,
data_types,
encoding_list,
compressor_list,
is_aligned=False,
)
assert session.count_measurements_in_template(template_name) == 10
assert session.is_measurement_in_template(template_name, "GPS") is False
assert session.is_path_exist_in_template(template_name, "GPS.x") is True
assert session.is_path_exist_in_template(template_name, "x") is False
session.drop_schema_template(template_name)
session.close()
def test_set_template():
with IoTDBContainer("iotdb:dev") as db:
db: IoTDBContainer
session = Session(db.get_container_host_ip(), db.get_exposed_port(6667))
session.open(False)
template_name = "set_template_python"
template = Template(name=template_name, share_time=False)
session.create_schema_template(template)
session.set_schema_template(template_name, "root.python.GPS")
session.execute_non_query_statement("create timeseries of schema template on root.python.GPS")
assert session.show_paths_template_set_on(template_name) == ["root.python.GPS"]
assert session.show_paths_template_using_on(template_name) == ["root.python.GPS"]
session.unset_schema_template(template_name, "root.python.GPS")
session.drop_schema_template(template_name)
session.close()