summaryrefslogtreecommitdiff
path: root/test/DNSCacheTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-07-02 15:18:13 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-07-02 15:18:13 +0000
commit01fdb2aaeb4dcb351931c14ca63d9347f0adc529 (patch)
tree94f6e4a327c77b358316d5790224d9cccee8e3c1 /test/DNSCacheTest.cc
parent8796993c71c8a326c2f261c01db5066cfc3b2848 (diff)
2009-07-03 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Try all available addresses returned by DNS until it gets connected in HTTP(S)/FTP download * src/AbstractCommand.cc * src/AbstractCommand.h * src/AbstractProxyRequestCommand.cc * src/AbstractProxyRequestCommand.h * src/DNSCache.h * src/DownloadEngine.cc * src/DownloadEngine.h * src/FtpInitiateConnectionCommand.cc * src/FtpInitiateConnectionCommand.h * src/FtpNegotiationCommand.cc * src/FtpNegotiationCommand.h * src/HttpInitiateConnectionCommand.cc * src/HttpInitiateConnectionCommand.h * src/HttpRequestCommand.cc * src/HttpRequestCommand.h * src/InitiateConnectionCommand.cc * src/InitiateConnectionCommand.h * test/DNSCacheTest.cc * test/Makefile.am * test/SimpleDNSCacheTest.cc
Diffstat (limited to 'test/DNSCacheTest.cc')
-rw-r--r--test/DNSCacheTest.cc64
1 files changed, 64 insertions, 0 deletions
diff --git a/test/DNSCacheTest.cc b/test/DNSCacheTest.cc
new file mode 100644
index 00000000..61346e18
--- /dev/null
+++ b/test/DNSCacheTest.cc
@@ -0,0 +1,64 @@
+#include "DNSCache.h"
+
+#include <cppunit/extensions/HelperMacros.h>
+
+namespace aria2 {
+
+class DNSCacheTest:public CppUnit::TestFixture {
+
+ CPPUNIT_TEST_SUITE(DNSCacheTest);
+ CPPUNIT_TEST(testFind);
+ CPPUNIT_TEST(testMarkBad);
+ CPPUNIT_TEST(testPutBadAddr);
+ CPPUNIT_TEST(testRemove);
+ CPPUNIT_TEST_SUITE_END();
+
+ DNSCache _cache;
+public:
+ void setUp()
+ {
+ _cache = DNSCache();
+ _cache.put("www", "192.168.0.1", 80);
+ _cache.put("www", "::1", 80);
+ _cache.put("ftp", "192.168.0.1", 21);
+ _cache.put("proxy", "192.168.1.2", 8080);
+ }
+
+ void testFind();
+ void testMarkBad();
+ void testPutBadAddr();
+ void testRemove();
+};
+
+
+CPPUNIT_TEST_SUITE_REGISTRATION(DNSCacheTest);
+
+void DNSCacheTest::testFind()
+{
+ CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), _cache.find("www", 80));
+ CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), _cache.find("ftp", 21));
+ CPPUNIT_ASSERT_EQUAL(std::string("192.168.1.2"), _cache.find("proxy", 8080));
+ CPPUNIT_ASSERT_EQUAL(std::string(""), _cache.find("www", 8080));
+ CPPUNIT_ASSERT_EQUAL(std::string(""), _cache.find("another", 80));
+}
+
+void DNSCacheTest::testMarkBad()
+{
+ _cache.markBad("www", "192.168.0.1", 80);
+ CPPUNIT_ASSERT_EQUAL(std::string("::1"), _cache.find("www", 80));
+}
+
+void DNSCacheTest::testPutBadAddr()
+{
+ _cache.markBad("www", "192.168.0.1", 80);
+ _cache.put("www", "192.168.0.1", 80);
+ CPPUNIT_ASSERT_EQUAL(std::string("::1"), _cache.find("www", 80));
+}
+
+void DNSCacheTest::testRemove()
+{
+ _cache.remove("www", 80);
+ CPPUNIT_ASSERT_EQUAL(std::string(""), _cache.find("www", 80));
+}
+
+} // namespace aria2