#!/usr/bin/env perl -w # Check that the module's SRV ordering is indeed random. use strict; use Test; BEGIN { plan tests => 2 } use Jabber::Lite; ok(1); my $jobj = new Jabber::Lite; srand(time); # Under the hood poking around. @{$jobj->{'_resolved'}{'testsrv.example.com'}{'srv'}{'1'}} = ( "0 1234 testA.example.com.", "0 1234 testB.example.com.", "0 1234 testC.example.com.", "0 1234 testD.example.com.", "0 1234 testE.example.com.", "0 1234 testF.example.com.", "60 1234 testG.example.com.", "50 1234 testH.example.com.", ); @{$jobj->{'_resolved'}{'testsrv.example.com'}{'srv'}{'10'}} = ( "0 1234 testI.example.com.", ); @{$jobj->{'_resolved'}{'testA.example.com.'}{'address'}} = ( "1.2.3.1" ); @{$jobj->{'_resolved'}{'testB.example.com.'}{'address'}} = ( "1.2.3.2" ); @{$jobj->{'_resolved'}{'testC.example.com.'}{'address'}} = ( "1.2.3.3" ); @{$jobj->{'_resolved'}{'testD.example.com.'}{'address'}} = ( "1.2.3.4", "4.3.2.1" ); @{$jobj->{'_resolved'}{'testE.example.com.'}{'address'}} = ( "1.2.3.5" ); @{$jobj->{'_resolved'}{'testF.example.com.'}{'address'}} = ( "1.2.3.6" ); @{$jobj->{'_resolved'}{'testG.example.com.'}{'address'}} = ( "1.2.3.7" ); @{$jobj->{'_resolved'}{'testH.example.com.'}{'address'}} = ( "1.2.3.8" ); @{$jobj->{'_resolved'}{'testI.example.com.'}{'address'}} = ( "1.2.3.9" ); my $loop = 0; my %seenstrings = (); while( $loop < 50 ){ $loop++; my @list = $jobj->resolved(); my $str = join( ":", @list ); $seenstrings{"$str"}++; print "# Try #$loop returned $str\n"; } # $seencount should be 2 or more. my $seencount = 0; foreach my $seenkey( keys %seenstrings ){ $seencount++; } if( $seencount > 1 ){ print "# ->resolved returned $seencount different strings, expecting more than 1\n"; ok(1); }else{ print "# Multiple calls to ->resolved always returned the same string.\n"; print "# rand() appears to be broken?\n"; ok(0); } exit; __END__