1471 lines
36 KiB
C++
1471 lines
36 KiB
C++
/*
|
|
* Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
|
|
* Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without modification,
|
|
* are permitted provided that the following conditions are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
|
* conditions and the following disclaimer.
|
|
*
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
|
* provided with the distribution.
|
|
*
|
|
* 3. Neither the name of the copyright holder nor the names of its contributors may be used
|
|
* to endorse or promote products derived from this software without specific prior written
|
|
* permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
#include "stdio.h"
|
|
#include <climits>
|
|
#include <gtest/gtest.h>
|
|
|
|
#include "It_vfs_fat.h"
|
|
|
|
#define MS_PER_SEC 1000
|
|
|
|
struct iovec g_fatIov[FAT_SHORT_ARRAY_LENGTH];
|
|
|
|
const INT32 CAL_THRESHOLD = CAL_THRESHOLD_VALUE;
|
|
INT32 g_grandSize[MAX_DEF_BUF_NUM] = {
|
|
29, 30290, 3435, 235, 12345, 80, 9845,
|
|
564, 34862, 123, 267890, 36, 6788, 86,
|
|
234567, 1232, 514, 50, 678, 9864, 333333
|
|
};
|
|
|
|
INT32 g_fatFilesMax = 10;
|
|
INT32 g_fatFlag = 0;
|
|
INT32 g_fatFlagF01 = 0;
|
|
INT32 g_fatFlagF02 = 0;
|
|
INT32 g_fatFd = 0;
|
|
DIR *g_fatDir = nullptr;
|
|
UINT32 g_fatMuxHandle1 = 0;
|
|
UINT32 g_fatMuxHandle2 = 0;
|
|
pthread_mutex_t g_vfatGlobalLock1;
|
|
pthread_mutex_t g_vfatGlobalLock2;
|
|
|
|
INT32 g_fatFd11[FAT_MAXIMUM_SIZES];
|
|
INT32 g_fatFd12[FAT_MAXIMUM_SIZES][FAT_MAXIMUM_SIZES];
|
|
|
|
CHAR g_fatPathname1[FAT_STANDARD_NAME_LENGTH] = FAT_PATH_NAME;
|
|
CHAR g_fatPathname2[FAT_STANDARD_NAME_LENGTH] = FAT_PATH_NAME;
|
|
CHAR g_fatPathname3[FAT_STANDARD_NAME_LENGTH] = FAT_PATH_NAME;
|
|
|
|
CHAR g_fatPathname6[FAT_NAME_LIMITTED_SIZE] = FAT_PATH_NAME;
|
|
CHAR g_fatPathname7[FAT_NAME_LIMITTED_SIZE] = FAT_PATH_NAME;
|
|
CHAR g_fatPathname8[FAT_NAME_LIMITTED_SIZE] = FAT_PATH_NAME;
|
|
|
|
CHAR g_fatPathname11[FAT_MAXIMUM_SIZES][FAT_NAME_LIMITTED_SIZE] = { 0 };
|
|
CHAR g_fatPathname12[FAT_MAXIMUM_SIZES][FAT_NAME_LIMITTED_SIZE] = { 0 };
|
|
CHAR g_fatPathname13[FAT_MAXIMUM_SIZES][FAT_NAME_LIMITTED_SIZE] = { 0 };
|
|
|
|
FILE *g_fatFfd;
|
|
|
|
INT32 FatDeleteFile(int fd, char *pathname)
|
|
{
|
|
int ret;
|
|
|
|
ret = close(fd);
|
|
ICUNIT_GOTO_EQUAL(ret, FAT_NO_ERROR, ret, EXIT);
|
|
|
|
ret = unlink(pathname);
|
|
ICUNIT_GOTO_EQUAL(ret, FAT_NO_ERROR, ret, EXIT);
|
|
|
|
return FAT_NO_ERROR;
|
|
EXIT:
|
|
return FAT_NO_ERROR;
|
|
}
|
|
|
|
INT32 FixWrite(CHAR *path, INT64 file_size, INT32 write_size, INT32 interface_type)
|
|
{
|
|
INT32 ret;
|
|
INT32 fd = -1;
|
|
INT64 total = 0;
|
|
INT64 perTime;
|
|
INT64 totalSize = 0;
|
|
INT64 totalTime = 0;
|
|
INT32 cycleCount = 0;
|
|
INT32 taskId;
|
|
struct timeval testTime1;
|
|
struct timeval testTime2;
|
|
DOUBLE testSpeed;
|
|
CHAR *pid = NULL;
|
|
CHAR *writeBuf = NULL;
|
|
FILE *file = NULL;
|
|
|
|
taskId = strlen(path);
|
|
pid = path + taskId - 1;
|
|
taskId = atoi(pid);
|
|
|
|
writeBuf = (CHAR *)malloc(write_size);
|
|
ICUNIT_GOTO_NOT_EQUAL(writeBuf, nullptr, writeBuf, EXIT);
|
|
|
|
gettimeofday(&testTime1, 0);
|
|
if (interface_type == 1) {
|
|
fd = open(path, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
|
|
if (fd < 0) {
|
|
printf("Task_%d fail to open %s,\n", taskId, path);
|
|
goto EXIT1;
|
|
}
|
|
} else {
|
|
file = fopen(path, "w+b");
|
|
if (file == nullptr) {
|
|
printf("Task_%d fail to fopen %s,\n", taskId, path);
|
|
goto EXIT2;
|
|
}
|
|
}
|
|
gettimeofday(&testTime2, 0);
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
printf("fix_Write TaskID:%3d,open %s ,task %lld ms ,\n", taskId, path, perTime / MS_PER_SEC);
|
|
|
|
gettimeofday(&testTime1, 0);
|
|
|
|
while (1) {
|
|
if (interface_type == 1) {
|
|
ret = write(fd, writeBuf, write_size);
|
|
if (ret <= 0) {
|
|
if (errno == ENOSPC) {
|
|
printf("No space !! %s,\n", strerror(errno));
|
|
goto EXIT1;
|
|
}
|
|
printf("fix_write fail,path = %s,ret=:%d ,errno=:%d!\n", path, ret, errno);
|
|
goto EXIT1;
|
|
}
|
|
} else {
|
|
ret = fwrite(writeBuf, 1, write_size, file);
|
|
if (ret <= 0 || ret != write_size) {
|
|
if (errno == ENOSPC) {
|
|
printf("No space !! %s,\n", strerror(errno));
|
|
}
|
|
printf("fix_fwrite error! %s ,path=:%s, ret = %d,\n", strerror(errno), path, ret);
|
|
|
|
goto EXIT2;
|
|
}
|
|
}
|
|
total += ret;
|
|
totalSize += ret;
|
|
if (total >= CAL_THRESHOLD) {
|
|
gettimeofday(&testTime2, 0);
|
|
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
totalTime += perTime;
|
|
|
|
testSpeed = total * 1.0;
|
|
testSpeed = testSpeed * US_PER_SEC / perTime;
|
|
testSpeed = testSpeed / BYTES_PER_KBYTES / BYTES_PER_KBYTES;
|
|
|
|
if (interface_type == 1) {
|
|
printf("fix_Write TaskID:%3d,%d time write, write %lldbytes, cost %lld usecs, speed: %0.3lfMB/s,\n",
|
|
taskId, cycleCount++, total, perTime, testSpeed);
|
|
} else {
|
|
printf("fix_fwrite TaskID:%3d,%d time write, write %lldbytes, cost %lld usecs, speed: %0.3lfMB/s,\n",
|
|
taskId, cycleCount++, total, perTime, testSpeed);
|
|
}
|
|
total = 0;
|
|
gettimeofday(&testTime1, 0);
|
|
}
|
|
|
|
if (file_size <= totalSize) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
gettimeofday(&testTime2, 0);
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
totalTime += perTime;
|
|
|
|
testSpeed = totalSize * 1.0;
|
|
testSpeed = testSpeed * US_PER_SEC / totalTime;
|
|
testSpeed = testSpeed / BYTES_PER_KBYTES / BYTES_PER_KBYTES;
|
|
|
|
printf("\nfix_Write TaskID:%3d,total write=%lld , time=%lld,arv speed =%0.3lfMB/s ,\n", taskId, totalSize,
|
|
totalTime, testSpeed);
|
|
gettimeofday(&testTime1, 0);
|
|
if (interface_type == 1) {
|
|
ret = close(fd);
|
|
ICUNIT_GOTO_EQUAL(ret, FAT_NO_ERROR, ret, EXIT1);
|
|
} else {
|
|
ret = fclose(file);
|
|
ICUNIT_GOTO_EQUAL(ret, FAT_NO_ERROR, ret, EXIT1);
|
|
}
|
|
|
|
gettimeofday(&testTime2, 0);
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
printf("fix_Write TaskID:%3d,sucess to fclose the %s ,task:%lld ms,\n", taskId, path, perTime / MS_PER_SEC);
|
|
|
|
free(writeBuf);
|
|
|
|
return FAT_NO_ERROR;
|
|
EXIT2:
|
|
fclose(file);
|
|
goto EXIT;
|
|
EXIT1:
|
|
close(fd);
|
|
EXIT:
|
|
free(writeBuf);
|
|
return FAT_NO_ERROR;
|
|
}
|
|
|
|
INT32 FixRead(CHAR *path, INT64 file_size, INT32 read_size, INT32 interface_type)
|
|
{
|
|
INT32 fd, taskId, ret;
|
|
INT32 cycleCount = 0;
|
|
INT64 total = 0;
|
|
INT64 totalSize = 0;
|
|
INT64 perTime;
|
|
INT64 totalTime = 0;
|
|
FILE *file = NULL;
|
|
CHAR *readBuf = NULL;
|
|
CHAR *pid = NULL;
|
|
DOUBLE testSpeed;
|
|
struct timeval testTime1;
|
|
struct timeval testTime2;
|
|
|
|
taskId = strlen(path);
|
|
pid = path + taskId - 1;
|
|
taskId = atoi(pid);
|
|
|
|
readBuf = (CHAR *)malloc(read_size);
|
|
ICUNIT_ASSERT_NOT_EQUAL(readBuf, nullptr, readBuf);
|
|
|
|
gettimeofday(&testTime1, 0);
|
|
|
|
if (interface_type == 1) {
|
|
fd = open(path, O_RDWR, S_IRUSR | S_IWUSR);
|
|
if (fd < 0) {
|
|
printf("Task_%d fail to open %s,\n", taskId, path);
|
|
goto EXIT1;
|
|
}
|
|
} else {
|
|
file = fopen(path, "rb");
|
|
if (file == nullptr) {
|
|
printf("Task_%d fail to fopen %s,\n", taskId, path);
|
|
goto EXIT2;
|
|
}
|
|
}
|
|
|
|
gettimeofday(&testTime2, 0);
|
|
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
printf("fix_Read TaskID:%3d,open %s , task:%lld ms,\n", taskId, path, perTime / MS_PER_SEC);
|
|
|
|
gettimeofday(&testTime1, 0);
|
|
|
|
while (1) {
|
|
if (interface_type == 1) {
|
|
ret = read(fd, readBuf, read_size);
|
|
if (ret < 0) {
|
|
printf("ret = %d,%s read fail!-->(X),\n", ret, path);
|
|
goto EXIT1;
|
|
}
|
|
if (!ret) {
|
|
printf("warning: read ret = 0,\n");
|
|
goto EXIT1;
|
|
}
|
|
} else {
|
|
ret = fread(readBuf, 1, read_size, file);
|
|
if (ret <= 0) {
|
|
if (feof(file) == 1) {
|
|
printf("feof of %s,\n", path);
|
|
} else {
|
|
printf("fread error!,\n");
|
|
goto EXIT2;
|
|
}
|
|
}
|
|
}
|
|
total += ret;
|
|
totalSize += ret;
|
|
|
|
if (total >= CAL_THRESHOLD) {
|
|
gettimeofday(&testTime2, 0);
|
|
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
totalTime += perTime;
|
|
|
|
testSpeed = total * 1.0;
|
|
testSpeed = testSpeed * US_PER_SEC / perTime;
|
|
testSpeed = testSpeed / BYTES_PER_KBYTES / BYTES_PER_KBYTES;
|
|
|
|
printf("fix_Read TaskID:%3d,times %d, read %lldbytes, cost %lld usecs, speed: %0.3lfMB/s,\n", taskId,
|
|
cycleCount++, total, perTime, testSpeed);
|
|
|
|
total = 0;
|
|
gettimeofday(&testTime1, 0);
|
|
}
|
|
|
|
if (file_size <= totalSize) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
gettimeofday(&testTime2, 0);
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
totalTime += perTime;
|
|
|
|
testSpeed = totalSize * 1.0;
|
|
testSpeed = testSpeed * US_PER_SEC / totalTime;
|
|
testSpeed = testSpeed / BYTES_PER_KBYTES / BYTES_PER_KBYTES;
|
|
|
|
printf("\nfix_Read TaskID:%3d,total read=%lld , time=%lld,arv speed =%0.3lfMB/s ,\n", taskId, totalSize, totalTime,
|
|
testSpeed);
|
|
|
|
gettimeofday(&testTime1, 0);
|
|
if (interface_type == 1) {
|
|
ret = close(fd);
|
|
if (ret < 0) {
|
|
printf("fail to close %s!\n", strerror(errno));
|
|
}
|
|
} else {
|
|
ret = fclose(file);
|
|
if (ret < 0) {
|
|
printf("fail to fclose %s!\n", strerror(errno));
|
|
}
|
|
}
|
|
gettimeofday(&testTime2, 0);
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
printf("fix_Read TaskID:%3d, fclose %s!,task:%lld ms,\n", taskId, path, perTime / MS_PER_SEC);
|
|
|
|
ret = remove(path);
|
|
if (ret < 0) {
|
|
printf("fail to remove %s!\n", strerror(errno));
|
|
}
|
|
|
|
printf("Read TaskID:%3d,sucess to fread the %s,\n", taskId, path);
|
|
free(readBuf);
|
|
return 0;
|
|
EXIT2:
|
|
fclose(file);
|
|
EXIT1:
|
|
close(fd);
|
|
|
|
free(readBuf);
|
|
return FAT_NO_ERROR;
|
|
}
|
|
|
|
INT32 RandWrite(CHAR *path, INT64 file_size, INT32 interface_type)
|
|
{
|
|
INT32 ret, i, fd;
|
|
INT32 cycleCount = 0;
|
|
INT32 taskId;
|
|
INT64 total = 0;
|
|
INT64 totalSize = 0;
|
|
INT64 perTime;
|
|
INT64 totalTime = 0;
|
|
CHAR *writeBuf = NULL;
|
|
CHAR *pid = NULL;
|
|
struct timeval testTime1;
|
|
struct timeval testTime2;
|
|
DOUBLE testSpeed;
|
|
FILE *file = NULL;
|
|
|
|
taskId = strlen(path);
|
|
pid = path + taskId - 1;
|
|
taskId = atoi(pid);
|
|
|
|
writeBuf = (CHAR *)malloc(MAX_BUFFER_LEN);
|
|
ICUNIT_GOTO_NOT_EQUAL(writeBuf, nullptr, writeBuf, EXIT);
|
|
|
|
gettimeofday(&testTime1, 0);
|
|
if (interface_type == 1) {
|
|
fd = open(path, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
|
|
if (fd < 0) {
|
|
printf("Task_%d fail to open %s,\n", taskId, path);
|
|
goto EXIT1;
|
|
}
|
|
} else {
|
|
file = fopen(path, "w+b");
|
|
if (file == nullptr) {
|
|
printf("Task_%d fail to fopen %s,\n", taskId, path);
|
|
goto EXIT2;
|
|
}
|
|
}
|
|
|
|
gettimeofday(&testTime2, 0);
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
printf("RandWrite TaskID:%3d,open %s , cost:%lld ms,\n", taskId, path, perTime / MS_PER_SEC);
|
|
|
|
gettimeofday(&testTime1, 0);
|
|
|
|
i = 0;
|
|
|
|
while (1) {
|
|
if (interface_type == 1) {
|
|
ret = write(fd, writeBuf, g_grandSize[i]);
|
|
if (ret <= 0) {
|
|
printf("ret = %d,%s write fail!-->(X),\n", ret, path);
|
|
if (errno == ENOSPC) {
|
|
printf("No space !! %s,\n", strerror(errno));
|
|
goto EXIT1;
|
|
}
|
|
goto EXIT1;
|
|
}
|
|
} else {
|
|
ret = fwrite(writeBuf, 1, g_grandSize[i], file);
|
|
if (ret <= 0 || ret != g_grandSize[i]) {
|
|
if (errno == ENOSPC) {
|
|
printf("No space !! %s,\n", strerror(errno));
|
|
}
|
|
printf("rand_Write TaskID:%3d,fwrite error! %s , ret = %d,\n", taskId, strerror(errno), ret);
|
|
goto EXIT2;
|
|
}
|
|
}
|
|
|
|
total += ret;
|
|
totalSize += ret;
|
|
if (total >= CAL_THRESHOLD) {
|
|
gettimeofday(&testTime2, 0);
|
|
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
totalTime += perTime;
|
|
testSpeed = total * 1.0;
|
|
testSpeed = testSpeed * US_PER_SEC / perTime;
|
|
testSpeed = testSpeed / BYTES_PER_KBYTES / BYTES_PER_KBYTES;
|
|
|
|
printf("rand_Write TaskID:%3d,%d time write, write %lldbytes, cost %lld usecs, speed: %0.3lfMB/s,\n",
|
|
taskId, cycleCount++, total, perTime, testSpeed);
|
|
|
|
total = 0;
|
|
gettimeofday(&testTime1, 0);
|
|
}
|
|
|
|
if (file_size <= totalSize) {
|
|
break;
|
|
}
|
|
if (++i >= MAX_DEF_BUF_NUM)
|
|
i = 0;
|
|
}
|
|
|
|
gettimeofday(&testTime2, 0);
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
totalTime += perTime;
|
|
|
|
testSpeed = totalSize * 1.0;
|
|
testSpeed = testSpeed * US_PER_SEC / totalTime;
|
|
testSpeed = testSpeed / BYTES_PER_KBYTES / BYTES_PER_KBYTES;
|
|
printf("--------------------------------\n");
|
|
printf("rand_Write TaskID:%3d,total write=%lld , time=%lld,arv speed =%0.3lfMB/s ,\n", taskId, totalSize, totalTime,
|
|
testSpeed);
|
|
|
|
gettimeofday(&testTime1, 0);
|
|
if (interface_type == 1) {
|
|
ret = close(fd);
|
|
if (ret < 0) {
|
|
printf("rand_Write TaskID:%3d,fail to close %s!\n", taskId, strerror(errno));
|
|
goto EXIT1;
|
|
}
|
|
} else {
|
|
ret = fclose(file);
|
|
if (ret < 0) {
|
|
printf("rand_Write TaskID:%3d,fail to fclose %s!\n", taskId, strerror(errno));
|
|
goto EXIT2;
|
|
}
|
|
}
|
|
|
|
gettimeofday(&testTime2, 0);
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
printf("rand_Write TaskID:%3d,sucess to fclose the %s ,task %lld,\n", taskId, path, perTime / MS_PER_SEC);
|
|
|
|
free(writeBuf);
|
|
|
|
return FAT_NO_ERROR;
|
|
EXIT2:
|
|
fclose(file);
|
|
goto EXIT;
|
|
EXIT1:
|
|
close(fd);
|
|
EXIT:
|
|
free(writeBuf);
|
|
return FAT_NO_ERROR;
|
|
}
|
|
|
|
INT32 RandRead(CHAR *path, INT64 file_size, INT32 interface_type)
|
|
{
|
|
INT32 ret, fd, i;
|
|
INT32 cycleCount = 0;
|
|
INT32 taskId;
|
|
INT64 total = 0;
|
|
INT64 totalSize = 0;
|
|
INT64 perTime;
|
|
INT64 totalTime = 0;
|
|
struct timeval testTime1;
|
|
struct timeval testTime2;
|
|
DOUBLE testSpeed;
|
|
CHAR *pid = NULL;
|
|
CHAR *readBuf = NULL;
|
|
FILE *file = NULL;
|
|
|
|
taskId = strlen(path);
|
|
pid = path + taskId - 1;
|
|
taskId = atoi(pid);
|
|
|
|
readBuf = (CHAR *)malloc(MAX_BUFFER_LEN);
|
|
ICUNIT_GOTO_NOT_EQUAL(readBuf, nullptr, readBuf, EXIT);
|
|
|
|
gettimeofday(&testTime1, 0);
|
|
if (interface_type == 1) {
|
|
fd = open(path, O_RDWR, S_IRUSR | S_IWUSR);
|
|
if (-1 == fd) {
|
|
printf("fail to open %s\n", path);
|
|
goto EXIT1;
|
|
}
|
|
} else {
|
|
file = fopen(path, "rb");
|
|
if (file == nullptr) {
|
|
printf("fail to fopen %s\n", path);
|
|
goto EXIT2;
|
|
}
|
|
}
|
|
|
|
gettimeofday(&testTime2, 0);
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
printf("RandRead, open %s , task:%lld ms,\n", path, perTime / MS_PER_SEC);
|
|
|
|
i = 0;
|
|
gettimeofday(&testTime1, 0);
|
|
|
|
while (1) {
|
|
if (interface_type == 1) {
|
|
ret = read(fd, readBuf, g_grandSize[i]);
|
|
if (ret < 0) {
|
|
printf("ret = %d,%s read fail!-->(X)\n", ret, path);
|
|
goto EXIT1;
|
|
}
|
|
if (!ret) {
|
|
printf("warning: read ret = 0,\n");
|
|
}
|
|
} else {
|
|
ret = fread(readBuf, 1, g_grandSize[i], file);
|
|
if (ret <= 0) {
|
|
if (feof(file) == 1) {
|
|
printf("feof of %s\n", path);
|
|
} else {
|
|
printf("fread error!\n");
|
|
goto EXIT2;
|
|
}
|
|
}
|
|
}
|
|
total += ret;
|
|
totalSize += ret;
|
|
|
|
if (total >= CAL_THRESHOLD) {
|
|
gettimeofday(&testTime2, 0);
|
|
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
totalTime += perTime;
|
|
|
|
testSpeed = total * 1.0;
|
|
testSpeed = testSpeed * US_PER_SEC / perTime;
|
|
testSpeed = testSpeed / BYTES_PER_KBYTES / BYTES_PER_KBYTES;
|
|
|
|
printf("rand_Read TaskID:%3d, times %d, read %lldbytes, cost %lld usecs, speed: %0.3lfMB/s,\n", taskId,
|
|
cycleCount++, total, perTime, testSpeed);
|
|
|
|
total = 0;
|
|
gettimeofday(&testTime1, 0);
|
|
}
|
|
|
|
if (file_size <= totalSize) {
|
|
break;
|
|
}
|
|
if (++i >= MAX_DEF_BUF_NUM)
|
|
i = 0;
|
|
}
|
|
|
|
gettimeofday(&testTime2, 0);
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
totalTime += perTime;
|
|
|
|
testSpeed = totalSize * 1.0;
|
|
testSpeed = testSpeed * US_PER_SEC / totalTime;
|
|
testSpeed = testSpeed / BYTES_PER_KBYTES / BYTES_PER_KBYTES;
|
|
printf("--------------------------------\n");
|
|
printf("rand_Read TaskID:%3d ,total read=%lld , time=%lld,arv speed =%0.3lfMB/s ,\n", taskId, totalSize, totalTime,
|
|
testSpeed);
|
|
|
|
gettimeofday(&testTime1, 0);
|
|
if (interface_type == 1) {
|
|
ret = close(fd);
|
|
if (ret < 0) {
|
|
printf("fail to close %s!\n", strerror(errno));
|
|
}
|
|
} else {
|
|
ret = fclose(file);
|
|
if (ret < 0) {
|
|
printf("fail to fclose %s!\n", strerror(errno));
|
|
}
|
|
}
|
|
gettimeofday(&testTime2, 0);
|
|
perTime = (testTime2.tv_sec - testTime1.tv_sec) * US_PER_SEC + (testTime2.tv_usec - testTime1.tv_usec);
|
|
|
|
printf(" rand_Read TaskID:%3d,fclose %s!,task:%lld ms,\n", taskId, path, perTime / MS_PER_SEC);
|
|
|
|
ret = remove(path);
|
|
if (ret < 0) {
|
|
printf("fail to fclose %s!\n", strerror(errno));
|
|
}
|
|
|
|
printf("rand_Read TaskID:%3d,sucess to fread the %s,\n", taskId, path);
|
|
|
|
free(readBuf);
|
|
return FAT_NO_ERROR;
|
|
|
|
EXIT2:
|
|
fclose(file);
|
|
goto EXIT1;
|
|
EXIT1:
|
|
close(fd);
|
|
EXIT:
|
|
free(readBuf);
|
|
return FAT_NO_ERROR;
|
|
}
|
|
|
|
VOID FatStrcat2(char *pathname, char *str, int len)
|
|
{
|
|
(void)memset_s(pathname, len, 0, len);
|
|
(void)strcpy_s(pathname, len, FAT_PATH_NAME);
|
|
(void)strcat_s(pathname, len, str);
|
|
}
|
|
|
|
INT32 FatScandirFree(struct dirent **namelist, int n)
|
|
{
|
|
if (n < 0 || namelist == nullptr) {
|
|
return -1;
|
|
} else if (n == 0) {
|
|
free(namelist);
|
|
namelist = nullptr;
|
|
return 0;
|
|
}
|
|
while (n--) {
|
|
free(namelist[n]);
|
|
}
|
|
free(namelist);
|
|
namelist = nullptr;
|
|
|
|
return 0;
|
|
}
|
|
|
|
VOID FatStatPrintf(struct stat sb)
|
|
{
|
|
#if VFS_STAT_PRINTF == 1
|
|
|
|
printf("File type: ");
|
|
|
|
switch (sb.st_mode & S_IFMT) {
|
|
case S_IFBLK:
|
|
printf("block device\n");
|
|
break;
|
|
case S_IFCHR:
|
|
printf("character device\n");
|
|
break;
|
|
case S_IFDIR:
|
|
printf("directory\n");
|
|
break;
|
|
case S_IFIFO:
|
|
printf("FIFO/pipe\n");
|
|
break;
|
|
case S_IFLNK:
|
|
printf("symlink\n");
|
|
break;
|
|
case S_IFREG:
|
|
printf("regular file\n");
|
|
break;
|
|
case S_IFSOCK:
|
|
printf("socket\n");
|
|
break;
|
|
default:
|
|
printf("unknown?\n");
|
|
break;
|
|
}
|
|
|
|
switch (sb.st_mode & S_IRWXU) {
|
|
case S_IRUSR:
|
|
printf("Owners have read permission\n");
|
|
break;
|
|
case S_IWUSR:
|
|
printf("Owners have write permission\n");
|
|
break;
|
|
case S_IXUSR:
|
|
printf("Owners have execute permissions\n");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (sb.st_mode & S_IRWXG) {
|
|
case S_IRGRP:
|
|
printf("Group has read permission\n");
|
|
break;
|
|
case S_IWGRP:
|
|
printf("Group has write permission\n");
|
|
break;
|
|
case S_IXGRP:
|
|
printf("Group has execute permission\n");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (sb.st_mode & S_IRWXO) {
|
|
case S_IROTH:
|
|
printf("Other have read permission\n");
|
|
break;
|
|
case S_IWOTH:
|
|
printf("Other has write permission\n");
|
|
break;
|
|
case S_IXOTH:
|
|
printf("Other has execute permission\n");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
printf("I-node number: %ld\n", (long)sb.st_ino);
|
|
printf("Mode: %lo (octal)\n", (unsigned long)sb.st_mode);
|
|
printf("Link count: %ld\n", (long)sb.st_nlink);
|
|
printf("Ownership: UID=%ld GID=%ld\n", (long)sb.st_uid, (long)sb.st_gid);
|
|
|
|
printf("Preferred I/O block size: %ld bytes\n", (long)sb.st_blksize);
|
|
printf("File size: %lld bytes\n", (long long)sb.st_size);
|
|
printf("Blocks allocated: %lld\n", (long long)sb.st_blocks);
|
|
|
|
printf("Last status change: %s", ctime(&sb.st_ctime));
|
|
printf("Last file access: %s", ctime(&sb.st_atime));
|
|
printf("Last file modification: %s\n\n", ctime(&sb.st_mtime));
|
|
|
|
#endif
|
|
return;
|
|
}
|
|
|
|
VOID FatStatfsPrintf(struct statfs buf)
|
|
{
|
|
#if VFS_STATFS_PRINTF == 1
|
|
printf("type of file system : 0x%x\n", buf.f_type);
|
|
printf("optimal transfer block size : %ld\n", (long)buf.f_bsize);
|
|
printf("total data blocks in file system : %ld\n", (long)buf.f_blocks);
|
|
printf("free blocks in fs : %ld\n", (long)buf.f_bfree);
|
|
printf("free blocks available to unprivileged user : %ld\n", (long)buf.f_bavail);
|
|
printf("total file nodes in file system : %ld\n", (long)buf.f_files);
|
|
|
|
printf("free file nodes in fs : %ld\n", (long)buf.f_ffree);
|
|
printf("file system id : %d\n", buf.f_fsid.__val[0]);
|
|
printf("maximum length of filenames : 0x%x\n", buf.f_namelen);
|
|
printf("fragment size: %d\n\n", buf.f_frsize);
|
|
|
|
#endif
|
|
|
|
return;
|
|
}
|
|
|
|
using namespace testing::ext;
|
|
namespace OHOS {
|
|
class VfsFatTest : public testing::Test {
|
|
public:
|
|
static void SetUpTestCase(void)
|
|
{
|
|
INT32 ret = 0;
|
|
sleep(3); // 3s
|
|
if (ret != 0)
|
|
perror("format sd card");
|
|
return;
|
|
ret = mkdir("/vs/", S_IRWXU | S_IRWXG | S_IRWXO);
|
|
if (ret != 0) {
|
|
perror("mkdir mount dir");
|
|
return;
|
|
|
|
ret = mkdir(FAT_MOUNT_DIR, S_IRWXU | S_IRWXG | S_IRWXO);
|
|
if (ret != 0) {
|
|
perror("mkdir mount dir");
|
|
return;
|
|
|
|
ret = mount(FAT_DEV_PATH, FAT_MOUNT_DIR, FAT_FILESYS_TYPE, 0, nullptr);
|
|
if (ret != 0) {
|
|
perror("mount sd card");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
static void TearDownTestCase(void)
|
|
{
|
|
umount(FAT_MOUNT_DIR);
|
|
}
|
|
};
|
|
|
|
#if defined(LOSCFG_USER_TEST_FULL)
|
|
HWTEST_F(VfsFatTest, ItFsFat066, TestSize.Level0)
|
|
{
|
|
ItFsFat066();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat068, TestSize.Level0)
|
|
{
|
|
ItFsFat068();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat072, TestSize.Level0)
|
|
{
|
|
ItFsFat072();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat073, TestSize.Level0)
|
|
{
|
|
ItFsFat073();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat074, TestSize.Level0)
|
|
{
|
|
ItFsFat074();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat496, TestSize.Level0)
|
|
{
|
|
ItFsFat496();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat497, TestSize.Level0)
|
|
{
|
|
ItFsFat497();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat498, TestSize.Level0)
|
|
{
|
|
ItFsFat498();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat499, TestSize.Level0)
|
|
{
|
|
ItFsFat499();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat500, TestSize.Level0)
|
|
{
|
|
ItFsFat500();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat501, TestSize.Level0)
|
|
{
|
|
ItFsFat501();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat502, TestSize.Level0)
|
|
{
|
|
ItFsFat502();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat503, TestSize.Level0)
|
|
{
|
|
ItFsFat503();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat504, TestSize.Level0)
|
|
{
|
|
ItFsFat504();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat506, TestSize.Level0)
|
|
{
|
|
ItFsFat506();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat507, TestSize.Level0)
|
|
{
|
|
ItFsFat507();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat508, TestSize.Level0)
|
|
{
|
|
ItFsFat508();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat509, TestSize.Level0)
|
|
{
|
|
ItFsFat509();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat510, TestSize.Level0)
|
|
{
|
|
ItFsFat510();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat511, TestSize.Level0)
|
|
{
|
|
ItFsFat511();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat512, TestSize.Level0)
|
|
{
|
|
ItFsFat512();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat513, TestSize.Level0)
|
|
{
|
|
ItFsFat513();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat514, TestSize.Level0)
|
|
{
|
|
ItFsFat514();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat515, TestSize.Level0)
|
|
{
|
|
ItFsFat515();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat516, TestSize.Level0)
|
|
{
|
|
ItFsFat516();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat517, TestSize.Level0)
|
|
{
|
|
ItFsFat517();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat518, TestSize.Level0)
|
|
{
|
|
ItFsFat518();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat519, TestSize.Level0)
|
|
{
|
|
ItFsFat519();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat662, TestSize.Level0)
|
|
{
|
|
ItFsFat662();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat663, TestSize.Level0)
|
|
{
|
|
ItFsFat663();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat664, TestSize.Level0)
|
|
{
|
|
ItFsFat664();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat665, TestSize.Level0)
|
|
{
|
|
ItFsFat665();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat666, TestSize.Level0)
|
|
{
|
|
ItFsFat666();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat667, TestSize.Level0)
|
|
{
|
|
ItFsFat667();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat668, TestSize.Level0)
|
|
{
|
|
ItFsFat668();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat669, TestSize.Level0)
|
|
{
|
|
ItFsFat669();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat670, TestSize.Level0)
|
|
{
|
|
ItFsFat670();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat671, TestSize.Level0)
|
|
{
|
|
ItFsFat671();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat672, TestSize.Level0)
|
|
{
|
|
ItFsFat672();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat673, TestSize.Level0)
|
|
{
|
|
ItFsFat673();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat674, TestSize.Level0)
|
|
{
|
|
ItFsFat674();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat675, TestSize.Level0)
|
|
{
|
|
ItFsFat675();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat676, TestSize.Level0)
|
|
{
|
|
ItFsFat676();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat677, TestSize.Level0)
|
|
{
|
|
ItFsFat677();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat678, TestSize.Level0)
|
|
{
|
|
ItFsFat678();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat679, TestSize.Level0)
|
|
{
|
|
ItFsFat679();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat680, TestSize.Level0)
|
|
{
|
|
ItFsFat680();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat681, TestSize.Level0)
|
|
{
|
|
ItFsFat681();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat682, TestSize.Level0)
|
|
{
|
|
ItFsFat682();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat683, TestSize.Level0)
|
|
{
|
|
ItFsFat683();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat684, TestSize.Level0)
|
|
{
|
|
ItFsFat684();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat685, TestSize.Level0)
|
|
{
|
|
ItFsFat685();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat686, TestSize.Level0)
|
|
{
|
|
ItFsFat686();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat687, TestSize.Level0)
|
|
{
|
|
ItFsFat687();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat692, TestSize.Level0)
|
|
{
|
|
ItFsFat692();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat693, TestSize.Level0)
|
|
{
|
|
ItFsFat693();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat694, TestSize.Level0)
|
|
{
|
|
ItFsFat694();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat870, TestSize.Level0)
|
|
{
|
|
ItFsFat870();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat872, TestSize.Level0)
|
|
{
|
|
ItFsFat872();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat873, TestSize.Level0)
|
|
{
|
|
ItFsFat873();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat874, TestSize.Level0)
|
|
{
|
|
ItFsFat874();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat875, TestSize.Level0)
|
|
{
|
|
ItFsFat875();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat902, TestSize.Level0)
|
|
{
|
|
ItFsFat902();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat903, TestSize.Level0)
|
|
{
|
|
ItFsFat903();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat904, TestSize.Level0)
|
|
{
|
|
ItFsFat904();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFat909, TestSize.Level0)
|
|
{
|
|
ItFsFat909(); // plug and unplug during writing or reading
|
|
}
|
|
|
|
#endif
|
|
#if defined(LOSCFG_USER_TEST_PRESSURE)
|
|
HWTEST_F(VfsFatTest, ItFsFatPressure040, TestSize.Level0)
|
|
{
|
|
ItFsFatPressure040();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread046, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread046();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread047, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread047();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPressure030, TestSize.Level0)
|
|
{
|
|
ItFsFatPressure030(); // time too long
|
|
}
|
|
|
|
#if (FAT_FILE_SYSTEMTYPE_AUTO == FAT_FILE_SYSTEMTYPE_FAT32)
|
|
HWTEST_F(VfsFatTest, ItFsFatPressure031, TestSize.Level0)
|
|
{
|
|
ItFsFatPressure031();
|
|
}
|
|
#endif
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPressure038, TestSize.Level0)
|
|
{
|
|
ItFsFatPressure038();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPressure041, TestSize.Level0)
|
|
{
|
|
ItFsFatPressure041();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPressure042, TestSize.Level0)
|
|
{
|
|
ItFsFatPressure042();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPressure301, TestSize.Level0)
|
|
{
|
|
ItFsFatPressure301();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPressure302, TestSize.Level0)
|
|
{
|
|
ItFsFatPressure302();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPressure303, TestSize.Level0)
|
|
{
|
|
ItFsFatPressure303();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPressure305, TestSize.Level0)
|
|
{
|
|
ItFsFatPressure305();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPressure306, TestSize.Level0)
|
|
{
|
|
ItFsFatPressure306();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPressure309, TestSize.Level0)
|
|
{
|
|
ItFsFatPressure309();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread003, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread003();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread004, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread004();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread005, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread005();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread006, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread006();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread008, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread008();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread009, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread009();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread010, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread010();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread012, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread012();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread014, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread014();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread016, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread016();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread017, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread017();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread018, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread018();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread019, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread019();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread020, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread020();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread021, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread021();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread022, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread022();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread023, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread023();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread024, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread024();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread027, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread027();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread029, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread029();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread030, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread030();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread032, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread032();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread033, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread033();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread035, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread035();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread036, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread036();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread038, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread038();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread039, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread039();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread040, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread040();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread041, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread041();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread042, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread042();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread043, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread043();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread044, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread044();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread045, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread045();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread048, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread048();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread049, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread049();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatMutipthread050, TestSize.Level0)
|
|
{
|
|
ItFsFatMutipthread050();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPerformance013, TestSize.Level0)
|
|
{
|
|
ItFsFatPerformance013();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPerformance014, TestSize.Level0)
|
|
{
|
|
ItFsFatPerformance014();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPerformance015, TestSize.Level0)
|
|
{
|
|
ItFsFatPerformance015();
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPerformance016, TestSize.Level0)
|
|
{
|
|
ItFsFatPerformance016(); // Multi-threaded takes time to delete directory files When the fourth
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPerformance001, TestSize.Level0)
|
|
{
|
|
ItFsFatPerformance001(); // rand fwrite and fread for one pthread
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPerformance006, TestSize.Level0)
|
|
{
|
|
ItFsFatPerformance006(); // rand fwrite and fread for three pthread
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPerformance002, TestSize.Level0)
|
|
{
|
|
ItFsFatPerformance002(); // fix fwrite and fread for one pthread
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPerformance005, TestSize.Level0)
|
|
{
|
|
ItFsFatPerformance005(); // fix fwrite and fread for three pthread
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPerformance003, TestSize.Level0)
|
|
{
|
|
ItFsFatPerformance003(); // rand write and read for one pthread
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPerformance004, TestSize.Level0)
|
|
{
|
|
ItFsFatPerformance004(); // fix write and read for one pthread
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPerformance007, TestSize.Level0)
|
|
{
|
|
ItFsFatPerformance007(); // rand write and read for three pthread
|
|
}
|
|
|
|
HWTEST_F(VfsFatTest, ItFsFatPerformance008, TestSize.Level0)
|
|
{
|
|
ItFsFatPerformance008(); // fix write and read for three pthread
|
|
}
|
|
|
|
#endif
|
|
#if defined(LOSCFG_USER_TEST_SMOKE)
|
|
HWTEST_F(VfsFatTest, ItFsFat026, TestSize.Level0)
|
|
{
|
|
ItFsFat026(); // statfs Unsupport
|
|
}
|
|
#endif
|
|
} // namespace OHOS
|