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

ID | Project | Category | View Status | Date Submitted | Last Update
0006649 | Part 01: TTCN-3 Core Language | Technical | public | 30-10-2013 09:47 | 29-11-2013 12:59

Reporter | Jacob Wieland - Spirent |
Assigned To | Ina Schieferdecker |
Priority | normal | Severity | major | Reproducibility | have not tried
Status | closed | Resolution | fixed |
Platform |  | OS |  | OS Version |
Product Version |  |
Target Version | v4.6.1 (published 2014-06) | Fixed in Version | v4.6.1 (published 2014-06) |
Clause Reference(s) | 21.3.6, 21.3.7, 21.3.8
Source (company - Author) | Testing Technologies - Jacob Wieland

Summary | 0006649: inconsistency of running, done and killed operation

Description

The done operation is defined with an inconsistent semantics.
A single ptc which never has been started is not supposed to be done.
all component.done is supposed to be true if all ptcs that have been started at some point are not running anymore.
Thus, according to the current standard, if I only have a single ptc which has never been started:
-ptc.done does not match
-all component.done matches
This, in my opinion, is counter-intuitive and not a useful distinction.
In my opinion, the done operation should match if and only if the running operation when the snapshot was taken did not match where all component really should mean *all* components and not just some of them.
The same is true for the running and killed operations where the all component has a different semantics as one would expect for a single never-started component.
-ptc.running is false
-all component.running is true
-ptc.killed does not match
-all component.killed matches
Since this is more of a pathological case, I don't think that making this consistent will cause problems, even though it would be a backward incompatible change.
If this is not changed, at least some NOTES should be added to the standard, warning about this.

Steps To Reproduce |
Additional Information |
Tags | No tags attached.
Relationships |
Attached Files | CR6649.doc (164,864) 29-11-2013 11:55 http://oldforge.etsi.org/mantis/file_download.php?file_id=2960&type=bug

Issue History
Date Modified | Username | Field | Change
30-10-2013 09:47 | Jacob Wieland - Spirent | New Issue |
30-10-2013 09:47 | Jacob Wieland - Spirent | Clause Reference(s) | => 21.3.6, 21.3.7, 21.3.8
30-10-2013 09:47 | Jacob Wieland - Spirent | Source (company - Author) | => Testing Technologies - Jacob Wieland
22-11-2013 15:02 | Gyorgy Rethy | Project | TTCN-3 Change Requests => Part 01: TTCN-3 Core Language
22-11-2013 15:14 | Gyorgy Rethy | Note Added: 0011817 |
22-11-2013 15:15 | Gyorgy Rethy | Target Version | => v4.6.1 (published 2014-06)
22-11-2013 15:16 | Gyorgy Rethy | Note Edited: 0011817 |
25-11-2013 12:47 | Jacob Wieland - Spirent | Note Added: 0011822 |
25-11-2013 12:49 | Jacob Wieland - Spirent | Note Added: 0011823 |
26-11-2013 08:55 | Ina Schieferdecker | Note Added: 0011830 |
28-11-2013 13:31 | Gyorgy Rethy | Note Added: 0011860 |
28-11-2013 13:31 | Gyorgy Rethy | Assigned To | => Jacob Wieland - Spirent
28-11-2013 13:31 | Gyorgy Rethy | Status | new => assigned
29-11-2013 11:55 | Jacob Wieland - Spirent | File Added: CR6649.doc |
29-11-2013 11:56 | Jacob Wieland - Spirent | Note Added: 0011864 |
29-11-2013 11:56 | Jacob Wieland - Spirent | Assigned To | Jacob Wieland - Spirent => Ina Schieferdecker
29-11-2013 11:56 | Jacob Wieland - Spirent | Status | assigned => confirmed
29-11-2013 12:59 | Ina Schieferdecker | Note Added: 0011869 |
29-11-2013 12:59 | Ina Schieferdecker | Status | confirmed => resolved
29-11-2013 12:59 | Ina Schieferdecker | Resolution | open => fixed
29-11-2013 12:59 | Ina Schieferdecker | Status | resolved => closed
29-11-2013 12:59 | Ina Schieferdecker | Fixed in Version | => v4.6.1 (published 2014-06)

Notes

(0011817)
Gyorgy Rethy
22-11-2013 15:14 (edited on: 22-11-2013 15:16)

Backward compatibility is requirement no. 1. This CR could have been considered 10 years ago, but not today. We cannot change the semantics of TTCN-3 operations, especially when there is no error identified.
These are not pathological cases at all. MTC is commonly used for test configuration creation, starting PTCs, coordination during execution and waiting until all started PTCs finished. For efficient test case development, it is a valid use case to use just one test configuration, but start behavior only on those PTCs, which are needed for the given test case. This is much simpler, and if a new object has to be added to the test case, the test configuration need not be changed, only a function has to be started on a PTC that was unused earlier.

(0011822)
Jacob Wieland - Spirent
25-11-2013 12:47

I'm not saying that the meaning of the 'all component' (even though not really aptly named) should be changed in this regard, but the semantics of the <not ever started component>.killed|done should be changed. This is a pathological case (if not a deadlock waiting to happen, i.e. a programming error) anyway as no one in their right mind would wait for a component specifically that has never been started to finish.
In that way, the semantics of the operations could be made consistent which at the moment, they are definitely not.
Obviously, this would also not change the semantics of the scenario that you are describing.

(0011823)
Jacob Wieland - Spirent
25-11-2013 12:49

Anyway, as I have already written in my original proposal, since this is definitely a cause for potential errors (as inconsistent definitions always are), this grave difference should be at least noted/warned about in the standard.

(0011830)
Ina Schieferdecker
26-11-2013 08:55

I see the point, however, those statements are to be used by the MTC which is sequential by itself. Therefore, I agree with your judgement that it is about rather pathological cases and would prefer to add a note only in order to ensure backward compatibility.

(0011860)
Gyorgy Rethy
28-11-2013 13:31

STF discussion 2013-11-28: add notes to notify users and tool implementers about the specifics of the current defined semantics. Jens: pls. check how it is defined in Part-4.

(0011864)
Jacob Wieland - Spirent
29-11-2013 11:56

added NOTEs to done and running operation to point out the difference between single and all component application. For killed and alive it was consistent, after all.

(0011869)
Ina Schieferdecker
29-11-2013 12:59

as proposed