caesar.open [caesar_opt] spec[.lotos] [cc_opt] tgv [tgv_opt] tp[.bcg|.aut]
for a BCG specification:
bcg_open [bcg_opt] spec[.bcg] [cc_opt] tgv [tgv_opt] tp[.bcg|.aut]
caesar.open and bcg_open compile the specification and link it with the TGV library tgv.a. The resulting user program tgv, generated in the current directory, depends on the specification and can be executed with the command:
tgv [tgv_opt] tp[.bcg|.aut]
The specification and the test purpose are Inputs/Outputs Labeled Transition Systems (IOLTS ). The specification is expressed as a BCG graph spec.bcg (completely generated IOLTS ) or as a LOTOS program spec.lotos (IOLTS generated on the fly).
The test purpose is described either in a BCG file tp.bcg or in an Aut file tp.aut.
Note 1: to translate an Aut graph into a BCG graph, use the bcg_io tool with option -bcg -unparse to avoid label parsing. Otherwise, labels can be changed (in particular, an extra space may be introduced before occurrences of the "!" character, thus leading to a different behaviour of tgv for test purpose in Aut format and the same test purpose in BCG format translated without -unparse).
Note 2: any character string naming an action must be enclosed in double quotes if it contains a blank or a comma.
Note 3: the special label "i" is used to specify an invisible
action (i.e. internal action).
ACCEPT or accept (respectively REFUSE or refuse).The
purpose must own one accepting state at least. The predefined label * (says
otherwise) is used to complete the action grammar. All action names are
regular expressions (according to the definition given in the manual page
of the POSIX
regexp
). The test purpose is written in accordance with
the specification label names (before renaming and hidding). It can also
have transitions labelled with invisible actions of the specification.
So, for an Aut test purpose, a transition has the following grammar:
<transition> ::=
'(' <from_state> ',' <action> ',' <to_state> ')' |
'(' <state> ',' 'ACCEPT'|'accept' ',' <state> ')' |
'(' <state> ',' 'REFUSE'|'refuse' ',' <state> ')' |
'(' <from_state> ',' '*' ',' <to_state> ')'
<action> ::= <UNIX_regexp>
| '"' <UNIX_regexp> '"'
Note: if the extension of the test purpose filename is omitted (or is different from .bcg and .aut), the file is first searched with .bcg extension and then with .aut extension.
Actions labels of this LTS
are exactly the same
as specification ones, plus some predefined labels as LOCK, OUTPUTLOCK,
DEADLOCK, LIVELOCK used in lock transition. A type (INPUT or OUTPUT), view
from the tester, is added to each label. In some transitions, a verdict
(PASS) or PASS or (INCONCLUSIVE) or INCONCLUSIVE is also added to the label.
A verdict not enclosed in parentheses means that the tester has reached
a stable state from which no output of the implementation under test (IUT
)
is expected. A PASS verdict on a transition means that in the state reached
by this transition, the tester has detected no implementation error in
the IUT
. An INCONCLUSIVE verdict is present on a transition corresponding
to a possible output of the specification that leads to a sequence not
satisfying the test purpose. The FAIL transitions are implicit (from each
state, unrecognized actions lead to a FAIL state).
The options caesar_opt, if any, are passed to caesar and to caesar.adt .
The options cc_opt, if any, are passed to cc(1).
The options tgv_opt, if any, are passed to the TGV program.
des (0, 2, 2)
(0, "dummy", 1)
(1, ACCEPT, 1).
LOCK) and prints those
that remain after conflicts have been resolved. Use -keeplock (without -csg)
to keep all the computed locks (the produced test graph is no more completely
controllable).
OUTPUTLOCK, DEADLOCK,
LIVELOCK) with option -difflock.
<file.io> ::= 'input' | 'output' \n <regexp-list>
<regexp-list> ::= <regexp> \n <regexp-list>
| "<regexp>" \n <regexp-list>
| <empty>
Semantically, if the first line is equal to input (respectively output),
the body of the file describes all the inputs actions (respectively all
outputs actions).
Note: If option -io is not given, TGV
uses by default
the file $CADP/src/tgv/default.io the contents of which are:
input
[^!]*[?].*
Note 1: renaming patterns are applied before hiding patterns. Renaming and hiding patterns are applied after the synchronous product SPECxTP.
Note 2: the .io file must be written in accordance with the .ren (or .rename ) and .hid (or .hide ) files (because the .io file is read after the renaming and hiding).
File file produced".
Otherwise, the message "No test case" is printed: may be it is because the
test purpose is not valid, or because of an error in the description of
files .io or .hid or .ren