diff gpf/BIN/runalltc.bat @ 0:509db1a7b7b8

initial import: leo2moko-r1
author Space Falcon <falcon@ivan.Harhan.ORG>
date Mon, 01 Jun 2015 03:24:05 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gpf/BIN/runalltc.bat	Mon Jun 01 03:24:05 2015 +0000
@@ -0,0 +1,820 @@
+@echo off
+iff x%RUNALLTC_NO_SETLOCAL% == x then
+  setlocal
+endiff
+loadbtm on
+rem --------------------------------------------------------------------------- 
+rem  Project :  
+rem  Modul   : runalltc.bat
+rem --------------------------------------------------------------------------- 
+rem  Copyright 2002 Texas Instruments Berlin, AG 
+rem                 All rights reserved. 
+rem 
+rem                 This file is confidential and a trade secret of Texas 
+rem                 Instruments Berlin, AG 
+rem                 The receipt of or possession of this file does not convey 
+rem                 any rights to reproduce or disclose its contents or to 
+rem                 manufacture, use, or sell anything it may describe, in 
+rem                 whole, or in part, without the specific written consent of 
+rem                 Texas Instruments Berlin, AG. 
+rem --------------------------------------------------------------------------- 
+rem   Purpose : Runs all test cases belonging to a given test specification
+rem --------------------------------------------------------------------------- 
+pushd
+if x%_4ver% == x goto Need4NT
+
+rem Check %PROST
+iff x%PROST == x then
+echo Which Protocol Stack shall be tested?
+echo set the environment variable PROST to the name of the stack.
+echo e.g. set PROST=gsm or set PROST=g23net will work
+goto end
+endiff
+
+iff %PROST == gprs then
+  iff x%PS_EXE% == x then
+    set rtc_psexe=%TESTROOT%\ms\bin\g23_smi_gprs.exe
+  else
+    set rtc_psexe=%PS_EXE%
+  endiff
+elseiff %PROST == gsm then
+  iff x%PS_EXE% == x then
+    set rtc_psexe=%TESTROOT%\ms\bin\MS_TI_VC.exe
+  else
+    set rtc_psexe=%PS_EXE%
+  endiff
+elseiff %PROST% == g23net .OR. %PROST% == g23n then
+  iff x%PS_EXE% == x then
+    set rtc_psexe=%TESTROOT%\bin\nucwin\g23net.exe
+  else
+    set rtc_psexe=%PS_EXE%
+  endiff
+elseiff %PROST% == generic then
+  iff x%PS_EXE% == x then
+    set rtc_psexe=%TESTROOT%\bin\teststack.exe
+  else
+    set rtc_psexe=%PS_EXE%
+  endiff
+else
+  text
+  Unknown project. Set environment variable PROST to gsm, gprs, g23net,
+    or generic (i.e. use \GPF\initvars.bat).
+  endtext
+  goto end
+endiff
+
+set rtc_tcfailed=0
+set ret_iboe=0
+set tc_firsttc=
+set tc_lasttc=
+set rtc_tappara=
+set rtc_oldtappara=H
+set rtc_pspara=/INV
+set rtc_summary=0
+set rtc_tee=
+set rtc_delay=5
+set rtc_tapexe=
+set rtc_bindir=%GPF%/BIN
+set rtc_showtrc=0
+set rtc_pcolog=1
+set rtc_startstack=1
+set rtc_starttst=1
+set rtc_exitsoon=0
+set rtc_testenv=unknown
+set rtc_allin1=0
+set rtc_exec_suites=0
+set rtc_exec_tc=1
+set rtc_suifilehdl=-1
+set rtc_doasif=0
+set rtc_enti=
+set rtc_prefix=
+set rtc_rangeset=0
+set rtc_blacklist=
+set rtc_retry=0
+set rtc_try=0
+set rtc_tap_exitcode=
+set rtc_tccount=0
+set rtc_tc_executed=
+set rtc_echo=
+set rtc_case=
+set rtc_monthlist=Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
+set rtc_enverror=Can't mix option -oe with -n, -b, -v, -e, -pcon, -oth, -notst, -wtmo, -stmo, -l, -ctb, -cr, -pref or -q
+
+:check_options
+rem Check Parameters
+if "x%1" == "x" goto How2Use
+iff "%1" == "-debug" then
+  echo on
+  shift 1
+  goto check_options
+elseiff "%1" == "-r" then
+  if "x%2" == "x" (echo Missing range for "-r" & goto How2Use)
+  set tc_dash=%@INDEX[%2,-]
+  iff %tc_dash == -1 then
+    set tc_firsttc=%2
+    set tc_lasttc=%2
+  else
+    set tc_firsttc=%@INSTR[0,%tc_dash,%2]
+    set tc_lasttc=%@SUBSTR[%2,%@eval[1+%tc_dash%]]
+  endiff
+  set rtc_rangeset=1
+  shift 2
+  goto check_options
+elseiff "%1" == "-t" then
+  if "x%2" == "x" (echo Missing name of tap-exe for "-t" & goto How2Use)
+  set rtc_tapexe=%2
+  shift 2
+  goto check_options
+elseiff "%1" == "-b" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=new
+  if "x%2" == "x" (echo Missing name of bin directory for "-b" & goto How2Use)
+  set rtc_bindir=%2
+  shift 2
+  goto check_options
+elseiff "%1" == "-p" then
+  if "x%2" == "x" (echo Missing name of ps-exe for "-p" & goto How2Use)
+  set rtc_psexe=%2
+  shift 2
+  goto check_options
+elseiff "%1" == "-n" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_doasif=1
+  set rtc_testenv=new
+  set rtc_pcolog=0
+  set rtc_tappara=%rtc_tappara% %1 -v
+  set rtc_startstack=0
+  shift 1
+  goto check_options
+elseiff "%1" == "-q" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=new
+  set rtc_pcolog=0
+  shift 1
+  goto check_options
+elseiff "%1" == "-s" then
+  set rtc_exec_suites=1
+  set rtc_exec_tc=0
+  shift 1
+  goto check_options
+elseiff "%1" == "+s" then
+  set rtc_exec_suites=1
+  shift 1
+  goto check_options
+elseiff "%1" == "-st" then
+  set rtc_oldtappara=T
+  set rtc_showtrc=1
+  shift 1
+  goto check_options
+elseiff "%1" == "-sp" then
+  set rtc_pspara=
+  shift 1
+  goto check_options
+elseiff "%1" == "-ib" then
+  set rtc_iboe=1
+  shift 1
+  goto check_options
+elseiff "%1" == "-e" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=new
+  if "x%2" == "x" (echo Missing name of entity for "-e" & goto How2Use)
+  set rtc_tappara=%rtc_tappara% %1 %2
+  set rtc_enti=%2
+  shift 2
+  goto check_options
+elseiff "%1" == "-pref" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=new
+  if "x%2" == "x" (echo Missing prefix of entity for "-pref" & goto How2Use)
+  set rtc_prefix=%2
+  shift 2
+  goto check_options
+elseiff "%1" == "-echo" then
+  set rtc_echo=echo
+  set rtc_startstack=0
+  set rtc_pcolog=0
+  set rtc_starttst=0
+  shift 1
+  goto check_options
+elseiff "%1" == "-pcon" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=new
+  set rtc_tappara=%rtc_tappara% -pcon
+  shift 1
+  goto check_options
+elseiff "%1" == "-ctb" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=new
+  set rtc_tappara=%rtc_tappara% -ctb
+  shift 1
+  goto check_options
+elseiff "%1" == "-cr" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=new
+  set rtc_tappara=%rtc_tappara% -cr
+  shift 1
+  goto check_options
+elseiff "%1" == "-oth" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=new
+  set rtc_tappara=%rtc_tappara% -oth
+  shift 1
+  goto check_options
+elseiff "%1" == "-v" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=new
+  set rtc_tappara=%rtc_tappara% -v
+  shift 1
+  goto check_options
+elseiff "%1" == "-sum" then
+  set rtc_summary=1
+  shift 1
+  goto check_options
+elseiff "%1" == "-notst" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_starttst=0
+  shift 1
+  goto check_options
+elseiff "%1" == "-nop" then
+  set rtc_startstack=0
+  shift 1
+  goto check_options
+elseiff "%1" == "-d" then
+  if "x%2" == "x" (echo Missing delay for "-d" & goto How2Use)
+  set rtc_delay=%2
+  shift 2
+  goto check_options
+elseiff "%1" == "-c" then
+  if "x%2" == "x" (echo Missing name for "-c" & goto How2Use)
+  set rtc_case=%2
+  shift 2
+  goto check_options
+elseiff "%1" == "-retry" then
+  if "x%2" == "x" (echo Missing repetitions for "-retry" & goto How2Use)
+  set rtc_retry=%2
+  shift 2
+  goto check_options
+elseiff "%1" == "-stmo" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=new
+  if "x%2" == "x" (echo Missing timeout for "-stmo" & goto How2Use)
+  set rtc_tappara=%rtc_tappara% -tsync %@eval[%2*1000]
+  shift 2
+  goto check_options
+elseiff "%1" == "-l" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=new
+  if "x%2" == "x" (echo Missing ccddata_dll for "-l" & goto How2Use)
+  if NOT exist %2 (echo %2 not found & goto end)
+  set rtc_tappara=%rtc_tappara% -l %@FULL[%2]
+  shift 2
+  goto check_options
+elseiff "%1" == "-wtmo" then
+  iff %rtc_testenv% == old then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=new
+  if "x%2" == "x" (echo Missing timeout for "-wtmo" & goto How2Use)
+  set rtc_tappara=%rtc_tappara% -t %@eval[%2*1000]
+  shift 2
+  goto check_options
+elseiff "%1" == "-tp" then
+  shift
+:tap_param  
+  iff x"%1" == x"" then
+    goto How2use
+  elseiff "%1" == "--" then
+    shift
+    goto check_options
+  else
+    set rtc_tappara=%rtc_tappara% %1
+    shift
+    goto tap_param
+  endiff
+elseiff "%1" == "-oe" then
+  iff %rtc_testenv% == new then
+    echo Error: %rtc_enverror%
+    goto How2Use
+  endiff
+  set rtc_testenv=old
+  shift 1
+  goto check_options
+elseiff "%1" == "-xf" then
+  if "x%2" == "x" (echo Missing file for "-xf" & goto How2Use)
+  set rtc_blacklist=%2
+  shift 2
+  goto check_options
+endiff
+
+iff %rtc_testenv% == unknown then
+  iff "x%rtc_tapexe%" == "x" then
+    iff exist %GPF%\BIN\tap2_%PROST%.exe then
+      set rtc_tapexe=%GPF%\BIN\tap2_%PROST%.exe
+      set rtc_testenv=old
+    else
+      set rtc_tapexe=tap2.exe
+      set rtc_testenv=new
+    endiff
+  else
+    iff %@INDEX[%rtc_tapexe%,%PROST%] == -1 then
+      set rtc_testenv=new
+    else
+      set rtc_testenv=old
+    endiff
+  endiff
+  echo Guess %rtc_testenv test environment
+else
+  iff %rtc_testenv% == new then
+    iff "x%rtc_tapexe%" == "x" then
+      set rtc_tapexe=tap2.exe
+    endiff 
+  else
+    iff "x%rtc_tapexe%" == "x" then
+      set rtc_tapexe=%GPF%\BIN\tap2_%PROST%.exe
+    endiff 
+  endiff
+  echo Use %rtc_testenv test environment
+endiff
+
+iff %rtc_testenv% == new .AND. %rtc_showtrc == 1 then
+  echo Option -st is not supported in this version for new test environment
+  set rtc_showtrc=0
+endiff
+
+if "%@INSTR[0,1,%1]" == "-" goto unknown_option
+if %#% GT 1 goto How2Use
+
+set rtc_localdir=%_CWD
+if %rtc_testenv% == new cdd %rtc_bindir%
+
+iff NOT exist %rtc_tapexe% then
+  echo %rtc_tapexe%: not found
+  goto end
+endiff
+iff NOT exist %rtc_psexe% .AND. %rtc_startstack% != 0 then
+  echo %rtc_psexe%: not found
+  goto end
+endiff
+set rtc_psexe=%@FULL[%rtc_psexe%]
+
+set ENTI=%1
+if x"%rtc_enti%" == x"" set rtc_enti=%ENTI%
+if x"%rtc_prefix%" == x"" set rtc_prefix=%ENTI%
+
+rem Stack-Specifics
+iff "x%TCDIR%" == "x" then
+  iff "%PROST" == "WARP" then
+    set TCDIR=%BINDIR%
+  else
+    set TCDIR=%TESTROOT%\%SIDE%\TEST
+  endiff
+endiff
+
+%TESTDRIVE%
+
+rem check if test case directory is substructured
+iff "x%TCNOTSUBSTRUCT" == "x" then
+  set TESTDLLDIR=%TCDIR%\%ENTI%_test
+  iff NOT exist %TESTDLLDIR%\*.dll then
+    set TESTDLLDIR=%TCDIR%\TEST_%ENTI%
+  endiff
+else
+  set TESTDLLDIR=%TCDIR%
+endiff
+
+iff NOT exist %TESTDLLDIR% then
+  echo %TESTDLLDIR% does not exist
+  goto end
+endiff
+
+rem check for blacklist
+iff "x%rtc_blacklist%" != "x" then
+  iff %@INSTR[0,1,%rtc_blacklist%] == \ .OR. %@INSTR[1,1,%rtc_blacklist%] == : then
+    iff exist %rtc_blacklist% then
+        set rtc_blacklist=%@FULL["%rtc_blacklist%"]
+    else
+      echo Cannot open %rtc_blacklist%
+      goto end
+    endiff
+  elseiff %@INDEX[%rtc_blacklist%,\] != -1 then
+    iff exist %rtc_localdir%\%rtc_blacklist% then
+      set rtc_blacklist=%rtc_localdir%\%rtc_blacklist%
+    else
+      echo Cannot open %rtc_blacklist%
+      goto end
+    endiff
+  else
+      iff exist %rtc_localdir%\%rtc_blacklist% then
+        set rtc_blacklist=%rtc_localdir%\%rtc_blacklist%
+      elseiff exist %TESTDLLDIR%\%rtc_blacklist% then
+        set rtc_blacklist=%TESTDLLDIR%\%rtc_blacklist%
+      elseiff exist %TCDIR%\%rtc_blacklist% then
+        set rtc_blacklist=%TCDIR%\%rtc_blacklist%
+      else
+        echo Cannot open %rtc_blacklist%
+        goto end
+      endiff
+  endiff
+endiff
+
+iff %rtc_testenv% == new then
+  set rtc_tappara=%rtc_tappara% -tb %ENTI%
+  set tcerr=TEST_TAP.prt
+else
+  cdd %TESTDLLDIR%
+  set tcerr=Test_%ENTI%.prt
+endiff
+
+iff NOT exist %TESTDLLDIR%\*.dll then
+  echo no testcases in %TESTDLLDIR%
+  goto end
+endiff
+
+set grep=%GPF%\tools\bin\grep.exe
+iff NOT exist %grep% then
+  echo You need %grep% to execute runalltc
+  goto end
+endiff
+set clickbtn=%GPF%\BIN\clickbtn.exe
+iff NOT exist %clickbtn% then
+  echo You need %clickbtn% to execute runalltc
+  goto end
+endiff
+iff exist %TESTDLLDIR%\%ENTI%.dll .AND. %rtc_exec_tc% == 1 then
+  set rtc_allin1=1
+  set gawk=%GPF%\tools\bin\gawk.exe
+  iff NOT exist %gawk% then
+    echo You need %gawk% to run allin1 tests
+    goto end
+  endiff
+  set dumpbin=%@SEARCH[dumpbin.exe]
+  iff NOT exist %dumpbin% then
+    echo You need dumpbin.exe to run allin1 tests
+    goto end
+  endiff
+  set rtc_expfile=%TESTDLLDIR%\%ENTI%_exp.txt
+  "%dumpbin%" /EXPORTS %TESTDLLDIR%\%ENTI%.dll | %gawk% "/ +[0-9]+ +[0-9A-F]+ [0-9A-F]+ %@UPPER[%rtc_prefix%]/ {print $4}" > %rtc_expfile%
+endiff
+iff %rtc_exec_suites% == 1 .AND. %rtc_allin1% != 1 then
+  set gawk=%GPF%\tools\bin\gawk.exe
+  iff NOT exist %gawk% then
+    echo You need %gawk% to run suites
+    goto end
+  endiff
+endiff
+rem Check ranges
+iff %rtc_exec_tc% == 1 then
+  iff %rtc_allin1% == 1 then
+    set rtc_filehdl=%@FILEOPEN[%rtc_expfile%,read]
+    set tc_exmp=%@FILEREAD[%rtc_filehdl%]
+    set tcase=%tc_exmp
+  else
+    set tc_exmp_=%@FINDFIRST[%TESTDLLDIR%\*.dll]
+    set tc_exmp=%@NAME[%tc_exmp_]
+    set tc_exmp_=%@FINDCLOSE[%TESTDLLDIR%\*.dll]
+  endiff
+  set tc_ords=%@SUBSTR[%tc_exmp,%@LEN[%rtc_prefix%]]
+  set tc_len=%@LEN[%tc_ords]
+  if %@NUMERIC[%tc_ords] == 0 set tc_len=%@DEC[%tc_len%]
+  iff x%tc_firsttc% == x then
+    iff %tc_len% == 5 then
+      set tc_firsttc=00000
+    elseiff %tc_len% == 4 then
+      set tc_firsttc=0000
+    else
+      set tc_firsttc=000
+    endiff
+  else
+    set tc_len_=%@LEN[%tc_firsttc]
+    if %@NUMERIC[%tc_firsttc] == 0 set tc_len_=%@DEC[%tc_len_%]
+    if %tc_len != %tc_len_ echo Warning: your range "%tc_firsttc" is ambigious (there are not only %tc_len_%-digit test cases)
+  endiff
+  iff x%tc_lasttc == x then
+    iff %tc_len% == 5 then
+      set tc_lasttc=99999Z
+    elseiff %tc_len% == 4 then
+      set tc_lasttc=9999Z
+    else
+      set tc_lasttc=999Z
+    endiff
+  else
+    set tc_len_=%@LEN[%tc_lasttc]
+    if %@NUMERIC[%tc_lasttc] == 0 set tc_len_=%@DEC[%tc_len_%]
+    if %tc_len != %tc_len_ echo Warning: your range "%tc_lasttc" is ambigious (there are not only %tc_len_%-digit test cases)
+endiff
+endiff
+
+iff %rtc_summary% == 1 then
+  set rtc_sumfile=%@FULL[%ENTI%.txt]
+  echo Start testing of %ENTI% on %@WORD[%@DEC[%_MONTH],%rtc_monthlist%] %_DAY% %_YEAR% at %_TIME >%rtc_sumfile%
+  set rtc_tee=%=|tee /a %rtc_sumfile%
+endiff
+
+on break gosub on_break
+
+iff %rtc_exec_suites% == 1 .AND. not exist %TESTDLLDIR%\%ENTI%.sui then
+  echo No suites file %TESTDLLDIR%\%ENTI%.sui
+  set rtc_exec_suites=0
+  if %rtc_exec_tc% == 0 goto end
+endiff
+
+iff %rtc_testenv% == new .AND. %rtc_starttst == 1 then
+  start /MIN tst sim
+  delay 2
+  iff %rtc_pcolog% == 1 then
+    start /MIN /LOW pco_srv
+    delay 2
+  else
+    set rtc_showtrc=0
+  endiff
+  rem iff %rtc_showtrc% == 1 then
+    rem start /LOW pco_view.exe
+  rem endiff
+endiff
+
+iff x"%rtc_case" != x"" then
+  set tcase=%rtc_case%
+  gosub run_test
+  goto epilogue
+endiff
+
+iff %rtc_exec_tc% == 1 then
+  iff %rtc_allin1% == 1 then
+    do while %tcase% != **EOF**
+      gosub run_test
+      iff %rtc_tcfailed% == 1 then
+        echo Testcase failed: exiting.
+        goto end
+      endiff
+      iff %rtc_tap_exitcode% == 8 .AND. %rtc_retry% != 0 then
+        set rtc_try=%@INC[%rtc_try%]
+        if %rtc_try% LE %rtc_retry% ITERATE
+        iff %rtc_tccount% == 0 then
+          echo Stack synchronization error on 1. test case in %rtc_try% retries - giving up %rtc_tee%
+          goto epilogue
+        endiff
+      endiff
+      if %rtc_exitsoon% == 1 goto epilogue
+      set tcase=%@FILEREAD[%rtc_filehdl%]
+      set rtc_try=0
+      if %rtc_tc_executed% == 1 set rtc_tccount=%@INC[%rtc_tccount%]
+    enddo
+  else
+    FOR %tcase IN (%TESTDLLDIR%\*.dll) do (
+      gosub run_test
+      iff %rtc_tcfailed% == 1 then
+        echo Testcase failed: exiting.
+        goto end
+      endiff
+      if %rtc_exitsoon% == 1 goto epilogue
+    )
+  endiff
+endiff
+
+iff %rtc_exec_suites% == 1 then
+  set rtc_suilist=%TESTDLLDIR%\%ENTI%_sui_list.txt
+  set sed=%GPF%\tools\bin\sed.exe
+  iff NOT exist %sed% then
+    echo You need %sed% to execute suites with runalltc
+    goto end
+  endiff
+  gosub mk_sui_list
+  iff %@FILESIZE[%rtc_suilist%,b] == 0 then
+    echo No suites in %TESTDLLDIR%\%ENTI%.sui
+    goto epilogue
+  endiff
+  set rtc_suifilehdl=%@FILEOPEN[%rtc_suilist%,read]
+  set tcase=#%@FILEREAD[%rtc_suifilehdl%]
+  do while %tcase% != #**EOF**
+    gosub run_test
+    if %rtc_exitsoon% == 1 goto epilogue
+    set tcase=#%@FILEREAD[%rtc_suifilehdl%]
+  enddo
+endiff
+goto epilogue
+
+:mk_sui_list
+%grep% "SUI_.*:" %TESTDLLDIR%\%ENTI%.sui | %sed% -e "s/\(SUI_[a-zA-Z0-9_]*\):/\1/g" | %gawk% -- " /SUI_/ {print $1 } " > %rtc_suilist%
+return
+
+:epilogue
+iff %rtc_testenv% == new then
+  iff %rtc_pcolog% == 1 then
+    pcoc exit > nul
+    delay 2
+    pkill pco_srv > nul
+    rem pkill pco_view > nul
+  endiff
+  if %rtc_starttst == 1 pkill tst > nul
+  iff %rtc_summary% == 1 then
+    echo End testing of %ENTI% on %@WORD[%@DEC[%_MONTH],%rtc_monthlist%] %_DAY% %_YEAR% at %_TIME >>%rtc_sumfile%
+    move /q %rtc_sumfile% %TESTDLLDIR%
+  endiff
+  iff %rtc_allin1% == 1 then
+    set rtc_filehdl=%@FILECLOSE[%rtc_filehdl%]
+    del /q %rtc_expfile%
+  endiff
+  iff %rtc_exec_suites% == 1 then
+    if %rtc_suifilehdl% != -1 set rtc_suifilehdl=%@FILECLOSE[%rtc_suifilehdl%]
+    del /q %rtc_suilist%
+  endiff
+endiff
+
+goto end
+
+:run_test
+iff %@INSTR[0,1,%tcase%] == #  then
+  set rtc_issuite=#
+  set tcase=%@SUBSTR[%tcase%,1]
+else
+  set rtc_issuite=
+endiff
+set tcname=%@NAME[%tcase]
+set tc_ords=%@SUBSTR[%tcname,%@LEN[%rtc_prefix%]]
+iff %rtc_rangeset% == 0 then
+  set rtc_inrange=1
+else iff %tc_ords% GE %tc_firsttc% .AND. %tc_ords% LE %tc_lasttc% then
+  set rtc_inrange=1
+else
+  set rtc_inrange=0
+endiff
+iff %rtc_inrange% == 1 .AND.  "x%rtc_blacklist%" != "x" then
+  %grep% -w %tcname% %rtc_blacklist% > nul
+  iff %? == 0 then
+    set rtc_inrange=0
+    echo Test case %tcname% excluded by %rtc_blacklist% %rtc_tee%
+  endiff
+endiff
+set rtc_tc_executed=0
+iff x%rtc_issuite% == x#  .OR. %rtc_inrange == 1 then
+  iff x"%rtc_echo%" == x"" .AND. not exist %TESTDLLDIR%\%tcname% then
+    mkdir %TESTDLLDIR%\%tcname%
+  endiff
+  iff %rtc_testenv% == new then
+    rem start /MIN tst sim
+    rem delay 2
+    iff %rtc_pcolog% == 1 then
+      pcoc spath %TESTDLLDIR%\%tcname% > nul
+      pcoc start %tcname% > nul
+    endiff
+    rem iff %rtc_showtrc% == 1 then
+      rem start /LOW pco_view.exe
+      rem delay 2
+    rem endiff
+  else
+    cd %tcname%
+  endiff
+  iff %rtc_startstack% == 1 then
+    start %rtc_pspara% %rtc_psexe%
+    delay  %rtc_delay%
+  endiff
+  iff %rtc_testenv% == new then
+    iff "%rtc_doasif%" == "1" then 
+      %rtc_echo% %rtc_tapexe% %rtc_tappara% %TESTDLLDIR% %rtc_issuite%%tcname > %TESTDLLDIR%\%tcname%\%ENTI%.dbg
+    else
+      %rtc_echo% %rtc_tapexe% %rtc_tappara% %TESTDLLDIR% %rtc_issuite%%tcname
+    endiff
+  else
+    %rtc_tapexe% Test 1 2 N %enti %TESTDLLDIR% %rtc_issuite%%tcname %rtc_oldtappara%
+  endiff
+  iff x"%rtc_echo%" == x"" then
+    set rtc_tap_exitcode=%?
+    set rtc_tc_executed=1
+    if %rtc_tap_exitcode% != 0 .AND. %rtc_iboe% == 1 set rtc_tcfailed=1
+    iff exist %ENTI%.dbg then
+      move /q %ENTI%.dbg %TESTDLLDIR%\%tcname%
+    endiff
+    iff exist %TESTDLLDIR%\%tcerr% then
+      move /q %TESTDLLDIR%\%tcerr% %TESTDLLDIR%\%tcname%
+      rem Check for stack sync error (exit code 8)
+      iff %rtc_tap_exitcode% != 8 .OR. %rtc_try% == %rtc_retry% then
+        %grep% -i %tcname% %TESTDLLDIR%\%tcname%\%tcerr% %rtc_tee%
+      endiff
+    endiff
+  endiff
+  if %rtc_tcfailed% == 1 return
+  iff %rtc_startstack% == 1 then
+    %clickbtn% "%@FILENAME[%rtc_psexe%] - Application Error" OK > nul
+    iff %? == 0 then
+      echo Testcase %tcname% Failed: %rtc_psexe% crashed. %rtc_tee%
+    else
+      pkill %@NAME[%rtc_psexe%] > nul
+    endiff
+  endiff
+  iff %rtc_testenv% == new then
+    rem kill p TST RCV EXTR > nul
+    rem kill q PQTST STQTST PQRCV STQRCV > nul
+    rem pkill tst > nul
+    rem delay 1
+    iff %rtc_pcolog% == 1 then
+      pcoc stop > nul
+    endiff
+    rem iff %rtc_showtrc% == 1 then
+      rem kill r data_ > nul
+      rem pkill pco_view > nul
+    rem endiff
+    rem delay 1
+  else
+    cd ..
+  endiff
+endiff
+return
+
+:on_break
+set rtc_exitsoon=1
+Echo Will exit after the next test case
+return
+
+:Need4NT
+echo "Error: 4DOS or 4NT is needed
+goto end
+
+:unknown_option
+echo Unknown Option: %1
+
+:How2Use
+text
+runalltc   : Run test cases
+Usage      : runalltc [-r [<first>]-[<last>]] [-p <ps_exe>] [-t <tap_exe>] [-sp]
+                      [-st] [-sum] [-d <delay_time>] [-b <dir>] [-v] [-pcon]
+                      [-q] [-e <entity>] [-notst] [-wtmo <time>] [-stmo <time>]
+                      [-ib] [-n] [-l <ccddata>] [-ctb] [-tp ... --] [-c <tcase>]
+                      [-xf <file>] [-pref <prefix>] [-retry <#retries>] testname
+Example    : runalltc GMM -  runs all existing test cases for GMM
+with -r    : run range from <first> to <last>
+with +s    : run all test cases including suites
+with -s    : run (only) all suites
+with -p    : take <ps_exe> as protocol stack
+with -t    : take <tap_exe> as tap
+with -tp --: pass all options between -tp and -- to tap
+with -nop  : don't start protocol stack
+with -notst: don't start tst.exe
+with -sp   : show window of protocol stack (default: don't show)
+with -st   : show trace windows (default: don't show)
+with -sum  : write summary for each test case in <testname>.txt
+with -wtmo : set Tap's default wait timeout to <time> seconds
+with -stmo : set Tap's initial synchronization timeout to <time> seconds
+with -d    : set <delay_time> (in seconds) after protocal stack starting
+with -b    : set <dir> as directory for binaries to start
+with -v    : let Tap be verbose on execution
+with -n    : let Tap only should what should happen without executing test case
+with -l    : load <ccddata> instead of the default one
+with -pcon : use pcon for primitive conversion
+with -ctb  : let Tap enable common timer base
+with -cr   : let Tap check ranges of base type
+with -oth  : let Tap configure TST to use the old header format
+with -e    : set <entity> name; necessary e.g. for suites
+with -q    : quick execution: don't log with pco
+with -ib   : immediate break on error (without stopping anything, e.g. stack)
+with -oe   : use old frame test environment
+with -c    : execute only test case <tcase>
+with -xf   : don't execute test cases that are listed in <file>
+with -pref : testcase names are named <prefix> + number
+with -retry: set number of retries for stack synchronization error
+endtext
+
+:end
+iff x%RUNALLTC_NO_SETLOCAL% == x then
+  endlocal
+endiff
+popd