Logo etsi

ETSI's Bug Tracker

Notice: information submitted on the ETSI issue Tracker may be incorporated in ETSI publication(s) and therefore subject to the ETSI IPR policy.

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0007910Part 01: TTCN-3 Core LanguageNew Featurepublic13-02-2020 15:2623-11-2021 09:34
ReporterJacob Wieland - Spirent 
Assigned ToJens Grabowski 
PrioritynormalSeverityminorReproducibilityhave not tried
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version4.12.1 (published 2020-05) 
Target Version4.13.1 (ongoing)Fixed in Version4.13.1 (ongoing) 
Summary0007910: Allow parallel control parts/components
DescriptionProposal:

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 ReproduceUse 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).
TagsNo tags attached.
Clause Reference(s)8.3, 21.3
Source (company - Author)Spirent - Jacob Wieland
Attached Filesdocx file icon CR7910.docx [^] (262,278 bytes) 13-08-2020 14:49

- Relationships
related to 0007978closedGyorgy Rethy Ext Pack: Config & Deployment Support (ES 202 781) Dealing with parallel control components 

-  Notes
(0015618)
Kristóf Szabados (reporter)
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 (reporter)
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 (reporter)
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 (reporter)
13-08-2020 14:49

added proposal for main part, please review
(0015751)
Tomas Urban (developer)
14-08-2020 11:53

Please move the feature to the configuration and deployment package.
(0015801)
Jacob Wieland - Spirent (reporter)
07-12-2020 14:56

Is resolved in related issue 7978
(0015890)
Gyorgy Rethy (reporter)
17-12-2020 17:20
edited on: 17-12-2020 17:20

Implemented in draft 4.12.3

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

CR has been mistakenly implemented in the wrong TTCN-3 part. Further discussion is needed.
(0015986)
Jacob Wieland - Spirent (reporter)
10-09-2021 16:09

I have verified that the changes in the Core Language have been successfully reverted.
(0016090)
Jens Grabowski (manager)
23-11-2021 09:34

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

- 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 View Revisions
17-12-2020 16:12 Gyorgy Rethy Steps to Reproduce Updated View Revisions
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 View Revisions
17-12-2020 17:20 Gyorgy Rethy Note Edited: 0015890 View Revisions
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


MantisBT 1.2.14 [^]
Copyright © 2000 - 2024 MantisBT Team
Powered by Mantis Bugtracker