5 #define EXPECTED_NONINIT ARES_ENOTINITIALIZED
7 #define EXPECTED_NONINIT ARES_SUCCESS
21 TEST(LibraryInit, UnexpectedCleanup) {
27 TEST(LibraryInit, DISABLED_InvalidParam) {
34 TEST(LibraryInit, Nested) {
46 TEST(LibraryInit, BasicChannelInit) {
70 opts.socket_send_buffer_size = 514;
72 opts.socket_receive_buffer_size = 514;
77 opts.servers = (
struct in_addr *)malloc(
opts.nservers *
sizeof(
struct in_addr));
78 opts.servers[0].s_addr = htonl(0x01020304);
79 opts.servers[1].s_addr = htonl(0x02030405);
82 opts.domains = (
char **)malloc(
opts.ndomains *
sizeof(
char *));
89 opts.resolvconf_path =
strdup(
"/etc/resolv.conf");
127 for (
int ii = 1; ii <= 25; ii++) {
156 opts.socket_send_buffer_size = 514;
158 opts.socket_receive_buffer_size = 514;
163 opts.servers = (
struct in_addr *)malloc(
opts.nservers *
sizeof(
struct in_addr));
164 opts.servers[0].s_addr = htonl(0x01020304);
165 opts.servers[1].s_addr = htonl(0x02030405);
168 opts.domains = (
char **)malloc(
opts.ndomains *
sizeof(
char *));
175 opts.resolvconf_path =
strdup(
"/etc/resolv.conf");
179 for (
int ii = 1; ii <= 8; ii++) {
202 for (
int ii = 1; ii <= 18; ii++) {
211 for (
int ii = 1; ii <= 6; ii++) {
212 memset(&opts2, 0,
sizeof(opts2));
239 EnvValue v1(
"LOCALDOMAIN",
"this.is.local");
240 EnvValue v2(
"RES_OPTIONS",
"options debug ndots:3 retry:3 rotate retrans:2");
247 EnvValue v1(
"LOCALDOMAIN",
"this.is.local");
248 EnvValue v2(
"RES_OPTIONS",
"options debug ndots:3 retry:3 rotate retrans:2");
249 for (
int ii = 1; ii <= 10; ii++) {
265 byte addr6[16] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
266 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10};
287 for (
int ii = 1; ii <= 3; ii++) {
301 #ifdef HAVE_CONTAINER
328 NameContentList filelist = {
329 {
"/etc/resolv.conf",
"nameserver 1.2.3.4\n"
330 "sortlist 1.2.3.4/16 2.3.4.5\n"
331 "search first.com second.com\n"},
332 {
"/etc/hosts",
"3.4.5.6 ahostname.com\n"},
333 {
"/etc/nsswitch.conf",
"hosts: files\n"}};
334 CONTAINED_TEST_F(LibraryTest, ContainerChannelInit,
335 "myhostname",
"mydomainname.org", filelist) {
339 std::vector<std::string> expected = {
"1.2.3.4"};
354 std::stringstream ss;
356 EXPECT_EQ(
"{'ahostname.com' aliases=[] addrs=[3.4.5.6]}", ss.str());
362 CONTAINED_TEST_F(LibraryTest, ContainerSortlistOptionInit,
363 "myhostname",
"mydomainname.org", filelist) {
382 NameContentList fullresolv = {
383 {
"/etc/resolv.conf",
" nameserver 1.2.3.4 \n"
384 "search first.com second.com\n"
386 "options debug ndots:5\n"
387 "sortlist 1.2.3.4/16 2.3.4.5\n"}};
388 CONTAINED_TEST_F(LibraryTest, ContainerFullResolvInit,
389 "myhostname",
"mydomainname.org", fullresolv) {
405 NameContentList myresolvconf = {
406 {
"/tmp/myresolv.cnf",
" nameserver 1.2.3.4 \n"
407 "search first.com second.com\n"
409 "options debug ndots:5\n"
410 "sortlist 1.2.3.4/16 2.3.4.5\n"}};
411 CONTAINED_TEST_F(LibraryTest, ContainerMyResolvConfInit,
412 "myhostname",
"mydomain.org", myresolvconf) {
413 char filename[] =
"/tmp/myresolv.cnf";
422 options.resolvconf_path = NULL;
433 NameContentList hostconf = {
434 {
"/etc/resolv.conf",
"nameserver 1.2.3.4\n"
436 "search first.com second.com\n"},
437 {
"/etc/host.conf",
"order bind hosts\n"}};
438 CONTAINED_TEST_F(LibraryTest, ContainerHostConfInit,
439 "myhostname",
"mydomainname.org", hostconf) {
453 NameContentList svcconf = {
454 {
"/etc/resolv.conf",
"nameserver 1.2.3.4\n"
455 "search first.com second.com\n"},
456 {
"/etc/svc.conf",
"hosts= bind\n"}};
457 CONTAINED_TEST_F(LibraryTest, ContainerSvcConfInit,
458 "myhostname",
"mydomainname.org", svcconf) {
472 NameContentList malformedresolvconflookup = {
473 {
"/etc/resolv.conf",
"nameserver 1.2.3.4\n"
474 "lookup garbage\n"}};
475 CONTAINED_TEST_F(LibraryTest, ContainerMalformedResolvConfLookup,
476 "myhostname",
"mydomainname.org", malformedresolvconflookup) {
491 class MakeUnreadable {
495 chmod(filename_.c_str(), 0000);
497 ~MakeUnreadable() { chmod(filename_.c_str(), 0644); }
502 CONTAINED_TEST_F(LibraryTest, ContainerResolvConfNotReadable,
503 "myhostname",
"mydomainname.org", filelist) {
505 MakeUnreadable hide(
"/etc/resolv.conf");
510 CONTAINED_TEST_F(LibraryTest, ContainerNsswitchConfNotReadable,
511 "myhostname",
"mydomainname.org", filelist) {
514 MakeUnreadable hide(
"/etc/nsswitch.conf");
526 CONTAINED_TEST_F(LibraryTest, ContainerHostConfNotReadable,
527 "myhostname",
"mydomainname.org", hostconf) {
530 MakeUnreadable hide(
"/etc/host.conf");
535 CONTAINED_TEST_F(LibraryTest, ContainerSvcConfNotReadable,
536 "myhostname",
"mydomainname.org", svcconf) {
539 MakeUnreadable hide(
"/etc/svc.conf");
545 NameContentList rotateenv = {
546 {
"/etc/resolv.conf",
"nameserver 1.2.3.4\n"
547 "search first.com second.com\n"
548 "options rotate\n"}};
549 CONTAINED_TEST_F(LibraryTest, ContainerRotateInit,
550 "myhostname",
"mydomainname.org", rotateenv) {
564 CONTAINED_TEST_F(LibraryTest, ContainerRotateOverride,
565 "myhostname",
"mydomainname.org", rotateenv) {
582 NameContentList blacklistedIpv6 = {
583 {
"/etc/resolv.conf",
" nameserver 254.192.1.1\n"
584 " nameserver fec0::dead\n"
585 " nameserver ffc0::c001\n"
586 " domain first.com\n"},
587 {
"/etc/nsswitch.conf",
"hosts: files\n"}};
588 CONTAINED_TEST_F(LibraryTest, ContainerBlacklistedIpv6,
589 "myhostname",
"mydomainname.org", blacklistedIpv6) {
593 std::vector<std::string> expected = {
595 "ffc0:0000:0000:0000:0000:0000:0000:c001"
610 NameContentList multiresolv = {
611 {
"/etc/resolv.conf",
" nameserver 1::2 ; ;;\n"
612 " domain first.com\n"},
613 {
"/etc/nsswitch.conf",
"hosts: files\n"}};
614 CONTAINED_TEST_F(LibraryTest, ContainerMultiResolvInit,
615 "myhostname",
"mydomainname.org", multiresolv) {
619 std::vector<std::string> expected = {
"0001:0000:0000:0000:0000:0000:0000:0002"};
633 NameContentList systemdresolv = {
634 {
"/etc/resolv.conf",
"nameserver 1.2.3.4\n"
635 "domain first.com\n"},
636 {
"/etc/nsswitch.conf",
"hosts: junk resolve files\n"}};
637 CONTAINED_TEST_F(LibraryTest, ContainerSystemdResolvInit,
638 "myhostname",
"mydomainname.org", systemdresolv) {
652 NameContentList
empty = {};
653 CONTAINED_TEST_F(LibraryTest, ContainerEmptyInit,
654 "host.domain.org",
"domain.org",
empty) {
658 std::vector<std::string> expected = {
"127.0.0.1"};