Newer
Older
Author: Elemer Lelik, Lenard Nagy
:author: Elemer Lelik, Lenard Nagy
:sectnums:
:doctype: book
:leveloffset: +1
:toc:
ifdef::env-github,backend-html5[]
image::images/titan_logo.png[alt]
endif::[]
= Introduction
This document describes changes implemented in TITAN TTCN–3 toolset and the associated Test Port API from the initial TITAN TTCN–3 release through to the current release.
The document is organized as follows: <<what-s-new-in-this-version,What's new in this version?>> gives a short overview about the new features of major releases. <<version-history,Version history>> contains the detailed list of changes, including new functionalities and solved problems, throughout the history of TITAN TTCN–3 toolset. <<Changes-of-Test-Port-API,Changes of Test Port API>> summarizes the changes of the Test Port API in each version.
[[what-s-new-in-this-version]]
= What’s new in this version?
[[version-8-3-0]]
== Version 8.3.0
This release contains some new features and bugfixes:
* C++ compiler
** Bugfixes (545, 607, 612, 622, 623, 624, 631 , 651, 662)
** Object Oriented features improvements – Full compliancy to v1.4.1 (661, 663, 664)
* Eclipse Plug-ins
** Bugfixes (497, 498, 499, 500)
[[version-8-2-0]]
== Version 8.2.0
To the memory of Elemer Lelik.
This release contains some new features and bugfixes:
* C++ compiler
** Bugfixes (481, 576, 578, 579, 580, 581, 582, 583, 585, 586, 588, 592, 595, 597, 598, 599)
** Object Oriented features improvements (533, 577, 596)
** Use of octetstring in LENGTHTO (554)
* Eclipse Plug-ins
** Bugfixes (404, 429, 432, 447, 448, 450, 461, 462, 465, 469, 475, 476 )
** New documented limitation (471)
** Eclipse IDE UI enhancements (371, 442, 449, 451, 452, 453, 454, 457, 459, 460, 464, 466, 468)
** JSON default attributes upgraded (416)
** Use of octetstring in LENGTHTO (419)
** Uplift minimum Java version from 1.6 to 1.8 (463)
[[version-8-1-0]]
== Version 8.1.0
This release contains some new features and bugfixes:
* C++ compiler
** Bugfixes (495, 506, 544, 555, 556, 557, 558, 559, 560, 563, 572, 573, 574, 575)
** Object Oriented features improvements (533, 571)
** Support Dynamic Matching (548, 549, 550)
** Commit ID appears in version printout (561)
** INTEGER(BIGNUM *other_value) Titan API call made public (551)
* Eclipse Plug-ins
** Bugfixes (402, 406, 412, 420, 421, 426, 428, 430, 431, 440, 445, 446)
** ANTLR version updated to 4.7.1 (409, 410)
** Object Oriented feature enhancements (423, 424)
** Eclipse IDE UI enhancements (397, 418, 441)
* Test Ports
** Java implementation of IPL4 Test Port
This release contains some new features and bugfixes:
* General
** Titan source repositories moved to GitLab
* C++ compiler
** Exception handling implemented in Object Oriented features; the OOP implementation now complies to v1.1.1 of the related standard
** OOP Standard Collections published
** JSON default handling optimization (547)
** XML handling bugfix (545, Backward-incompatible change!)
* Eclipse Plug-ins
** Bugfixes (390, 399, 408, 411)
** Java compiler can produce CI-integrable output (EXPERIMENTAL)
[[version-7-2-2]]
== Version 7.2.2
This release contains only a bugfix for TPD file import (572399).
[[version-7-2-1]]
== Version 7.2.1
This release contains some new features and bugfixes:
* General
** Titan version numbering changed to X.Y.Z format
* C++ compiler
** Object Oriented features bugfixes (568694, 568714, 568716, 568742, 568743, 568745)
** Config file parsing enhancement (570921)
** XML decoding bugfixes (570707, 569238)
* Eclipse Plug-ins
** Support for Eclipse IDE Dark theme in TTCN-3 editor code colorization
** Java code generation and execution simplified
This release contains some new features and bugfixes.
New Features:
* Changes in Titan product code(Bug 565875 )
* Changes in licensing(relevant for internal users only ):
** License ordering/extension page moved
** License ordering/extension API to automate license renewal
* Changes in shipping libedit (Bug 565893 )
* Titan image added to ADP marketplace(relevant for internal users only)
* Relaxing the C/C++ compiler version check for Titan 7.1.1 and upwards
(Bug 564194 )
* Object-oriented language features (Bug 563718 )
* Allow unsafe universal charstring to charstring conversion (Bug 564585 )
* Support for @default in the compiler and in the xsd2ttcn converter (Bugs 564919, 564920)
* Java-based Main Controller implemented
* Java-based JSON codec implemented
[[version-7-1-crl-113-200-7-r1a]]
This release contains major new features, backward incompatible changes and some bugfixes.
With this release we have also upgraded our license from Eclipse Plugin License 1.0 to Eclipse Plugin License 2.0.
New Features:
* The C side of the toolset will now support the Object Oriented Extension of the TTCN-3 standard (with some limitations).
* In the Designer plugin we have parallelized several algorithms resulting in 3-4* faster execution:
** The semantic checking of modules inside the same project.
** Projects in a project hierarchy, not dependent on each other, will not be able to be analyzed in parallel.
** The Code Smell checkers of Titanium will also run in parallel.
* On the Java side of the toolset, we have added support for JSON encoding/decoding (with some limitations).
Backward incompatible changes:
* 'omit' matching mechanism shouldn't be allowed for union fields
* Compilation issue in the Java code generator when used with very large modules
* [UPDATE 3rd February, 2021] Escaping of TTCN-JSON strings now follows standard (escaping of "/" character changed!)
[[version-6-6-crl-113-200-6-r6b]]
This a bugfix release, with the following new features:
* Enhance performance of TIMER::get_min_expiration
* Legitimize compiler option '-F'
* Colorize compiler error/warning messages
* change the internal representation of octetstring from char[] to byte[] for efficiency
* CSN.1 L/H in the RAW codec
* change in how xsd files with NoTargetNamespace should be mapped to TTCN-3
* add support for structured type compatibility to the Java code generator
* add support for module parameter handling to the Java side runtime
This release introduces two major new features in the form of two new experimental Eclipse plug-ins:
* a Java codegeneration plug-in, see: https://gitlab.eclipse.org/eclipse/titan/titan.core/blob/master/usrguide/java_referenceguide/JavaReferenceGuide.adoc
https://gitlab.eclipse.org/eclipse/titan/titan.core/blob/master/usrguide/JavaCodegenExecTutorial.pdf
https://gitlab.eclipse.org/eclipse/titan/titan.EclipsePlug-ins/blob/master/org.eclipse.titanium.refactoring/docs/Titanium_Refactoring_Description/Titanium_Refactoring_Description.adoc
Apart from the above, this version has the following new features of the Titan compiler and excutor:
* Printing symbolic version in 'compiler -v’
* Legitimized compiler option '-0’
* New command line option '-p' implemented for TTCN binaries (both in single mode and parallel mode), which lists all module parameters
* Support for real-time testing
* Implementation of map param/unmap param
* Extended 'default' JSON attribute for structured types
[[version-6-5-crl-113-200-6-r5a]]
== Version 6.5 (CRL 113 200/6 R5A)
This release introduces real-time support according to
TTCN-3 Performance and Real Time Testing
as a major new feature.
This version has the following new features:
* License upgrade to EPL 2.0
* Documentation migrated to asciidoc
* Bugfixes for core, ASN.1, XML, RAW, OER codecs, XSD2TTCN
* New RAW coding instruction 'FORCEOMIT'
* New JSON attribute 'as map'
* Attribute 'text ... as ...' for JSON
* Adopt Makefilegen for the Debian packaging
* Support for real-time testing in TITAN
Added compiler option '-I', which enables the real-time testing features mentioned here.
The features are disabled by default, and the new keywords ('now', 'realtime' and 'timestamp')
can be used as identifiers again (for backward compatibility).
Also added makefilegen option '-i', which activates this option for the compiler,
and the makefile setting 'enableRealtimeTesting' in the TPD, which does the same thing.
* New flag for xsd2ttcn
-o: generate all definitions into one module (called XSD_Definitions)
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
[[version-6-4-crl-113-200-6-r4a]]
== Version 6.4 (CRL 113 200/6 R4A)
This release is mainly a corrective release, it introduces no major new features. No backward incompatibilities are to be expected, with maybe one exception we see as a minor risk: the fix for Bug 533767 - RAW encoder ALIGN(right) is working according of specification of ALIGN(left) (and vice versa) for octetstring may induce under some unlikely circumstances an incompatible behavior.
This version has the following new features:
* Implement verdict redirect for 'done' statement
* `str2float` should handle special float values
* RT2 record equality
* `string2ttcn` to filter patterns of visible characters in octetstrings
* Syntax to bind a variant attribute to multiple encodings
* TITAN build on Alpine Linux
* new tpd tag `disableUserInformation`
* runs on scope reduction (Titanium)
* Add discarding option to `setstate` operation
* Notify user if port is not mapped in translation mode
* Implement reference to port in translation function
* Implement extendable sequence coding in OER
* TAG and CROSSTAG for JSON encoder
[[version-6-3-crl-113-200-6-r3a]]
== Version 6.3 (CRL 113 200/6 R3A)
This version has the following new features:
* new compiler options:
** e: enforce legacy handling of `encode` and `variant` attributes
** O: disable OER encoder/decoder functions
** D: disable user and time information generation in the generated files
* Support for multiple encodings
* Implement OER coder in TITAN (with the option to restrict generation of OER codecs)
* Implement OER negative testing
* Allowing to start functions with `out` and `inout` formal parameters
* Enable 'out' parameters for behavior functions in the 'start' operation support for dynamic erroneous attributes
* Allow translation ports to work as internal ports
* Allow sending and receiving during translation functions
* Flag to disable time and user information in the generated files
* Implement mtc and system clauses in `testcase` and `altstep` and functions
* Add runtime configuration setting for plain XML and JSON encodings
* Implement `json2cbor` and `cbor2json`
* Implement `json2bson` and `bson2json`
* JSON enc/dec: encoding enumerated values in number form
* Support `enableLegacyEncoding` in tpd
* Add the encoding legacy switch to tpd TEXT codec
* Add the encoding legacy switch to makefilegen
* Add support for NULL terminated string in RAW
* RAW: add offset option to `LENGTHTO` attribute
* RAW: Support also `… bits` syntax in variant attributes
[[version-6-2-crl-113-200-6-r2a]]
== Version 6.2 (CRL 113 200/6 R2A)
This version has the following new features:
* new compiler options:
** J: Compiler (and xsd2ttcn, makefilegen) option to read input files list from a text file
** N: ignore UNTAGGED encoding instruction on top level unions (legacy behavior)
* support of encvalue/decvalue for ASN.1 types
* support for implicit call of PER codec external functions
* implemented: ports with translation capability
* support for concatenation of templates
* implemented any from clause and index redirects with the use of the @index modifier (see standard, chapters 21-23)
* support for dynamic erroneous attributes
* implemented @fuzzy support
* support for external functions for decmatch and @decoded
* no support of Solaris binaries from this release of Titan (older versions of course will continue to support Solaris)
* makefilegen more restrictive on name attribute of the referenced project
* makefilegen: remove generated headers dependency from all `.c` `.cc` files
* (This will revert the following bugs: Bug 499963 - The generated `Makefile` does not make full build when `-j` switch is present ; Bug 512688 - makefilegen: Incorrect `.c` and `.cc` compiling rule )
* XER: allow `anytype` to be xer enc/decodable
* JSON `as value` attribute extended for records/sets with one field and for the `anytype`
* *make archive* button in Eclipse
* support for `make port` command in Eclipse
* plug-ins upgraded to Jung 2.1 +
This list is not comprehensive; for details, see document embedded in PRI.
[[version-6-1-crl-113-200-6-r1a]]
== Version 6.1 (CRL 113 200/6 R1A)
This version has the following new features:
* support for `mctr reconf` command
* command line debugger
* advanced code splitting
* makefilegen capability to handle .xsd files
* makefilegen and compiler to handle file lists in files(`compiler –J` file or `makefilegen –J` file)
* new compiler switch for decreasing variant errorlevel from error to warning
* LTTng logger plug-in
* encvalue/decvalue for ASN.1 types
* Titan build for ARM/Raspberry Pi
* decmatch and @decoded
* istemplatekind
* select union
* @nocase
* Partial @deterministic support
* Storing parts of received messages
Incompatibilities:
* warning changed to error when '*' is used for mandatory elements
* infinity/NaN not allowed at timer start
* receive handling changed (receive(*) and receive(?) not allowed or restricted) +
The above is not a comprehensive list; for all details , pls. check the document embedded in PRI.
[[version-5-5-crl-113-200-5-r5a]]
== Version 5.5 (CRL 113 200/5 R5A)
This version has the following new features:
* type substitutionGroup support
* allow using specific encode attribute strings to identify encode functions
* `ttcn2json`: extra keyword for restricted "as value" unions
* makefilegen shall generate `-Y` if tpd orders it
* user Debug classes
* negative testing with JSON encoder
* new compiler switch for decreasing variant errorlevel from error to warning
* makefilegen supports commenting out `OPENSSL_DIR` based on tpd setting
* activate emergency logging when a test fails
* `makefilegen -I` option
* RAW encoder for universal character string
* ISO 10646-conformant unicode syntaxes
* new internal functions: `encvalue2unichar`/`decvalue2unichar`,`any2unistr`
* `make port` command
* `checkstate port` operation
* clang support in Titan
* Eclipse Designer: implement fast algorithm
* config parser/editor based on ANTLR 4
* A number of TRs related to XML, Eclipse, JSON
* negative and positive conformance tests covering core language part of the standard added
* new document: statement of compliance covering Core language part of the standard
* legacy switches:
** M: allow 'omit' in template value lists (legacy behavior) (artf692717)
** B: allow selected union field to be unbound (legacy behavior) (artf717563)
[[version-5-4-crl-113-200-5-r4a]]
== Version 5.4 (CRL 113 200/5 R4A)
This version has the following new features:
* Refactored xsd2ttcn converter
* Eclipse plug-ins migrated from ANTLR 2 to ANTLR 4.
* 60 Eclipse plug-in related TRs and CRs implemented.
* Function calls with subreferences (artf550360)
* Template(present) accepts complement matching (artf564824)
* Integer to enumerated (artf590888)
* Support for IntX in RAW(artf607782)
* Module parameters can be initialized with module parameters (artf618367)
* Improved logformat to pretty-print XML and JSON
[[version-5-3-crl-113-200-5-r3a]]
== Version 5.3 (CRL 113 200/5 R3A)
This version has the following new features:
* TEXT codec to support universal character string (UTF-8).
* New Junit Logger plugin with extended logging.
* First version of the coverage/profiler tool.
* Stack trace displayed in case of segmentation fault or abort().
* Allow component and default types in module parameters.
[[version-5-2-crl-113-200-5-r2a]]
== Version 5.2 (CRL 113 200/5 R2A)
This version has the following new features:
* `Makefilegen –Z` option: Faster than the previous recursive linking method , support for dynamic linking, improved make archive
* `Makefilegen –H` option: support for partial build of hierarchical *.tpd structures.
* `Ttcn2json` improved ASN.1 handling, including parameterized types
* TR HS 34398 revoked.
* As the solution to TR HT 24380 caused performance problems, this was removed from RT1 (the default load test runtime)
[[version-5-1-crl-113-200-5-r1a]]
== Version 5.1 (CRL 113 200/5 R1A)
This version has the following new features:
* Changes in the assignment of charstring and universal charstring values to permit direct assignment of Unicode characters in editors with UTF-8 support.
* *Out parameter behavior changed: all out parameters are set to <unbound> at the start of the function. As this could cause incompatible behavior, a compiler option enforcing legacy behavior (`-Y`) was introduced.*
* A number of deprecated compiler options (`-E`, `-n`, `-N`, `-B`) were removed.
* New JSON codec variants "as value", "default".
* TTCN-3 type to JSON schema converter compiler option introduced.
* Eclipse plug-in improvements.
* Macro redefinition functionality for TITAN TTCN-3 Test Executor in the `[DEFINE]` section of the .cfg file.
* Nested concatenation operator `&`= in the `[MODULE_PARAMETERS]` section of the .cfg file
* Eclipse plug-in package and bundle id’s (including extension point id’s) have been changed due to open sourcing Titan. Their names start with *"org.eclipse.titan"* instead of *"com.ericsson.titan"*
* Legacy `mctr_gui` and `logbrowser` (based on Qt3 which lacks support in modern Linux versions) removed. The last version can still be obtained from older Titan packages.
* `Ctags` support removed due to licensing problems (`ctags` files can be obtained from older Titan releases).
* From this release, usage of 64-bit Cygwin is encouraged. A 32 bit version will not be released.
* Correction for newer openssl packages that break Titan license validation.
IMPORTANT: Titan releases previous to CRL 113 200/5 R1A will not work if openssl is upgraded beyond the critical level of release; the exact level depends on the Linux platform and version.
* *A correction for TR HT24380 (Error in manipulating dependent inout parameters - a record of and its element) may cause incompatible behavior (see TR for further details). When Titans’ behavior might change compared to previous releases, a warning message- intended to help users to detect sequences of TTCN-3 code that need to be changed- will be displayed.*
[[version-4-2-crl-113-200-4-r2a]]
== Version 4.2 (CRL 113 200/4 R2A)
This version has the following new features:
* JSON encoding support.
* Support for various universal character string encodings (UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE).
* Built-in support for base64 encodings.
* Java executor API for Titan.
* Eclipse plug-in improvements.
* Configurable timestamp in console.
* Improved behavior in port congestion situations.
* Superfluous circular warnings for ASN.1 disabled.
* TEXT encoder debug logging.
* Several improvements regarding the XML encoding/decoding.
* T3Doc disabled in the Designer.
* The asciiart directory emptied to prevent interference with automated usage.
Important notes:
* As the referenced TTCN-3 standards for universal character string encodings and for JSON are not finalized yet, details of these (as in exact function names) may change.
* The following new keywords have been introduced in this release: `oct2unichar`, `unichar2oct`, `get_stringencoding`, `remove_bom`, `encode_base64`, `decode_base64`
[[version-4-1-crl-113-200-4-r1a]]
== Version 4.1 (CRL 113 200/4 R1A)
This version has the following new features:
* Catching Dynamic Test case errors – Adds the ability to survive DTEs in TTCN-3 code, for instance in case of long running load tests. Very similar to exception handling used in other languages.
* Lazy Parameter Evaluation – In formal parameters can be defined to be subject of lazy evaluation: the expression used as actual parameter shall be evaluated only when the formal parameter is used (not at the function call); the evaluation is only done once.
* Titanium – new Eclipse plugin, a code quality analysis prototype for advanced users, available upon request.
* Usage statistics - Titan compiler, runtime and Titan Eclipse plug-in usages are collected for statistical purposes.
* Change of default error behavior for XML encoding from 'Warning' to 'Error' to align with the other Titan encoders.
* Template Module Parameters - TTCN-3 language extension, module parameters can be both values (standard) and templates (non-standard).
* `Ttcn2string()` predefined function - returns the parameter’s value in TTCN-3 string representation. `String2ttcn()` predefined function - `Ttcn2string()` predefined function contrariwise.
NOTE: Please make sure that your makefile contains the following part marked with red:
[source, subs="+quotes"]
----
SOLARIS8_LIBS =[red]#*-lresolv -lnsl -lsocket*#
LINUX_LIBS = [red]#*-lpthread -lrt*#
----
[[version-3-2]]
== Version 3.2
This version has the following new features:
* Support for distributed build using hierarchical `Makefiles` with new `ttcn3_makefilegen` command line options (`-r`, `-F`).
* New makefile target "library" is implemented. The pre-compiled objects can be collected to a library archive file(.a or .so), useful when the project hierarchy has rarely changing parts.
* Extended _.tpd file handling in makefilegen was introduced. `ttcn3_makefilegen` processes the `MakefileSettings` part of the _.tpd files. Benefits: *.tpd files extracted/created with Eclipse can be used in command line and usage of makefilepatch scripts can be hugely reduced or even eliminated.
* `ORDERED_INCLUDE` in configuration files is implemented; the includes will be strictly ordered.
* Clean-up after unsuccessful makefilegen execution, `symlinks` are now generated only if no errors were found during *.tpd file processing
* _.tpd file validation with `ttcn3_makefilegen`: the _.tpd file is validated with a schema that now is part of TITAN (`file $(TTCN3_DIR)/etc/xsd/TPD.xsd` ); validation errors will prevent makefile generation.
* `Makefilegen`: override the working directory in _.tpd file: the working directory of top level project comes from top level _.tpd file by default; when using the –D switch the working directory will be the current directory.
* `Makefilegen` support for OSS Nokalva ASN.1 compiler is implemented. `Makefile` generation from *.tpd file enables OSS Nokalva support without custom makefilepatch scripts
* Integration of DPMG(Diameter Protocol Module Generator) into the TITAN build system.
* Improved *.tpd file related documentation.
* Reduced nr of supported gcc versions. Supported versions are: 3.4.6 – 4.7.2
* Changes in supported platforms: Solaris versions from 5.10 are supported; Cygwin versions from 1.7 are supported. Earlier Solaris and Cygwin versions are not supported
* Titan Eclipse plugins support Eclipse versions from Eclipse 3.7.2 to Eclipse 4.2
* Java 1.6 is the minimum requirement
* A fourth Eclipse plug-in, Titanium, is released as a prototype. Update and maintenance of Titanium will be the responsibility of the Titanium project until further notice. For details pls. see https://ericoll2.internal.ericsson.com/sites/DUCI_SW_Technology/Titanium/default.aspx
[[version-3-1]]
== Version 3.1
Version 3.1 has the following new features:
* Interface implemented for the TestStatistics tool
* All from in value list, subset, superset and permutation supported
* Embedded macro references in the `[DEFINE]` section - runtime (support in command line)
* Structured macro definitions in the `[DEFINE]` section - runtime (support in command line)
* Embedding TTCN-3 functions (limited functionality)
[[version-2-2]]
== Version 2.2
Version 2.2 has the following new features:
* XML encoding is now supported for the hexstring and verdicttype TTCN-3 types
* Transparent functions were introduced to allow easier identification of failing tests in case of SourceInfo := Single.
[[version-2-1]]
== Version 2.1
Version 2.1 has the following new features:
* The Titan Eclipse Designer’s support for preprocessed TTCN-3 files has been improved.
* The performance of TEXT decoding has been improved.
* A logger plugin (JUnitLogger) is now delivered with Titan. It outputs XML files in the same format as JUnit. Using this logger plugin allows integrating of Titan with the Jenkins (Hudson) continuous integration tool.
* To allow JUnitLogger to receive the necessary information, the Titan Logger API has been slightly changed. Existing logger plugins will need to be rebuilt.
* In response to a TR (HP88760), the {cpp} interface of the OBJID class has been changed. The type of the elements in the internal storage of the OBJID class is now specified with a `typedef`, `objid_component`. Code which uses the indexing operators or directly accesses the element storage will need to be rewritten. It is a backward incompatible change and it affects users of the SNMP test port. A new version of the SNMP test port was released (CNL 113 344 R4B) compatible with the new Titan.
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
* `ttcn3_makefilegen` has a new flag `–P`, which prints out the list of files found in a given TPD recursively relative to a given directory.
* TTCN-3 level code coverage was implemented.
* Text hover for T3Doc in Eclipse was implemented.
* `mctr_gui`, `ttcn3_logbrowser`, `ctags`, Nedit, XEmacs support is part of the Titan package again.
[[version-1-10]]
== Version 1.10
Version 1.10 has the following new features:
* Renaming refactoring was implemented in Titan Eclipse Designer. This feature provides TTCN-3 scope-aware renaming of declarations.
* Selection highlighting was implemented in Titan Eclipse Designer. When a variable name or function name or keyword is selected in the code, all the occurrences of the selected variable name or function name or keyword will be highlighted in the same file.
* Performance of `log2str()` was improved.
* Implicit omit support for module parameters was implemented.
* Append operation (`&=`) for list types in configuration files was implemented.
* Support of executing testcases with default parameters from command line and configuration file was added.
* Improved error recovery for the compiler. E.g. it can now stop on the first syntactic error and skip the semantic analysis.
[[version-1-9]]
== Version 1.9
Version 1.9 has the following new features:
* With the release we have decided to change from the proprietary Titan versioning scheme, to the one used by Ericsson. From now on it will be much easier to decide if a new version is forward, backward compatible with a previous version. The versioning is also supported in the attributes of the modules, with some limitations. We only accept version numbers in 3 formats: R9A, CRL 113 200 R9A and CRL 113 200/1 R9A.
* With this release we removed all QT based GUI parts (`mctr_gui`) and `ctags` from the official Titan releases, as they have been in maintenance phase for the last year. NEdit and XEmacs parts are still available as downloadable components from our download pages.
* The import of imports feature declared in the newest TTCN-3 standard was implemented. This way it is now possible to recursively import import statements from other modules.
* IPv6 support for Titan’s internal communication was implemented. This way Titan is now able to function properly when the MC and PTCs are located on an IPv6 network.
* The makefilegen tool in the command line package is now able to generate `Makefiles` from the information stored in .Tpd project descriptor files.
* It is now possible to find all reference pointing to a given declaration inside eclipse. Finding all references to a definition was implemented as a new kind of search in the Eclipse platform.
* The Executor plug-in will now be able to automatically merge the generated log files after execution.
[[version-1-8]]
== Version 1.8
Version 1.8 has the following new features:
* The `testcase.stop` operation is now supported, allowing for the users to stop the execution of the actual `testcase` raising a dynamic `testcase` error with a custom explanation text.
* The `ispresent` predefined function was extended to operate on all structured types and fields as described in the 4.3.2 version of the TTCN-3 standard.
* The main features of the LogViewer eclipse feature can no be accessed from the Project Explorer too, so it is no longer required to switch to its custom navigator.
* It is now possible to configure the Executor feature and eclipse executed "launch configurations" to automatically merge the log files that were generated during execution. For the case of several consecutive executions it is now possible to configure the system, to remove the previous log files before a new execution.
* Added the negative testing feature allowing to generate invalid messages, and to send them to the SUT, to observe its reaction.
* With the help of emergency logging it is now possible to define different behaviors for logging in normal and in emergency situations.
* The performance of the LogViewer plug-in has been enhanced considerably, to support the processing of arbitrary large log files.
* Titan is no longer depending on the external Readline package. It has been replaced with Editline, which is now compiled into the delivered packages.
* A new project description format has been created to support exporting and importing the data of Titan projects in eclipse into a single file.
* The LogViewer eclipse plug-in was enhanced to work on larger files, with less resource consumption. Also it is now much better integrated with the rest of the toolset.
* Huge increase in the speed of the on-the-fly analysis in the Designer plug-in, with much more efficient memory usage when the incremental parsing option is turned on.
* The Designer now supports build configurations allowing switching between sets of build settings in a consistent way.
* The build action of Eclipse can now be invoked from the command line on two ways. One guaranteeing to build exactly as Eclipse is doing it, and one allowing the user to fine tune all of his settings.
* Support for the launch shortcut feature of eclipse was introduced allowing to create and initialize new launch configurations in an easier way.
* The base of the TTCN-3 standard used to describe the features and limitations of TITAN was changed from version v3.1.1 to v4.1.1
* The build process was enhanced with options for dynamic linking, advanced dependency refreshing, and with splitting the generated code into several files.
* The checking of subtypes in TTCN-3 and ASN.1 modules was enhanced considerably, and the on-the-fly semantic analyzer in the Designer plug-in was brought on the same level as the command line compiler is on.
* Introduced support for the module interface feature, allowing for the user to hide internal parts of a module from the other modules.
* Introduced the `testcasename()` and removed the `sizeoftype()` predefined function in accordance with the standard.
* Support for XML encoding and decoding is introduced, together with a new command line tool that converts XSD files into TTCN-3 modules.
* The `enum2int`, `encode` and `decode` predefined functions were introduced.
* It is now possible to use the `concatenation`, `replace`, `substr`, `lengthof` predefined functions on values of the set of, record of an array types.
* The implicit omit attribute is now supported.
* The TTCN-3 type anytype became supported with some restrictions.
* The runtime was split into two versions: one for function testing where much less code is generated, at the cost of somewhat degraded runtime performance; and one for load testing. Both are compatible with the interfaces of the original runtime.
* Both eclipse plug-ins were enhanced to be able to format and merge log files produced by an execution.
* The on-the-fly semantic analyzer of the Designer plug-in was considerably enhanced.
* The code quality checks done by the on-the-fly in the designer plug-in were extended to detect unused local and module level definitions too.
* The checking of the validity of the license file was introduced in the Designer plug-in, so as to protect it from unauthorized usage.
* The Designer plug-in was enhanced to be able to parse TTCN-3 files in an incremental manner, which should reduce the time required for analyzing a project from a few second, to a few times 10-2 seconds.
* The designer plug-in was extended with its own internal Makefile generator.
[[version-1-7]]
== Version 1.7
Version 1.7 has the following new features:
* The naming convention of the generated {cpp} code has been revised to avoid potential name clashes between definitions. The definitions of each TTCN–3 and ASN.1 module is put into a separate {cpp} namespace that corresponds to the module name. This eliminates all problems caused by definitions with identical names in different modules. The scope of {cpp} enum values that represent the values of TTCN–3 and ASN.1 enumerated types became narrower to avoid conflicts if the same element name appears in two different enumerated types.
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
* Extension (inheritance) of TTCN–3 component types and compatibility between different component types is now supported by the compiler.
* Dual-faced TTCN–3 ports, which can transform the incoming and outgoing messages, were introduced. Using this feature the compiler is capable of automatic generation of TTCN–3 external functions that perform encoding or decoding based on the built-in codecs (RAW, BER, TEXT).
* The Runtime GUI has become a stand-alone product. It is no longer part of the TTCN–3 Executor package.
* The logging functionality has been significantly enhanced. From now the types of events logged can be set using much finer granularity. Using the name of the component in the name of the log files also became possible.
* From now it is possible to assign actual parameters in a parameter list to a specific formal parameter from the formal parameters of the type.
* It is now possible to use assignment notation with array indices.
* The efficiency of connection handling of the Main Controller, the Parallel Test Components and the testports was greatly enhanced.
* The Eclipse Designer plug-in is now building an AST that is structurally equivalent to the on found in the compiler, and stores about the same amount of data. Thus increasing the amount of semantic errors that can be detected on-the-fly without invoking the build system.
* The logging of the `match` operation was made configurable through the `MatchingHints` logging option. If it is set in "Compact" mode (which is the default) the log record will be only a few lines long, instead of a few hundred lines long. In fact if there is only one field mismatching than the log will contain 1 line regardless of the size and structure of the value and template compared.
[[version-1-6]]
== Version 1.6
Version 1.6 has the following new features:
* The semantic check for the TTCN–3 dynamic behavior descriptions (such as functions, altsteps, testcases) have been implemented, which means that all parts of TTCN–3 modules are now analyzed.
* The compiler generates the entire {cpp} code from the Abstract Syntax Tree, that is, the output of semantic analysis. This makes it possible to add support for some language constructs and perform code optimization in future versions. These were impossible with the old, parser-based code generator.
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
* The TTCN–3 parser of the compiler supports recovery from syntax errors. This means the compiler does not stop when a syntax error is detected, but it continues to analyze the input to find more errors. +
NOTE: In some cases it is not possible or worthwhile to recover from a syntax errorfootnote:[For example, the parser may get confused after a missing opening or closing bracket and ignore the rest of input module.].
* Code generation for in-line compound values and templates (including in-line modified templates) is now supported.
* The initializer sequences of constants and non-parameterized templates are ordered automatically so that forward references do not cause dynamic test case errors anymore.
* Support of TTCN–3 language constructs has been enhanced. There is full support of arrays, groups and attributes. Select-case and interleave statements as well as alive PTCs were implemented.
* Text encoding has been introduced.
* Function, altstep and testcase references are supported in TTCN–3 .
* Non-mandatory parameters (i.e. default values for formal parameters) are supported in TTCN–3 .
* Usage of C preprocessor on TTCN–3 modules is allowed.
* The Makefile generator has been significantly enhanced and moved from the compiler to a stand-alone program.
* The syntax of run-time configuration files has been enhanced to allow the use of macros and environment variables. Modularity (i.e. spreading configuration data over several files) is also supported.
[[version-1-5]]
== Version 1.5
Version 1.5 has the following new features:
* The compiler supports the semantic analysis for all TTCN–3 definitions except the dynamic parts (i.e. functions, altsteps, testcases and control parts). This means that new checking routines were implemented for TTCN–3 subtype constraints, signatures, constants, templates and all definitions within component types.
* The compiler produces user-friendly error messages with file name and line number information and supports error recovery. It displays all error messages found in the input modules.
* The time needed for the compilation of generated {cpp} code was significantly reduced compared to 1.4.pl0. The saving can be more than 50 % in case of large projects.
* Procedure based TTCN–3 ports and the related communication operations are now supported with enhanced Test Port API.
* The run-time environment provides one unified API for both RAW and BER encoder/decoder functions.
* The internal structure of RAW encoder/decoder functions was significantly revised. This results in faster and more robust operation.
[[version-1-4]]
== Version 1.4
Version 1.4 has the following new features:
* One integrated compiler for TTCN–3 and ASN.1. This allows the semantic analysis of test suites that import from ASN.1 modules without intermediate files. The command line switches of the previous two compilers were unified.
* The ASN.1 front-end of the compiler was significantly enhanced to handle X.681- X.683 extensions.
* The compiler supports the full semantic analysis of ASN.1 modules and semantic analysis of TTCN–3 type definitions. The output for other TTCN–3 definitions is still generated on the fly without checks.
* The compiler performs automatic reordering in the generated code for TTCN–3 types as well. This means, the generated {cpp} code will be always valid even if the type definitions use forward referencing. +
NOTE: The forward referencing problem between TTCN–3 constants and templates is still unsolved. They must be declared in bottom-up order to get a working {cpp} code.
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
* The code generation routines of the previous compilers were fully re-used and no significant changes were made in the Base Library in order to preserve the stability of the executable tests.
[[version-1-3]]
== Version 1.3
Version 1.3 has the following new features:
The Main Controller was completely re-designed in this version, which means the following advantages:
* There are no longer static limits on the number of simultaneously active PTCs.
* Improved and more comfortable command-line interface (with history, command completion, etc.).
* More robust and more efficient handling of large number of test components and/or port connections. Graceful recovery from run-time errors.
* Central configuration file handling and automatic distribution of configuration parameters.
* Version checking in MC to avoid inconsistent ETSes in distributed test environments.
* Faster execution of TTCN–3 configuration operations.
* Explicit control of PTC locations with user-defined constraints in addition to load balancing.
* A lot of Main Controller related bugs were fixed, which caused deadlocks in some situations before.
* TTCN–3 address type is supported by the compiler and the Test Port API.
* Lot of bug fixes in the compilers and the run-time environment.
* Re-organized chapters and clarifications in the user documentation.
[[version-1-2]]
== Version 1.2
Version 1.2 has the following new features:
* The compiler supports the new, Edition 2 syntax of the TTCN–3 Core Language. The obsolete language elements that were supported in version 1.1 (e.g. named alternatives) are still accepted for backward compatibility, but a warning message is printed.
* The toolset contains a new ASN.1 compiler, which allows the importing of ASN.1 modules into TTCN–3 test suites. Like the TTCN–3 compiler, the ASN.1 compiler translates ASN.1 definitions to {cpp} code, which shall be used together with {cpp} output of TTCN–3 modules.
* The ASN.1 compiler performs a semantic analysis on its input and reports errors instead of generating invalid {cpp} code.
* The ASN.1 compiler may generate additional functions for the equivalent {cpp} classes of ASN.1 data types that allow the encoding and decoding of data values according to the Basic Encoding Rules (BER) of ASN.1.
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
* The TTCN–3 compiler has a new feature that may generate additional functions for TTCN–3 data types for direct (RAW) encoding/decoding of messages. This encoding scheme can be efficiently used for protocols that define the encoding of its PDUs in table-based format. The encoding rules shall be specified in special with attributes of the data types.
* The TTCN–3 compiler and runtime environment provides full support for the use of altsteps and dynamic defaults as specified in the (link:https://www.etsi.org/deliver/etsi_es/201800_201899/20187301/04.01.01_60/es_20187301v040101p.pdf[Edition 2 of TTCN–3 standard]). Moreover, for backward compatibility, the obsolete named alts can also be used, even in combination with altsteps and defaults.
* The internal handling of TTCN–3 string types (bitstring, octetstring, charstring) has been improved. The runtime environment can copy string values without memory allocation, which may result in 50% performance improvement in some cases. The Test Port API for these types did not change.
* We have a comprehensive regression test suite for the tool itself. It covers almost all basic and user-defined types, built-in operators, template and behavior constructs of the TTCN–3 language. The tests are run before each release to minimize the remaining bugs.
* Lots of minor improvements and bug fixes.
* The tool is no longer called prototype. Quick help to achieve full backward compatibility with version 1.1. For the meaning of these switches please refer to the respective sections of this document.
* Use the `-u` and `-r` flags for the TTCN–3 compiler.
* Use the `-s` flag for the logformat utility.
* Ignore all warnings of the compiler that refer to obsolete TTCN–3 language elements.
[[version-1-1]]
== Version 1.1
Version 1.1 has the following new features:
* Support of parallel test execution. Full support of TTCN–3 create, start, stop, running and done operations.
* Support of distributed test execution, which means scalability. Automatic load balancing between the participating computers.
* Platform interoperability, that is, test components running on any of supported platforms can communicate with each other.
* The total number of parallel test components can be safely increased up to 1000, which enables performance (load) testing with the Test Executor.
* Internal communication between TTCN–3 test components is supported in a transparent way. TTCN–3 `connect`, `disconnect`, `map`, `unmap`, `send (…) to` and `receive (…) from` operations are also fully supported.
* Extended Test Port interface.
* Enhanced command line syntax and functionality of the compiler.
* Many bug fixes.
* Improved User Documentation. For more details, please see the next chapters.
[[version-history]]
= Version history
[[version-7-cax-105-7730-r2a]]
== Version 7/CAX 105 7730 R2A
Release date: 27th of November 2020
This release contains some new features and bugfixes.
New Features:
* Changes in Titan product code(Bug 565875 )
* Changes in licensing(relevant for internal users only ):
** License ordering/extension page moved
** License ordering/extension API to automate license renewal
* Changes in shipping libedit (Bug 565893 )
* Titan image added to ADP marketplace(relevant for internal users only)
* Relaxing the C/C++ compiler version check for Titan 7.1.1 and upwards
(Bug 564194 )
* Object-oriented language features (Bug 563718 )
* Allow unsafe universal charstring to charstring conversion (Bug 564585 )
* Support for @default in the compiler and in the xsd2ttcn converter (Bugs 564919, 564920)
* Java-based Main Controller implemented
* Java-based JSON codec implemented
[[version-crl-113-200-7-r1a]]
== Version CRL 113 200/7 R1A
Release date: 29th of May 2020
This release contains major new features, backward incompatible changes and some bugfixes.
With this release we have also upgraded our license from Eclipse Plugin License 1.0 to Eclipse Plugin License 2.0.
New Features:
* The C side of the toolset will now support the Object Oriented Extension of the TTCN-3 standard (with some limitations).
* In the Designer plugin we have parallelized several algorithms resulting in 3-4* faster execution:
** The semantic checking of modules inside the same project.
** Projects in a project hierarchy, not dependent on each other, will not be able to be analyzed in parallel.
** The Code Smell checkers of Titanium will also run in parallel.
* On the Java side of the toolset, we have added support for JSON encoding/decoding (with some limitations).
Backward incompatible changes:
* 'omit' matching mechanism shouldn't be allowed for union fields
* Compilation issue in the Java code generator when used with very large modules
And many bugfixes.
[[version-crl-113-200-6-r6b]]
== Version CRL 113 200/6 R6B
This release has the following new features:
* Enhance performance of TIMER::get_min_expiration
* Legitimize compiler option '-F'
* Colorize compiler error/warning messages
* change the internal representation of octetstring from char[] to byte[] for efficiency
* CSN.1 L/H in the RAW codec
* change in how xsd files with NoTargetNamespace should be mapped to TTCN-3
* add support for structured type compatibility to the Java code generator
* add support for module parameter handling to the Java side runtime
* Bug fixes
[[version-crl-113-200-6-r6a]]
== Version CRL 113 200/6 R6A
Release date: 17th of May 2019
This release has the following new features:
* a Java codegeneration plug-in
* a Refactoring plug-in
* Printing symbolic version in 'compiler -v’
* Legitimized compiler option '-0’
* New command line option '-p' implemented for TTCN binaries (both in single mode and parallel mode), which lists all module parameters
* Support for real-time testing
* Implementation of map param/unmap param
* Extended 'default' JSON attribute for structured types
[[version-crl-113-200-6-r5a]]
== Version CRL 113 200/6 R5A
Release date: 7th of December 2018
*New features:*
* License upgrade to EPL 2.0
* Documentation migrated to asciidoc
* Bugfixes for core, ASN.1, XML, RAW, OER codecs, XSD2TTCN
* New RAW coding instruction 'FORCEOMIT'
* New JSON attribute 'as map'
* Attribute 'text ... as ...' for JSON
* Adopt Makefilegen for the Debian packaging
* Support for real-time testing in TITAN
* New flag for xsd2ttcn
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
[[version-crl-113-200-6-r4a]]
== Version CRL 113 200/6 R4A
Release date: 31st of May 2018
*New features:*
* Implement verdict redirect for `done' statement
* str2float should handle special float values
* RT2 record equality
* string2ttcn to filter patterns of visible characters in octetstrings
* Syntax to bind a variant attribute to multiple encodings
* TITAN build on Alpine Linux
* new tpd tag `disableUserInformation`
* runs on scope reduction (Titanium)
* Add discarding option to `setstate` operation
* Notify user if port is not mapped in translation mode
* Implement reference to port in translation function
* Implement extendable sequence coding in OER
* TAG and CROSSTAG for JSON encoder
[[version-crl-113-200-6-r3a]]
== Version CRL 113 200/6 R3A
Release date: 17th of November, 2017
*New features:*
* new compiler options:
** -e: enforce legacy handling of `encode` and `variant` attributes
** -O: disable OER encoder/decoder functions
** -D: disable user and time information generation in the generated files
* Support for multiple encodings
* Implement OER coder in TITAN (with the option to restrict generation of OER codecs)
* Implement OER negative testing
* Allowing to start functions with `out` and `inout` formal parameters
* Enable `out` parameters for behavior functions in the `start` operation support for dynamic erroneous attributes
* Allow translation ports to work as internal ports
* Allow sending and receiving during translation functions
* Flag to disable time and user information in the generated files
* Implement mtc and system clauses in testcase and altstep and functions
* Add runtime configuration setting for plain XML and JSON encodings
* Implement `json2cbor` and `cbor2json`
* Implement `json2bson` and `bson2json`
* JSON enc/dec: encoding enumerated values in number form
* Support `enableLegacyEncoding` in tpd
* Add the encoding legacy switch to tpd TEXT codec
* Add the encoding legacy switch to makefilegen
* Add support for NULL terminated string in RAW
* RAW: add offset option to `LENGTHTO` attribute
* RAW: Support also `… bits` syntax in variant attributes
[[version-crl-113-200-6-r2a]]
== Version CRL 113 200/6 R2A
Release date: 26th of May, 2017
*New features:*
* new compiler options:
`-J`: Compiler (and `xsd2ttcn`, makefilegen) option to read input files list from a text file
`-N`: ignore UNTAGGED encoding instruction on top level unions (legacy behavior)
* support of encvalue/decvalue for ASN.1 types
* support for implicit call of PER codec external functions
* implemented: ports with translation capability
* support for concatenation of templates
* implemented 'any from' clause and index redirects with the use of the @index modifier (see standard, chapters 21-23)
* support for dynamic erroneous attributes
* implemented @fuzzy support
* support for external functions for decmatch and @decoded
* no support of Solaris binaries from this release of Titan (older versions of course will continue to support Solaris)
* makefilegen more restrictive on name attribute of the referenced project
* makefilegen: remove generated headers dependency from all `.c` `.cc` files
(This will revert the following bugs:Bug 499963 - The generated Makefile does not make full build when `-j` switch is present ; Bug 512688 - makefilegen: Incorrect `.c` and `.cc` compiling rule )
* XER: allow anytype to be xer enc/decodable
* JSON `as value` attribute extended for records/sets with one field and for the anytype
* *make archive* button in Eclipse
* support for `make port` command in Eclipse
* plug-ins upgraded to Jung 2.1
[[version-crl-113-200-6-r1a]]
== Version CRL 113 200/6 R1A
Release date: 18th of November, 2016
*New features:*
* support for `mctr reconf` command
* command line debugger
* advanced code splitting
* makefilegen capability to handle `.xsd` files
* makefilegen and compiler to handle file lists in files(`compiler –J` file or `makefilegen –J` file)
* new compiler switch for decreasing variant errorlevel from error to warning
* LTTng logger plug-in
* encvalue/decvalue for ASN.1 types