Home | History | Annotate | Download | only in brillo
      1 // Copyright 2014 The Chromium OS Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include <brillo/unittest_utils.h>
      6 
      7 #include <fcntl.h>
      8 #include <sys/socket.h>
      9 #include <sys/types.h>
     10 #include <unistd.h>
     11 
     12 #include <base/logging.h>
     13 #include <gtest/gtest.h>
     14 
     15 namespace brillo {
     16 
     17 const int ScopedPipe::kPipeSize = 4096;
     18 
     19 ScopedPipe::ScopedPipe() {
     20   int fds[2];
     21   if (pipe(fds) != 0) {
     22     PLOG(FATAL) << "Creating a pipe()";
     23   }
     24   reader = fds[0];
     25   writer = fds[1];
     26   EXPECT_EQ(kPipeSize, fcntl(writer, F_SETPIPE_SZ, kPipeSize));
     27 }
     28 
     29 ScopedPipe::~ScopedPipe() {
     30   if (reader != -1)
     31     close(reader);
     32   if (writer != -1)
     33     close(writer);
     34 }
     35 
     36 
     37 ScopedSocketPair::ScopedSocketPair() {
     38   int fds[2];
     39   if (socketpair(PF_LOCAL, SOCK_STREAM, 0, fds) != 0) {
     40     PLOG(FATAL) << "Creating a socketpair()";
     41   }
     42   left = fds[0];
     43   right = fds[1];
     44 }
     45 
     46 ScopedSocketPair::~ScopedSocketPair() {
     47   if (left != -1)
     48     close(left);
     49   if (right != -1)
     50     close(right);
     51 }
     52 
     53 }  // namespace brillo
     54