ETSI's Bug Tracker - Part 01: TTCN-3 Core Language
View Issue Details

ID | Project | Category | View Status | Date Submitted | Last Update
0007465 | Part 01: TTCN-3 Core Language | New Feature | public | 27-07-2016 13:12 | 04-01-2019 13:28

Reporter | Jacob Wieland - Spirent |
Assigned To | Gyorgy Rethy |
Priority | low | Severity | minor | Reproducibility | have not tried
Status | closed | Resolution | fixed |
Platform |  | OS |  | OS Version |
Product Version | v4.8.1 (published 2016-07) |
Target Version | 4.11.1 (published 2019-05) | Fixed in Version | 4.11.1 (published 2019-05) |
Clause Reference(s) | 8.3
Source (company - Author) | Spirent - Jacob Wieland

Summary | 0007465: control part should be able to have a runs on clause and call other control parts

Description

It should be possible to declare a runs on clause for the control part, so that the component members (except for ports) can be accessed by the control part. Naturally, only functions that are runs-on compatible shall be called by the control part.
Finally, it should be possible to call one control part in module A from a control part in module B, e.g. by referencing A.control; in the control part of B. Of course, the called control part must also be runs-on compatible with the calling control part.

Steps To Reproduce |
Additional Information |
Tags | No tags attached.

Relationships

related to | 0007806 | closed | Tomas Urban | Part 06: TTCN-3 Control Interface | TCI update: module control function

Attached Files

CR7465-v1.docx (700,001) 27-10-2017 12:17
http://oldforge.etsi.org/mantis/file_download.php?file_id=3723&type=bug
CR7465-v2.docx (568,900) 10-10-2018 08:02
http://oldforge.etsi.org/mantis/file_download.php?file_id=3793&type=bug
CR7465-v3.docx (736,924) 10-10-2018 11:22
http://oldforge.etsi.org/mantis/file_download.php?file_id=3795&type=bug
CR7465-v4.docx (588,675) 11-10-2018 10:22
http://oldforge.etsi.org/mantis/file_download.php?file_id=3800&type=bug

