| #!/bin/ksh |
| # |
| # ***** BEGIN LICENSE BLOCK ***** |
| # Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
| # |
| # The contents of this file are subject to the Mozilla Public License Version |
| # 1.1 (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # http://www.mozilla.org/MPL/ |
| # |
| # Software distributed under the License is distributed on an "AS IS" basis, |
| # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
| # for the specific language governing rights and limitations under the |
| # License. |
| # |
| # The Original Code is the Netscape Portable Runtime (NSPR). |
| # |
| # The Initial Developer of the Original Code is |
| # Netscape Communications Corporation. |
| # Portions created by the Initial Developer are Copyright (C) 1999-2000 |
| # the Initial Developer. All Rights Reserved. |
| # |
| # Contributor(s): |
| # |
| # Alternatively, the contents of this file may be used under the terms of |
| # either the GNU General Public License Version 2 or later (the "GPL"), or |
| # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
| # in which case the provisions of the GPL or the LGPL are applicable instead |
| # of those above. If you wish to allow use of your version of this file only |
| # under the terms of either the GPL or the LGPL, and not to allow others to |
| # use your version of this file under the terms of the MPL, indicate your |
| # decision by deleting the provisions above and replace them with the notice |
| # and other provisions required by the GPL or the LGPL. If you do not delete |
| # the provisions above, a recipient may use your version of this file under |
| # the terms of any one of the MPL, the GPL or the LGPL. |
| # |
| # ***** END LICENSE BLOCK ***** |
| |
| # |
| # 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 |