Guest User

Untitled

a guest
May 24th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.11 KB | None | 0 0
  1. // TODO multiple ip address in localmachine (..localmachine)
  2. BOOST_AUTO_TEST_CASE( test_resolver )
  3. {
  4. boost::asio::io_service io_service;
  5. boost::system::error_code error;
  6. tcp::resolver resolver(io_service);
  7. tcp::resolver::iterator end_;
  8.  
  9. // localmachine
  10. {
  11. tcp::resolver::query query(boost::asio::ip::host_name(),"");
  12. tcp::resolver::iterator iterator = resolver.resolve(query);
  13. tcp::endpoint _endpoint = *iterator;
  14. BOOST_CHECK_EQUAL( _endpoint.address().to_string(), "192.168.10.101" );
  15. }
  16.  
  17. // host -> ip
  18. {
  19. tcp::resolver::query query("reiot.cafe24.com","");
  20. tcp::resolver::iterator iterator = resolver.resolve(query);
  21. tcp::endpoint _endpoint = *iterator;
  22. BOOST_CHECK_EQUAL( _endpoint.address().to_string(), "123.214.172.49" );
  23. }
  24.  
  25. // localhost
  26. {
  27. tcp::resolver::query query("localhost","");
  28. tcp::resolver::iterator iterator = resolver.resolve(query);
  29. tcp::endpoint _endpoint = *iterator;
  30. BOOST_CHECK_EQUAL( _endpoint.address().to_string(), "127.0.0.1" );
  31. if ( ++iterator != end_ )
  32. {
  33. _endpoint = *iterator;
  34. BOOST_CHECK_EQUAL( _endpoint.address().to_string(), "192.168.10.101" );
  35. }
  36. }
  37.  
  38. // http
  39. {
  40. tcp::resolver::query query("reiot.cafe24.com","http");
  41. tcp::resolver::iterator iterator = resolver.resolve(query);
  42. tcp::endpoint _endpoint = *iterator;
  43. BOOST_CHECK_EQUAL( _endpoint.address().to_string(), "123.214.172.49" );
  44. BOOST_CHECK_EQUAL( _endpoint.port(), 80 );
  45. }
  46.  
  47. // ftp
  48. {
  49. tcp::resolver::query query("reiot.cafe24.com","ftp");
  50. tcp::resolver::iterator iterator = resolver.resolve(query);
  51. tcp::endpoint _endpoint = *iterator;
  52. BOOST_CHECK_EQUAL( _endpoint.address().to_string(), "123.214.172.49" );
  53. BOOST_CHECK_EQUAL( _endpoint.port(), 21 );
  54. }
  55.  
  56. // telnet
  57. {
  58. tcp::resolver::query query("reiot.cafe24.com","telnet");
  59. tcp::resolver::iterator iterator = resolver.resolve(query);
  60. tcp::endpoint _endpoint = *iterator;
  61. BOOST_CHECK_EQUAL( _endpoint.address().to_string(), "123.214.172.49" );
  62. BOOST_CHECK_EQUAL( _endpoint.port(), 23 );
  63. }
  64.  
  65. // unknown host
  66. {
  67. tcp::resolver::query query("reiot1.com","");
  68. resolver.resolve(query,error);
  69. BOOST_CHECK_EQUAL( error.value(), boost::asio::error::host_not_found );
  70. }
  71.  
  72. // unknown service
  73. {
  74. tcp::resolver::query query("reiot.cafe24.com","test");
  75. resolver.resolve(query,error);
  76. BOOST_CHECK_EQUAL( error.value(), boost::asio::error::service_not_found );
  77. }
  78. }
  79.  
  80. void print_address(const boost::system::error_code& e, tcp::resolver::iterator itr )
  81. {
  82. tcp::endpoint endpoint_ = *itr;
  83. BOOST_MESSAGE( endpoint_.address() );
  84. }
  85.  
  86. class AsyncResolveHandler
  87. {
  88. public :
  89. AsyncResolveHandler( int errorcode ) : address_(""), port_(0), errorcode_(errorcode) {}
  90. AsyncResolveHandler( std::string addr, int port = 0 ) : address_(addr), port_(port) {}
  91. void operator() (const boost::system::error_code& e, tcp::resolver::iterator itr )
  92. {
  93. if ( !e )
  94. {
  95. tcp::endpoint endpoint_ = *itr;
  96. BOOST_CHECK_EQUAL( endpoint_.address().to_string(), address_ );
  97. if ( port_ != 0 )
  98. {
  99. BOOST_CHECK_EQUAL( endpoint_.port(), port_ );
  100. }
  101. }
  102. else
  103. {
  104. BOOST_CHECK_EQUAL( e.value(), errorcode_ );
  105. }
  106. }
  107. std::string address_;
  108. int port_;
  109. int errorcode_;
  110. };
  111.  
  112. BOOST_AUTO_TEST_CASE( test_async_resolver )
  113. {
  114. boost::asio::io_service io_service;
  115.  
  116. tcp::resolver resolver(io_service);
  117.  
  118. boost::system::error_code error;
  119.  
  120. // host -> ip
  121. {
  122. tcp::resolver::query query("reiot.cafe24.com","");
  123. resolver.async_resolve(query,AsyncResolveHandler("123.214.172.49"));
  124. BOOST_CHECK_EQUAL(io_service.run_one(error),1);
  125. BOOST_CHECK_MESSAGE(!error,error.message());
  126. io_service.reset();
  127. }
  128.  
  129. // localhost -> 127.0.0.1
  130. {
  131. tcp::resolver::query query("localhost","");
  132. resolver.async_resolve(query,AsyncResolveHandler("127.0.0.1"));
  133. BOOST_CHECK_EQUAL(io_service.run_one(error),1);
  134. BOOST_CHECK_MESSAGE(!error,error.message());
  135. io_service.reset();
  136. }
  137.  
  138. // http
  139. {
  140. tcp::resolver::query query("reiot.cafe24.com","http");
  141. resolver.async_resolve(query,AsyncResolveHandler("123.214.172.49",80));
  142. BOOST_CHECK_EQUAL(io_service.run_one(error),1);
  143. BOOST_CHECK_MESSAGE(!error,error.message());
  144. io_service.reset();
  145.  
  146. }
  147.  
  148. // ftp
  149. {
  150. tcp::resolver::query query("reiot.cafe24.com","ftp");
  151. resolver.async_resolve(query,AsyncResolveHandler("123.214.172.49",21));
  152. BOOST_CHECK_EQUAL(io_service.run_one(error),1);
  153. BOOST_CHECK_MESSAGE(!error,error.message());
  154. io_service.reset();
  155. }
  156.  
  157. // telnet
  158. {
  159. tcp::resolver::query query("reiot.cafe24.com","telnet");
  160. resolver.async_resolve(query,AsyncResolveHandler("123.214.172.49",23));
  161. BOOST_CHECK_EQUAL(io_service.run_one(error),1);
  162. BOOST_CHECK_MESSAGE(!error,error.message());
  163. io_service.reset();
  164. }
  165.  
  166. // unknown host
  167. {
  168. tcp::resolver::query query("reiot1.com","");
  169. resolver.async_resolve(query,AsyncResolveHandler(boost::asio::error::host_not_found));
  170. BOOST_CHECK_EQUAL(io_service.run_one(error),1);
  171. BOOST_CHECK_MESSAGE(!error,error.message());
  172. io_service.reset();
  173. }
  174.  
  175. // unknown service
  176. {
  177. tcp::resolver::query query("reiot.cafe24.com","test");
  178. resolver.async_resolve(query,AsyncResolveHandler(boost::asio::error::service_not_found));
  179. BOOST_CHECK_EQUAL(io_service.run_one(error),1);
  180. BOOST_CHECK_MESSAGE(!error,error.message());
  181. io_service.reset();
  182. }
  183. }
Add Comment
Please, Sign In to add comment