You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tsfile.apache.org by co...@apache.org on 2025/02/28 14:26:26 UTC
(tsfile) 03/05: add test
This is an automated email from the ASF dual-hosted git repository.
colinlee pushed a commit to branch colin_python_V4
in repository https://gitbox.apache.org/repos/asf/tsfile.git
commit b4677a8d5c61b5f073ea206f8f243b52761bd1ea
Author: Tian Jiang <jt...@163.com>
AuthorDate: Fri Feb 28 12:44:19 2025 +0800
add test
---
.../reader/table_view/tsfile_reader_table_test.cc | 122 +++++++++++----------
1 file changed, 65 insertions(+), 57 deletions(-)
diff --git a/cpp/test/reader/table_view/tsfile_reader_table_test.cc b/cpp/test/reader/table_view/tsfile_reader_table_test.cc
index 1f37fb99..c633b405 100644
--- a/cpp/test/reader/table_view/tsfile_reader_table_test.cc
+++ b/cpp/test/reader/table_view/tsfile_reader_table_test.cc
@@ -97,13 +97,13 @@ class TsFileTableReaderTest : public ::testing::Test {
}
static storage::Tablet gen_tablet(TableSchema* table_schema, int offset,
- int device_num) {
+ int device_num,
+ int num_timestamp_per_device = 10) {
storage::Tablet tablet(table_schema->get_table_name(),
table_schema->get_measurement_names(),
table_schema->get_data_types(),
table_schema->get_column_categories());
- int num_timestamp_per_device = 10;
char* literal = new char[std::strlen("device_id") + 1];
std::strcpy(literal, "device_id");
String literal_str(literal, std::strlen("device_id"));
@@ -133,65 +133,72 @@ class TsFileTableReaderTest : public ::testing::Test {
delete[] literal;
return tablet;
}
-};
-TEST_F(TsFileTableReaderTest, TableModelQuery) {
- auto table_schema = gen_table_schema(0);
- auto tsfile_table_writer_ =
- std::make_shared<TsFileTableWriter>(&write_file_, table_schema);
- auto tablet = gen_tablet(table_schema, 0, 1);
- ASSERT_EQ(tsfile_table_writer_->write_table(tablet), common::E_OK);
- ASSERT_EQ(tsfile_table_writer_->flush(), common::E_OK);
- ASSERT_EQ(tsfile_table_writer_->close(), common::E_OK);
- storage::TsFileReader reader;
- int ret = reader.open(file_name_);
- ASSERT_EQ(ret, common::E_OK);
+ void test_table_model_query(uint32_t points_per_device = 10) {
+ auto table_schema = gen_table_schema(0);
+ auto tsfile_table_writer_ =
+ std::make_shared<TsFileTableWriter>(&write_file_, table_schema);
+ auto tablet = gen_tablet(table_schema, 0, 1, points_per_device);
+ ASSERT_EQ(tsfile_table_writer_->write_table(tablet), common::E_OK);
+ ASSERT_EQ(tsfile_table_writer_->flush(), common::E_OK);
+ ASSERT_EQ(tsfile_table_writer_->close(), common::E_OK);
+ storage::TsFileReader reader;
+ int ret = reader.open(file_name_);
+ ASSERT_EQ(ret, common::E_OK);
- ResultSet* tmp_result_set = nullptr;
- ret = reader.query(table_schema->get_table_name(),
- table_schema->get_measurement_names(), 0, 1000000000000,
- tmp_result_set);
- auto* table_result_set = (TableResultSet*)tmp_result_set;
- char* literal = new char[std::strlen("device_id") + 1];
- std::strcpy(literal, "device_id");
- String literal_str(literal, std::strlen("device_id"));
- bool has_next = false;
- int64_t timestamp = 0;
- while (IS_SUCC(table_result_set->next(has_next)) && has_next) {
- auto column_schemas = table_schema->get_measurement_schemas();
- for (const auto& column_schema : column_schemas) {
- switch (column_schema->data_type_) {
- case TSDataType::INT64:
- ASSERT_EQ(table_result_set->get_value<int64_t>(
- column_schema->measurement_name_),
- 0);
- break;
- case TSDataType::STRING:
- ASSERT_EQ(table_result_set
- ->get_value<common::String*>(
- column_schema->measurement_name_)
- ->compare(literal_str),
- 0);
- break;
- default:
- break;
+ ResultSet* tmp_result_set = nullptr;
+ ret = reader.query(table_schema->get_table_name(),
+ table_schema->get_measurement_names(), 0,
+ 1000000000000, tmp_result_set);
+ auto* table_result_set = (TableResultSet*)tmp_result_set;
+ char* literal = new char[std::strlen("device_id") + 1];
+ std::strcpy(literal, "device_id");
+ String literal_str(literal, std::strlen("device_id"));
+ bool has_next = false;
+ int64_t timestamp = 0;
+ while (IS_SUCC(table_result_set->next(has_next)) && has_next) {
+ auto column_schemas = table_schema->get_measurement_schemas();
+ for (const auto& column_schema : column_schemas) {
+ switch (column_schema->data_type_) {
+ case TSDataType::INT64:
+ ASSERT_EQ(table_result_set->get_value<int64_t>(
+ column_schema->measurement_name_),
+ 0);
+ break;
+ case TSDataType::STRING:
+ ASSERT_EQ(table_result_set
+ ->get_value<common::String*>(
+ column_schema->measurement_name_)
+ ->compare(literal_str),
+ 0);
+ break;
+ default:
+ break;
+ }
}
+ for (int i = 2; i <= 6; i++) {
+ ASSERT_EQ(
+ table_result_set->get_value<common::String*>(i)->compare(
+ literal_str),
+ 0);
+ }
+ for (int i = 7; i <= 11; i++) {
+ ASSERT_EQ(table_result_set->get_value<int64_t>(i), 0);
+ }
+ ASSERT_EQ(table_result_set->get_value<int64_t>(1), timestamp);
+ timestamp++;
}
- for (int i = 2; i <= 6; i++) {
- ASSERT_EQ(table_result_set->get_value<common::String*>(i)->compare(
- literal_str),
- 0);
- }
- for (int i = 7; i <= 11; i++) {
- ASSERT_EQ(table_result_set->get_value<int64_t>(i), 0);
- }
- ASSERT_EQ(table_result_set->get_value<int64_t>(1), timestamp);
- timestamp++;
+ ASSERT_EQ(timestamp, points_per_device);
+ reader.destroy_query_data_set(table_result_set);
+ delete[] literal;
+ ASSERT_EQ(reader.close(), common::E_OK);
}
- ASSERT_EQ(timestamp, 10);
- reader.destroy_query_data_set(table_result_set);
- delete[] literal;
- ASSERT_EQ(reader.close(), common::E_OK);
+};
+
+TEST_F(TsFileTableReaderTest, TableModelQuery) { test_table_model_query(); }
+
+TEST_F(TsFileTableReaderTest, TableModelQueryOnePage) {
+ test_table_model_query(g_config_value_.page_writer_max_point_num_);
}
TEST_F(TsFileTableReaderTest, TableModelResultMetadata) {
@@ -216,7 +223,8 @@ TEST_F(TsFileTableReaderTest, TableModelResultMetadata) {
ASSERT_EQ(result_set_metadata->get_column_name(1), "time");
ASSERT_EQ(result_set_metadata->get_column_type(1), INT64);
for (int i = 2; i <= 6; i++) {
- ASSERT_EQ(result_set_metadata->get_column_name(i), "id" + to_string(i-2));
+ ASSERT_EQ(result_set_metadata->get_column_name(i),
+ "id" + to_string(i - 2));
ASSERT_EQ(result_set_metadata->get_column_type(i), TSDataType::STRING);
}
for (int i = 7; i <= 11; i++) {