Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  phc.sh   Sprache: Shell

 
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

ALL_TESTS="
 settime
 adjtime
 adjfreq
"
DEV=$1

##############################################################################
# Sanity checks

if [[ "$(id -u)" -ne 0 ]]; then
 echo "SKIP: need root privileges"
 exit 0
fi

if [[ "$DEV" == "" ]]; then
 echo "SKIP: PTP device not provided"
 exit 0
fi

require_command()
{
 local cmd=$1; shift

 if [[ ! -x "$(command -v "$cmd")" ]]; then
  echo "SKIP: $cmd not installed"
  exit 1
 fi
}

phc_sanity()
{
 phc_ctl $DEV get &> /dev/null

 if [ $? != 0 ]; then
  echo "SKIP: unknown clock $DEV: No such device"
  exit 1
 fi
}

require_command phc_ctl
phc_sanity

##############################################################################
# Helpers

# Exit status to return at the end. Set in case one of the tests fails.
EXIT_STATUS=0
# Per-test return value. Clear at the beginning of each test.
RET=0

check_err()
{
 local err=$1

 if [[ $RET -eq 0 && $err -ne 0 ]]; then
  RET=$err
 fi
}

log_test()
{
 local test_name=$1

 if [[ $RET -ne 0 ]]; then
  EXIT_STATUS=1
  printf "TEST: %-60s [FAIL]\n" "$test_name"
  return 1
 fi

 printf "TEST: %-60s [ OK ]\n" "$test_name"
 return 0
}

tests_run()
{
 local current_test

 for current_test in ${TESTS:-$ALL_TESTS}; do
  $current_test
 done
}

##############################################################################
# Tests

settime_do()
{
 local res

 res=$(phc_ctl $DEV set 0 wait 120.5 get 2> /dev/null \
  | awk '/clock time is/{print $5}' \
  | awk -F. '{print $1}')

 (( res == 120 ))
}

adjtime_do()
{
 local res

 res=$(phc_ctl $DEV set 0 adj 10 get 2> /dev/null \
  | awk '/clock time is/{print $5}' \
  | awk -F. '{print $1}')

 (( res == 10 ))
}

adjfreq_do()
{
 local res

 # Set the clock to be 1% faster
 res=$(phc_ctl $DEV freq 10000000 set 0 wait 100.5 get 2> /dev/null \
  | awk '/clock time is/{print $5}' \
  | awk -F. '{print $1}')

 (( res == 101 ))
}

##############################################################################

cleanup()
{
 phc_ctl $DEV freq 0.0 &> /dev/null
 phc_ctl $DEV set &> /dev/null
}

settime()
{
 RET=0

 settime_do
 check_err $?
 log_test "settime"
 cleanup
}

adjtime()
{
 RET=0

 adjtime_do
 check_err $?
 log_test "adjtime"
 cleanup
}

adjfreq()
{
 RET=0

 adjfreq_do
 check_err $?
 log_test "adjfreq"
 cleanup
}

trap cleanup EXIT

tests_run

exit $EXIT_STATUS

Messung V0.5
C=93 H=92 G=92

¤ Dauer der Verarbeitung: 0.18 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge