diff options
-rw-r--r-- | vespalib/CMakeLists.txt | 1 | ||||
-rw-r--r-- | vespalib/src/apps/vespa-drop-file-from-cache/drop_file_from_cache.cpp | 15 | ||||
-rw-r--r-- | vespalib/src/tests/drop-file-from-cache/drop_file_from_cache_test.cpp | 20 |
3 files changed, 28 insertions, 8 deletions
diff --git a/vespalib/CMakeLists.txt b/vespalib/CMakeLists.txt index 2212bbeb57a..c5dafcf789d 100644 --- a/vespalib/CMakeLists.txt +++ b/vespalib/CMakeLists.txt @@ -37,6 +37,7 @@ vespa_define_module( src/tests/data/smart_buffer src/tests/delegatelist src/tests/dotproduct + src/tests/drop-file-from-cache src/tests/dual_merge_director src/tests/eventbarrier src/tests/exception_classes diff --git a/vespalib/src/apps/vespa-drop-file-from-cache/drop_file_from_cache.cpp b/vespalib/src/apps/vespa-drop-file-from-cache/drop_file_from_cache.cpp index eca88c83738..c4129305ac1 100644 --- a/vespalib/src/apps/vespa-drop-file-from-cache/drop_file_from_cache.cpp +++ b/vespalib/src/apps/vespa-drop-file-from-cache/drop_file_from_cache.cpp @@ -1,10 +1,13 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include <cstdio> +#include <cerrno> +#include <cstring> #include <fcntl.h> #include <unistd.h> int main(int argc, char **argv) { + char errorBuf[200]; if (argc != 2) { fprintf(stderr, "%s <filename>", argv[0]); return 1; @@ -12,14 +15,18 @@ int main(int argc, char **argv) { const char *fileName = argv[1]; int fh = open(fileName, O_RDONLY); if (fh != -1) { + int retval = 0; int err = posix_fadvise(fh, 0, 0, POSIX_FADV_DONTNEED); if (err != 0) { - perror("posix_fadvise failed"); + const char *errorString = strerror_r(errno, errorBuf, sizeof(errorBuf)); + fprintf(stderr, "posix_fadvise failed: %s", errorString); + retval = 3; } close(fh); + return retval; } else { - perror("Failed opening file"); - return 1; + const char *errorString = strerror_r(errno, errorBuf, sizeof(errorBuf)); + fprintf(stderr, "Failed opening file %s: %s", fileName, errorString); + return 2; } - return 0; } diff --git a/vespalib/src/tests/drop-file-from-cache/drop_file_from_cache_test.cpp b/vespalib/src/tests/drop-file-from-cache/drop_file_from_cache_test.cpp index efdc81ab6d0..63defa58c41 100644 --- a/vespalib/src/tests/drop-file-from-cache/drop_file_from_cache_test.cpp +++ b/vespalib/src/tests/drop-file-from-cache/drop_file_from_cache_test.cpp @@ -4,10 +4,22 @@ using vespalib::SlaveProc; -TEST("simple run") { - std::string out; - EXPECT_TRUE(SlaveProc::run("../../apps/vespa-drop-file-from-cache/vespa-drop-file-from-cache", out)); - EXPECT_EQUAL(out, "foo"); +TEST("no arguments") { + SlaveProc drop("../../apps/vespa-drop-file-from-cache/vespa-drop-file-from-cache"); + drop.wait(); + EXPECT_EQUAL(1, drop.getExitCode()); +} + +TEST("file does not exist") { + SlaveProc drop("../../apps/vespa-drop-file-from-cache/vespa-drop-file-from-cache not_exist"); + drop.wait(); + EXPECT_EQUAL(2, drop.getExitCode()); +} + +TEST("All is well") { + SlaveProc drop("../../apps/vespa-drop-file-from-cache/vespa-drop-file-from-cache vespalib_drop_file_from_cache_test_app"); + drop.wait(); + EXPECT_EQUAL(0, drop.getExitCode()); } TEST_MAIN_WITH_PROCESS_PROXY() { TEST_RUN_ALL(); } |