diff options
author | Marcin Siodelski <marcin@isc.org> | 2015-01-12 12:38:47 +0100 |
---|---|---|
committer | Marcin Siodelski <marcin@isc.org> | 2015-01-12 12:38:47 +0100 |
commit | fbce7dd40fdc965ea439746797dcebb9cb83836e (patch) | |
tree | 84cdc2e2c9a99c8188e5f18d8625c7b87449a999 /src/lib/util | |
parent | [3671] Memfile loads leases from multiple lease files. (diff) | |
download | kea-fbce7dd40fdc965ea439746797dcebb9cb83836e.tar.xz kea-fbce7dd40fdc965ea439746797dcebb9cb83836e.zip |
[3671] Added unit test for loading v6 leases from multiple files.
Also, prevented opening the optional lease files if they don't exist.
Diffstat (limited to 'src/lib/util')
-rw-r--r-- | src/lib/util/csv_file.cc | 13 | ||||
-rw-r--r-- | src/lib/util/csv_file.h | 10 | ||||
-rw-r--r-- | src/lib/util/tests/csv_file_unittest.cc | 26 |
3 files changed, 46 insertions, 3 deletions
diff --git a/src/lib/util/csv_file.cc b/src/lib/util/csv_file.cc index 7b29a38bf1..648d6ac3ba 100644 --- a/src/lib/util/csv_file.cc +++ b/src/lib/util/csv_file.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2014-2015 Internet Systems Consortium, Inc. ("ISC") // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -97,6 +97,17 @@ CSVFile::close() { } } +bool +CSVFile::exists() const { + std::ifstream fs(filename_); + if (fs.good()) { + fs.close(); + return (true); + } + fs.close(); + return (false); +} + void CSVFile::flush() const { checkStreamStatusAndReset("flush"); diff --git a/src/lib/util/csv_file.h b/src/lib/util/csv_file.h index 123948f8bd..2ac2bef05f 100644 --- a/src/lib/util/csv_file.h +++ b/src/lib/util/csv_file.h @@ -1,4 +1,4 @@ -// Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2014-2015 Internet Systems Consortium, Inc. ("ISC") // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -320,6 +320,14 @@ public: /// @brief Closes the CSV file. void close(); + /// @brief Checks if the CSV file exists. + /// + /// This method doesn't check if the existing file has a correct file + /// format. + /// + /// @return true if file exists, false otherwise. + bool exists() const; + /// @brief Flushes a file. void flush() const; diff --git a/src/lib/util/tests/csv_file_unittest.cc b/src/lib/util/tests/csv_file_unittest.cc index 0a0b12d297..234a826e20 100644 --- a/src/lib/util/tests/csv_file_unittest.cc +++ b/src/lib/util/tests/csv_file_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2014-2015 Internet Systems Consortium, Inc. ("ISC") // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -454,5 +454,29 @@ TEST_F(CSVFileTest, validateHeader) { EXPECT_THROW(csv->open(), CSVFileError); } +// This test checks that the exists method of the CSVFile class properly +// checks that the file exists. +TEST_F(CSVFileTest, exists) { + // Create a new CSV file that contains a header and two data rows. + writeFile("animal,age,color\n" + "cat,10,white\n" + "lion,15,yellow\n"); + + boost::scoped_ptr<CSVFile> csv(new CSVFile(testfile_)); + // The CSVFile class should return true even if the file hasn't been + // opened. + EXPECT_TRUE(csv->exists()); + // Now open the file and make sure it still returns true. + ASSERT_NO_THROW(csv->open()); + EXPECT_TRUE(csv->exists()); + + // Close the file and remove it. + csv->close(); + removeFile(); + + // The file should not exist. + EXPECT_FALSE(csv->exists()); +} + } // end of anonymous namespace |