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

ID | Project | Category | View Status | Date Submitted | Last Update
0007910 | Part 01: TTCN-3 Core Language | New Feature | public | 13-02-2020 15:26 | 23-11-2021 09:34

Reporter | Jacob Wieland - Spirent |
Assigned To | Jens Grabowski |
Priority | normal | Severity | minor | Reproducibility | have not tried
Status | closed | Resolution | fixed |
Platform |  | OS |  | OS Version |
Product Version | 4.12.1 (published 2020-05) |
Target Version | 4.13.1 (ongoing) | Fixed in Version | 4.13.1 (ongoing) |
Clause Reference(s) | 8.3, 21.3
Source (company - Author) | Spirent - Jacob Wieland

Summary | 0007910: Allow parallel control parts/components

Description

Proposal:
Allow creation of components (called maybe parallel control components or PCC) from a control component. The current main control part would run on the MCC (master control component).
Example:
control {
var ControlComponent pcc1 := ControlComponent.create;
var ControlComponent pcc2 := ControlComponent.create;
pcc1.start(f_start_testcase());
pcc2.start(f_start_mirror_testcase());
all component.done;
}
function @control f_start_testcase() {
execute(TC());
}
function @control f_start_mirror_testcase() {
execute(TC_mirror());
}
Semantics:
Every parallel control part has the same semantics and capabilities as the current control part. Since there are no global variables in TTCN-3, there should be no interference between the testcases, so parallelization should not be an issue.
The semantics of 'all component', 'any component' would need to be defined in the control context. It should refer only to the control components.
Stopping and killing of control components should kill the testcase currently running on the component (if any).
Intercomponent communication for synchronization purposes between control components could also be allowed (for instance if information needs to flow between the MCC and the PCCs).
Even system communication could be allowed, e.g. when system resources need to be allocated globally for a parallel testcase run or other upper tester communication.

Steps To Reproduce

Use cases:
- running actual testcase and mock/mirror-testcase in parallel
- running testcases in parallel to use system resources (multiple cores etc.) more efficiently and thus being able to produce test results faster
Of course, only those testcases that don't interfere with each other (for instance by trying to use the same system ports) can be parallelized, but that is outside the scope of TTCN-3 (the same problem arises if you start multiple TTCN-3 tools in parallel).

Additional Information |
Tags | No tags attached.

Relationships

related to | 0007978 | closed | Gyorgy Rethy | Ext Pack: Config & Deployment Support (ES 202 781) | Dealing with parallel control components

Attached Files | CR7910.docx (262,278) 13-08-2020 14:49 http://oldforge.etsi.org/mantis/file_download.php?file_id=3936&type=bug

