2008-06-06 05:36:51 -07:00
|
|
|
#!/bin/ksh
|
|
|
|
#
|
2012-05-10 12:01:43 -07:00
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
2008-06-06 05:36:51 -07:00
|
|
|
|
|
|
|
#
|
|
|
|
# runy2ktests.ksh
|
|
|
|
# Set system clock to Y2K dates of interest and run the Y2K tests.
|
|
|
|
# Needs root/administrator privilege
|
|
|
|
#
|
|
|
|
# WARNING: Because this script needs to be run with root/administrator
|
|
|
|
# privilege, thorough understanding of the script and extreme
|
|
|
|
# caution are urged.
|
|
|
|
#
|
|
|
|
|
|
|
|
#
|
|
|
|
# SECTION I
|
|
|
|
# Define variables
|
|
|
|
#
|
|
|
|
|
|
|
|
SYSTEM_INFO=`uname -a`
|
|
|
|
OS_ARCH=`uname -s`
|
|
|
|
if [ $OS_ARCH = "Windows_NT" ] || [ $OS_ARCH = "Windows_95" ]
|
|
|
|
then
|
|
|
|
NULL_DEVICE=nul
|
|
|
|
else
|
|
|
|
NULL_DEVICE=/dev/null
|
|
|
|
fi
|
|
|
|
|
|
|
|
#
|
|
|
|
# Test dates for NSPR Y2K tests
|
|
|
|
#
|
|
|
|
Y2KDATES=" 123123591998.55
|
|
|
|
090923591999.55
|
|
|
|
123123591999.55
|
|
|
|
022823592000.55
|
|
|
|
022923592000.55
|
|
|
|
123123592000.55"
|
|
|
|
|
|
|
|
Y2KDATES_AIX=" 12312359.5598
|
|
|
|
09092359.5599
|
|
|
|
12312359.5599
|
|
|
|
02282359.5500
|
|
|
|
02292359.5500
|
|
|
|
12312359.5500"
|
|
|
|
|
|
|
|
Y2KDATES_HPUX=" 123123591998
|
|
|
|
090923591999
|
|
|
|
123123591999
|
|
|
|
022823592000
|
|
|
|
022923592000
|
|
|
|
123123592000"
|
|
|
|
|
|
|
|
Y2KDATES_MKS=" 1231235998.55
|
|
|
|
0909235999.55
|
|
|
|
1231235999.55
|
|
|
|
0228235900.55
|
|
|
|
0229235900.55
|
|
|
|
1231235900.55"
|
|
|
|
|
|
|
|
#
|
|
|
|
# NSPR Y2K tests
|
|
|
|
#
|
|
|
|
Y2KTESTS="
|
|
|
|
y2k \n
|
|
|
|
y2ktmo \n
|
|
|
|
y2k \n
|
|
|
|
../runtests.ksh"
|
|
|
|
|
|
|
|
Y2KTESTS_HPUX="
|
|
|
|
y2k \n
|
|
|
|
y2ktmo -l 60\n
|
|
|
|
y2k \n
|
|
|
|
../runtests.ksh"
|
|
|
|
|
|
|
|
#
|
|
|
|
# SECTION II
|
|
|
|
# Define functions
|
|
|
|
#
|
|
|
|
|
|
|
|
save_date()
|
|
|
|
{
|
|
|
|
case $OS_ARCH in
|
|
|
|
AIX)
|
|
|
|
SAVED_DATE=`date "+%m%d%H%M.%S%y"`
|
|
|
|
;;
|
|
|
|
HP-UX)
|
|
|
|
SAVED_DATE=`date "+%m%d%H%M%Y"`
|
|
|
|
;;
|
|
|
|
Windows_NT)
|
|
|
|
SAVED_DATE=`date "+%m%d%H%M%y.%S"`
|
|
|
|
;;
|
|
|
|
Windows_95)
|
|
|
|
SAVED_DATE=`date "+%m%d%H%M%y.%S"`
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
SAVED_DATE=`date "+%m%d%H%M%Y.%S"`
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
set_date()
|
|
|
|
{
|
|
|
|
case $OS_ARCH in
|
|
|
|
Windows_NT)
|
|
|
|
#
|
|
|
|
# The date command in MKS Toolkit releases 5.1 and 5.2
|
|
|
|
# uses the current DST status for the date we want to
|
|
|
|
# set the system clock to. However, the DST status for
|
|
|
|
# that date may be different from the current DST status.
|
|
|
|
# We can work around this problem by invoking the date
|
|
|
|
# command with the same date twice.
|
|
|
|
#
|
|
|
|
date "$1" > $NULL_DEVICE
|
|
|
|
date "$1" > $NULL_DEVICE
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
date "$1" > $NULL_DEVICE
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
restore_date()
|
|
|
|
{
|
|
|
|
set_date "$SAVED_DATE"
|
|
|
|
}
|
|
|
|
|
|
|
|
savedate()
|
|
|
|
{
|
|
|
|
case $OS_ARCH in
|
|
|
|
AIX)
|
|
|
|
SAVED_DATE=`date "+%m%d%H%M.%S%y"`
|
|
|
|
;;
|
|
|
|
HP-UX)
|
|
|
|
SAVED_DATE=`date "+%m%d%H%M%Y"`
|
|
|
|
;;
|
|
|
|
Windows_NT)
|
|
|
|
SAVED_DATE=`date "+%m%d%H%M%y.%S"`
|
|
|
|
;;
|
|
|
|
Windows_95)
|
|
|
|
SAVED_DATE=`date "+%m%d%H%M%y.%S"`
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
SAVED_DATE=`date "+%m%d%H%M%Y.%S"`
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
set_y2k_test_parameters()
|
|
|
|
{
|
|
|
|
#
|
|
|
|
# set dates
|
|
|
|
#
|
|
|
|
case $OS_ARCH in
|
|
|
|
AIX)
|
|
|
|
DATES=$Y2KDATES_AIX
|
|
|
|
;;
|
|
|
|
HP-UX)
|
|
|
|
DATES=$Y2KDATES_HPUX
|
|
|
|
;;
|
|
|
|
Windows_NT)
|
|
|
|
DATES=$Y2KDATES_MKS
|
|
|
|
;;
|
|
|
|
Windows_95)
|
|
|
|
DATES=$Y2KDATES_MKS
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
DATES=$Y2KDATES
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
#
|
|
|
|
# set tests
|
|
|
|
#
|
|
|
|
case $OS_ARCH in
|
|
|
|
HP-UX)
|
|
|
|
TESTS=$Y2KTESTS_HPUX
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
TESTS=$Y2KTESTS
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
#
|
|
|
|
# runtests:
|
|
|
|
# - runs each test in $TESTS after setting the
|
|
|
|
# system clock to each date in $DATES
|
|
|
|
#
|
|
|
|
|
|
|
|
runtests()
|
|
|
|
{
|
|
|
|
for newdate in ${DATES}
|
|
|
|
do
|
|
|
|
set_date $newdate
|
|
|
|
echo $newdate
|
|
|
|
echo "BEGIN\t\t\t`date`"
|
|
|
|
echo "Date\t\t\t\t\tTest\t\t\tResult"
|
|
|
|
echo $TESTS | while read prog
|
|
|
|
do
|
|
|
|
echo "`date`\t\t\c"
|
|
|
|
echo "$prog\c"
|
|
|
|
./$prog >> ${LOGFILE} 2>&1
|
|
|
|
if [ 0 = $? ] ; then
|
|
|
|
echo "\t\t\tPassed";
|
|
|
|
else
|
|
|
|
echo "\t\t\tFAILED";
|
|
|
|
fi;
|
|
|
|
done
|
|
|
|
echo "END\t\t\t`date`\n"
|
|
|
|
done
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#
|
|
|
|
# SECTION III
|
|
|
|
# Run tests
|
|
|
|
#
|
|
|
|
|
|
|
|
LOGFILE=${NSPR_TEST_LOGFILE:-$NULL_DEVICE}
|
|
|
|
OBJDIR=`basename $PWD`
|
|
|
|
echo "\nNSPR Year 2000 Test Results - $OBJDIR\n"
|
|
|
|
echo "SYSTEM:\t\t\t${SYSTEM_INFO}"
|
|
|
|
echo "NSPR_TEST_LOGFILE:\t${LOGFILE}\n"
|
|
|
|
|
|
|
|
|
|
|
|
save_date
|
|
|
|
|
|
|
|
#
|
|
|
|
# Run NSPR Y2k and standard tests
|
|
|
|
#
|
|
|
|
|
|
|
|
set_y2k_test_parameters
|
|
|
|
runtests
|
|
|
|
|
|
|
|
restore_date
|