Issue History
Date Modified | Username | Field | Change
27-07-2016 13:12 | Jacob Wieland - Spirent | New Issue |
15-08-2016 11:01 | Jens Grabowski | Note Added: 0014068 |
15-08-2016 11:01 | Jens Grabowski | Assigned To | => Jens Grabowski
15-08-2016 11:01 | Jens Grabowski | Priority | normal => low
15-08-2016 11:01 | Jens Grabowski | Status | new => assigned
17-08-2016 11:21 | Jacob Wieland - Spirent | Project | TTCN-3 Change Requests => Part 01: TTCN-3 Core Language
17-08-2016 11:21 | Jacob Wieland - Spirent | Product Version | => v4.8.1 (published 2016-07)
17-08-2016 11:21 | Jacob Wieland - Spirent | Target Version | => v4.9.1 (published 2017-05)
16-11-2016 14:36 | Jens Grabowski | Note Added: 0014269 |
16-11-2016 14:36 | Jens Grabowski | Target Version | v4.9.1 (published 2017-05) => v4.10.1 (published 2018-05)
26-10-2017 11:33 | Jens Grabowski | Assigned To | Jens Grabowski => Tomas Urban
26-10-2017 13:56 | Tomas Urban | Note Added: 0014895 |
26-10-2017 14:01 | Tomas Urban | Note Edited: 0014895 | bug_revision_view_page.php?bugnote_id=14895#r444
27-10-2017 12:17 | Tomas Urban | File Added: CR7465-v1.docx |
27-10-2017 12:18 | Tomas Urban | Note Added: 0014913 |
27-10-2017 12:18 | Tomas Urban | Assigned To | Tomas Urban => Jacob Wieland - Spirent
27-10-2017 12:18 | Tomas Urban | Status | assigned => confirmed
05-01-2018 13:31 | Gyorgy Rethy | Target Version | v4.10.1 (published 2018-05) => 4.11.1 (published 2019-05)
05-01-2018 13:58 | Gyorgy Rethy | Note Added: 0015017 |
15-01-2018 13:13 | Jacob Wieland - Spirent | Note Added: 0015029 |
15-01-2018 13:14 | Jacob Wieland - Spirent | Note Edited: 0015029 | bug_revision_view_page.php?bugnote_id=15029#r460
10-10-2018 08:02 | Jacob Wieland - Spirent | File Added: CR7465-v2.docx |
10-10-2018 08:07 | Jacob Wieland - Spirent | Note Added: 0015236 |
10-10-2018 08:07 | Jacob Wieland - Spirent | Status | confirmed => new
10-10-2018 08:08 | Jacob Wieland - Spirent | Note Added: 0015237 |
10-10-2018 08:08 | Jacob Wieland - Spirent | Assigned To | Jacob Wieland - Spirent => Tomas Urban
10-10-2018 08:08 | Jacob Wieland - Spirent | Status | new => confirmed
10-10-2018 11:22 | Tomas Urban | File Added: CR7465-v3.docx |
10-10-2018 11:27 | Tomas Urban | Note Added: 0015240 |
10-10-2018 11:27 | Tomas Urban | Assigned To | Tomas Urban => Jacob Wieland - Spirent
10-10-2018 11:32 | Tomas Urban | Relationship added | related to 0007806
10-10-2018 16:48 | Jacob Wieland - Spirent | Note Added: 0015244 |
10-10-2018 16:48 | Jacob Wieland - Spirent | Status | confirmed => resolved
10-10-2018 16:48 | Jacob Wieland - Spirent | Fixed in Version | => 4.11.1 (published 2019-05)
10-10-2018 16:48 | Jacob Wieland - Spirent | Resolution | open => fixed
10-10-2018 16:48 | Jacob Wieland - Spirent | Assigned To | Jacob Wieland - Spirent => Jens Grabowski
11-10-2018 10:21 | KristÃ³f Szabados | Assigned To | Jens Grabowski => KristÃ³f Szabados
11-10-2018 10:21 | KristÃ³f Szabados | Status | resolved => acknowledged
11-10-2018 10:22 | KristÃ³f Szabados | File Added: CR7465-v4.docx |
11-10-2018 10:23 | KristÃ³f Szabados | Assigned To | KristÃ³f Szabados => Jacob Wieland - Spirent
11-10-2018 10:23 | KristÃ³f Szabados | Status | acknowledged => assigned
11-10-2018 10:23 | KristÃ³f Szabados | Note Added: 0015249 |
11-10-2018 11:12 | Jacob Wieland - Spirent | Note Added: 0015250 |
11-10-2018 11:12 | Jacob Wieland - Spirent | Status | assigned => resolved
11-10-2018 11:12 | Jacob Wieland - Spirent | Assigned To | Jacob Wieland - Spirent => Jens Grabowski
24-12-2018 15:22 | Jens Grabowski | Assigned To | Jens Grabowski => Gyorgy Rethy
24-12-2018 15:22 | Jens Grabowski | Status | resolved => assigned
24-12-2018 15:23 | Jens Grabowski | Status | assigned => resolved
04-01-2019 13:27 | Gyorgy Rethy | Note Added: 0015294 |
04-01-2019 13:27 | Gyorgy Rethy | Status | resolved => closed

Notes

(0014068)
Jens Grabowski
15-08-2016 11:01

STF discussion: Resonable extension. Low Priority, to be done if time or in the context of the next ToR

(0014269)
Jens Grabowski
16-11-2016 14:36

Moved to the 2017 Maintenance STF. Candidate for OO discussions.

(0014895)
Tomas Urban
26-10-2017 13:56 (edited on: 26-10-2017 14:01)

