|
@@ -12,48 +12,20 @@
|
|
|
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
|
// PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
|
|
-#include "util/interprocess_sync_file.h"
|
|
|
+#include <util/interprocess_sync_file.h>
|
|
|
|
|
|
#include <util/unittests/check_valgrind.h>
|
|
|
+#include <util/tests/interprocess_util.h>
|
|
|
#include <gtest/gtest.h>
|
|
|
#include <unistd.h>
|
|
|
|
|
|
using namespace std;
|
|
|
+using isc::util::test::parentReadState;
|
|
|
|
|
|
namespace isc {
|
|
|
namespace util {
|
|
|
|
|
|
namespace {
|
|
|
-unsigned char
|
|
|
-parentReadLockedState (int fd) {
|
|
|
- unsigned char locked = 0xff;
|
|
|
-
|
|
|
- fd_set rfds;
|
|
|
- FD_ZERO(&rfds);
|
|
|
- FD_SET(fd, &rfds);
|
|
|
-
|
|
|
- // We use select() here to wait for new data on the input end of
|
|
|
- // the pipe. We wait for 5 seconds (an arbitrary value) for input
|
|
|
- // data, and continue if no data is available. This is done so
|
|
|
- // that read() is not blocked due to some issue in the child
|
|
|
- // process (and the tests continue running).
|
|
|
-
|
|
|
- struct timeval tv;
|
|
|
- tv.tv_sec = 5;
|
|
|
- tv.tv_usec = 0;
|
|
|
-
|
|
|
- const int nfds = select(fd + 1, &rfds, NULL, NULL, &tv);
|
|
|
- EXPECT_EQ(1, nfds);
|
|
|
-
|
|
|
- if (nfds == 1) {
|
|
|
- // Read status
|
|
|
- ssize_t bytes_read = read(fd, &locked, sizeof(locked));
|
|
|
- EXPECT_EQ(sizeof(locked), bytes_read);
|
|
|
- }
|
|
|
-
|
|
|
- return (locked);
|
|
|
-}
|
|
|
-
|
|
|
TEST(InterprocessSyncFileTest, TestLock) {
|
|
|
InterprocessSyncFile sync("test");
|
|
|
InterprocessSyncLocker locker(sync);
|
|
@@ -99,7 +71,7 @@ TEST(InterprocessSyncFileTest, TestLock) {
|
|
|
// Parent reads from pipe
|
|
|
close(fds[1]);
|
|
|
|
|
|
- const unsigned char locked = parentReadLockedState(fds[0]);
|
|
|
+ const unsigned char locked = parentReadState(fds[0]);
|
|
|
|
|
|
close(fds[0]);
|
|
|
|
|
@@ -163,7 +135,7 @@ TEST(InterprocessSyncFileTest, TestMultipleFilesForked) {
|
|
|
// Parent reads from pipe
|
|
|
close(fds[1]);
|
|
|
|
|
|
- const unsigned char locked = parentReadLockedState(fds[0]);
|
|
|
+ const unsigned char locked = parentReadState(fds[0]);
|
|
|
|
|
|
close(fds[0]);
|
|
|
|