/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
DQM/SiPixelMonitorClient/scripts/initialize
589 строк
19 KB
Giulio Eulisse
Snapshot of CMSSW_6_2_0_pre8.
26 июн 2013, 18:12
26 июн 2013, 18:12
214ab73
Код
Авторство
О чём код?
#!/usr/bin/env perl ################################################################################ # # initialize # ---------- # # Setup XDAQ filter farm applications for testing, and generate scripts to # control execution. # # 03/28/2007 Philipp Schieferdecker <schiefer@fnal.gov> ################################################################################ use File::Copy; my $mode = shift || die "usage: $0 mode => file/live/playback, stopped"; # welcome print "\n============================================================"; print "\ninitialize ..."; print "\n============================================================\n"; # hostname, default #my $hostname = $ENV{"HOST"}; chop(my $hostname = `hostname -f`); # set variables my $port = 41866; my $appname="evf::FUEventProcessor"; my $localid=50; my $libpath = getLibraryPath("EventFilter/Processor"); my $libname = "libEventFilterProcessor.so"; my $pwd = `pwd`; chomp $pwd; #`mkdir -p $pwd/PixelDQM`; #my $mode = $ARGV[0]; my $dqm_dir = $ENV{"CMSSW_BASE"}."/src/DQM/SiPixelMonitorClient/test"; my $dqm_int = $ENV{"CMSSW_BASE"}."/src/DQM/Integration/test"; my $dqm_common = $ENV{"CMSSW_RELEASE_BASE"}."/src/DQM/TrackerCommon/test"; `mkdir -p /tmp/PixelDQM`; my $dqm_wdir = "/tmp/PixelDQM"; my $cfg_file = "pixel_dqm_sourceclient-".$mode."_cfg.py"; print "cfg file name : $cfg_file\n"; # # interpret command line # #foreach $param (@ARGV) { # if ($hostname eq "fillme") { $hostname=$param; } # elsif ($param eq "-host") { $hostname="fillme"; } # # else { die ("Unknown parameter $param!\n"); } #} print "hostname = $hostname\n"; # # make directories # print "make directories ...\n"; `mkdir -p $dqm_wdir/log`; `mkdir -p $dqm_wdir/soap`; `mkdir -p $dqm_wdir/xml`; `mkdir -p $dqm_int/TkMap`; # # make cfg files # print "copy cfg files ...\n"; #copy("$dqm_int/$cfg_file", "$ENV{PWD}/.") unless -e "$ENV{PWD}/$cfg_file"; #copy("$dqm_dir/../scripts/Reference.root", "$ENV{PWD}/Reference.root") unless -e "$ENV{PWD}/Reference.root"; #system qq[perl], qq[-pi -e], qq[s/ sourceURL/ #sourceURL/], qq[$dqm_int/../python/test/inputsource_cfi.py]; #system qq[perl], qq[-pi -e], qq[s/%s:22100/%s:40867/], qq[$dqm_int/../python/test/inputsource_cfi.py]; #system qq[perl], qq[-pi -e], qq[s/lid=30' /lid=50' /], qq[$dqm_int/../python/test/inputsource_cfi.py]; my $dqm_python = $ENV{"CMSSW_BASE"}."/src/DQM/Integration/python/test"; my $input_url = qq[ sourceURL = cms.string('http://%s:40867/urn:xdaq-application:lid=50' %socket.gethostname()),]; system qq[perl], qq[-pi -e], qq[s! sourceURL.*!$input_url!], qq[$dqm_python/inputsource_cfi.py]; # # make XDAQ 'profile.xml' # print "make xdaq profile ...\n"; my @EXproperties = ("logUrl", "string","console", "logLevel","string","ERROR"); my @Pathproperties = ("documentRoot", "string",q|${XDAQ_DOCUMENT_ROOT}|, "aliasName", "string","temporary", "aliasPath","string",$dqm_wdir); my @XPproperties = ("settings", "string",q|${XDAQ_ROOT}/htdocs/xplore/xml/shortcuts.xml|, "republishInterval", "string",3600); my @STproperties = ("useDiscovery", "boolean","true", "publish", "string", "exception", "watchdog", "string", "PT5S"); my @XMasproperties = ("useDiscovery", "boolean","true", "autoConfigure", "boolean", "true", "autoConfSearchPath", "string", q|${XDAQ_SETUP_ROOT}/${XDAQ_ZONE}/sensor|); open (XML,">$dqm_wdir/xml/profile.xml") or die ("Can't open file: $!\n"); print XML makeXmlHeader(); print XML makeXmlProfileHeader(); print XML makeXmlAppHeader(0,"executive::Application",0,"executive","profile"); print XML makeXmlAppProperties("Executive",@EXproperties); print XML " </properties>\n"; print XML " </xp:Application>\n"; print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libexecutive.so"); print XML makeXmlAppHeader(0,"pt::http::PeerTransportHTTP",1); print XML makeXmlAppProperties("pt::http::PeerTransportHTTP",@Pathproperties); print XML " </properties>\n"; print XML " </xp:Application>\n"; print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libpthttp.so"); print XML makeXmlAppHeader(0,"pt::fifo::PeerTransportFifo",8); print XML " </xp:Application>\n"; print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libptfifo.so"); print XML makeXmlAppHeader(0,"xrelay::Application",4,"xrelay"); print XML " </xp:Application>\n"; print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libxrelay.so"); print XML makeXmlAppHeader(0,"hyperdaq::Application",3,"hyperdaq"); print XML " </xp:Application>\n"; print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libhyperdaq.so"); #print XML makeXmlAppHeader(0,"xplore::Application",9); #print XML makeXmlAppProperties("xplore::Application",@XPproperties); #print XML " </properties>\n"; #print XML " </xp:Application>\n"; #print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libslp.so"); #print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libxslp.so"); #print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libxploreutils.so"); #print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libxplore.so"); #print XML makeXmlAppHeader(0,"sentinel::Application",21,"sentinel","exception"); #print XML makeXmlAppProperties("Sentinel",@STproperties); #print XML " </properties>\n"; #print XML " </xp:Application>\n"; #print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libwsaddressing.so"); #print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libwseventing.so"); #print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libsentinelutils.so"); #print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libsentinel.so"); #print XML makeXmlAppHeader(0,"xmas::sensor::Application",10,"sensor","c2d05,service,init3"); #print XML makeXmlAppProperties("xmas",@XMasproperties); #print XML makeXmlAppPublish(); #print XML " </properties>\n"; #print XML " </xp:Application>\n"; #print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libxmasutils.so"); #print XML makeXmlAppTrailer(0,q|${XDAQ_ROOT}/lib|,"libxmassensor.so"); print XML makeXmlProfileTrailer(); # # make xdaq configuration file 'evf.xml' # print "make xdaq configuration ...\n"; my @properties = ("parameterSet", "string","file:$dqm_int/$cfg_file", "hasPrescaleService","boolean","false", "isRunNumberSetter","boolean","false", "hasSharedMemory","boolean","false"); open (XML,">$dqm_wdir/xml/evf.xml") or die ("Can't open file: $!\n"); print XML makeXmlHeader(); print XML makeXmlPartitionHeader(); print XML makeXmlComm(@apps); print XML makeXmlContextHeader("DQM",$hostname,$port); print XML makeXmlAppHeader(1,$appname,$localid); print XML makeXmlAppProperties($appname,@properties); print XML " </properties>\n"; print XML " </xc:Application>\n"; print XML makeXmlAppTrailer(1,$libpath,$libname); print XML makeXmlContextTrailer(); print XML makeXmlPartitionTrailer(); close (XML); # # make soap command xml files # print "make soap command files ...\n"; my @commands = ('Configure','Enable','Stop','Halt' ); foreach (@commands) { open(CMD,">$dqm_wdir/soap/$_".".xml") or die ("Can't open file: $!\n"); print CMD makeSoapCommand($hostname,$port,$localid,$_); close(CMD); } # # make control scripts # print "make control scripts ...\n"; # configure open (CTL,qq|>$dqm_wdir/configure|) or die ("Can't open file: $!\n"); print CTL "#!/usr/bin/perl\n\n"; print CTL makeCtlCommand("Configure",$appname,"DQM",$hostname,$port,0,"source"); close (CTL); `chmod +x $dqm_wdir/configure`; # enable open (CTL,qq|>$dqm_wdir/enable|) or die ("Can't open file: $!\n"); print CTL "#!/usr/bin/perl\n\n"; print CTL makeCtlCommand("Enable",$appname,"DQM",$hostname,$port,0,"source"); close (CTL); `chmod +x $dqm_wdir/enable`; # stop open (CTL,qq|>$dqm_wdir/stop|) or die ("Can't open file: $!\n"); print CTL "#!/usr/bin/perl\n\n"; print CTL makeCtlCommand("Stop",$appname,"DQM",$hostname,$port,5,"source"); close (CTL); `chmod +x $dqm_wdir/stop`; # halt open (CTL,qq|>$dqm_wdir/halt|) or die ("Can't open file: $!\n"); print CTL "#!/usr/bin/perl\n\n"; print CTL makeCtlCommand("Halt",$appname,"DQM",$hostname,$port,1,"source"); close (CTL); `chmod +x $dqm_wdir/halt`; # destroy open (CTL,qq|>$dqm_wdir/destroy|) or die ("Can't open file: $!\n"); print CTL makeCtlDestroy(); close (CTL); `chmod +x $dqm_wdir/destroy`; # # copy scripts and other auxiliary files # copy("$dqm_dir/.WebLib.js", "$dqm_wdir/WebLib.js"); copy("$dqm_dir/Online.html", "$dqm_wdir/."); copy("$dqm_dir/loader.html", "$dqm_wdir/."); copy("$dqm_dir/TrackerMapFrame.html", "$dqm_wdir/."); copy("$dqm_dir/TrackerMapME.html", "$dqm_wdir/."); copy("$dqm_dir/TrackerMapHeader.txt", "$dqm_wdir/."); copy("$dqm_dir/TrackerMapTrailer.txt", "$dqm_wdir/."); copy("$dqm_dir/TrackerMapPlot.html", "$dqm_wdir/."); copy("$dqm_dir/rightEmbedded.html", "$dqm_wdir/."); copy("$dqm_dir/embedded_svg.html", "$dqm_wdir/."); copy("$dqm_dir/svgmap.xml", "$dqm_wdir/."); $SERVED_DIR="http://$hostname:$port/temporary"; system qq[perl], qq[-pi -e], qq[s#SERVED_DIRECTORY_URL#$SERVED_DIR#], qq[$dqm_wdir/WebLib.js]; system qq[perl], qq[-pi -e], qq[s#40000#$port#], qq[$dqm_wdir/WebLib.js]; system qq[perl], qq[-pi -e], qq[s#lid=27#lid=$localid#], qq[$dqm_wdir/WebLib.js]; system qq[cp], qq[-r], qq[$dqm_dir/js_files], qq[$dqm_wdir/js_files]; system qq[cp], qq[-r], qq[$dqm_dir/css_files], qq[$dqm_wdir/css_files]; system qq[cp], qq[-r], qq[$dqm_dir/images], qq[$dqm_wdir/images]; system qq[perl], qq[-pi -e], qq[s#40000#$port#], qq[$dqm_wdir/js_files/IMGC.js]; system qq[perl], qq[-pi -e], qq[s#lid=27#lid=$localid#], qq[$dqm_wdir/js_files/IMGC.js]; system qq[perl], qq[-pi -e], qq[s#lid=27#lid=$localid#], qq[$dqm_wdir/js_files/TkMapFrame.js]; copy("$dqm_dir/js_files/.svgmap.js", "$dqm_wdir/js_files/svgmap.js"); system qq[perl], qq[-pi -e], qq[s#serverHost#$COLLECTORNAME#g], qq[$dqm_wdir/js_files/svgmap.js]; # # start processes # #print "\nstart xdaq.exe on $hostname:$port\n"; #`nice -n 15 xdaq.exe -h $hostname -p $port -e xml/profile.xml -c xml/evf.xml >& log/$hostname.$port.log &`; open OUTPUT, qq|>$dqm_wdir/start| or die($!); my $script=<<"EOS"; #!/bin/sh xdaq.exe -h $hostname -p $port -e $dqm_wdir/xml/profile.xml -c $dqm_wdir/xml/evf.xml EOS print OUTPUT $script; close OUTPUT; `chmod +x $dqm_wdir/start`; ################################################################################ ################################################################################ ## sub routines ################################################################################ ################################################################################ ################################################################################ sub getLibraryPath { my ($pkg) = (@_); my $cmssw_base = $ENV{"CMSSW_BASE"}; my $cmssw_release_base = $ENV{"CMSSW_RELEASE_BASE"}; my $result = "/lib/" . $ENV{"SCRAM_ARCH"}; if (-e "$cmssw_base/src/$pkg") { $result = $cmssw_base . $result; } else { $result = $cmssw_release_base . $result; } print "\n Result of Lib Path $result\n"; return $result; } ################################################################################ sub makeSoapCommand { my ($hostname,$port,$localid,$command) = @_; my $result=""; $result = $result . "<SOAP-ENV:Envelope\n"; $result = $result . " SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"\n"; $result = $result . " xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"\n"; $result = $result . " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"; $result = $result . " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n"; $result = $result . " xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\">\n\n"; $result = $result . "<SOAP-ENV:Header>\n"; $result = $result . " <xr:relay SOAP-ENV:actor=\"http://xdaq.web.cern.ch/xdaq/xsd/2004/XRelay-10\"\n"; $result = $result . " xmlns:xr=\"http://xdaq.web.cern.ch/xdaq/xsd/2004/XRelay-10\">\n"; $result = $result . " <xr:to url=\"http://$hostname:$port\" urn=\"urn:xdaq-application:lid=$localid\"/>\n"; $result = $result . "</xr:relay>\n"; $result = $result . "</SOAP-ENV:Header>\n\n"; $result = $result . "<SOAP-ENV:Body>\n"; $result = $result . " <xdaq:$command xmlns:xdaq=\"urn:xdaq-soap:3.0\"></xdaq:$command>\n"; $result = $result . "</SOAP-ENV:Body>\n\n"; $result = $result . "</SOAP-ENV:Envelope>\n"; return $result; } ################################################################################ ################################################################################ sub makeXmlHeader { my $result = ""; return "<?xml version='1.0'?>\n\n"; $result = $result . "<xc:Partition\n"; $result = $result . " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"; $result = $result . " xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n"; $result = $result . " xmlns:xc=\"http://xdaq.web.cern.ch/xdaq/xsd/2004/XMLConfiguration-30\">\n\n"; return $result; } ################################################################################ sub makeXmlPartitionHeader { my $result = ""; $result = $result . "<xc:Partition\n"; $result = $result . " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"; $result = $result . " xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n"; $result = $result . " xmlns:xc=\"http://xdaq.web.cern.ch/xdaq/xsd/2004/XMLConfiguration-30\">\n\n"; return $result; } ################################################################################ sub makeXmlProfileHeader { return "<xp:Profile\n" . " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" . " xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n" . " xmlns:xp=\"http://xdaq.web.cern.ch/xdaq/xsd/2005/XMLProfile-10\">\n\n"; } ################################################################################ sub makeXmlComm { my $result = ""; $result = $result . " <!-- communication protocoll -->\n"; $result = $result . " <i2o:protocol xmlns:i2o=" . "\"http://xdaq.web.cern.ch/xdaq/xsd/2004/I2OConfiguration-30\">\n"; while (@_>0) { my $appname = shift (@_); my $localid = shift (@_); $result = $result . " <i2o:target class=\"" . $appname . "\" instance=\"0\" tid=\"" . $localid . "\"/>\n"; } $result = $result . " </i2o:protocol>\n\n"; return $result; } ################################################################################ sub makeXmlContextHeader { my ($contextname,$hostname,$port) = @_; my $result = ""; $result = $result . "<!-- " . $contextname . " CONTEXT -->\n"; $result = $result . " <xc:Context url=\"http://$hostname:$port\">\n\n"; return $result; } ################################################################################ sub makeXmlEndpoint { my ($hostname,$port) = @_; my $result = ""; $result = $result . " <xc:Endpoint hostname=\"" . $hostname . "\" network=\"tcp0\" " . "port=\"" .$port . "\" protocol=\"tcp\" " . "service=\"i2o\"></xc:Endpoint>\n\n"; return $result; } ################################################################################ sub makeXmlAppHeader { my ($inContext,$appname,$localid,$service,$group) = @_; my $ns = "xc"; if (!$inContext) { $ns = "xp"; } my $result = qq| <$ns:Application class="$appname" id="$localid"|; $result .= qq| group="$group"| if defined $group; $result .= qq| service="$service"| if defined $service; $result .= qq| instance="0"|; $result .= qq| network="local">\n|; return $result; } ################################################################################ sub makeXmlAppProperties { my $result = ""; my $appname = shift (@_); $result = $result . " <properties xmlns=\"urn:xdaq-application:" . $appname . "\" xsi:type=\"soapenc:Struct\">\n"; while (@_>0) { my $name = shift (@_); my $type = shift (@_); my $value = shift (@_); $result = $result . " <" . $name . " xsi:type=\"xsd:" . $type . "\">" . $value . "</" . $name . ">\n"; } # $result = $result . " </properties>\n"; return $result; } ################################################################################ sub makeXmlUnicast { my ($appname) = (@_); return " <xc:Unicast class=\"" . $appname . "\" network=\"tcp0\"></xc:Unicast>\n"; } ################################################################################ sub makeXmlAppTrailer { my ($inContext,$libpath,$libname) = @_; my $ns = "xc"; if (!$inContext) { $ns = "xp"; } my $result = ""; # $result = $result . " </$ns:Application>\n"; $result = $result . " <$ns:Module>" . $libpath . "/" . $libname . "</$ns:Module>\n\n"; return $result; } ################################################################################ sub makeXmlContextTrailer { return " </xc:Context>\n\n\n"; } ################################################################################ sub makeXmlProfileTrailer { return "</xp:Profile>\n"; } ################################################################################ sub makeXmlPartitionTrailer { return "</xc:Partition>\n"; } ################################################################################ sub makeXmlAppPublish { my $result = qq| <publish xsi:type="soapenc:Array" soapenc:arrayType="xsd:ur-type[1]">\n|; $result .= qq| <item xsi:type="soapenc:Struct" soapenc:position="[0]">\n|; $result .= qq| <tag xsi:type="xsd:string"></tag>\n|; $result .= qq| <group xsi:type="xsd:string">c2d05</group>\n|; $result .= qq| </item>\n|; $result .= qq| </publish>\n|; return $result; } ################################################################################ sub makeCtlDestroy { my $result = ""; my $cmd = "killall xdaq.exe"; $result = $result . "#!/usr/bin/perl\n\n"; $result = $result . "print \"$cmd ...\\n\";\n\n"; $result = $result . "`$cmd`;\n\n"; $result = $result . "print \"remove files and dirs ...\n\";\n\n"; $result = $result . "`rm -rf $dqm_wdir`;\n\n"; $result = $result . "`rm -rf svgmap.xml \*.png`;\n\n"; $result = $result . "print \"FUShmCleanUp_t ...\\n\";\n\n"; $result = $result . "`FUShmCleanUp_t`;\n\n"; $result = $result . "print \"XDAQ session destroyed!\\n\";\n\n"; return $result; } ################################################################################ sub makeCtlCommand { my ($cmd,$appname,$appabrev,$host,$port,$sleep,$param) = (@_); my $result = ""; $result = $result."print \"\\n===============================================\";\n"; $result = $result."print \"\\n$cmd the $appname ($appabrev)...\";\n"; $result = $result."print \"\\n\===============================================\";\n"; $result = $result."my \$result = `".makeCurlCommand($cmd,$appabrev,$host,$port)."`;\n"; $result = $result."print \"\\n\$result\\n\\n\";\n"; if ($sleep>0){ $result = $result . "\n\t`sleep $sleep`;\n"; } return $result; } ################################################################################ sub makeCurlCommand { my ($cmd,$appabrev,$host,$port) = @_; my $pwd = `pwd`; chomp($pwd); return "curl --stderr /dev/null -H " . "\"SOAPAction: urn:xdaq-application:lid=4\" " . "-d @" . $dqm_wdir . "/soap/" . $cmd . ".xml " . "http://" . $host . ":" . $port; }