OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/memory/scoped_vector.h" | 9 #include "base/memory/scoped_vector.h" |
10 #include "base/rand_util.h" | 10 #include "base/rand_util.h" |
(...skipping 29 matching lines...) Expand all Loading... |
40 IoMode mode, | 40 IoMode mode, |
41 bool use_tcp) | 41 bool use_tcp) |
42 : query_(new DnsQuery(id, DomainFromDot(dotted_name), qtype)), | 42 : query_(new DnsQuery(id, DomainFromDot(dotted_name), qtype)), |
43 use_tcp_(use_tcp) { | 43 use_tcp_(use_tcp) { |
44 if (use_tcp_) { | 44 if (use_tcp_) { |
45 scoped_ptr<uint16> length(new uint16); | 45 scoped_ptr<uint16> length(new uint16); |
46 *length = base::HostToNet16(query_->io_buffer()->size()); | 46 *length = base::HostToNet16(query_->io_buffer()->size()); |
47 writes_.push_back(MockWrite(mode, | 47 writes_.push_back(MockWrite(mode, |
48 reinterpret_cast<const char*>(length.get()), | 48 reinterpret_cast<const char*>(length.get()), |
49 sizeof(uint16), num_reads_and_writes())); | 49 sizeof(uint16), num_reads_and_writes())); |
50 lengths_.push_back(length.release()); | 50 lengths_.push_back(length.Pass()); |
51 } | 51 } |
52 writes_.push_back(MockWrite(mode, query_->io_buffer()->data(), | 52 writes_.push_back(MockWrite(mode, query_->io_buffer()->data(), |
53 query_->io_buffer()->size(), | 53 query_->io_buffer()->size(), |
54 num_reads_and_writes())); | 54 num_reads_and_writes())); |
55 } | 55 } |
56 ~DnsSocketData() {} | 56 ~DnsSocketData() {} |
57 | 57 |
58 // All responses must be added before GetProvider. | 58 // All responses must be added before GetProvider. |
59 | 59 |
60 // Adds pre-built DnsResponse. |tcp_length| will be used in TCP mode only. | 60 // Adds pre-built DnsResponse. |tcp_length| will be used in TCP mode only. |
61 void AddResponseWithLength(scoped_ptr<DnsResponse> response, IoMode mode, | 61 void AddResponseWithLength(scoped_ptr<DnsResponse> response, IoMode mode, |
62 uint16 tcp_length) { | 62 uint16 tcp_length) { |
63 CHECK(!provider_.get()); | 63 CHECK(!provider_.get()); |
64 if (use_tcp_) { | 64 if (use_tcp_) { |
65 scoped_ptr<uint16> length(new uint16); | 65 scoped_ptr<uint16> length(new uint16); |
66 *length = base::HostToNet16(tcp_length); | 66 *length = base::HostToNet16(tcp_length); |
67 reads_.push_back(MockRead(mode, | 67 reads_.push_back(MockRead(mode, |
68 reinterpret_cast<const char*>(length.get()), | 68 reinterpret_cast<const char*>(length.get()), |
69 sizeof(uint16), num_reads_and_writes())); | 69 sizeof(uint16), num_reads_and_writes())); |
70 lengths_.push_back(length.release()); | 70 lengths_.push_back(length.Pass()); |
71 } | 71 } |
72 reads_.push_back(MockRead(mode, response->io_buffer()->data(), | 72 reads_.push_back(MockRead(mode, response->io_buffer()->data(), |
73 response->io_buffer()->size(), | 73 response->io_buffer()->size(), |
74 num_reads_and_writes())); | 74 num_reads_and_writes())); |
75 responses_.push_back(response.release()); | 75 responses_.push_back(response.Pass()); |
76 } | 76 } |
77 | 77 |
78 // Adds pre-built DnsResponse. | 78 // Adds pre-built DnsResponse. |
79 void AddResponse(scoped_ptr<DnsResponse> response, IoMode mode) { | 79 void AddResponse(scoped_ptr<DnsResponse> response, IoMode mode) { |
80 uint16 tcp_length = response->io_buffer()->size(); | 80 uint16 tcp_length = response->io_buffer()->size(); |
81 AddResponseWithLength(response.Pass(), mode, tcp_length); | 81 AddResponseWithLength(response.Pass(), mode, tcp_length); |
82 } | 82 } |
83 | 83 |
84 // Adds pre-built response from |data| buffer. | 84 // Adds pre-built response from |data| buffer. |
85 void AddResponseData(const uint8* data, size_t length, IoMode mode) { | 85 void AddResponseData(const uint8* data, size_t length, IoMode mode) { |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 DnsSocketPool::CreateNull(socket_factory_.get()), | 352 DnsSocketPool::CreateNull(socket_factory_.get()), |
353 base::Bind(&DnsTransactionTest::GetNextId, base::Unretained(this)), | 353 base::Bind(&DnsTransactionTest::GetNextId, base::Unretained(this)), |
354 NULL /* NetLog */); | 354 NULL /* NetLog */); |
355 transaction_factory_ = DnsTransactionFactory::CreateFactory(session_.get()); | 355 transaction_factory_ = DnsTransactionFactory::CreateFactory(session_.get()); |
356 } | 356 } |
357 | 357 |
358 void AddSocketData(scoped_ptr<DnsSocketData> data) { | 358 void AddSocketData(scoped_ptr<DnsSocketData> data) { |
359 CHECK(socket_factory_.get()); | 359 CHECK(socket_factory_.get()); |
360 transaction_ids_.push_back(data->query_id()); | 360 transaction_ids_.push_back(data->query_id()); |
361 socket_factory_->AddSocketDataProvider(data->GetProvider()); | 361 socket_factory_->AddSocketDataProvider(data->GetProvider()); |
362 socket_data_.push_back(data.release()); | 362 socket_data_.push_back(data.Pass()); |
363 } | 363 } |
364 | 364 |
365 // Add expected query for |dotted_name| and |qtype| with |id| and response | 365 // Add expected query for |dotted_name| and |qtype| with |id| and response |
366 // taken verbatim from |data| of |data_length| bytes. The transaction id in | 366 // taken verbatim from |data| of |data_length| bytes. The transaction id in |
367 // |data| should equal |id|, unless testing mismatched response. | 367 // |data| should equal |id|, unless testing mismatched response. |
368 void AddQueryAndResponse(uint16 id, | 368 void AddQueryAndResponse(uint16 id, |
369 const char* dotted_name, | 369 const char* dotted_name, |
370 uint16 qtype, | 370 uint16 qtype, |
371 const uint8* response_data, | 371 const uint8* response_data, |
372 size_t response_length, | 372 size_t response_length, |
(...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1004 config_.timeout = TestTimeouts::tiny_timeout(); | 1004 config_.timeout = TestTimeouts::tiny_timeout(); |
1005 ConfigureFactory(); | 1005 ConfigureFactory(); |
1006 | 1006 |
1007 TransactionHelper helper0(".", dns_protocol::kTypeA, ERR_INVALID_ARGUMENT); | 1007 TransactionHelper helper0(".", dns_protocol::kTypeA, ERR_INVALID_ARGUMENT); |
1008 EXPECT_TRUE(helper0.Run(transaction_factory_.get())); | 1008 EXPECT_TRUE(helper0.Run(transaction_factory_.get())); |
1009 } | 1009 } |
1010 | 1010 |
1011 } // namespace | 1011 } // namespace |
1012 | 1012 |
1013 } // namespace net | 1013 } // namespace net |
OLD | NEW |