forked from mindspore-Ecosystem/mindspore
fix: error info is not exactly when column list invalid
This commit is contained in:
parent
606310d9c3
commit
20d1b64443
|
@ -103,7 +103,8 @@ Status MindRecordOp::Init() {
|
||||||
shard_reader_ = mindspore::make_unique<ShardReader>();
|
shard_reader_ = mindspore::make_unique<ShardReader>();
|
||||||
auto rc = shard_reader_->Open(dataset_file_, num_mind_record_workers_, columns_to_load_, operators_, block_reader_);
|
auto rc = shard_reader_->Open(dataset_file_, num_mind_record_workers_, columns_to_load_, operators_, block_reader_);
|
||||||
|
|
||||||
CHECK_FAIL_RETURN_UNEXPECTED(rc != MSRStatus::FAILED, "MindRecordOp init failed.");
|
CHECK_FAIL_RETURN_UNEXPECTED(rc != MSRStatus::FAILED,
|
||||||
|
"MindRecordOp init failed. Error message: " + ErrnoToMessage(rc));
|
||||||
|
|
||||||
data_schema_ = mindspore::make_unique<DataSchema>();
|
data_schema_ = mindspore::make_unique<DataSchema>();
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include "dataset/engine/datasetops/source/io_block.h"
|
#include "dataset/engine/datasetops/source/io_block.h"
|
||||||
#include "dataset/util/queue.h"
|
#include "dataset/util/queue.h"
|
||||||
#include "dataset/util/status.h"
|
#include "dataset/util/status.h"
|
||||||
|
#include "mindrecord/include/shard_error.h"
|
||||||
#include "mindrecord/include/shard_reader.h"
|
#include "mindrecord/include/shard_reader.h"
|
||||||
#include "mindrecord/include/common/shard_utils.h"
|
#include "mindrecord/include/common/shard_utils.h"
|
||||||
#include "dataset/util/wait_post.h"
|
#include "dataset/util/wait_post.h"
|
||||||
|
|
|
@ -0,0 +1,178 @@
|
||||||
|
/**
|
||||||
|
* Copyright 2019 Huawei Technologies Co., Ltd
|
||||||
|
*
|
||||||
|
* Licensed 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "mindrecord/include/shard_error.h"
|
||||||
|
|
||||||
|
namespace mindspore {
|
||||||
|
namespace mindrecord {
|
||||||
|
std::string ErrnoToMessage(MSRStatus status) {
|
||||||
|
switch (status) {
|
||||||
|
case FAILED:
|
||||||
|
return "operator failed";
|
||||||
|
break;
|
||||||
|
case SUCCESS:
|
||||||
|
return "operator success";
|
||||||
|
break;
|
||||||
|
case OPEN_FILE_FAILED:
|
||||||
|
return "open file failed";
|
||||||
|
break;
|
||||||
|
case CLOSE_FILE_FAILED:
|
||||||
|
return "close file failed";
|
||||||
|
break;
|
||||||
|
case WRITE_METADATA_FAILED:
|
||||||
|
return "write metadata failed";
|
||||||
|
break;
|
||||||
|
case WRITE_RAWDATA_FAILED:
|
||||||
|
return "write rawdata failed";
|
||||||
|
break;
|
||||||
|
case GET_SCHEMA_FAILED:
|
||||||
|
return "get schema failed";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_RAWDATA:
|
||||||
|
return "illegal raw data";
|
||||||
|
break;
|
||||||
|
case PYTHON_TO_JSON_FAILED:
|
||||||
|
return "pybind: python object to json failed";
|
||||||
|
break;
|
||||||
|
case DIR_CREATE_FAILED:
|
||||||
|
return "directory create failed";
|
||||||
|
break;
|
||||||
|
case OPEN_DIR_FAILED:
|
||||||
|
return "open directory failed";
|
||||||
|
break;
|
||||||
|
case INVALID_STATISTICS:
|
||||||
|
return "invalid statistics object";
|
||||||
|
break;
|
||||||
|
case OPEN_DATABASE_FAILED:
|
||||||
|
return "open database failed";
|
||||||
|
break;
|
||||||
|
case CLOSE_DATABASE_FAILED:
|
||||||
|
return "close database failed";
|
||||||
|
break;
|
||||||
|
case DATABASE_OPERATE_FAILED:
|
||||||
|
return "database operate failed";
|
||||||
|
break;
|
||||||
|
case BUILD_SCHEMA_FAILED:
|
||||||
|
return "build schema failed";
|
||||||
|
break;
|
||||||
|
case DIVISOR_IS_ILLEGAL:
|
||||||
|
return "divisor is illegal";
|
||||||
|
break;
|
||||||
|
case INVALID_FILE_PATH:
|
||||||
|
return "file path is invalid";
|
||||||
|
break;
|
||||||
|
case SECURE_FUNC_FAILED:
|
||||||
|
return "secure function failed";
|
||||||
|
break;
|
||||||
|
case ALLOCATE_MEM_FAILED:
|
||||||
|
return "allocate memory failed";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_FIELD_NAME:
|
||||||
|
return "illegal field name";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_FIELD_TYPE:
|
||||||
|
return "illegal field type";
|
||||||
|
break;
|
||||||
|
case SET_METADATA_FAILED:
|
||||||
|
return "set metadata failed";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_SCHEMA_DEFINITION:
|
||||||
|
return "illegal schema definition";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_COLUMN_LIST:
|
||||||
|
return "illegal column list";
|
||||||
|
break;
|
||||||
|
case SQL_ERROR:
|
||||||
|
return "sql error";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_SHARD_COUNT:
|
||||||
|
return "illegal shard count";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_SCHEMA_COUNT:
|
||||||
|
return "illegal schema count";
|
||||||
|
break;
|
||||||
|
case VERSION_ERROR:
|
||||||
|
return "data version is not matched";
|
||||||
|
break;
|
||||||
|
case ADD_SCHEMA_FAILED:
|
||||||
|
return "add schema failed";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_Header_SIZE:
|
||||||
|
return "illegal header size";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_Page_SIZE:
|
||||||
|
return "illegal page size";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_SIZE_VALUE:
|
||||||
|
return "illegal size value";
|
||||||
|
break;
|
||||||
|
case INDEX_FIELD_ERROR:
|
||||||
|
return "add index fields failed";
|
||||||
|
break;
|
||||||
|
case GET_CANDIDATE_CATEGORYFIELDS_FAILED:
|
||||||
|
return "get candidate category fields failed";
|
||||||
|
break;
|
||||||
|
case GET_CATEGORY_INFO_FAILED:
|
||||||
|
return "get category information failed";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_CATEGORY_ID:
|
||||||
|
return "illegal category id";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_ROWNUMBER_OF_PAGE:
|
||||||
|
return "illegal row number of page";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_SCHEMA_ID:
|
||||||
|
return "illegal schema id";
|
||||||
|
break;
|
||||||
|
case DESERIALIZE_SCHEMA_FAILED:
|
||||||
|
return "deserialize schema failed";
|
||||||
|
break;
|
||||||
|
case DESERIALIZE_STATISTICS_FAILED:
|
||||||
|
return "deserialize statistics failed";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_DB_FILE:
|
||||||
|
return "illegal db file";
|
||||||
|
break;
|
||||||
|
case OVERWRITE_DB_FILE:
|
||||||
|
return "overwrite db file";
|
||||||
|
break;
|
||||||
|
case OVERWRITE_MINDRECORD_FILE:
|
||||||
|
return "overwrite mindrecord file";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_MINDRECORD_FILE:
|
||||||
|
return "illegal mindrecord file";
|
||||||
|
break;
|
||||||
|
case PARSE_JSON_FAILED:
|
||||||
|
return "parse json failed";
|
||||||
|
break;
|
||||||
|
case ILLEGAL_PARAMETERS:
|
||||||
|
return "illegal parameters";
|
||||||
|
break;
|
||||||
|
case GET_PAGE_BY_GROUP_ID_FAILED:
|
||||||
|
return "get page by group id failed";
|
||||||
|
break;
|
||||||
|
case GET_SYSTEM_STATE_FAILED:
|
||||||
|
return "get system state failed";
|
||||||
|
break;
|
||||||
|
case IO_FAILED:
|
||||||
|
return "io operate failed";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return "invalid error no";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // namespace mindrecord
|
||||||
|
} // namespace mindspore
|
|
@ -18,63 +18,65 @@
|
||||||
#define MINDRECORD_INCLUDE_SHARD_ERROR_H_
|
#define MINDRECORD_INCLUDE_SHARD_ERROR_H_
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include "utils/error_code.h"
|
#include <string>
|
||||||
|
|
||||||
namespace mindspore {
|
namespace mindspore {
|
||||||
namespace mindrecord {
|
namespace mindrecord {
|
||||||
DE_ERRORNO_MINDRECORD(OPEN_FILE_FAILED, 0, "open file failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(CLOSE_FILE_FAILED, 1, "close file failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(WRITE_METADATA_FAILED, 2, "write metadata failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(WRITE_RAWDATA_FAILED, 3, "write rawdata failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(GET_SCHEMA_FAILED, 4, "get schema failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_RAWDATA, 5, "illegal raw data");
|
|
||||||
DE_ERRORNO_MINDRECORD(PYTHON_TO_JSON_FAILED, 6, "pybind: python object to json failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(DIR_CREATE_FAILED, 7, "directory create failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(OPEN_DIR_FAILED, 8, "open directory failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(INVALID_STATISTICS, 9, "invalid statistics object");
|
|
||||||
DE_ERRORNO_MINDRECORD(OPEN_DATABASE_FAILED, 10, "open database failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(CLOSE_DATABASE_FAILED, 11, "close database failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(DATABASE_OPERATE_FAILED, 12, "database operate failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(BUILD_SCHEMA_FAILED, 13, "build schema failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(DIVISOR_IS_ILLEGAL, 14, "divisor is illegal");
|
|
||||||
DE_ERRORNO_MINDRECORD(INVALID_FILE_PATH, 15, "file path is invalid");
|
|
||||||
DE_ERRORNO_MINDRECORD(SECURE_FUNC_FAILED, 16, "secure function failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(ALLOCATE_MEM_FAILED, 17, "allocate memory failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_FIELD_NAME, 18, "illegal field name");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_FIELD_TYPE, 19, "illegal field type");
|
|
||||||
DE_ERRORNO_MINDRECORD(SET_METADATA_FAILED, 20, "set metadata failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_SCHEMA_DEFINITION, 21, "illegal schema definition");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_COLUMN_LIST, 22, "illegal column list");
|
|
||||||
DE_ERRORNO_MINDRECORD(SQL_ERROR, 23, "sql error");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_SHARD_COUNT, 24, "illegal shard count");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_SCHEMA_COUNT, 25, "illegal schema count");
|
|
||||||
DE_ERRORNO_MINDRECORD(VERSION_ERROR, 26, "data version is not matched");
|
|
||||||
DE_ERRORNO_MINDRECORD(ADD_SCHEMA_FAILED, 27, "add schema failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_Header_SIZE, 28, "illegal header size");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_Page_SIZE, 29, "illegal page size");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_SIZE_VALUE, 30, "illegal size value");
|
|
||||||
DE_ERRORNO_MINDRECORD(INDEX_FIELD_FAILED, 31, "add index fields failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(GET_CANDIDATE_CATEGORYFIELDS_FAILED, 32, "get candidate categoryFields failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(GET_CATEGORY_INFO, 33, "get category information failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_CATEGORY_ID, 34, "illegal category id");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_ROWNUMBER_OF_PAGE, 35, "illegal row number of page");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_SCHEMA_ID, 36, "illegal schema id");
|
|
||||||
DE_ERRORNO_MINDRECORD(DESERIALIZE_SCHEMA_FAILED, 37, "deserialize schema failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(DESERIALIZE_STATISTICS_FAILED, 38, "deserialize statistics failed");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_DB_FILE, 39, "illegal db file.");
|
|
||||||
DE_ERRORNO_MINDRECORD(OVERWRITE_DB_FILE, 40, "overwrite db file.");
|
|
||||||
DE_ERRORNO_MINDRECORD(OVERWRITE_MINDRECORD_FILE, 41, "overwrite mindrecord file.");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_MINDRECORD_FILE, 42, "illegal mindrecord file.");
|
|
||||||
DE_ERRORNO_MINDRECORD(PARSE_JSON_FAILED, 43, "parse json failed.");
|
|
||||||
DE_ERRORNO_MINDRECORD(ILLEGAL_PARAMETERS, 44, "illegal parameters.");
|
|
||||||
DE_ERRORNO_MINDRECORD(GET_PAGE_BY_GROUP_ID_FAILED, 46, "get page by group id failed.");
|
|
||||||
DE_ERRORNO_MINDRECORD(GET_SYSTEM_STATE_FAILED, 47, "get system state failed.");
|
|
||||||
DE_ERRORNO_MINDRECORD(IO_FAILED, 48, "io operate failed.");
|
|
||||||
|
|
||||||
enum MSRStatus {
|
enum MSRStatus {
|
||||||
SUCCESS = 0,
|
SUCCESS = 0,
|
||||||
FAILED = 1,
|
FAILED = 1,
|
||||||
|
OPEN_FILE_FAILED,
|
||||||
|
CLOSE_FILE_FAILED,
|
||||||
|
WRITE_METADATA_FAILED,
|
||||||
|
WRITE_RAWDATA_FAILED,
|
||||||
|
GET_SCHEMA_FAILED,
|
||||||
|
ILLEGAL_RAWDATA,
|
||||||
|
PYTHON_TO_JSON_FAILED,
|
||||||
|
DIR_CREATE_FAILED,
|
||||||
|
OPEN_DIR_FAILED,
|
||||||
|
INVALID_STATISTICS,
|
||||||
|
OPEN_DATABASE_FAILED,
|
||||||
|
CLOSE_DATABASE_FAILED,
|
||||||
|
DATABASE_OPERATE_FAILED,
|
||||||
|
BUILD_SCHEMA_FAILED,
|
||||||
|
DIVISOR_IS_ILLEGAL,
|
||||||
|
INVALID_FILE_PATH,
|
||||||
|
SECURE_FUNC_FAILED,
|
||||||
|
ALLOCATE_MEM_FAILED,
|
||||||
|
ILLEGAL_FIELD_NAME,
|
||||||
|
ILLEGAL_FIELD_TYPE,
|
||||||
|
SET_METADATA_FAILED,
|
||||||
|
ILLEGAL_SCHEMA_DEFINITION,
|
||||||
|
ILLEGAL_COLUMN_LIST,
|
||||||
|
SQL_ERROR,
|
||||||
|
ILLEGAL_SHARD_COUNT,
|
||||||
|
ILLEGAL_SCHEMA_COUNT,
|
||||||
|
VERSION_ERROR,
|
||||||
|
ADD_SCHEMA_FAILED,
|
||||||
|
ILLEGAL_Header_SIZE,
|
||||||
|
ILLEGAL_Page_SIZE,
|
||||||
|
ILLEGAL_SIZE_VALUE,
|
||||||
|
INDEX_FIELD_ERROR,
|
||||||
|
GET_CANDIDATE_CATEGORYFIELDS_FAILED,
|
||||||
|
GET_CATEGORY_INFO_FAILED,
|
||||||
|
ILLEGAL_CATEGORY_ID,
|
||||||
|
ILLEGAL_ROWNUMBER_OF_PAGE,
|
||||||
|
ILLEGAL_SCHEMA_ID,
|
||||||
|
DESERIALIZE_SCHEMA_FAILED,
|
||||||
|
DESERIALIZE_STATISTICS_FAILED,
|
||||||
|
ILLEGAL_DB_FILE,
|
||||||
|
OVERWRITE_DB_FILE,
|
||||||
|
OVERWRITE_MINDRECORD_FILE,
|
||||||
|
ILLEGAL_MINDRECORD_FILE,
|
||||||
|
PARSE_JSON_FAILED,
|
||||||
|
ILLEGAL_PARAMETERS,
|
||||||
|
GET_PAGE_BY_GROUP_ID_FAILED,
|
||||||
|
GET_SYSTEM_STATE_FAILED,
|
||||||
|
IO_FAILED
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// convert error no to string message
|
||||||
|
std::string ErrnoToMessage(MSRStatus status);
|
||||||
} // namespace mindrecord
|
} // namespace mindrecord
|
||||||
} // namespace mindspore
|
} // namespace mindspore
|
||||||
|
|
||||||
|
|
|
@ -676,7 +676,7 @@ MSRStatus ShardReader::Open(const std::string &file_path, int n_consumer,
|
||||||
|
|
||||||
if (CheckColumnList(selected_columns_) == FAILED) {
|
if (CheckColumnList(selected_columns_) == FAILED) {
|
||||||
MS_LOG(ERROR) << "Illegal column list";
|
MS_LOG(ERROR) << "Illegal column list";
|
||||||
return FAILED;
|
return ILLEGAL_COLUMN_LIST;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize argument
|
// Initialize argument
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
#include "mindrecord/include/shard_category.h"
|
#include "mindrecord/include/shard_category.h"
|
||||||
|
#include "mindrecord/include/shard_error.h"
|
||||||
#include "mindrecord/include/shard_sample.h"
|
#include "mindrecord/include/shard_sample.h"
|
||||||
#include "mindrecord/include/shard_shuffle.h"
|
#include "mindrecord/include/shard_shuffle.h"
|
||||||
#include "utils/log_adapter.h"
|
#include "utils/log_adapter.h"
|
||||||
|
@ -479,3 +480,38 @@ TEST_F(MindDataTestMindRecordOp, TestMindRecordBlockReaderRepeat) {
|
||||||
row_count++;
|
row_count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(MindDataTestMindRecordOp, TestMindRecordInvalidColumnList) {
|
||||||
|
// single MindRecord op and nothing else
|
||||||
|
//
|
||||||
|
// MindRecordOp
|
||||||
|
|
||||||
|
MS_LOG(INFO) << "UT test TestMindRecordInvalidColumnList";
|
||||||
|
|
||||||
|
Status rc;
|
||||||
|
|
||||||
|
// Start with an empty execution tree
|
||||||
|
auto my_tree = std::make_shared<ExecutionTree>();
|
||||||
|
|
||||||
|
// Test info:
|
||||||
|
// Dataset from testDataset1 has 10 rows, 2 columns.
|
||||||
|
// RowsPerBuffer buffer setting of 3 yields 4 buffers with the last buffer having single row
|
||||||
|
// only. 2 workers.
|
||||||
|
// Test a column selection instead of all columns as well.
|
||||||
|
|
||||||
|
std::vector<std::string> column_list;
|
||||||
|
std::string label_col_name("file_name_2");
|
||||||
|
column_list.push_back(label_col_name);
|
||||||
|
label_col_name = "label";
|
||||||
|
column_list.push_back(label_col_name);
|
||||||
|
|
||||||
|
std::shared_ptr<MindRecordOp> my_mindrecord_op;
|
||||||
|
MindRecordOp::Builder builder;
|
||||||
|
builder.SetDatasetFile(mindrecord_root_path_ + "/testMindDataSet/testImageNetData/imagenet.mindrecord0")
|
||||||
|
.SetRowsPerBuffer(3)
|
||||||
|
.SetNumMindRecordWorkers(4)
|
||||||
|
.SetColumnsToLoad(column_list);
|
||||||
|
rc = builder.Build(&my_mindrecord_op);
|
||||||
|
ASSERT_TRUE(rc.IsError());
|
||||||
|
ASSERT_TRUE(rc.ToString().find_first_of("illegal column list") != std::string::npos);
|
||||||
|
}
|
||||||
|
|
|
@ -155,7 +155,7 @@ TEST_F(TestShardReader, TestShardReaderColumnNotInSchema) {
|
||||||
auto column_list = std::vector<std::string>{"file_namex"};
|
auto column_list = std::vector<std::string>{"file_namex"};
|
||||||
ShardReader dataset;
|
ShardReader dataset;
|
||||||
MSRStatus ret = dataset.Open(file_name, 4, column_list);
|
MSRStatus ret = dataset.Open(file_name, 4, column_list);
|
||||||
ASSERT_EQ(ret, FAILED);
|
ASSERT_EQ(ret, ILLEGAL_COLUMN_LIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(TestShardReader, TestShardVersion) {
|
TEST_F(TestShardReader, TestShardVersion) {
|
||||||
|
|
Loading…
Reference in New Issue