Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(982)

Side by Side Diff: webrtc/voice_engine/test/channel_transport/udp_transport_unittest.cc

Issue 2687843002: Remove unused VoiceChannelTransport. (Closed)
Patch Set: rebase Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/voice_engine/test/channel_transport/udp_transport_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include <vector>
12
13 #include "webrtc/test/gmock.h"
14 #include "webrtc/test/gtest.h"
15 #include "webrtc/voice_engine/test/channel_transport/udp_transport.h"
16
17 // We include the implementation header file to get at the dependency-injecting
18 // constructor.
19 #include "webrtc/voice_engine/test/channel_transport/udp_transport_impl.h"
20
21 // We must mock the socket manager, for which we need its definition.
22 #include "webrtc/voice_engine/test/channel_transport/udp_socket_manager_wrapper. h"
23
24 using ::testing::_;
25 using ::testing::Return;
26
27 namespace webrtc {
28 namespace test {
29
30 class MockUdpSocketWrapper : public UdpSocketWrapper {
31 public:
32 // The following methods have to be mocked because they are pure.
33 MOCK_METHOD2(SetCallback, bool(CallbackObj, IncomingSocketCallback));
34 MOCK_METHOD1(Bind, bool(const SocketAddress&));
35 MOCK_METHOD0(ValidHandle, bool());
36 MOCK_METHOD4(SetSockopt, bool(int32_t, int32_t,
37 const int8_t*,
38 int32_t));
39 MOCK_METHOD1(SetTOS, int32_t(int32_t));
40 MOCK_METHOD3(SendTo, int32_t(const int8_t*, size_t, const SocketAddress&));
41 MOCK_METHOD8(SetQos, bool(int32_t, int32_t,
42 int32_t, int32_t,
43 int32_t, int32_t,
44 const SocketAddress &,
45 int32_t));
46 };
47
48 class MockUdpSocketManager : public UdpSocketManager {
49 public:
50 // Access to protected destructor.
51 void Destroy() {
52 delete this;
53 }
54 MOCK_METHOD2(Init, bool(int32_t, uint8_t&));
55 MOCK_METHOD0(Start, bool());
56 MOCK_METHOD0(Stop, bool());
57 MOCK_METHOD1(AddSocket, bool(UdpSocketWrapper*));
58 MOCK_METHOD1(RemoveSocket, bool(UdpSocketWrapper*));
59 };
60
61 class MockSocketFactory :
62 public UdpTransportImpl::SocketFactoryInterface {
63 public:
64 MockSocketFactory(std::vector<MockUdpSocketWrapper*>* socket_counter)
65 : socket_counter_(socket_counter) {
66 }
67 UdpSocketWrapper* CreateSocket(const int32_t id,
68 UdpSocketManager* mgr,
69 CallbackObj obj,
70 IncomingSocketCallback cb,
71 bool ipV6Enable,
72 bool disableGQOS) {
73 MockUdpSocketWrapper* socket = new MockUdpSocketWrapper();
74 // We instrument the socket with calls that are expected, but do
75 // not matter for any specific test, in order to avoid warning messages.
76 EXPECT_CALL(*socket, ValidHandle()).WillRepeatedly(Return(true));
77 EXPECT_CALL(*socket, Bind(_)).WillOnce(Return(true));
78 socket_counter_->push_back(socket);
79 return socket;
80 }
81 std::vector<MockUdpSocketWrapper*>* socket_counter_;
82 };
83
84 class UDPTransportTest : public ::testing::Test {
85 public:
86 UDPTransportTest()
87 : sockets_created_(0) {
88 }
89
90 ~UDPTransportTest() {
91 // In production, sockets register themselves at creation time with
92 // an UdpSocketManager, and the UdpSocketManager is responsible for
93 // deleting them. In this test, we just delete them after the test.
94 while (!sockets_created_.empty()) {
95 delete sockets_created_.back();
96 sockets_created_.pop_back();
97 }
98 }
99
100 size_t NumSocketsCreated() {
101 return sockets_created_.size();
102 }
103
104 std::vector<MockUdpSocketWrapper*>* sockets_created() {
105 return &sockets_created_;
106 }
107 private:
108 std::vector<MockUdpSocketWrapper*> sockets_created_;
109 };
110
111 TEST_F(UDPTransportTest, CreateTransport) {
112 int32_t id = 0;
113 uint8_t threads = 1;
114 UdpTransport* transport = UdpTransport::Create(id, threads);
115 UdpTransport::Destroy(transport);
116 }
117
118 // This test verifies that the mock_socket is not called from the constructor.
119 TEST_F(UDPTransportTest, ConstructorDoesNotCreateSocket) {
120 int32_t id = 0;
121 UdpTransportImpl::SocketFactoryInterface* null_maker = NULL;
122 UdpSocketManager* null_manager = NULL;
123 UdpTransport* transport = new UdpTransportImpl(id,
124 null_maker,
125 null_manager);
126 delete transport;
127 }
128
129 TEST_F(UDPTransportTest, InitializeSourcePorts) {
130 int32_t id = 0;
131 UdpTransportImpl::SocketFactoryInterface* mock_maker
132 = new MockSocketFactory(sockets_created());
133 MockUdpSocketManager* mock_manager = new MockUdpSocketManager();
134 UdpTransport* transport = new UdpTransportImpl(id,
135 mock_maker,
136 mock_manager);
137 EXPECT_EQ(0, transport->InitializeSourcePorts(4711, 4712));
138 EXPECT_EQ(2u, NumSocketsCreated());
139
140 delete transport;
141 mock_manager->Destroy();
142 }
143
144 } // namespace test
145 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/voice_engine/test/channel_transport/udp_transport_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698