Result of the STF discussion:
The control part is a short-hand notation for a function with the following syntax:
function @control control() { ... }
In order to harmonize the concept with the remaining rules on functions the following shall be changed in the core language standard:
1. In the BNF, the control section should be moved under function definitions
2. The control function can have parameters, return value and "runs on" clause
3. The component type in the runs on clause shall not contain any ports
4. The @control modifier shall be introduced. The functions with this modifier can be called only from the control part.
5. The control function can be used as any other function
6. The control function is automatically imported when importing all definitions of a module, all functions and a group where it is specified
7. TCI has to be changed in order to support the added features (new CR is required)

(0014913)
Tomas Urban
27-10-2017 12:18

Resolution uploaded. Please check. Again, there's a lot of changes in the terminology and many deleted sections.

(0015017)
Gyorgy Rethy
05-01-2018 13:58

I agree that making control parts more flexible to use, i.e. be call-able by other control parts, parameterize-able etc. may be useful. Also agree that de-facto control parts are a special kind of functions.
However, unclear to me
- what complication of the syntax would give to the user? Testcases are also a special kind of functions, but we are not calling them
function @testcase MyTest1()...
On the other hand, control parts (we can even call them test control functions) has a specific role in testing: test execution control. If they are defined as "just another kind of function", they will loose this specific role in the head of many...
I think this would be a loss to the language. I propose to stay with the simple syntax control()[runs on XY]{...} and use the name "test control [function]" in the textual descriptions.
- Just from the short notes below not clear was meant by "5. The control function can be used as any other function" at the discussion, but see my comment above: the point of the control part is that they ROLE is not like other types of functions - though their USE may be made similar to the use of "ordinary" functions.

(0015029)
Jacob Wieland - Spirent
15-01-2018 13:13 (edited on: 15-01-2018 13:14)

I agree with using the terminology 'test control [function]' or 'control function' with the short 'control part' notation still usable for convenience/backward compatibility.
I think what the text wants to convey is that these control functions behave like any other functions in regard to function calling, parameter passing, runs on compatibility etc. with the additional restrictions imposed on all behaviors running in a test control context.
As it is today, normal functions cannot be distinguished from control functions so static analysis has a hard time to determine whether the control-behavior restrictions are/need to be met in a function.
By explicitly marking control functions, the static analysis becomes able to distinguish and check them.
For further harmonization, one could even think about parallel control components (PCCs) (analogous to PTCs, but governed by the main control component (MCC)) which could be allowed to communicate with each other or the upper tester.
With such an approach, a common scenario of running a testcase vs. a simulation testcase that simulates the system under test could be achieved by a control part which starts these two testcases in parallel (where each testcase of course still has the usual closed-world of MTC/PTCs that cannot interact with the ones in the other testcase directly).

(0015236)
Jacob Wieland - Spirent
10-10-2018 08:07

I have rearranged the sections somewhat and introduced the terminology control behaviour, control function, control altstep and explicit control behaviour/function/altstep in the definitions section to be referred to in the rest of the text (instead of 'behaviour running on control component' and suchlike).
I have also added the possibility to call other control parts (i.e. control functions defined by current shorthand notation) without parameter list, i.e.
module M0 {
...
control {
M1.control;
M2.control;
}
}

(0015237)
Jacob Wieland - Spirent
10-10-2018 08:08

please review

(0015240)
Tomas Urban
10-10-2018 11:27

I am fine with the proposal. However, I still made some minor changes, mostly in terminology and in the scheme for scope units (which is not marked as a change by Word). Please check and if you don't find any major issues, the CR can be marked as resolved.

(0015244)
Jacob Wieland - Spirent
10-10-2018 16:48

consider this resolved

(0015249)
KristÃ³f Szabados
11-10-2018 10:23

I have added to note to clarify that each module can have at most 1 control part. Please check.

(0015250)
Jacob Wieland - Spirent
11-10-2018 11:12

comment is fine

(0015294)
Gyorgy Rethy
04-01-2019 13:27

Added to draft version 4.10.2.