| OLD | NEW |
| (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 // Tests for the UdpSocketWrapper interface. | |
| 12 // This will test the UdpSocket implementations on various platforms. | |
| 13 // Note that this test is using a real SocketManager, which starts up | |
| 14 // an extra worker thread, making the testing more complex than it | |
| 15 // should be. | |
| 16 // This is because on Posix, the CloseBlocking function waits for the | |
| 17 // ReadyForDeletion function to be called, which has to be called after | |
| 18 // CloseBlocking, and thus has to be called from another thread. | |
| 19 // The manager is the one actually doing the deleting. | |
| 20 // This is done differently in the Winsock2 code, but that code | |
| 21 // will also hang if the destructor is called directly. | |
| 22 | |
| 23 #include "testing/gmock/include/gmock/gmock.h" | |
| 24 #include "testing/gtest/include/gtest/gtest.h" | |
| 25 #include "webrtc/test/channel_transport/udp_socket_manager_wrapper.h" | |
| 26 #include "webrtc/test/channel_transport/udp_socket_wrapper.h" | |
| 27 | |
| 28 using ::testing::_; | |
| 29 using ::testing::Return; | |
| 30 | |
| 31 namespace webrtc { | |
| 32 namespace test { | |
| 33 | |
| 34 class MockSocketManager : public UdpSocketManager { | |
| 35 public: | |
| 36 MockSocketManager() {} | |
| 37 // Access to protected destructor. | |
| 38 void Destroy() { | |
| 39 delete this; | |
| 40 } | |
| 41 MOCK_METHOD2(Init, bool(int32_t, uint8_t&)); | |
| 42 MOCK_METHOD0(Start, bool()); | |
| 43 MOCK_METHOD0(Stop, bool()); | |
| 44 MOCK_METHOD1(AddSocket, bool(UdpSocketWrapper*)); | |
| 45 MOCK_METHOD1(RemoveSocket, bool(UdpSocketWrapper*)); | |
| 46 }; | |
| 47 | |
| 48 // Creates a socket using the static constructor method and verifies that | |
| 49 // it's added to the socket manager. | |
| 50 TEST(UdpSocketWrapper, CreateSocket) { | |
| 51 int32_t id = 42; | |
| 52 // We can't test deletion of sockets without a socket manager. | |
| 53 uint8_t threads = 1; | |
| 54 UdpSocketManager* mgr = UdpSocketManager::Create(id, threads); | |
| 55 UdpSocketWrapper* socket = | |
| 56 UdpSocketWrapper::CreateSocket(id, | |
| 57 mgr, | |
| 58 NULL, // CallbackObj | |
| 59 NULL, // IncomingSocketCallback | |
| 60 false, // ipV6Enable | |
| 61 false); // disableGQOS | |
| 62 socket->CloseBlocking(); | |
| 63 UdpSocketManager::Return(); | |
| 64 } | |
| 65 | |
| 66 } // namespace test | |
| 67 } // namespace webrtc | |
| OLD | NEW |