perfsonar-dev - r1620 - trunk/perfsonar/contrib/benchmarking/ls
Subject: perfsonar development work
List archive
- From:
- To:
- Subject: r1620 - trunk/perfsonar/contrib/benchmarking/ls
- Date: Thu, 7 Sep 2006 13:46:31 -0400
Author: boote
Date: 2006-09-07 13:46:30 -0400 (Thu, 07 Sep 2006)
New Revision: 1620
Modified:
trunk/perfsonar/contrib/benchmarking/ls/generateDB.pl
Log:
Added eol-style and execute properties.
Some cleanup that did not change functionality at all.
Adding options:
-I : specify exact number of interfaces per service. (-i indicates an
"average" number of interfaces to use per service in the file.)
-d : specify the dictionary file for hostnames (defaults to
/usr/share/dict/words)
Modified: trunk/perfsonar/contrib/benchmarking/ls/generateDB.pl
===================================================================
--- trunk/perfsonar/contrib/benchmarking/ls/generateDB.pl 2006-09-07
14:43:32 UTC (rev 1619)
+++ trunk/perfsonar/contrib/benchmarking/ls/generateDB.pl 2006-09-07
17:46:30 UTC (rev 1620)
@@ -46,17 +46,22 @@
# define command-line args
my %clopts = (
- NUMSERVICES => "s:", # number of services in 'store'
- NUMINTERFACES => "i:", # avg number of interfaces per/service
+ NUMSERVICES => "s:", # number of services in 'store'
+ NUMINTERFACES => "i:", # avg number of interfaces per/service
# (assuming rand() returns even distribution)
- TYPE => "t:", # type, valid types are message or store
+ EXACTINTERFACES => "I:", # Exact number of interfaces per service
+ # (over-rides -i option)
+ TYPE => "t:", # type, valid types are message or store
+ DICT => "d:", # Specify dictionary for random hostnames
);
# Provide defaults
my %defaults = (
NUMSERVICES => 1,
NUMINTERFACES => 100,
+ EXACTINTERFACES => 0,
TYPE => "message",
+ DICT => '/usr/share/dict/words',
);
# reverse mapping of command-line hash
@@ -87,12 +92,20 @@
# All interfaces allocated under same class B as service
my $max_inter = $max_serv/2;
+if($defaults{'EXACTINTERFACES'}){
+ $defaults{'NUMINTERFACES'} = $defaults{'EXACTINTERFACES'}
+}
if($defaults{'NUMINTERFACES'} > $max_inter){
die "$0: Current IP algorithm only supports max avg of $max_inter
interfaces";
}
#Check type
-if(($defaults{'TYPE'} ne "message") && ($defaults{'TYPE'} ne "store")){
+my $beginenvelope;
+my $endenvelope;
+for($defaults{'TYPE'}) {
+ $endenvelope = $_;
+ /^message$/ and $beginenvelope='message type="LSRegisterRequest"',
last;
+ /^store$/ and $beginenvelope='store type="LSStore"', last;
die "$0: Type must be message or store";
}
@@ -173,27 +186,25 @@
}
}
-# TODO: May need to create a command-line arg for the words path...
-my $wl = new Data::Random::WordList( wordlist => '/usr/share/dict/words');
+# open dictionary
+my $wl = new Data::Random::WordList( wordlist => $defaults{'DICT'});
+
+# fetch random hostnames for service
my @hnames = $wl->get_words($defaults{'NUMSERVICES'});
if($defaults{'TYPE'} eq "store"){
-print << 'HEADER';
-<?xml version="1.0" encoding="UTF-8"?>
-<nmwg:store xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/"
xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
xmlns:psservice="http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/"
xmlns:perfsonar="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/"
type="LSStore">
-HEADER
-} else {
-print << 'HEADER';
-<nmwg:message type="LSRegisterRequest"
- id="registration-message"
-
xmlns:perfsonar="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
- xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
-
xmlns:psservice="http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/"
- xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/"
-
xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/">
-HEADER
+ print '<?xml version="1.0" encoding="UTF-8"?>\n';
}
+print << "HEADER";
+<nmwg:$beginenvelope
+ xmlns:nmwg="http://ggf.org/ns/nmwg/base/2.0/"
+ xmlns:perfsonar="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"
+ xmlns:psservice="http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/"
+ xmlns:nmwgt="http://ggf.org/ns/nmwg/topology/2.0/"
+ xmlns:netutil="http://ggf.org/ns/nmwg/characteristic/utilization/2.0/">
+HEADER
+
my $servi; # service index
for($servi = 0; $servi < $defaults{'NUMSERVICES'}; $servi++){
my @classB = uniqueserv;
@@ -222,7 +233,8 @@
my %uintr_ip;
undef %uintr_ip;
- my $nintr = int(rand($defaults{'NUMINTERFACES'} * 2));
+ my $nintr = $defaults{'EXACTINTERFACES'} ||
+ int(rand($defaults{'NUMINTERFACES'} * 2));
my @inames = $wl->get_words($nintr);
my $tstamp = time;
@@ -271,14 +283,8 @@
}
}
-if($defaults{'TYPE'} eq "store"){
-print << 'FOOTER';
-</nmwg:store>
+print << "FOOTER";
+</nmwg:$endenvelope>
FOOTER
-} else {
-print << 'FOOTER';
-</nmwg:message>
-FOOTER
-}
-exit 0;
\ No newline at end of file
+exit 0;
Property changes on: trunk/perfsonar/contrib/benchmarking/ls/generateDB.pl
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:eol-style
+ native
- r1620 - trunk/perfsonar/contrib/benchmarking/ls, svnlog, 09/07/2006
Archive powered by MHonArc 2.6.16.