// Copyright 2014 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <brillo/unittest_utils.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#include <base/logging.h>
#include <gtest/gtest.h>
namespace brillo {
const int ScopedPipe::kPipeSize = 4096;
ScopedPipe::ScopedPipe() {
int fds[2];
if (pipe(fds) != 0) {
PLOG(FATAL) << "Creating a pipe()";
}
reader = fds[0];
writer = fds[1];
EXPECT_EQ(kPipeSize, fcntl(writer, F_SETPIPE_SZ, kPipeSize));
}
ScopedPipe::~ScopedPipe() {
if (reader != -1)
close(reader);
if (writer != -1)
close(writer);
}
ScopedSocketPair::ScopedSocketPair() {
int fds[2];
if (socketpair(PF_LOCAL, SOCK_STREAM, 0, fds) != 0) {
PLOG(FATAL) << "Creating a socketpair()";
}
left = fds[0];
right = fds[1];
}
ScopedSocketPair::~ScopedSocketPair() {
if (left != -1)
close(left);
if (right != -1)
close(right);
}
} // namespace brillo