OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/cast/transport/transport/udp_transport.h" | 5 #include "media/cast/net/udp_transport.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/bind.h" | 11 #include "base/bind.h" |
12 #include "base/callback.h" | 12 #include "base/callback.h" |
13 #include "base/message_loop/message_loop.h" | 13 #include "base/message_loop/message_loop.h" |
14 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
15 #include "media/cast/net/cast_transport_config.h" | |
15 #include "media/cast/test/utility/net_utility.h" | 16 #include "media/cast/test/utility/net_utility.h" |
16 #include "media/cast/transport/cast_transport_config.h" | |
17 #include "net/base/net_util.h" | 17 #include "net/base/net_util.h" |
18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
19 | 19 |
20 namespace media { | 20 namespace media { |
21 namespace cast { | 21 namespace cast { |
22 namespace transport { | |
23 | 22 |
24 class MockPacketReceiver { | 23 class MockPacketReceiver { |
25 public: | 24 public: |
26 MockPacketReceiver(const base::Closure& callback) | 25 MockPacketReceiver(const base::Closure& callback) |
27 : packet_callback_(callback) {} | 26 : packet_callback_(callback) {} |
28 | 27 |
29 void ReceivedPacket(scoped_ptr<Packet> packet) { | 28 void ReceivedPacket(scoped_ptr<Packet> packet) { |
30 packet_ = std::string(packet->size(), '\0'); | 29 packet_ = std::string(packet->size(), '\0'); |
31 std::copy(packet->begin(), packet->end(), packet_.begin()); | 30 std::copy(packet->begin(), packet->end(), packet_.begin()); |
32 packet_callback_.Run(); | 31 packet_callback_.Run(); |
33 } | 32 } |
34 | 33 |
35 std::string packet() const { return packet_; } | 34 std::string packet() const { return packet_; } |
36 transport::PacketReceiverCallback packet_receiver() { | 35 PacketReceiverCallback packet_receiver() { |
37 return base::Bind(&MockPacketReceiver::ReceivedPacket, | 36 return base::Bind(&MockPacketReceiver::ReceivedPacket, |
38 base::Unretained(this)); | 37 base::Unretained(this)); |
39 } | 38 } |
40 | 39 |
41 private: | 40 private: |
42 std::string packet_; | 41 std::string packet_; |
43 base::Closure packet_callback_; | 42 base::Closure packet_callback_; |
44 | 43 |
45 DISALLOW_COPY_AND_ASSIGN(MockPacketReceiver); | 44 DISALLOW_COPY_AND_ASSIGN(MockPacketReceiver); |
46 }; | 45 }; |
47 | 46 |
48 void SendPacket(UdpTransport* transport, Packet packet) { | 47 void SendPacket(UdpTransport* transport, Packet packet) { |
49 base::Closure cb; | 48 base::Closure cb; |
50 transport->SendPacket(new base::RefCountedData<Packet>(packet), cb); | 49 transport->SendPacket(new base::RefCountedData<Packet>(packet), cb); |
51 } | 50 } |
52 | 51 |
53 static void UpdateCastTransportStatus(transport::CastTransportStatus status) { | 52 static void UpdateCastTransportStatus(CastTransportStatus status) { |
54 NOTREACHED(); | 53 NOTREACHED(); |
55 } | 54 } |
56 | 55 |
57 TEST(UdpTransport, SendAndReceive) { | 56 TEST(UdpTransport, SendAndReceive) { |
58 base::MessageLoopForIO message_loop; | 57 base::MessageLoopForIO message_loop; |
59 | 58 |
60 net::IPEndPoint free_local_port1 = test::GetFreeLocalPort(); | 59 net::IPEndPoint free_local_port1 = test::GetFreeLocalPort(); |
61 net::IPEndPoint free_local_port2 = test::GetFreeLocalPort(); | 60 net::IPEndPoint free_local_port2 = test::GetFreeLocalPort(); |
62 net::IPAddressNumber empty_addr_number; | 61 net::IPAddressNumber empty_addr_number; |
63 net::ParseIPLiteralToNumber("0.0.0.0", &empty_addr_number); | 62 net::ParseIPLiteralToNumber("0.0.0.0", &empty_addr_number); |
wtc
2014/07/11 22:31:35
This is marked as NET_EXPORT_PRIVATE, which means
Alpha Left Google
2014/07/11 22:33:48
I can rewrite this such that ParseIPLiteralToNumbe
Alpha Left Google
2014/07/12 01:37:54
Done.
| |
64 | 63 |
65 UdpTransport send_transport(NULL, | 64 UdpTransport send_transport(NULL, |
66 message_loop.message_loop_proxy(), | 65 message_loop.message_loop_proxy(), |
67 free_local_port1, | 66 free_local_port1, |
68 free_local_port2, | 67 free_local_port2, |
69 base::Bind(&UpdateCastTransportStatus)); | 68 base::Bind(&UpdateCastTransportStatus)); |
70 UdpTransport recv_transport(NULL, | 69 UdpTransport recv_transport(NULL, |
71 message_loop.message_loop_proxy(), | 70 message_loop.message_loop_proxy(), |
72 free_local_port2, | 71 free_local_port2, |
73 net::IPEndPoint(empty_addr_number, 0), | 72 net::IPEndPoint(empty_addr_number, 0), |
(...skipping 14 matching lines...) Expand all Loading... | |
88 | 87 |
89 base::Closure cb; | 88 base::Closure cb; |
90 send_transport.SendPacket(new base::RefCountedData<Packet>(packet), cb); | 89 send_transport.SendPacket(new base::RefCountedData<Packet>(packet), cb); |
91 run_loop.Run(); | 90 run_loop.Run(); |
92 EXPECT_TRUE( | 91 EXPECT_TRUE( |
93 std::equal(packet.begin(), packet.end(), receiver1.packet().begin())); | 92 std::equal(packet.begin(), packet.end(), receiver1.packet().begin())); |
94 EXPECT_TRUE( | 93 EXPECT_TRUE( |
95 std::equal(packet.begin(), packet.end(), receiver2.packet().begin())); | 94 std::equal(packet.begin(), packet.end(), receiver2.packet().begin())); |
96 } | 95 } |
97 | 96 |
98 } // namespace transport | |
99 } // namespace cast | 97 } // namespace cast |
100 } // namespace media | 98 } // namespace media |
OLD | NEW |