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