dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/33964 )
Change subject: pysim-test: rename pysim-test.sh to pySim-prog_test.sh ...................................................................... pysim-test: rename pysim-test.sh to pySim-prog_test.sh We now have pySim-shell and pySim-trace. Let's give pysim-test.sh a more distinctive name so that it is clear to which program it refers. Related: OS#6094 Change-Id: I438f63f9580ebd3c7cc78cc5dab13c9937ac6e3a --- M contrib/jenkins.sh D tests/pysim-test.sh 2 files changed, 14 insertions(+), 231 deletions(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/64/33964/1 diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh index 583400b..93dc4bc 100755 --- a/contrib/jenkins.sh +++ b/contrib/jenkins.sh @@ -28,7 +28,7 @@ # Run the test with physical cards cd pysim-testdata - ../tests/pysim-test.sh + ../tests/pySim-prog_test.sh ../tests/pySim-trace_test.sh ;; "pylint") diff --git a/tests/pysim-test.sh b/tests/pysim-test.sh deleted file mode 100755 index 4004c18..0000000 --- a/tests/pysim-test.sh +++ /dev/null @@ -1,230 +0,0 @@ -#!/bin/bash - -# Utility to verify the functionality of pysim-prog.py -# -# (C) 2018 by Sysmocom s.f.m.c. GmbH -# All Rights Reserved -# -# Author: Philipp Maier -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -PYSIM_PROG=../pySim-prog.py -PYSIM_READ=../pySim-read.py -TEMPFILE=temp.tmp -PYTHON=python3 - -set -e - -echo "pysim-test - a test program to test pysim-prog.py" -echo "=================================================" - -# Generate a list of the cards we expect to see by checking which .ok files -# are present -function gen_card_list { - N_CARDS=0 - - echo "Expecting to see the following cards:" - - for I in *.data ; do - CARD_NAMES[$N_CARDS]=${I%.*} - CARD_SEEN[$N_CARDS]=0 - N_CARDS=$((N_CARDS+1)) - done - - for I in $(seq 0 $((N_CARDS-1))); do - echo ${CARD_NAMES[$I]} - done -} - -# Increment counter in card list for a specified card name (type) -function inc_card_list { - CARD_NAME=$1 - for I in $(seq 0 $((N_CARDS-1))); do - if [ $CARD_NAME = ${CARD_NAMES[$I]} ]; then - CARD_SEEN[$I]=$((${CARD_NAMES[$I]}+1)) - fi - done -} - -# Check the card list, each card must be seen exactly one times -function check_card_list { - for I in $(seq 0 $((N_CARDS-1))); do - if [ ${CARD_SEEN[$I]} -ne 1 ]; then - echo "Error: Card ${CARD_NAMES[$I]} seen ${CARD_SEEN[$I]} times!" - exit 1 - fi - done - - echo "All cards seen -- everything ok!" -} - -# Verify the contents of a card by reading them and then diffing against the -# previously created .ok file -function check_card { - TERMINAL=$1 - CARD_NAME=$2 - echo "Verifying card ..." - stat ./$CARD_NAME.ok > /dev/null - $PYTHON $PYSIM_READ -p $TERMINAL > $TEMPFILE - set +e - CARD_DIFF=$(diff $TEMPFILE ./$CARD_NAME.ok) - set -e - - if [ "$CARD_DIFF" != "" ]; then - echo "Card contents do not match the test data:" - echo "Expected: $CARD_NAME.ok" - echo "------------8<------------" - cat "$CARD_NAME.ok" - echo "------------8<------------" - echo "Got:" - echo "------------8<------------" - cat $TEMPFILE - echo "------------8<------------" - rm *.tmp - exit 1 - fi - - inc_card_list $CARD_NAME - - echo "Card contents match the test data -- success!" - rm $TEMPFILE -} - -# Read out the card using pysim-read and store the result as .ok file. This -# data will be used later in order to verify the results of our write tests. -function gen_ok_file { - TERMINAL=$1 - CARD_NAME=$2 - $PYTHON $PYSIM_READ -p $TERMINAL > "$CARD_NAME.ok" - echo "Generated file: $CARD_NAME.ok" - echo "------------8<------------" - cat "$CARD_NAME.ok" - echo "------------8<------------" -} - -# Find out the type (card name) of the card that is installed in the specified -# reader -function probe_card { - TERMINAL=$1 - RESULT=$(timeout 5 $PYSIM_PROG -p $TERMINAL -T | cut -d ":" -f 2 | tail -n 1 | xargs) - echo $RESULT -} - -# Read out all cards and store the results as .ok files -function gen_ok_files { - echo "== OK FILE GENERATION ==" - for I in $(seq 0 $((N_TERMINALS-1))); do - echo "Probing card in terminal #$I" - CARD_NAME=$(probe_card $I) - if [ -z "$CARD_NAME" ]; then - echo "Error: Unresponsive card!" - exit 1 - fi - echo "Card is of type: $CARD_NAME" - gen_ok_file $I $CARD_NAME - done -} - -# Execute tests. Each card is programmed and the contents are checked -# afterwards. -function run_test { - for I in $(seq 0 $((N_TERMINALS-1))); do - echo "== EXECUTING TEST ==" - echo "Probing card in terminal #$I" - CARD_NAME=$(probe_card $I) - if [ -z "$CARD_NAME" ]; then - echo "Error: Unresponsive card!" - exit 1 - fi - echo "Card is of type: $CARD_NAME" - - # Make sure some default data is set - MCC=001 - MNC=01 - ICCID=1122334455667788990 - KI=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - OPC=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - IMSI=001010000000001 - MSISDN=6766266 - ADM=00000000 - ADM_HEX="" - ADM_OPT="-a" - - source "$CARD_NAME.data" - if [ -n "$ADM_HEX" ]; then - ADM_OPT="-A" - ADM=$ADM_HEX - fi - $PYTHON $PYSIM_PROG -p $I -t $CARD_NAME -o $OPC -k $KI -x $MCC -y $MNC -i $IMSI -s $ICCID --msisdn $MSISDN $ADM_OPT $ADM - check_card $I $CARD_NAME - echo "" - done -} - -function usage { - echo "Options:" - echo "-n: number of card terminals" - echo "-o: generate .ok files" -} - -# Make sure that the pathes to the python scripts always work, regardless from -# where the script is called. -CURDIR=$PWD -SCRIPTDIR=$(dirname $0) -cd $SCRIPTDIR -PYSIM_PROG=$(realpath $PYSIM_PROG) -PYSIM_READ=$(realpath $PYSIM_READ) -cd $CURDIR - -OPT_N_TERMINALS=0 -OPT_GEN_OK_FILES=0 -while getopts ":hon:" OPT; do - case $OPT in - h) - usage - exit 0 - ;; - o) - OPT_GEN_OK_FILES=1 - ;; - n) - OPT_N_TERMINALS=$OPTARG - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - exit 1 - ;; - esac -done - -N_TERMINALS=$OPT_N_TERMINALS - -# Generate a list of available cards, if no explicit reader number is given -# then the number of cards will be used as reader number. -gen_card_list -if [ $N_TERMINALS -eq 0 ]; then - N_TERMINALS=$N_CARDS -fi -echo "Number of card terminals installed: $N_TERMINALS" -echo "" - -if [ $OPT_GEN_OK_FILES -eq 1 ]; then - gen_ok_files - exit 0 -else - run_test - check_card_list - exit 0 -fi -- To view, visit https://gerrit.osmocom.org/c/pysim/+/33964 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Change-Id: I438f63f9580ebd3c7cc78cc5dab13c9937ac6e3a Gerrit-Change-Number: 33964 Gerrit-PatchSet: 1 Gerrit-Owner: dexter <pma...@sysmocom.de> Gerrit-MessageType: newchange