Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "net/dns/dns_transaction.h" | 5 #include "net/dns/dns_transaction.h" |
| 6 | 6 |
| 7 #include <deque> | 7 #include <deque> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 143 MockWrite writes0[] = { | 143 MockWrite writes0[] = { |
| 144 MockWrite(true, reinterpret_cast<const char*>(kT0QueryDatagram), | 144 MockWrite(true, reinterpret_cast<const char*>(kT0QueryDatagram), |
| 145 arraysize(kT0QueryDatagram)) | 145 arraysize(kT0QueryDatagram)) |
| 146 }; | 146 }; |
| 147 | 147 |
| 148 MockRead reads0[] = { | 148 MockRead reads0[] = { |
| 149 MockRead(true, reinterpret_cast<const char*>(kT0ResponseDatagram), | 149 MockRead(true, reinterpret_cast<const char*>(kT0ResponseDatagram), |
| 150 arraysize(kT0ResponseDatagram)) | 150 arraysize(kT0ResponseDatagram)) |
| 151 }; | 151 }; |
| 152 | 152 |
| 153 scoped_refptr<DelayedSocketData> socket0_data( | 153 scoped_ptr<DelayedSocketData> socket0_data( |
| 154 new DelayedSocketData(2, NULL, 0, writes0, arraysize(writes0))); | 154 new DelayedSocketData(2, NULL, 0, writes0, arraysize(writes0))); |
| 155 scoped_refptr<DelayedSocketData> socket1_data( | 155 scoped_ptr<DelayedSocketData> socket1_data( |
| 156 new DelayedSocketData(0, reads0, arraysize(reads0), | 156 new DelayedSocketData(0, reads0, arraysize(reads0), |
| 157 writes0, arraysize(writes0))); | 157 writes0, arraysize(writes0))); |
| 158 | 158 |
| 159 // Use short timeout to speed up the test. | 159 // Use short timeout to speed up the test. |
| 160 ConfigureSession(base::TimeDelta::FromMilliseconds( | 160 ConfigureSession(base::TimeDelta::FromMilliseconds( |
| 161 TestTimeouts::tiny_timeout_ms())); | 161 TestTimeouts::tiny_timeout_ms())); |
| 162 factory().AddSocketDataProvider(socket0_data.get()); | 162 factory().AddSocketDataProvider(socket0_data.get()); |
| 163 factory().AddSocketDataProvider(socket1_data.get()); | 163 factory().AddSocketDataProvider(socket1_data.get()); |
| 164 | 164 |
| 165 StartTransaction(); | 165 StartTransaction(); |
| 166 | 166 |
| 167 MessageLoop::current()->Run(); | 167 MessageLoop::current()->Run(); |
| 168 | 168 |
| 169 EXPECT_EQ(OK, rv()); | 169 EXPECT_EQ(OK, rv()); |
| 170 | 170 |
| 171 EXPECT_TRUE(socket0_data->at_read_eof()); | 171 EXPECT_TRUE(socket0_data->at_read_eof()); |
| 172 EXPECT_TRUE(socket0_data->at_write_eof()); | 172 EXPECT_TRUE(socket0_data->at_write_eof()); |
| 173 EXPECT_TRUE(socket1_data->at_read_eof()); | 173 EXPECT_TRUE(socket1_data->at_read_eof()); |
| 174 EXPECT_TRUE(socket1_data->at_write_eof()); | 174 EXPECT_TRUE(socket1_data->at_write_eof()); |
| 175 EXPECT_EQ(2u, factory().udp_client_sockets().size()); | |
| 176 } | 175 } |
| 177 | 176 |
| 178 // Test that after the first timeout we do a fresh connection, and after | 177 // Test that after the first timeout we do a fresh connection, and after |
| 179 // the second timeout we do another fresh connection, and if we get a | 178 // the second timeout we do another fresh connection, and if we get a |
| 180 // response on the second connection, we return it. | 179 // response on the second connection, we return it. |
| 181 TEST_F(DnsTransactionTest, SecondTimeoutTest) { | 180 TEST_F(DnsTransactionTest, SecondTimeoutTest) { |
| 182 MockWrite writes0[] = { | 181 MockWrite writes0[] = { |
| 183 MockWrite(true, reinterpret_cast<const char*>(kT0QueryDatagram), | 182 MockWrite(true, reinterpret_cast<const char*>(kT0QueryDatagram), |
| 184 arraysize(kT0QueryDatagram)) | 183 arraysize(kT0QueryDatagram)) |
| 185 }; | 184 }; |
| 186 | 185 |
| 187 MockRead reads0[] = { | 186 MockRead reads0[] = { |
| 188 MockRead(true, reinterpret_cast<const char*>(kT0ResponseDatagram), | 187 MockRead(true, reinterpret_cast<const char*>(kT0ResponseDatagram), |
| 189 arraysize(kT0ResponseDatagram)) | 188 arraysize(kT0ResponseDatagram)) |
| 190 }; | 189 }; |
| 191 | 190 |
| 192 scoped_refptr<DelayedSocketData> socket0_data( | 191 scoped_ptr<DelayedSocketData> socket0_data( |
| 193 new DelayedSocketData(2, NULL, 0, writes0, arraysize(writes0))); | 192 new DelayedSocketData(2, NULL, 0, writes0, arraysize(writes0))); |
| 194 scoped_refptr<DelayedSocketData> socket1_data( | 193 scoped_ptr<DelayedSocketData> socket1_data( |
| 195 new DelayedSocketData(2, NULL, 0, writes0, arraysize(writes0))); | 194 new DelayedSocketData(2, NULL, 0, writes0, arraysize(writes0))); |
| 196 scoped_refptr<DelayedSocketData> socket2_data( | 195 scoped_ptr<DelayedSocketData> socket2_data( |
| 197 new DelayedSocketData(0, reads0, arraysize(reads0), | 196 new DelayedSocketData(0, reads0, arraysize(reads0), |
| 198 writes0, arraysize(writes0))); | 197 writes0, arraysize(writes0))); |
| 199 | 198 |
| 200 // Use short timeout to speed up the test. | 199 // Use short timeout to speed up the test. |
| 201 ConfigureSession(base::TimeDelta::FromMilliseconds( | 200 ConfigureSession(base::TimeDelta::FromMilliseconds( |
| 202 TestTimeouts::tiny_timeout_ms())); | 201 TestTimeouts::tiny_timeout_ms())); |
| 203 factory().AddSocketDataProvider(socket0_data.get()); | 202 factory().AddSocketDataProvider(socket0_data.get()); |
| 204 factory().AddSocketDataProvider(socket1_data.get()); | 203 factory().AddSocketDataProvider(socket1_data.get()); |
| 205 factory().AddSocketDataProvider(socket2_data.get()); | 204 factory().AddSocketDataProvider(socket2_data.get()); |
| 206 | 205 |
| 207 StartTransaction(); | 206 StartTransaction(); |
| 208 | 207 |
| 209 MessageLoop::current()->Run(); | 208 MessageLoop::current()->Run(); |
| 210 | 209 |
| 211 EXPECT_EQ(OK, rv()); | 210 EXPECT_EQ(OK, rv()); |
| 212 | 211 |
| 213 EXPECT_TRUE(socket0_data->at_read_eof()); | 212 EXPECT_TRUE(socket0_data->at_read_eof()); |
| 214 EXPECT_TRUE(socket0_data->at_write_eof()); | 213 EXPECT_TRUE(socket0_data->at_write_eof()); |
| 215 EXPECT_TRUE(socket1_data->at_read_eof()); | 214 EXPECT_TRUE(socket1_data->at_read_eof()); |
| 216 EXPECT_TRUE(socket1_data->at_write_eof()); | 215 EXPECT_TRUE(socket1_data->at_write_eof()); |
| 217 EXPECT_TRUE(socket2_data->at_read_eof()); | 216 EXPECT_TRUE(socket2_data->at_read_eof()); |
| 218 EXPECT_TRUE(socket2_data->at_write_eof()); | 217 EXPECT_TRUE(socket2_data->at_write_eof()); |
| 219 EXPECT_EQ(3u, factory().udp_client_sockets().size()); | |
|
eroman
2012/01/21 01:18:30
is this change intentional?
szym
2012/01/21 06:59:16
Yes. This check was redundant. There is only 3 Soc
| |
| 220 } | 218 } |
| 221 | 219 |
| 222 // Test that after the first timeout we do a fresh connection, and after | 220 // Test that after the first timeout we do a fresh connection, and after |
| 223 // the second timeout we do another fresh connection and after the third | 221 // the second timeout we do another fresh connection and after the third |
| 224 // timeout we give up and return a timeout error. | 222 // timeout we give up and return a timeout error. |
| 225 TEST_F(DnsTransactionTest, ThirdTimeoutTest) { | 223 TEST_F(DnsTransactionTest, ThirdTimeoutTest) { |
| 226 MockWrite writes0[] = { | 224 MockWrite writes0[] = { |
| 227 MockWrite(true, reinterpret_cast<const char*>(kT0QueryDatagram), | 225 MockWrite(true, reinterpret_cast<const char*>(kT0QueryDatagram), |
| 228 arraysize(kT0QueryDatagram)) | 226 arraysize(kT0QueryDatagram)) |
| 229 }; | 227 }; |
| 230 | 228 |
| 231 scoped_refptr<DelayedSocketData> socket0_data( | 229 scoped_ptr<DelayedSocketData> socket0_data( |
| 232 new DelayedSocketData(2, NULL, 0, writes0, arraysize(writes0))); | 230 new DelayedSocketData(2, NULL, 0, writes0, arraysize(writes0))); |
| 233 scoped_refptr<DelayedSocketData> socket1_data( | 231 scoped_ptr<DelayedSocketData> socket1_data( |
| 234 new DelayedSocketData(2, NULL, 0, writes0, arraysize(writes0))); | 232 new DelayedSocketData(2, NULL, 0, writes0, arraysize(writes0))); |
| 235 scoped_refptr<DelayedSocketData> socket2_data( | 233 scoped_ptr<DelayedSocketData> socket2_data( |
| 236 new DelayedSocketData(2, NULL, 0, writes0, arraysize(writes0))); | 234 new DelayedSocketData(2, NULL, 0, writes0, arraysize(writes0))); |
| 237 | 235 |
| 238 // Use short timeout to speed up the test. | 236 // Use short timeout to speed up the test. |
| 239 ConfigureSession(base::TimeDelta::FromMilliseconds( | 237 ConfigureSession(base::TimeDelta::FromMilliseconds( |
| 240 TestTimeouts::tiny_timeout_ms())); | 238 TestTimeouts::tiny_timeout_ms())); |
| 241 factory().AddSocketDataProvider(socket0_data.get()); | 239 factory().AddSocketDataProvider(socket0_data.get()); |
| 242 factory().AddSocketDataProvider(socket1_data.get()); | 240 factory().AddSocketDataProvider(socket1_data.get()); |
| 243 factory().AddSocketDataProvider(socket2_data.get()); | 241 factory().AddSocketDataProvider(socket2_data.get()); |
| 244 | 242 |
| 245 StartTransaction(); | 243 StartTransaction(); |
| 246 | 244 |
| 247 MessageLoop::current()->Run(); | 245 MessageLoop::current()->Run(); |
| 248 | 246 |
| 249 EXPECT_EQ(ERR_DNS_TIMED_OUT, rv()); | 247 EXPECT_EQ(ERR_DNS_TIMED_OUT, rv()); |
| 250 | 248 |
| 251 EXPECT_TRUE(socket0_data->at_read_eof()); | 249 EXPECT_TRUE(socket0_data->at_read_eof()); |
| 252 EXPECT_TRUE(socket0_data->at_write_eof()); | 250 EXPECT_TRUE(socket0_data->at_write_eof()); |
| 253 EXPECT_TRUE(socket1_data->at_read_eof()); | 251 EXPECT_TRUE(socket1_data->at_read_eof()); |
| 254 EXPECT_TRUE(socket1_data->at_write_eof()); | 252 EXPECT_TRUE(socket1_data->at_write_eof()); |
| 255 EXPECT_TRUE(socket2_data->at_read_eof()); | 253 EXPECT_TRUE(socket2_data->at_read_eof()); |
| 256 EXPECT_TRUE(socket2_data->at_write_eof()); | 254 EXPECT_TRUE(socket2_data->at_write_eof()); |
| 257 EXPECT_EQ(3u, factory().udp_client_sockets().size()); | |
|
eroman
2012/01/21 01:18:30
is this change intentional?
| |
| 258 } | 255 } |
| 259 | 256 |
| 260 } // namespace | 257 } // namespace |
| 261 | 258 |
| 262 } // namespace net | 259 } // namespace net |
| OLD | NEW |