/* * Copyright (c) 2019 TAOS Data, Inc. * * This program is free software: you can use, redistribute, and/or modify * it under the terms of the GNU Affero General Public License, version 3 * or later ("AGPL"), as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include #include "os.h" #ifdef TAOS_RANDOM_FILE_FAIL static int random_file_fail_factor = 20; void taosSetRandomFileFailFactor(int factor) { random_file_fail_factor = factor; } #endif ssize_t taos_tread(int fd, void *buf, size_t count) { #ifdef TAOS_RANDOM_FILE_FAIL if (random_file_fail_factor > 0) { if (rand() % random_file_fail_factor == 0) { errno = EIO; return -1; } } #endif return tread(fd, buf, count); } ssize_t taos_twrite(int fd, void *buf, size_t count) { #ifdef TAOS_RANDOM_FILE_FAIL if (random_file_fail_factor > 0) { if (rand() % random_file_fail_factor == 0) { errno = EIO; return -1; } } #endif return twrite(fd, buf, count); } off_t taos_lseek(int fd, off_t offset, int whence) { #ifdef TAOS_RANDOM_FILE_FAIL if (random_file_fail_factor > 0) { if (rand() % random_file_fail_factor == 0) { errno = EIO; return -1; } } #endif return lseek(fd, offset, whence); }