QUIC - Added NetLog's Logging test to quic_network_transaction_unittest.cc. 
Deleted the DISABLED Logging test from quic_client_session_test.cc. 

Added code for MockUDPClientSocket::GetLocalAddress.

[email protected]

Review URL: https://chromiumcodereview.appspot.com/14614006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199394 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc
index 7d05a3a..24d8ec8 100644
--- a/net/quic/quic_network_transaction_unittest.cc
+++ b/net/quic/quic_network_transaction_unittest.cc
@@ -5,6 +5,9 @@
 #include "base/basictypes.h"
 #include "base/compiler_specific.h"
 #include "base/memory/scoped_ptr.h"
+#include "base/stl_util.h"
+#include "net/base/capturing_net_log.h"
+#include "net/base/net_log_unittest.h"
 #include "net/base/test_completion_callback.h"
 #include "net/cert/mock_cert_verifier.h"
 #include "net/dns/mock_host_resolver.h"
@@ -184,12 +187,13 @@
   // Returns a newly created packet to send kData on stream 1.
   QuicEncryptedPacket* ConstructDataPacket(
       QuicPacketSequenceNumber sequence_number,
+      QuicStreamId stream_id,
       bool should_include_version,
       bool fin,
       QuicStreamOffset offset,
       base::StringPiece data) {
     InitializeHeader(sequence_number, should_include_version);
-    QuicStreamFrame frame(3, fin, offset, data);
+    QuicStreamFrame frame(stream_id, fin, offset, data);
     return ConstructPacket(header_, QuicFrame(&frame)).release();
   }
 
@@ -257,8 +261,10 @@
   request.url = GURL("http://www.google.com/");
   request.load_flags = 0;
 
+  QuicStreamId stream_id = 3;
   scoped_ptr<QuicEncryptedPacket> data(
-      ConstructDataPacket(1, true, true, 0, GetRequestString("GET", "/")));
+      ConstructDataPacket(1, stream_id, true, true, 0,
+                          GetRequestString("GET", "/")));
   scoped_ptr<QuicEncryptedPacket> ack(ConstructAckPacket(1, 0));
 
   MockWrite quic_writes[] = {
@@ -268,7 +274,7 @@
 
   scoped_ptr<QuicEncryptedPacket> resp(
       ConstructDataPacket(
-          1, false, true, 0, GetResponseString("200 OK", "hello!")));
+          1, stream_id, false, true, 0, GetResponseString("200 OK", "hello!")));
   MockRead quic_reads[] = {
     MockRead(SYNCHRONOUS, resp->data(), resp->length()),
     MockRead(ASYNC, OK),  // EOF
@@ -297,7 +303,8 @@
   scoped_ptr<HttpNetworkTransaction> trans(
       new HttpNetworkTransaction(DEFAULT_PRIORITY, session_));
 
-  int rv = trans->Start(&request, callback.callback(), BoundNetLog());
+  CapturingBoundNetLog net_log;
+  int rv = trans->Start(&request, callback.callback(), net_log.bound());
   EXPECT_EQ(ERR_IO_PENDING, rv);
   EXPECT_EQ(OK, callback.WaitForResult());
 
@@ -312,6 +319,40 @@
   std::string response_data;
   ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data));
   EXPECT_EQ("hello!", response_data);
+  // Check that the NetLog was filled reasonably.
+  net::CapturingNetLog::CapturedEntryList entries;
+  net_log.GetEntries(&entries);
+  EXPECT_LT(0u, entries.size());
+
+  // Check that we logged a QUIC_SESSION_PACKET_RECEIVED.
+  int pos = net::ExpectLogContainsSomewhere(
+      entries, 0,
+      net::NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED,
+      net::NetLog::PHASE_NONE);
+  EXPECT_LT(0, pos);
+
+  // ... and also a TYPE_QUIC_SESSION_PACKET_HEADER_RECEIVED.
+  pos = net::ExpectLogContainsSomewhere(
+      entries, 0,
+      net::NetLog::TYPE_QUIC_SESSION_PACKET_HEADER_RECEIVED,
+      net::NetLog::PHASE_NONE);
+  EXPECT_LT(0, pos);
+
+  std::string packet_sequence_number;
+  ASSERT_TRUE(entries[pos].GetStringValue(
+      "packet_sequence_number", &packet_sequence_number));
+  EXPECT_EQ("1", packet_sequence_number);
+
+  // ... and also a QUIC_SESSION_STREAM_FRAME_RECEIVED.
+  pos = net::ExpectLogContainsSomewhere(
+      entries, 0,
+      net::NetLog::TYPE_QUIC_SESSION_STREAM_FRAME_RECEIVED,
+      net::NetLog::PHASE_NONE);
+  EXPECT_LT(0, pos);
+
+  int log_stream_id;
+  ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &log_stream_id));
+  EXPECT_EQ(stream_id, static_cast<QuicStreamId>(log_stream_id));
 }
 
 TEST_F(QuicNetworkTransactionTest, DoNotForceQuicForHttps) {
@@ -379,7 +420,7 @@
 
 
   scoped_ptr<QuicEncryptedPacket> data(
-      ConstructDataPacket(1, true, true, 0, GetRequestString("GET", "/")));
+      ConstructDataPacket(1, 3, true, true, 0, GetRequestString("GET", "/")));
   scoped_ptr<QuicEncryptedPacket> ack(ConstructAckPacket(1, 0));
 
   MockWrite quic_writes[] = {
@@ -389,7 +430,7 @@
 
   scoped_ptr<QuicEncryptedPacket> resp(
       ConstructDataPacket(
-          1, false, true, 0, GetResponseString("200 OK", "hello!")));
+          1, 3, false, true, 0, GetResponseString("200 OK", "hello!")));
   MockRead quic_reads[] = {
     MockRead(SYNCHRONOUS, resp->data(), resp->length()),
     MockRead(ASYNC, OK),  // EOF
@@ -521,7 +562,7 @@
   request.load_flags = 0;
 
   scoped_ptr<QuicEncryptedPacket> data(
-      ConstructDataPacket(1, true, true, 0, GetRequestString("GET", "/")));
+      ConstructDataPacket(1, 3, true, true, 0, GetRequestString("GET", "/")));
   scoped_ptr<QuicEncryptedPacket> ack(ConstructAckPacket(1, 0));
 
   MockWrite quic_writes[] = {
@@ -531,7 +572,7 @@
 
   scoped_ptr<QuicEncryptedPacket> resp(
       ConstructDataPacket(
-          1, false, true, 0, GetResponseString("200 OK", "hello!")));
+          1, 3, false, true, 0, GetResponseString("200 OK", "hello!")));
   MockRead quic_reads[] = {
     MockRead(SYNCHRONOUS, resp->data(), resp->length()),
     MockRead(ASYNC, OK),  // EOF