enh: test coverage of tfs
This commit is contained in:
parent
67af6846f6
commit
b354bd66f5
|
@ -78,6 +78,7 @@ typedef struct STfs {
|
|||
SHashObj *hash; // name to did map
|
||||
} STfs;
|
||||
|
||||
int32_t tfsCheckAndFormatCfg(STfs *pTfs, SDiskCfg *pCfg);
|
||||
int32_t tfsNewDisk(int32_t level, int32_t id, int8_t disable, const char *dir, STfsDisk **ppDisk);
|
||||
STfsDisk *tfsFreeDisk(STfsDisk *pDisk);
|
||||
int32_t tfsUpdateDiskSize(STfsDisk *pDisk);
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
|
||||
static int32_t tfsMount(STfs *pTfs, SDiskCfg *pCfg);
|
||||
static int32_t tfsCheck(STfs *pTfs);
|
||||
static int32_t tfsCheckAndFormatCfg(STfs *pTfs, SDiskCfg *pCfg);
|
||||
static int32_t tfsFormatDir(char *idir, char *odir);
|
||||
static int32_t tfsGetDiskByName(STfs *pTfs, const char *dir, STfsDisk **ppDisk);
|
||||
static int32_t tfsOpendirImpl(STfs *pTfs, STfsDir *pDir);
|
||||
|
@ -515,7 +514,7 @@ _exit:
|
|||
TAOS_RETURN(code);
|
||||
}
|
||||
|
||||
static int32_t tfsCheckAndFormatCfg(STfs *pTfs, SDiskCfg *pCfg) {
|
||||
int32_t tfsCheckAndFormatCfg(STfs *pTfs, SDiskCfg *pCfg) {
|
||||
int32_t code = 0;
|
||||
char dirName[TSDB_FILENAME_LEN] = "\0";
|
||||
|
||||
|
@ -577,32 +576,32 @@ static int32_t tfsCheckAndFormatCfg(STfs *pTfs, SDiskCfg *pCfg) {
|
|||
}
|
||||
|
||||
static int32_t tfsFormatDir(char *idir, char *odir) {
|
||||
int32_t code = 0, lino = 0;
|
||||
wordexp_t wep = {0};
|
||||
int32_t dirLen = 0;
|
||||
char tmp[PATH_MAX] = {0};
|
||||
|
||||
int32_t code = wordexp(idir, &wep, 0);
|
||||
code = wordexp(idir, &wep, 0);
|
||||
if (code != 0) {
|
||||
TAOS_RETURN(TAOS_SYSTEM_ERROR(code));
|
||||
TAOS_CHECK_EXIT(TAOS_SYSTEM_ERROR(code));
|
||||
}
|
||||
|
||||
char tmp[PATH_MAX] = {0};
|
||||
if (taosRealPath(wep.we_wordv[0], tmp, PATH_MAX) != 0) {
|
||||
code = TAOS_SYSTEM_ERROR(errno);
|
||||
wordfree(&wep);
|
||||
TAOS_RETURN(code);
|
||||
}
|
||||
TAOS_CHECK_EXIT(taosRealPath(wep.we_wordv[0], tmp, PATH_MAX));
|
||||
|
||||
int32_t dirLen = strlen(tmp);
|
||||
dirLen = strlen(tmp);
|
||||
if (dirLen < 0 || dirLen >= TSDB_FILENAME_LEN) {
|
||||
wordfree(&wep);
|
||||
code = TSDB_CODE_OUT_OF_RANGE;
|
||||
fError("failed to mount %s to FS since %s, real path:%s, len:%d", idir, tstrerror(code), tmp, dirLen);
|
||||
TAOS_RETURN(code);
|
||||
TAOS_CHECK_EXIT(TSDB_CODE_OUT_OF_RANGE);
|
||||
}
|
||||
|
||||
tstrncpy(odir, tmp, TSDB_FILENAME_LEN);
|
||||
|
||||
_exit:
|
||||
wordfree(&wep);
|
||||
TAOS_RETURN(0);
|
||||
if (code != 0) {
|
||||
fError("failed to mount %s to FS at line %d since %s, real path:%s, len:%d", idir, lino, tstrerror(code), tmp,
|
||||
dirLen);
|
||||
}
|
||||
TAOS_RETURN(code);
|
||||
}
|
||||
|
||||
static int32_t tfsCheck(STfs *pTfs) {
|
||||
|
|
|
@ -749,10 +749,11 @@ TEST_F(TfsTest, 05_MultiDisk) {
|
|||
tfsClose(pTfs);
|
||||
}
|
||||
|
||||
TEST_F(TfsTest, 06_Exception) {
|
||||
TEST_F(TfsTest, 06_Misc) {
|
||||
// tfsDisk.c
|
||||
STfsDisk *pDisk = NULL;
|
||||
EXPECT_EQ(tfsNewDisk(0, 0, 0, NULL, &pDisk), TSDB_CODE_INVALID_PARA);
|
||||
EXPECT_NE(tfsNewDisk(0, 0, 0, "", &pDisk), 0);
|
||||
|
||||
STfsDisk disk = {0};
|
||||
EXPECT_EQ(tfsUpdateDiskSize(&disk), TSDB_CODE_INVALID_PARA);
|
||||
|
@ -828,6 +829,33 @@ TEST_F(TfsTest, 06_Exception) {
|
|||
EXPECT_EQ(tfsSearch(&tfs, -1, NULL), -1);
|
||||
EXPECT_EQ(tfsSearch(&tfs, tfs.nlevel, NULL), -1);
|
||||
|
||||
diskCfg.level = -1;
|
||||
EXPECT_EQ(tfsCheckAndFormatCfg(&tfs, &diskCfg), TSDB_CODE_FS_INVLD_CFG);
|
||||
diskCfg.level = TFS_MAX_TIERS;
|
||||
EXPECT_EQ(tfsCheckAndFormatCfg(&tfs, &diskCfg), TSDB_CODE_FS_INVLD_CFG);
|
||||
diskCfg.level = 0;
|
||||
diskCfg.primary = -1;
|
||||
EXPECT_EQ(tfsCheckAndFormatCfg(&tfs, &diskCfg), TSDB_CODE_FS_INVLD_CFG);
|
||||
diskCfg.primary = 2;
|
||||
EXPECT_EQ(tfsCheckAndFormatCfg(&tfs, &diskCfg), TSDB_CODE_FS_INVLD_CFG);
|
||||
diskCfg.primary = 1;
|
||||
diskCfg.disable = -1;
|
||||
EXPECT_EQ(tfsCheckAndFormatCfg(&tfs, &diskCfg), TSDB_CODE_FS_INVLD_CFG);
|
||||
diskCfg.disable = 2;
|
||||
EXPECT_EQ(tfsCheckAndFormatCfg(&tfs, &diskCfg), TSDB_CODE_FS_INVLD_CFG);
|
||||
diskCfg.disable = 0;
|
||||
diskCfg.level = 1;
|
||||
EXPECT_EQ(tfsCheckAndFormatCfg(&tfs, &diskCfg), TSDB_CODE_FS_INVLD_CFG);
|
||||
diskCfg.level = 0;
|
||||
diskCfg.primary = 0;
|
||||
tstrncpy(diskCfg.dir, "testDataDir1", TSDB_FILENAME_LEN);
|
||||
EXPECT_NE(tfsCheckAndFormatCfg(&tfs, &diskCfg), 0);
|
||||
|
||||
TdFilePtr pFile = taosCreateFile("testDataDir1", TD_FILE_CREATE);
|
||||
EXPECT_NE(pFile, nullptr);
|
||||
EXPECT_EQ(tfsCheckAndFormatCfg(&tfs, &diskCfg), TSDB_CODE_FS_INVLD_CFG);
|
||||
EXPECT_EQ(taosRemoveFile("testDataDir1"), 0);
|
||||
|
||||
for (int32_t l = 0; l < tfs.nlevel; ++l) {
|
||||
EXPECT_EQ(taosThreadSpinDestroy(&tfs.tiers[l].lock), 0);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue