Chromium Code Reviews| 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 |