Net-Hesiod
view release on metacpan or search on metacpan
t/make_testdata.pl view on Meta::CPAN
my $domain=get_answer_with_default("Enter HESIOD domain [$tmp]: ",$tmp);
my $bindsuff="ns.$domain";
$bindsuff=get_answer_with_default("Enter HESIOD bind suffix [$bindsuff]: ",
$bindsuff);
print <<EOF;
We now need a valid hesiod query and answer. Will ask for a name and a type
to produce a query as in
hesinfo \$name \$type
EOF
my $name=get_answer_with_default("Enter name for Hesiod query:","");
my $type=get_answer_with_default("Enter type for Hesiod query:","");
my $res = eval { `hesinfo $name $type`; };
my @res = split /\n/, $res;
print "Based on hesinfo, we get the result of the query to be:\n";
print_array(@res);
my @resolve_answer;
$tmp=get_answer_with_default("Is this correct [y]: ","y");
if ( $tmp =~ /^[yY]/ )
{ @resolve_answer=@res;
} else
{ print "Enter the correct query result followed by a blank line.\n";
@resolve_answer=read_array()
}
my $query_answer = join ',' , @resolve_answer;
my @query_answer = split /,/ , $query_answer;
print "\nFor testing purposes, we also want strings which do not match any Hesiod names or queries\n";
my $bogusname=get_answer_with_default("Enter a bogus query name [xxxxxx]: ",
"xxxxxx");
my $bogustype=get_answer_with_default("Enter a bogus query type [xxxxxx]: ",
"xxxxxx");
print "We also need a valid username for getpwnam and getmailhost checks:\n";
$tmp=eval {`whoami`};
chop $tmp;
my $username=get_answer_with_default("Enter a real username [$tmp]: ",$tmp);
print "We need the mail service type, mail host, and mailuser for that user\n";
my $mailserv=get_answer_with_default(
"Enter the mail service for user $username [POP]: ", "POP");
my $mailhost=get_answer_with_default(
"Enter the mail domain for user $username [$domain]: ", $domain);
my $mailuser=get_answer_with_default(
"Enter the mail user for user $username [$username]: ", $username);
print "\nFor testing, we also want an invalid username and uid.\n";
my $tmp2;
my $tmp3;
foreach $tmp3 ( "xxxxxx", "yyyyyy", "zzzzzz", "xxxyyy", "xxxzzz", "yyyzzz" )
{ if ( $tmp2 = getpwnam $tmp3 ) {next; }
$tmp=$tmp3;
last;
}
my $bogususer=get_answer_with_default("Enter a bogus username [$tmp]: ",$tmp);
foreach $tmp3 ( 64001, 65001, 63099, 59999, 58999, "" )
{ if ( $tmp2 = getpwuid $tmp3 ) {next; }
$tmp=$tmp3;
last;
}
my $bogusuid=get_answer_with_default("Enter a bogus uid [$tmp]: ",$tmp);
print "\nTo test getservbyname, we need a service and protocol.\n";
my $service=get_answer_with_default("Enter a service name [smtp]: ","smtp");
my $proto=get_answer_with_default("Enter a protocol name [tcp]: ","tcp");
print "We also need the result of looking it up\n";
my @servres = getservbyname($service,$proto);
$tmp=$servres[0];
my $resservice=get_answer_with_default("Enter name from lookup [$tmp]: ",$tmp);
$tmp=$servres[1];
my $alias=get_answer_with_default("Enter aliases from lookup [$tmp]: ",$tmp);
$tmp=$servres[2];
my $port=get_answer_with_default("Enter port from lookup [$tmp]: ",$tmp);
$tmp=$servres[3];
my $resproto=get_answer_with_default("Enter proto from lookup [$tmp]: ",$tmp);
print "Finally, we need a bogus service name and protocol\n";
my $bogusserv=get_answer_with_default("Enter bogus service [xxxxxx]: ",
"xxxxxx");
my $bogusproto=get_answer_with_default(
"Enter bogus protocol [carrier pigeon]: ", "carrier pigeon");
print FILE <<EOF;
#Domain should be your HESIOD domain name (no .ns. ) while \$bindsuff should
#be ns.\$domain
\$domain="$domain";
\$bindsuff="$bindsuff";
#Name and type should be a valid hesiod query. Preferably should return
#multiple records with \$mydelim as delimiter to fully test stuff
#\@resolve_answer should be result of the query, one element per DNS record
\$name="$name";
\$type="$type";
\@resolve_answer =qw(@resolve_answer);
\$query_answer = "$query_answer";
\@query_answer = qw(@query_answer);
#These two shold be invalid hesiod name and type, make sure we handle bad
#queries or empty queries gracefully
\$bogusname="$bogusname";
\$bogustype="$bogustype";
#The following should define a valid username
\$username="$username";
#The result of mailhost lookup on the above username
\@poresult=qw($mailserv $mailhost $mailuser );
#We also want an invalid username and uid to check handle those cases
\$bogususer="$bogususer";
\$bogusuid="$bogusuid";
#The following should define a valid service, proto, and what getservbyname
#should return
\$service="$service";
\$proto="$proto";
\@result=qw($resservice $alias $port $resproto );
( run in 2.597 seconds using v1.01-cache-2.11-cpan-f56aa216473 )