| 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 #ifndef NET_DNS_DNS_TEST_UTIL_H_ | 5 #ifndef NET_DNS_DNS_TEST_UTIL_H_ |
| 6 #define NET_DNS_DNS_TEST_UTIL_H_ | 6 #define NET_DNS_DNS_TEST_UTIL_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
| 12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 13 #include "net/dns/dns_client.h" |
| 13 #include "net/dns/dns_config_service.h" | 14 #include "net/dns/dns_config_service.h" |
| 14 #include "net/dns/dns_protocol.h" | 15 #include "net/dns/dns_protocol.h" |
| 15 | 16 |
| 16 namespace net { | 17 namespace net { |
| 17 | 18 |
| 18 //----------------------------------------------------------------------------- | 19 //----------------------------------------------------------------------------- |
| 19 // Query/response set for www.google.com, ID is fixed to 0. | 20 // Query/response set for www.google.com, ID is fixed to 0. |
| 20 static const char kT0HostName[] = "www.google.com"; | 21 static const char kT0HostName[] = "www.google.com"; |
| 21 static const uint16 kT0Qtype = dns_protocol::kTypeA; | 22 static const uint16 kT0Qtype = dns_protocol::kTypeA; |
| 22 static const char kT0DnsName[] = { | 23 static const char kT0DnsName[] = { |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 }; | 168 }; |
| 168 static const char* const kT3IpAddresses[] = { | 169 static const char* const kT3IpAddresses[] = { |
| 169 "74.125.226.178", "74.125.226.179", "74.125.226.180", | 170 "74.125.226.178", "74.125.226.179", "74.125.226.180", |
| 170 "74.125.226.176", "74.125.226.177" | 171 "74.125.226.176", "74.125.226.177" |
| 171 }; | 172 }; |
| 172 static const char kT3CanonName[] = "www.l.google.com"; | 173 static const char kT3CanonName[] = "www.l.google.com"; |
| 173 static const int kT3TTL = 0x00000015; | 174 static const int kT3TTL = 0x00000015; |
| 174 // +2 for the CNAME records, +1 for TXT record. | 175 // +2 for the CNAME records, +1 for TXT record. |
| 175 static const unsigned kT3RecordCount = arraysize(kT3IpAddresses) + 3; | 176 static const unsigned kT3RecordCount = arraysize(kT3IpAddresses) + 3; |
| 176 | 177 |
| 178 class AddressSorter; |
| 177 class DnsClient; | 179 class DnsClient; |
| 180 class MockTransactionFactory; |
| 178 | 181 |
| 179 struct MockDnsClientRule { | 182 struct MockDnsClientRule { |
| 180 enum Result { | 183 enum Result { |
| 181 FAIL, // Fail asynchronously with ERR_NAME_NOT_RESOLVED. | 184 FAIL, // Fail asynchronously with ERR_NAME_NOT_RESOLVED. |
| 182 TIMEOUT, // Fail asynchronously with ERR_DNS_TIMEOUT. | 185 TIMEOUT, // Fail asynchronously with ERR_DNS_TIMEOUT. |
| 183 EMPTY, // Return an empty response. | 186 EMPTY, // Return an empty response. |
| 184 OK, // Return a response with loopback address. | 187 OK, // Return a response with loopback address. |
| 185 }; | 188 }; |
| 186 | 189 |
| 190 // If |delay| is true, matching transactions will be delayed until triggered |
| 191 // by the consumer. |
| 187 MockDnsClientRule(const std::string& prefix_arg, | 192 MockDnsClientRule(const std::string& prefix_arg, |
| 188 uint16 qtype_arg, | 193 uint16 qtype_arg, |
| 189 Result result_arg) | 194 Result result_arg, |
| 190 : result(result_arg), prefix(prefix_arg), qtype(qtype_arg) { } | 195 bool delay) |
| 196 : result(result_arg), prefix(prefix_arg), qtype(qtype_arg), |
| 197 delay(delay) {} |
| 191 | 198 |
| 192 Result result; | 199 Result result; |
| 193 std::string prefix; | 200 std::string prefix; |
| 194 uint16 qtype; | 201 uint16 qtype; |
| 202 bool delay; |
| 195 }; | 203 }; |
| 196 | 204 |
| 197 typedef std::vector<MockDnsClientRule> MockDnsClientRuleList; | 205 typedef std::vector<MockDnsClientRule> MockDnsClientRuleList; |
| 198 | 206 |
| 199 // Creates mock DnsClient for testing HostResolverImpl. | 207 // MockDnsClient provides MockTransactionFactory. |
| 200 scoped_ptr<DnsClient> CreateMockDnsClient(const DnsConfig& config, | 208 class MockDnsClient : public DnsClient { |
| 201 const MockDnsClientRuleList& rules); | 209 public: |
| 210 MockDnsClient(const DnsConfig& config, const MockDnsClientRuleList& rules); |
| 211 virtual ~MockDnsClient(); |
| 212 |
| 213 // DnsClient interface: |
| 214 virtual void SetConfig(const DnsConfig& config) OVERRIDE; |
| 215 virtual const DnsConfig* GetConfig() const OVERRIDE; |
| 216 virtual DnsTransactionFactory* GetTransactionFactory() OVERRIDE; |
| 217 virtual AddressSorter* GetAddressSorter() OVERRIDE; |
| 218 |
| 219 // Completes all DnsTransactions that were delayed by a rule. |
| 220 void CompleteDelayedTransactions(); |
| 221 |
| 222 private: |
| 223 DnsConfig config_; |
| 224 scoped_ptr<MockTransactionFactory> factory_; |
| 225 scoped_ptr<AddressSorter> address_sorter_; |
| 226 }; |
| 202 | 227 |
| 203 } // namespace net | 228 } // namespace net |
| 204 | 229 |
| 205 #endif // NET_DNS_DNS_TEST_UTIL_H_ | 230 #endif // NET_DNS_DNS_TEST_UTIL_H_ |
| OLD | NEW |