Issue History
Date Modified | Username | Field | Change
13-02-2020 15:26 | Jacob Wieland - Spirent | New Issue |
15-03-2020 13:58 | KristÃ³f Szabados | Note Added: 0015618 |
15-03-2020 14:01 | KristÃ³f Szabados | Note Added: 0015619 |
16-03-2020 11:40 | Jacob Wieland - Spirent | Note Added: 0015620 |
10-08-2020 10:36 | Jens Grabowski | Project | TTCN-3 Change Requests => Part 01: TTCN-3 Core Language
10-08-2020 10:51 | Jens Grabowski | Assigned To | => Jacob Wieland - Spirent
10-08-2020 10:51 | Jens Grabowski | Status | new => assigned
13-08-2020 14:49 | Jacob Wieland - Spirent | File Added: CR7910.docx |
13-08-2020 14:49 | Jacob Wieland - Spirent | Note Added: 0015731 |
13-08-2020 14:49 | Jacob Wieland - Spirent | Assigned To | Jacob Wieland - Spirent => Tomas Urban
13-08-2020 14:49 | Jacob Wieland - Spirent | Status | assigned => confirmed
13-08-2020 15:01 | Jacob Wieland - Spirent | Relationship added | related to 0007978
14-08-2020 11:52 | Tomas Urban | Assigned To | Tomas Urban => Jacob Wieland - Spirent
14-08-2020 11:52 | Tomas Urban | Status | confirmed => assigned
14-08-2020 11:53 | Tomas Urban | Note Added: 0015751 |
09-10-2020 15:13 | Jacob Wieland - Spirent | Project | Part 01: TTCN-3 Core Language => Ext Pack: Config & Deployment Support (ES 202 781)
07-12-2020 14:56 | Jacob Wieland - Spirent | Note Added: 0015801 |
07-12-2020 14:56 | Jacob Wieland - Spirent | Status | assigned => resolved
07-12-2020 14:56 | Jacob Wieland - Spirent | Resolution | open => fixed
10-12-2020 09:27 | Jens Grabowski | Assigned To | Jacob Wieland - Spirent => Jens Grabowski
10-12-2020 09:27 | Jens Grabowski | Status | resolved => assigned
10-12-2020 09:27 | Jens Grabowski | Status | assigned => resolved
17-12-2020 16:11 | Gyorgy Rethy | Assigned To | Jens Grabowski => Gyorgy Rethy
17-12-2020 16:11 | Gyorgy Rethy | Status | resolved => assigned
17-12-2020 16:12 | Gyorgy Rethy | Status | assigned => resolved
17-12-2020 16:12 | Gyorgy Rethy | Description Updated | bug_revision_view_page.php?rev_id=535#r535
17-12-2020 16:12 | Gyorgy Rethy | Steps to Reproduce Updated | bug_revision_view_page.php?rev_id=537#r537
17-12-2020 17:19 | Gyorgy Rethy | Project | Ext Pack: Config & Deployment Support (ES 202 781) => Part 01: TTCN-3 Core Language
17-12-2020 17:20 | Gyorgy Rethy | Note Added: 0015890 |
17-12-2020 17:20 | Gyorgy Rethy | Status | resolved => closed
17-12-2020 17:20 | Gyorgy Rethy | Product Version | => 4.12.1 (published 2020-05)
17-12-2020 17:20 | Gyorgy Rethy | Fixed in Version | => 4.13.1 (ongoing)
17-12-2020 17:20 | Gyorgy Rethy | Target Version | => 4.13.1 (ongoing)
17-12-2020 17:20 | Gyorgy Rethy | Description Updated | bug_revision_view_page.php?rev_id=538#r538
17-12-2020 17:20 | Gyorgy Rethy | Note Edited: 0015890 | bug_revision_view_page.php?bugnote_id=15890#r540
09-09-2021 09:36 | Jens Grabowski | Assigned To | Gyorgy Rethy => Jens Grabowski
09-09-2021 09:36 | Jens Grabowski | Note Added: 0015963 |
09-09-2021 09:36 | Jens Grabowski | Status | closed => feedback
09-09-2021 09:36 | Jens Grabowski | Resolution | fixed => reopened
10-09-2021 16:09 | Jacob Wieland - Spirent | Note Added: 0015986 |
10-09-2021 16:09 | Jacob Wieland - Spirent | Status | feedback => assigned
10-09-2021 16:09 | Jacob Wieland - Spirent | Status | assigned => resolved
10-09-2021 16:09 | Jacob Wieland - Spirent | Resolution | reopened => fixed
23-11-2021 09:34 | Jens Grabowski | Note Added: 0016090 |
23-11-2021 09:34 | Jens Grabowski | Status | resolved => closed

Notes

(0015618)
KristÃ³f Szabados
15-03-2020 13:58

hmmm ... this make quite a big change in the language.
We will need a new way of passing parameters to testcases, which are both in and out at the same time, but not inout as in that case both testcases could modify them at the same time.
We might also need to introduce synchronization into the standard.
It is right now taken as granted, that const and module parameters are read from only one place at one time ... being read in parallel might not be the same (if for example a tool vendor uses lazy initialization).

(0015619)
KristÃ³f Szabados
15-03-2020 14:01

This might also cause some practical issues, when already existing external functions (and other user implemented pieces of functionality) is not consistently updated before the first use.
For example and external function used for acessing some efficient data structure, might no longer be safe to be used from parallel environments.
There is so much already existing code of this kind, that need to think of this situation (most probably such codes will not be updated all at once).

(0015620)
Jacob Wieland - Spirent
16-03-2020 11:40

I don't see the parameter passing problems. Parameter passing should work the same way as now with a single control component. Every parallel control component can run at most one execute statement at a time as it is blocking and can pass only its own variables into possible inout/out parameters of the testcase, same as now. Other information flow should be done via ports between the components.
As module parameters are to initialized deterministic, as far as I can remember (same for templates and constants), I also don't see the synchronization issue, though of course, we need to investigate that properly.
To avoid synchronization issues of old external function implementations, a tool vendor could take a sort of sandbox approach where each parallel control component code runs on its own resources (similar to now where you would have to start two different processes if you want to run testcases in parallel).
I would say, though, that this is beyond the scope of the standard and more of a tooling issue (as pretty much everything related to external function implementation is).

(0015731)
Jacob Wieland - Spirent
13-08-2020 14:49

added proposal for main part, please review

(0015751)
Tomas Urban
14-08-2020 11:53

Please move the feature to the configuration and deployment package.

(0015801)
Jacob Wieland - Spirent
07-12-2020 14:56

Is resolved in related issue 7978

(0015890)
Gyorgy Rethy
17-12-2020 17:20

Implemented in draft 4.12.3

(0015963)
Jens Grabowski
09-09-2021 09:36

CR has been mistakenly implemented in the wrong TTCN-3 part. Further discussion is needed.

(0015986)
Jacob Wieland - Spirent
10-09-2021 16:09

I have verified that the changes in the Core Language have been successfully reverted.

(0016090)
Jens Grabowski
23-11-2021 09:34

Document successfully reverted. The feature has already been implemented in the configuration and deployment extension