Tests started on Fri Apr 18 08:02:34 AM PDT 2025 and finished on Fri Apr 18 08:03:15 AM PDT 2025
Start running libaddr tests v1.0.37 on Fri Apr 18 08:02:56 AM PDT 2025 libaddr v1.0.37 [1488069]:unittest: seed is 1744988576 source directory: "/home/snapwebsites/snapcpp/contrib/libaddr" binary directory: "/home/snapwebsites/snapcpp/BUILD/Debug/contrib/libaddr/coverage/BUILD" dist directory: "/home/snapwebsites/snapcpp/BUILD/Debug/dist" temporary directory: "/home/snapwebsites/snapcpp/BUILD/Debug/contrib/libaddr/tmp" Randomness seeded to: 3458982942 SECTION: version: verify runtime vs compile time versions SECTION: iface::interfaces: verify list SECTION: ipv4::invalid_input: set IPv4 with an invalid family SECTION: ipv4::addr_parser(): invalid allow flags (too small) SECTION: ipv4::addr_parser(): invalid allow flags (too large) SECTION: ipv4::addr_parser(): bad address SECTION: ipv4::addr_parser(): required address SECTION: ipv4::addr_parser(): required port SECTION: ipv4::addr_parser(): port not allowed SECTION: ipv4::addr_parser(): invalid port SECTION: ipv4::addr_parser(): really large numbers (over 1000) SECTION: ipv4::addr_parser(): ipv4 mask is limited between 0 and 32 SECTION: ipv4::addr_parser(): ipv4 mask cannot use name SECTION: ipv4::addr_parser(): ipv4 mask mismatch (mask uses ipv6) SECTION: ipv4::addr_parser(): ipv4 mask mismatch (mask uses ipv6 without [...]) SECTION: ipv4::addr_parser(): invalid names SECTION: ipv4::addr_parser(): invalid numbers SECTION: ipv4::addr: by default (all zeroes) IP is not an IPv4 SECTION: ipv4::addr: default network type (:: and 0.0.0.0) SECTION: ipv4::addr: IPv6 ANY SECTION: ipv4::addr: IPv4 or IPv6 string SECTION: ipv4::addr: interface determination SECTION: ipv4::addr: default name/service/port/protocol SECTION: ipv4::addr: compare with self SECTION: ipv4::addr: compare with another 0.0.0.0 SECTION: ipv4::addr: compare with IPv4 127.0.0.1 SECTION: ipv4::addr: set_ipv4() / get_ipv4() SECTION: ipv4::addr: set_ipv4() / to_ipv4_string() SECTION: ipv4::addr: name of various IPs SECTION: ipv4::addr: verify basics SECTION: ipv4::addr: verify default address SECTION: ipv4::addr: verify default mask SECTION: ipv4::addr: verify default allow flags SECTION: ipv4::addr: verify contradictory flags SECTION: ipv4::addr: default address SECTION: ipv4::addr: address, no port allowed SECTION: ipv4::addr: 3 IPs separated by commas SECTION: ipv4::addr: 3 IPs separated by spaces SECTION: ipv4::addr: 3 IPs separated by commas and/or spaces SECTION: ipv4::addr: 3 IPs with hash (#) comments SECTION: ipv4::addr: 3 IPs with semicolon (;) comments SECTION: ipv4::addr: 3 IPs with hash (#) and semicolon (;) comments SECTION: ipv4::addr: simple numeric IPv4 SECTION: ipv4::addr: invalid domain name address when we only accept numeric IPs SECTION: ipv4::addr: invalid port: service name not allowed SECTION: ipv4::addr: IP as hostname SECTION: ipv4::addr: set interface SECTION: ipv4::addr: verify port names SECTION: ipv4::addr: verify protocol names SECTION: ipv4::addr: verify port SECTION: ipv4::addr: default address with various port SECTION: ipv4::addr: address with default port SECTION: ipv4::addr: mask allowed, but no mask SECTION: ipv4::addr: empty mask SECTION: ipv4::addr: one number masks SECTION: ipv4::addr: address like mask SECTION: ipv4::addr: address like mask when not allowed SECTION: ipv4::addr: address like default mask SECTION: ipv4::addr: address like mask with a default SECTION: ipv4::addr: address like default mask SECTION: ipv4::addr: two addresses and a mask for a match / no match SECTION: ipv4::addr: default protocol SECTION: ipv4::addr: set_protocol() SECTION: ipv4::addr: verify default SECTION: ipv4::addr: test 3 allowed protocols SECTION: ipv4::addr: verify clearing works SECTION: ipv4::addr: get address with all protocols SECTION: ipv4::addr: any (0.0.0.0) SECTION: ipv4::addr: private address 10.x.x.x/8 SECTION: ipv4::addr: private address 172.16.x.x/12 SECTION: ipv4::addr: private address 192.168.x.x/16 SECTION: ipv4::addr: private address 100.66.x.x/10 SECTION: ipv4::addr: private address 169.254.x.x/16 SECTION: ipv4::addr: private address 224.x.x.x/4 SECTION: ipv4::addr: private address 127.x.x.x/8 SECTION: ipv4::addr: invalid socket SECTION: ipv4::addr: non-opened file descriptor SECTION: ipv4::addr: unknown socket type SECTION: ipv4::addr/addr_parser: create a server (bind), but do not test it (yet)... SECTION: ipv4::addr/addr_parser: connect() with TCP to 127.0.0.1 SECTION: ipv4::addr/addr_parser: connect() with UDP to 127.0.0.1:53 which fails SECTION: ipv4::addr/addr_parser: bind() with UDP to 127.0.0.1:(as a "client") which works SECTION: ipv4::string_to_addr: empty address without defaults SECTION: ipv4::string_to_addr: explicit defaults SECTION: ipv4::string_to_addr: defaults SECTION: ipv4::string_to_addr: addr & default addr SECTION: ipv4::string_to_addr: no addr, expect default addr SECTION: ipv4::string_to_addr: addr and port, with a default port SECTION: ipv4::string_to_addr: addr without port, with a default port SECTION: ipv4::string_to_addr: addr without port but protocol SECTION: ipv4::string_to_addr: addr with port and protocol SECTION: ipv4::string_to_addr: addr with port and protocol but no mask, albeit allowed SECTION: ipv4::string_to_addr: addr with port and protocol and mask, albeit allowed SECTION: ipv4::string_to_addr: addr with port and protocol and mask, albeit allowed SECTION: ipv4::string_to_addr: addr with port and invalid protocol so we get an exception SECTION: ipv4::string_to_addr: definitely not a valid address SECTION: ipv4::udp: sendto() and recvfrom() SECTION: ipv4::udp: sendto() with wrong protocol SECTION: ipv4::udp: recvfrom() with wrong protocol SECTION: ipv6::invalid_input: set IPv6 with an invalid family SECTION: ipv6::invalid_input: bad address SECTION: ipv6::invalid_input: missing ']' SECTION: ipv6::invalid_input: required address SECTION: ipv6::invalid_input: required port SECTION: ipv6::invalid_input: port not allowed SECTION: ipv6::invalid_input: really large numbers (over 1000) SECTION: ipv6::invalid_input: ipv6 mask is limited between 0 and 128 SECTION: ipv6::invalid_input: ipv6 mask cannot use name SECTION: ipv6::invalid_input: ipv6 mask must be between '[...]' SECTION: ipv6::invalid_input: ipv6 mask missing the ']' SECTION: ipv6::invalid_input: ipv6 mask with an ipv4 in the '[...]' SECTION: ipv6::invalid_input: verify default address SECTION: ipv6::invalid_input: verify default mask SECTION: ipv6::address: default is 128 bit set to zero SECTION: ipv6::address: parse the default IPv6 address "[::]" and "::" SECTION: ipv6::address: verify last IPv6 address SECTION: ipv6::address: set_ipv6() / get_ipv6() SECTION: ipv6::address: set_ipv6() check to_ipv6_string() --- testing locale "en_US.utf8" --- testing locale "fr_FR.utf8" --- testing locale "ja_JP.utf8" --- testing locale "zh_SG.utf8" SECTION: ipv6::address: name of various IPs SECTION: ipv6::address: verify basics SECTION: ipv6::address: default address SECTION: ipv6::address: address, no port allowed SECTION: ipv6::address: simple numeric IPv6 SECTION: ipv6::address: invalid IPv6 domain name address when we only accept numeric IPs SECTION: ipv6::address: invalid IPv6 domain name address when we only accept numeric IPs SECTION: ipv6::address: parse and no sort SECTION: ipv6::address: parse and ignore empty SECTION: ipv6::address: parse and full sort SECTION: ipv6::address: parse and put IPv6 addresses first SECTION: ipv6::address: parse and put IPv4 addresses first SECTION: ipv6::address: parse, sort, and merge SECTION: ipv6::address: parse, sort, merge, and put IPv4 first SECTION: ipv6::address: parse, sort, merge, and put IPv6 first SECTION: ipv6::address: parse, sort, merge, and put IPv6 first SECTION: ipv6::address: one side ranges SECTION: ipv6::address: test invalid sort (IPv4 vs IPv6) SECTION: ipv6::address: parse & sort multi-address separated by '\n' with '#' comments SECTION: ipv6::address: parse & sort multi-address separated by '\n' with ';' comments SECTION: ipv6::address: parse invalid range (unknown domain name) SECTION: ipv6::addr: verify port names SECTION: ipv6::addr: verify protocol names SECTION: ipv6::ports: default port SECTION: ipv6::ports: named ports SECTION: ipv6::ports: set_port() SECTION: ipv6::ports: known ports to test get_service() SECTION: ipv6::ports: verify port by parser SECTION: ipv6::port: default address with various port SECTION: ipv6::port: port when not allowed check as IPv6 SECTION: ipv6::port: space before port SECTION: ipv6::masks: default mask SECTION: ipv6::masks: set_mask_count() SECTION: ipv6::masks: set_mask() SECTION: ipv6::masks: set_mask() SECTION: ipv6::masks: mask allowed, but no mask SECTION: ipv6::masks: empty mask SECTION: ipv6::masks: empty mask including the '[]' SECTION: ipv6::masks: empty mask '[]' with address mask not allowed SECTION: ipv6::masks: one number masks SECTION: ipv6::masks: address like mask SECTION: ipv6::masks: address like default mask SECTION: ipv6::masks: address like mask with a default SECTION: ipv6::masks: no address, but one IPv6 number masks SECTION: ipv6::masks: no address, but one IPv6 masks SECTION: ipv6::network_type: any (::) SECTION: ipv6::network_type: private address fd00::/8 SECTION: ipv6::network_type: private address fe80::/10 SECTION: ipv6::network_type: private address ff02::/16 SECTION: ipv6::network_type: private address ff00::/8 SECTION: ipv6::network_type: private address ffx1::/8 SECTION: ipv6::network_type: private address ::1 SECTION: ipv6::network_type: documentation (2001:db8:: and 3fff:0XXX::) SECTION: ipv6::network: create a server, but do not test it (yet)... SECTION: ipv6::network: connect with TCP to [::1] SECTION: ipv6::network: connect with UDP to [::1] SECTION: ipv6::udp: sendto() and recvfrom() SECTION: ipv6::udp: sendto() with wrong protocol SECTION: ipv6::udp: recvfrom() with wrong protocol SECTION: addr_range: verify defaults SECTION: addr_range: test normal range (from <= to) SECTION: addr_range: test empty range (from > to) SECTION: addr_range: compare "from" ranges against each other SECTION: addr_range: compare "to" ranges against each other SECTION: addr_range: compare "from" against "to" ranges SECTION: addr_range: compare full ranges ("from" and "to" defined) SECTION: addr_range: compare mixed IPs SECTION: addr_range: create range from CIDR SECTION: addr_range: intersection of two ranges that overlap SECTION: addr_range: intersection of two ranges that do not overlap SECTION: addr_range: union of two ranges that overlap SECTION: addr_range: union of two ranges that touch SECTION: addr_range: union two ranges that do not overlap SECTION: addr_range: to_cidr() without ranges SECTION: addr_range: valid network range /16 SECTION: addr_range: valid network range /24 SECTION: addr_range: valid network range but not for a cidr SECTION: addr_range: optimize IPv4 addresses SECTION: routes: verify list SECTION: routes: verify a search without a default route SECTION: addr_unix::unnamed: addr_unix() defaults (a.k.a. unnamed address) SECTION: addr_unix::unnamed: addr_unix() with an unnamed address SECTION: addr_unix::unnamed: addr_unix() with an unnamed string SECTION: addr_unix::unnamed: addr_unix() with a forced unnamed URI SECTION: addr_unix::unnamed: addr_unix() with an unnamed which we re-collect from socket SECTION: addr_unix::file: addr_unix() with a relative file name SECTION: addr_unix::file: addr_unix() with a relative file name; string constructor SECTION: addr_unix::file: addr_unix() with a relative file name using set_file() SECTION: addr_unix::file: addr_unix() with a full file name SECTION: addr_unix::file: addr_unix() with a long file name SECTION: addr_unix::file: addr_unix() verify that file gets unlink()'ed SECTION: addr_unix::file: addr_unix() with a file name which we re-collect from socket SECTION: addr_unix::abstract: addr_unix() with a relative abstract name SECTION: addr_unix::abstract: addr_unix() with a relative abstract name with string constructor SECTION: addr_unix::abstract: addr_unix() with an abstract name using set_abstract() SECTION: addr_unix::abstract: addr_unix() with a full abstract name SECTION: addr_unix::abstract: addr_unix() with a long abstract name SECTION: addr_unix::abstract: addr_unix() with an abstract name which we re-collect from socket SECTION: addr_unix::compare: two addr_unix() to compare with ==, !=, <, <=, >, >= SECTION: addr_unix::compare: two sockaddr_un to compare with ==, !=, <, <=, >, >= SECTION: addr_unix::mix: addr_unix() with a relative file name then unnamed SECTION: addr_unix::mix: addr_unix() with a full abstract name then unnamed SECTION: addr_unix::mix: addr_unix() with various set_uri() SECTION: addr_unix::owner: addr_unix() check group SECTION: addr_unix::owner: addr_unix() check mode SECTION: addr_unix::invalid: addr_unix() with an invalid address family SECTION: addr_unix::invalid: addr_unix() with an unnamed string but marked abstract SECTION: addr_unix::invalid: addr_unix() with a URI but a missing path SECTION: addr_unix::invalid: addr_unix() with a URI but a missing scheme SECTION: addr_unix::invalid: addr_unix() with a URI but an invalid scheme SECTION: addr_unix::invalid: addr_unix() with too long a file name SECTION: addr_unix::invalid: addr_unix() with too long an abstract name SECTION: addr_unix::invalid: addr_unix() with a long filename (missing '\0') SECTION: addr_unix::invalid: addr_unix() with a long abstract name (missing '\0') SECTION: addr_unix::invalid: addr_unix() with a long abstract name (missing '\0') SECTION: addr_unix::invalid: addr_unix() with invalid characters (controls) SECTION: addr_unix::invalid: addr_unix() with invalid UTF-8 characters SECTION: addr_unix::invalid: get addr_unix() of socket set to -1 SECTION: addr_unix::invalid: get addr_unix() of socket set to UDP SECTION: validator: default validation --- parser errors: [Invalid address in "10.0.0.10:5434/24" error -2 -- Name or service not known ] SECTION: validator: allow all SECTION: validator: allow all (default is IPv6 here) SECTION: validator: prevent defaults --- parser errors: [Required port is missing. ] --- parser errors: [Required address is missing. ] --- parser errors: [Required port is missing. ] SECTION: validator: default improperly uses a range SECTION: validator: allow hash comments only --- parser errors: [Unknown address in "172.17.0.10 ; however, this one fails" (no DNS lookup was allowed). ] --- parser errors: [invalid port in "5434 ; however, this one fails" (no service name lookup allowed). ] SECTION: validator: invalid mask (too many values) SECTION: validator: invalid mask (undefined value) SECTION: validator: port expects one value SECTION: validator: port undefined value SECTION: validator: allow semi-colon comments only --- parser errors: [Unknown address in "172.17.0.10 # however, this one fails" (no DNS lookup was allowed). ] --- parser errors: [invalid port in "5434 # however, this one fails" (no service name lookup allowed). ] SECTION: validator: explicit no comments --- parser errors: [Unknown address in "192.168.1.1 ; this should fail" (no DNS lookup was allowed). ] --- parser errors: [invalid port in "401 ; this should fail" (no service name lookup allowed). ] --- parser errors: [Unknown address in "172.17.0.10 # this should fail" (no DNS lookup was allowed). ] --- parser errors: [invalid port in "5434 # this should fail" (no service name lookup allowed). ] SECTION: validator: explicit comments (i.e. =yes) SECTION: validator: explicit all comments supported (i.e. =all) SECTION: validator: invalid comment=... value --- parser errors: [invalid port in "401 ; this fails" (no service name lookup allowed). ] --- parser errors: [invalid port in "5434 # this fails" (no service name lookup allowed). ] SECTION: validator: invalid comment=... with multiple values --- parser errors: [invalid port in "401 ; this fails" (no service name lookup allowed). ] --- parser errors: [invalid port in "5434 # this fails" (no service name lookup allowed). ] SECTION: validator: allow "nothing" SECTION: validator: unknown option SECTION: validator: address=no prevents any other option SECTION: validator: address= SECTION: validator: address= SECTION: validator: = =============================================================================== All tests passed (2370292 assertions in 29 test cases) Finished running libaddr tests v1.0.37 on Fri Apr 18 08:03:08 AM PDT 2025