1 /*
2 BAREOS® - Backup Archiving REcovery Open Sourced
3
4 Copyright (C) 2018-2018 Bareos GmbH & Co. KG
5
6 This program is Free Software; you can redistribute it and/or
7 modify it under the terms of version three of the GNU Affero General Public
8 License as published by the Free Software Foundation and included
9 in the file LICENSE.
10
11 This program is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Affero General Public License for more details.
15
16 You should have received a copy of the GNU Affero General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 02110-1301, USA.
20 */
21 #include "gtest/gtest.h"
22 #include <memory>
23 #include <stdlib.h>
24
25 /* test private members */
26 #define protected public
27 #define private public
28 #include "include/bareos.h"
29
30
TEST(bsock,bareossockettcp_standard_constructor_test)31 TEST(bsock, bareossockettcp_standard_constructor_test)
32 {
33 std::shared_ptr<BareosSocketTCP> p = std::make_shared<BareosSocketTCP>();
34
35 /* private BAREOS_SOCKET: */
36 EXPECT_EQ(p->fd_, -1);
37 EXPECT_EQ(p->read_seqno, 0);
38 EXPECT_NE(p->msg, nullptr);
39 EXPECT_NE(p->errmsg,nullptr);
40 EXPECT_EQ(p->spool_fd_, -1);
41 EXPECT_EQ(p->src_addr, nullptr);
42 EXPECT_EQ(p->in_msg_no, 0);
43 EXPECT_EQ(p->out_msg_no, 0);
44 EXPECT_EQ(p->message_length, 0);
45 EXPECT_EQ(p->timer_start, 0);
46 EXPECT_EQ(p->b_errno, 0);
47 EXPECT_EQ(p->blocking_, 1);
48 EXPECT_EQ(p->errors, 0);
49 EXPECT_EQ(p->suppress_error_msgs_, false);
50 EXPECT_EQ(p->sleep_time_after_authentication_error, 5);
51 EXPECT_EQ(p->client_addr.sa_family, AF_UNSPEC);
52 EXPECT_EQ(p->client_addr.sa_data[0], 0);
53 EXPECT_EQ(p->peer_addr.sin_port, 0);
54 EXPECT_EQ(p->peer_addr.sin_addr.s_addr, 0);
55
56 /* protected BAREOS_SOCKET: */
57 EXPECT_EQ(p->jcr_, nullptr);
58 // EXPECT_EQ(p->mutex_, PTHREAD_MUTEX_INITIALIZER);
59 EXPECT_EQ(p->who_, nullptr);
60 EXPECT_EQ(p->host_, nullptr);
61 EXPECT_EQ(p->port_ , -1);
62 EXPECT_EQ(p->tid_, nullptr);
63 EXPECT_EQ(p->data_end_, 0);
64 EXPECT_EQ(p->FileIndex_, 0);
65 EXPECT_EQ(p->timed_out_ ? true :false, false);
66 EXPECT_EQ(p->terminated_, false);
67 EXPECT_EQ(p->cloned_, false);
68 EXPECT_EQ(p->spool_, false);
69 EXPECT_EQ(p->use_bursting_, false);
70 EXPECT_EQ(p->use_keepalive_, true);
71 EXPECT_EQ(p->bwlimit_, 0);
72 EXPECT_EQ(p->nb_bytes_, 0);
73 EXPECT_EQ(p->last_tick_, 0);
74 EXPECT_EQ(p->tls_established_, false);
75 }
76
TEST(bsock,bareossockettcp_copy_constructor_test)77 TEST(bsock, bareossockettcp_copy_constructor_test)
78 {
79 /* private BAREOS_SOCKET */
80 std::shared_ptr<BareosSocketTCP> p = std::make_shared<BareosSocketTCP>();
81
82 srand(time(NULL));
83
84 p->fd_ = rand();
85 p->read_seqno = rand();
86 // POOLMEM *msg; --> already initialized
87 // POOLMEM *errmsg; --> already initialized
88 p->spool_fd_ = rand();
89 p->src_addr = (IPADDR *)0x1111;
90 p->in_msg_no = rand();
91 p->out_msg_no = rand();
92 p->message_length = rand();
93 p->timer_start = rand();
94 p->b_errno = rand();
95 p->blocking_ = rand();
96 p->errors = rand();
97 p->suppress_error_msgs_ = true;
98 p->sleep_time_after_authentication_error = rand();
99
100 /* protected BAREOS_SOCKET: */
101 p->jcr_ = (JobControlRecord *)0x2222;
102 // p->pthread_mutex_t mutex_; --> MUTEX INITIALIZER
103 p->who_ = (char *)0x3333;
104 p->host_ = (char *)0x4444;
105 p->port_ = rand();
106 p->tid_ = (btimer_t*)0x5555;
107 p->data_end_ = rand();
108 p->FileIndex_ = rand();
109 p->timed_out_ = true;
110 p->terminated_ = true;
111 p->cloned_ = true;
112 p->spool_ = true;
113 p->use_bursting_ = true;
114 p->use_keepalive_ = true;
115 p->bwlimit_ = rand();
116 p->nb_bytes_= rand();
117 p->last_tick_ = rand();
118 p->tls_established_ = true;
119
120 /* copy p --> q */
121 std::shared_ptr<BareosSocketTCP> q = std::make_shared<BareosSocketTCP>(*p);
122
123 EXPECT_EQ(p->fd_, q->fd_);
124 EXPECT_EQ(p->read_seqno, q->read_seqno);
125 EXPECT_EQ(p->msg, q->msg);
126 EXPECT_EQ(p->errmsg, q->errmsg);
127 // POOLMEM *msg; --> already initialized
128 // POOLMEM *errmsg; --> already initialized
129 EXPECT_EQ(p->spool_fd_, q->spool_fd_);
130 EXPECT_EQ(p->src_addr, q->src_addr);
131 EXPECT_EQ(p->in_msg_no, q->in_msg_no);
132 EXPECT_EQ(p->out_msg_no, q->out_msg_no);
133 EXPECT_EQ(p->message_length, q->message_length);
134 EXPECT_EQ(p->timer_start, q->timer_start);
135 EXPECT_EQ(p->b_errno, q->b_errno);
136 EXPECT_EQ(p->blocking_, q->blocking_);
137 EXPECT_EQ(p->errors, q->errors);
138 EXPECT_EQ(p->suppress_error_msgs_, q->suppress_error_msgs_);
139 EXPECT_EQ(p->sleep_time_after_authentication_error, q->sleep_time_after_authentication_error);
140
141 /* protected BAREOS_SOCKET: */
142 EXPECT_EQ(p->jcr_, q->jcr_);
143 // p->pthread_mutex_t mutex_; --> MUTEX INITIALIZER
144 EXPECT_EQ(p->who_, q->who_);
145 EXPECT_EQ(p->host_, q->host_);
146 EXPECT_EQ(p->port_, q->port_);
147 EXPECT_EQ(p->tid_, q->tid_);
148 EXPECT_EQ(p->data_end_, q->data_end_);
149 EXPECT_EQ(p->FileIndex_, q->FileIndex_);
150 EXPECT_EQ(p->timed_out_, q->timed_out_);
151 EXPECT_EQ(p->terminated_, q->terminated_);
152 EXPECT_EQ(p->cloned_, q->cloned_);
153 EXPECT_EQ(p->spool_, q->spool_);
154 EXPECT_EQ(p->use_bursting_, q->use_bursting_);
155 EXPECT_EQ(p->use_keepalive_, q->use_keepalive_);
156 EXPECT_EQ(p->bwlimit_, q->bwlimit_);
157 EXPECT_EQ(p->nb_bytes_, q->nb_bytes_);
158 EXPECT_EQ(p->last_tick_, q->last_tick_);
159 EXPECT_EQ(p->tls_established_, q->tls_established_);
160
161 /* prevent invalid test-adresses from being freed */
162 p->src_addr = nullptr;
163 p->who_ = nullptr;
164 p->host_ = nullptr;
165 p->msg = nullptr;
166 p->errmsg = nullptr;
167 p->tid_ = nullptr;
168 p->jcr_ = nullptr;
169
170 q->src_addr = nullptr;
171 q->who_ = nullptr;
172 q->host_ = nullptr;
173 q->msg = nullptr;
174 q->errmsg = nullptr;
175 q->tid_ = nullptr;
176 q->jcr_ = nullptr;
177 }
178