Commit 66aeb694 authored by Stefano Belforte's avatar Stefano Belforte
Browse files

test new swinst with check for all prod released

parent e1b5ab3b
#!/bin/sh
shopt -s expand_aliases
err=0
warn=0
info=0
notice=0
warning=0
error=0
isEGEE=0
isOSG=0
cat $SAME_SENSOR_HOME/tests/CMS-SAM-Banner.html
echo '<h1><a href="#summary">Jump to test summary</a></h1>'
echo "<h2>Preliminary checks</h2>"
echo "<pre>"
echo "version 23-9 17:00"
set -x
echo "version 04-03-2009 10:00"
uname -a
cat /etc/issue
date
date --utc
voms-proxy-info -identity -fqan
id
set +x
workdir=`mktemp -d workdirXXXXXX`
cd $workdir
cp -v $SAME_SENSOR_HOME/tests/cmssw_required_version_list.txt .
cp -v $SAME_SENSOR_HOME/tests/fetch-from-web .
[ -n "$GLITE_WMS_RB_BROKERINFO" ] && cp -v $GLITE_WMS_RB_BROKERINFO .
[ -n "$EDG_WL_RB_BROKERINFO" ] && cp -v $EDG_WL_RB_BROKERINFO .
echo "</pre>"
echo "Memory:"
echo "<pre>"
cat /proc/meminfo
echo "</pre>"
echo "<p>"
echo "<h2>Checking software directory for CMS VO</h2>"
echo "<p>"
echo "<h2><a name="Analysis Test"></a>Analysis Test</h2>"
# Source the CMS environment
echo "<h3>Sourcing the CMS environment</h3>"
export SCRAM_ARCH=slc4_ia32_gcc345
export BUILD_ARCH=slc4_ia32_gcc345
if [ -n "$OSG_APP" ] ; then
isOSG=1
SW_DIR=$OSG_APP/cmssoft/cms
echo "Checking variable: \$OSG_APP/cmssoft/cms=$OSG_APP/cmssoft/cms"
echo "</p>"
elif [ -n "$VO_CMS_SW_DIR" ] ; then
isEGEE=1
SW_DIR=$VO_CMS_SW_DIR
echo "Checking variable: \$VO_CMS_SW_DIR=$VO_CMS_SW_DIR"
echo "</p>"
else
echo "<strong>"
echo "ERROR: Neither VO_CMS_SW_DIR nor OSG_APP defined"
echo "</strong></p>"
exit $SAME_ERROR
fi
tmpfile=`mktemp /tmp/tmp.XXXXXXXXXX`
echo "<pre>"
source $SW_DIR/cmsset_default.sh > $tmpfile 2>&1
ls -ld $SW_DIR
result=$?
cat $tmpfile
echo "</pre>"
grep 'Your shell is not able to find' $tmpfile > /dev/null
result2=$?
rm -f $tmpfile
echo
if [ $result != 0 ]
then
echo "ERROR: $SW_DIR/cmsset_default.sh non existent or non readable"
echo "<strong><p>"
echo "ERROR: software $SW_DIR directory non existent or non readable"
echo "</strong></p>"
# echo "summary: NO_SW_DIR"
exit $SAME_ERROR
fi
if [ $result2 == 0 ]
then
echo "ERROR: $SW_DIR/cmsset_default.sh failed"
echo "<h2><a name="DiskSpace"></a>Some trivial checks</h2>"
if [ "`echo $SW_DIR | cut -d / -f 2`" == "afs" ]; then
echo "AFS mode"
SPACE=`fs lq $SW_DIR | tail -1 | awk '{print (\$2-\$3)/1024 }'`
else
SPACE=`df -k -P $SW_DIR | tail -1 | awk '{print \$4/1024}'`
fi
echo "Free disk space in $SW_DIR: $SPACE MB"
cantwrite=0
# on EGEE (but not CERN) check that lcgadmin can write to SW area
if [ $isEGEE == 1 ] && ! ( echo $SW_DIR | grep cern.ch )
then
echo "<pre>"
touch $SW_DIR/.sametest
result=$?
echo "</pre>"
if [ $result != 0 ]
then
cantwrite=1
echo "WARNING: cannot write to software area"
fi
fi
if [ ! -f $SW_DIR/cmsset_default.sh ] ; then
echo "<h3>"
echo "ERROR: cmssw setup file $SW_DIR/cmsset_default.sh not existing"
echo "</h3>"
exit $SAME_ERROR
fi
# Execute main test scripts
echo "<h3>Test analysis of data from /store/data </h3>"
echo "<h2>Sourcing the CMS environment</h2>"
echo "<pre>"
echo " SAME_SENSOR_HOME: " $SAME_SENSOR_HOME
echo "Running $SAME_SENSOR_HOME/tests/AnalysisTest.sh 2>&1"
AnalysisTestWorkDir=`mktemp -d AnalysisTestWorkDir.XXXXXXXXXX`
pushd . > /dev/null
cd $AnalysisTestWorkDir
pwd
$SAME_SENSOR_HOME/tests/Test-AnalysisTest.sh 2>&1
result=$?
echo "AnalysisTest.sh executed with exit code " $result
echo "source $SW_DIR/cmsset_default.sh"
echo "</pre>"
popd > /dev/null
archs_defined='slc4_ia32_gcc345 slc3_ia32_gcc323'
archs_to_test='slc4_ia32_gcc345'
swok=0
for arch in $archs_defined ; do
if [ $swok != 1 ] ; then
export SCRAM_ARCH=$arch
export BUILD_ARCH=$arch
echo "<p>"
echo "Testing with SCRAM_ARCH=$arch ..."
echo "</p>"
echo "<pre>"
rm -f cmsset.log
source $SW_DIR/cmsset_default.sh > cmsset.log 2>&1
result=$?
cat cmsset.log
echo "</pre>"
echo
grep 'No such file or directory' cmsset.log > /dev/null 2>&1
res=$?
if [ $res == 0 ] ; then
result=1
fi
if [ $result != 0 ]
then
echo "<p>"
echo "WARNING: CMS software initialisation script cmsset_default.sh failed for SCRAM_ARCH=$arch"
echo "</p>"
else
swok=1
fi
fi
done
if [ $result == $SAME_WARNING ] ; then
warn=1
if [ $swok != 1 ]
then
echo "<strong><p>"
echo "ERROR: CMS software initialisation script cmsset_default.sh failed for all architectures"
echo "</strong></p>"
exit $SAME_ERROR
fi
echo "<p>"
echo "OK"
echo "</p>"
if [ $result == $SAME_ERROR ] ; then
err=1
echo "<h2>Make sure configuration directory is there</h2>"
echo "<p>"
echo "Checking variable: \$CMS_PATH=$CMS_PATH"
echo "</p>"
if [ -z $CMS_PATH ]; then
echo "<strong><p>"
echo "ERROR: CMS_PATH not defined"
echo "</strong></p>"
exit $SAME_ERROR
fi
echo "<h3>Test analysis of data from /store/user </h3>"
if [ ! -d $CMS_PATH ] ; then
echo "<strong><p>"
echo "ERROR: CMS_PATH directory $CMS_PATH not existing"
echo "</strong></p>"
exit $SAME_ERROR
fi
echo "<p>"
echo "OK"
echo "</p>"
echo "<h2>Check that scramv1 command is present</h2>"
echo "<pre>"
echo " SAME_SENSOR_HOME: " $SAME_SENSOR_HOME
echo "Running $SAME_SENSOR_HOME/tests/AnalysisTestUser.sh 2>&1"
AnalysisTestUserWorkDir=`mktemp -d AnalysisTestUserWorkDir.XXXXXXXXXX`
pushd . > /dev/null
cd $AnalysisTestUserWorkDir
pwd
$SAME_SENSOR_HOME/tests/Test-AnalysisTestUser.sh 2>&1
echo "scramv1 version"
scramv1 version
result=$?
echo "</pre>"
popd > /dev/null
if [ $result != 0 ]
then
echo "<strong><p>"
echo "ERROR: scramv1 command not found"
echo "</strong></p>"
exit $SAME_ERROR
fi
echo "<p>"
echo "OK"
echo "</p>"
#cd $SAME_SENSOR_WORK
echo "<h2>Retrieve list of CMSSW versions installed</h2>"
for arch in $archs_defined
do
export SCRAM_ARCH=$arch
export BUILD_ARCH=$arch
echo "<pre>"
echo "Architecture: $arch"
echo "scramv1 list -c CMSSW"
scramv1 list -c CMSSW > scramv1_list_output.txt
listerror=$?
echo "</pre>"
if [ $listerror != 0 ]
then
echo "<p>"
echo "WARNING: scramv1 list error"
echo "</p>"
fi
touch scramv1_list_output.txt
cat scramv1_list_output.txt | tr -s " " | cut -d " " -f2 | sort -u > cmssw_installed_${arch}.txt
cat cmssw_installed_${arch}.txt >> cmssw_installed_version_list.txt
echo "<ol class=CMSSW-list id=\"$arch\">"
cat cmssw_installed_${arch}.txt | while read line
do
echo " <li>"$line"</li>"
done
echo "</ol>"
echo "<p>"
echo "OK"
echo "</p>"
done
echo "<h2>Verify <a href="http://cmssw.cvs.cern.ch/cgi-bin/cmssw.cgi/COMP/CMSSAM/SiteTests/testjob/tests/cmssw_required_version_list.txt?view=co">list</a> of required CMSSW versions</h2>"
missing=0
failproject=0
failrunt=0
for cmsver in `cat $SAME_SENSOR_HOME/tests/cmssw_required_version_list.txt`
do
grep -x $cmsver cmssw_installed_version_list.txt >& /dev/null
result=$?
if [ $result != 0 ]
then
echo "<p><strong>"
echo "Required CMSSW version $cmsver not installed"
echo "</strong></p>"
missing=1
else
echo "<p>"
echo "Checking version $cmsver installation"
echo "</p>"
echo "<pre>"
# execute in a subprocess commands that require scram
$SAME_SENSOR_HOME/tests/TestCmsswVersion.sh $cmsver
TestResult=$?
if [ $TestResult != 0 ]
then
failproject=1
fi
fi
done
echo "<h2>Verify installed vs. published CMSSW versions</h2>"
if [ $result != $SAME_OK ] ; then
warn=1
# check that installed version list matches published tags
retrieve_published_list_fail=0
missing_arch_tag=0
missing_version_tag=0
missing_published_version=0
missing_production_release=0
if [ $isEGEE == 1 ]
then
CE=`glite-brokerinfo getCE`
fi
if [ $isOSG == 1 ]
then
CE=`grep 'name.*jobmanager' .BrokerInfo|cut -d'"' -f2`
fi
ceHost=`echo $CE|cut -d':' -f1`
ceHostWithCommas=`echo $ceHost|tr . ,`
echo "<pre>"
echo "CE is: " $CE
echo "CE host is: " $ceHost
echo "</pre>"
PublishedTagsURL="http://cmsdoc.cern.ch/cms/LCG/SiteComm/published-tags/$ceHostWithCommas"
echo "<p>Retrieve list of publshed tags from <a href=\"$PublishedTagsURL\">$PublishedTagsURL</a><br>"
./fetch-from-web $PublishedTagsURL publ_tag.txt
rc=$?
echo "rc = " $rc
[ $rc == $SAME_INFO ] && info=1
[ $rc == $SAME_WARNING ] && warning=1
if [ $err == 1 ] ; then
exit $SAME_ERROR
echo "List of published tags<br><pre>"
cat publ_tag.txt
echo "</pre>"
len=`cat publ_tag.txt | wc --chars`
if [ $len -lt 10 ]
then
retrieve_published_list_fail=1
echo "<p><br><strong>"
echo "suspiciously small tag list returned by lcg-info, ignore it"
echo "</p></strong><pre>"
ls -lh publ_tag.txt
echo "</pre>"
fi
if [ $retrieve_published_list_fail == 0 ]
then
for arch in $archs_to_test
do
if ! (grep -q $arch publ_tag.txt) then
echo "<p>ERROR: $arch tag missing</p>"
missing_arch_tag=1
fi
done
TagCollectorURL="https://cmsdoc.cern.ch/swdev/CmsTC/cgi-bin/ReleasesXML"
echo "<p>Retrieve list of production version from <a href=\"$TagCollectorURL\">$TagCollectorURL</a> and ignore releases before 1_5_x<br>"
./fetch-from-web $TagCollectorURL ReleasesXML
rc=$?
echo "rc = " $rc
[ $rc == $SAME_INFO ] && info=1
[ $rc == $SAME_WARNING ] && warning=1
if [ $rc == $SAME_OK -o $rc == $SAME_INFO ] ; then
cat ReleasesXML | grep Announced|cut -d'"' -f 2|sort -u > production_releases.txt
# do not bother with old SL3-only versions (tags are not maintained)
grep -v "CMSSW_0\|CMSSW_1_[0-4]" production_releases.txt > newer_releases
mv newer_releases production_releases.txt
fi
echo "<h3>If a production releease is installed, it should be published</h3>"
for cmsver in `cat cmssw_installed_version_list.txt`
do
if ( grep -qx $cmsver production_releases.txt )
then
if ! (grep -qx $cmsver publ_tag.txt)
then
echo "<p>"
echo "WARNING: CMSSW version $cmsver installed but not published"
echo "</p>"
missing_version_tag=1
fi
fi
done
[ $missing_version_tag == 0 ] && echo "OK<p>"
echo "<h3>If a production release is published, it must be installed</h3>"
for cmsver in `grep CMSSW publ_tag.txt`
do
if ( grep -qx $cmsver production_releases.txt )
then
if ! (grep -qx $cmsver cmssw_installed_version_list.txt)
then
echo "<p>"
echo "ERROR: CMSSW version $cmsver published but not installed"
echo "<pre>"
set -x
cat publ_tag.txt
cat production_releases.txt
set +x
echo "</pre>"
echo "</p>"
missing_published_version=1
fi
fi
done
[ $missing_published_version == 0 ] && echo "OK<p>"
echo "<h3>All production releases should be installed</h3>"
for cmsver in `cat production_releases.txt`
do
if ! ( grep -qx $cmsver cmssw_installed_version_list.txt )
then
echo "<p>"
echo "NOTICE: CMSSW production version $cmsver not installed"
echo "</p>"
missing_production_release=1
fi
done
[ $missing_production_release == 0 ] && echo "OK<p>"
fi
# Print out installed Generator Gridpacks
# We assume that they are stored in $CMS_PATH/slc4_ia32_gcc345/generatorData
# SAM test result does not depend on it (at least for now).
echo "<h2>Installed Generator Gridpacks</h2>"
if [ ! -d $CMS_PATH/slc4_ia32_gcc345/generatorData ]; then
echo "<p>"
echo " WARNING: No generator data installed!"
echo "</p>"
else
cd $CMS_PATH/slc4_ia32_gcc345/generatorData
echo "Following generator data are installed: "
echo "<pre>"
find . -type d -mindepth 4 -maxdepth 4 -print
echo "</pre>"
# Bad permssions - enable later...
# echo "Files or directories with bad permissions"
# find . -type d ! -perm -o+x -print
# find . -type f ! -perm -o+r -print
fi
echo '<h1><a name="summary"> Test Summary</a></h1><p>'
if [ $missing_production_release == 1 ]
then
echo "<p>NOTICE: One or more production releases are not installed</p>"
notice=1
fi
if [ $cantwrite == 1 ]
then
echo "<p>WARNING: Cannot write to CMSSW installation area</p>"
warning=1
fi
if [ $missing == 1 ]
then
echo "<p>WARNING: Some of the required CMSSW versions not found</p>"
warning=1
fi
if [ $retrieve_published_list_fail == 1 ]
then
echo "<p>WARNING: Fail to retrieve list of published tags from cmsdoc</p>"
info=1
fi
if [ $missing_version_tag == 1 ]
then
echo "<p>WARNING: Some CMS VO Tags are missing</p>"
warning=1
fi
if [ $missing_arch_tag == 1 ]
then
echo "<p>ERROR: Needed CMS VO architecture TAG not published</p>"
error=1
fi
if [ $missing_published_version == 1 ]
then
echo "<p>ERROR: Some CMSSW version published but not present</p>"
error=1
fi
if [[ $failproject == 1 || $failrunt == 1 ]]
then
echo "<p>Some of the required CMSSW versions not working</p>"
error=1
fi
if [[ $error == 1 ]]
then
echo "<p><strong> ERROR </strong></p>"
exit $SAME_ERROR
fi
if [[ $warning == 1 ]]
then
echo "<p><strong> WARNING </strong></p>"
exit $SAME_WARNING
fi
if [ $notice == 1 ]
then
echo "<p><strong> NOTE </strong></p>"
exit $SAME_NOTICE
fi
if [ $warn == 1 ] ; then
exit $SAME_WARNING
if [ $info == 1 ]
then
echo "<p><strong> INFO </strong></p>"
exit $SAME_INFO
fi
echo "<p><strong> OK </strong></p>"
exit $SAME_OK
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment