Giter Club home page Giter Club logo

mts's Introduction

MTS: Multiprotocol Test Tool

Build Status

MTS (Multi-protocol Test Suite) is a multi-protocol testing tool specially designed for telecom IP-based architectures (see above "Features" section for more details).

MTS meets needs like :

  • Functional, non-regression or protocol tests => ‘Sequential’ mode
  • Load, performance endurance stress tests => ‘Parallel’ mode (master/slave)
  • Simulates equipment => client, server or both sides
  • System supervision => capture mode (like wireshark)

Product characteristics :

  • Definition of tests case in XML files : test and scenarios input files
  • Graphical (very convivial) or command line (for test automation) user interfaces
  • Easy to use : logging management and rich statistics presentation.
  • Pure software solution => support only IP based protocol
  • Written in java => supports many famous platforms : Windows and Linux supported
  • Open Source product since begin 2012 with GPLV3 license => free to use

Developers :

  • Compile and use / test : mvn package
  • Generate installer : mvn install

mts's People

Contributors

danyalitmo avatar egwepas avatar eqqnqqn avatar eri-antler avatar ewenbaron avatar fabien-henry-ericsson avatar fgicquel avatar gege-fr avatar ggogail avatar mjezequel avatar renovate35 avatar yakuj3 avatar yevain avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mts's Issues

Http bug report

Two bugs have been detected :

  • After an error occurs (launch 994_http_web_client and wait), several tests don't work anymore. Messages are still exchanged but the last one doesn't reach the client.

  • 811_auto-reconnection test can fail if you launch it numerous times right after starting mts . The server try to send a message using a channel it just closed. The test won't work anymore if you try launching it again.

unable to receive SIP Requests in a new dialogue

Hi,

just started to work with MTS but unfortunately I am not able to receive SIP messages in new dialogue. 200 OK for my Requests are received properly regarding the Logs but the as I am waiting for a new Request from the Application servers I get timeout even if I see the SIP Request sent by the AS in a tcpdump.
I have set the listenpoint.LOCAL_PORT = 5062 in the sip.properties
I have tried to insert both of my dialogues into the same UAC.xml:
SIP MESSAGE -->
<-- 200 OK
then
waiting for <--SIP MESSAGE with:

but all I get is timeout.

I also tried the same with relocating the second dialogue waiting for the SIP MESSAGE in the UAS.xml but I get the same result.

If I try to start with

then I get immediately an exception "address already in use"
Am I missing some configuration to be able to receive a SIP Request in a new dialouge from my Application Server?

Application Log (test without createlisteningpointsip) is attached.

Thank you in advance'
application_logs.zip

Cannot perform diameter tests on a remote HLR

Instead of using MTS to simulate both the server and client side, I would like to send requests to an HLR I have access to and get the responses. It would be of great help to me if anyone can tell me how to. Thanks

HTTP bug with gzip

HTTP gzip test fails in the tutorial.

After investigation, it could be relate to HTTP stack which cut zeros at the end of the message

Vulnérabilité CVE

https://www.youtube.com/watch?v=APNrOgrM5Ho&t=391s

How to solve this ? Need helps.
I build Docker MTS image on scrach but also have CVE log4-shell Log4j.. in the image

│ │ CVE-2019-12384 │ MEDIUM │ │ 2.7.9.6, 2.8.11.4, 2.9.9.1 │ jackson-databind: failure to block the logback-core class │
│ │ │ │ │ │ from polymorphic deserialization leading to... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2019-12384
│ ├─────────────────────┤ │ │ ├──────────────────────────────────────────────────────────────┤
│ │ CVE-2019-12814 │ │ │ │ jackson-databind: polymorphic typing issue allows attacker │
│ │ │ │ │ │ to read arbitrary local files on... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2019-12814
│ ├─────────────────────┼──────────┤ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ GHSA-rpr3-cw39-3pxh │ UNKNOWN │ │ 2.9.10.4 │ jackson-databind before 2.9.10.4 vulnerable to unsafe │
│ │ │ │ │ │ deserialization │
│ │ │ │ │ │ GHSA-rpr3-cw39-3pxh
├──────────────────────────────────────────────────────────────┼─────────────────────┼──────────┼───────────────────┼─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ com.google.guava:guava (guava-21.0.jar) │ CVE-2018-10237 │ MEDIUM │ 21.0 │ 24.1.1-jre, 24.1.1-android │ guava: Unbounded memory allocation in AtomicDoubleArray and │
│ │ │ │ │ │ CompoundOrdering classes allow remote attackers... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2018-10237
│ ├─────────────────────┼──────────┤ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2020-8908 │ LOW │ │ 30.0 │ guava: local information disclosure via temporary directory │
│ │ │ │ │ │ created with unsafe permissions │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2020-8908
├──────────────────────────────────────────────────────────────┼─────────────────────┼──────────┼───────────────────┼─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ junit:junit (junit-4.10.jar) │ CVE-2020-15250 │ MEDIUM │ 4.10 │ 4.13.1 │ junit4: TemporaryFolder is shared between all users across │
│ │ │ │ │ │ system which could result... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2020-15250
├──────────────────────────────────────────────────────────────┼─────────────────────┼──────────┼───────────────────┼─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ log4j:log4j (log4j-1.2.9.jar) │ CVE-2019-17571 │ CRITICAL │ 1.2.9 │ 2.0-alpha1 │ log4j: deserialization of untrusted data in SocketServer │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2019-17571
│ ├─────────────────────┤ │ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2022-23305 │ │ │ │ log4j: SQL injection in Log4j 1.x when application is │
│ │ │ │ │ │ configured to use... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-23305
│ ├─────────────────────┼──────────┤ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2022-23302 │ HIGH │ │ │ log4j: Remote code execution in Log4j 1.x when application │
│ │ │ │ │ │ is configured to... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-23302
│ ├─────────────────────┤ │ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2022-23307 │ │ │ │ log4j: Unsafe deserialization flaw in Chainsaw log viewer │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-23307
│ ├─────────────────────┼──────────┤ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2020-9488 │ LOW │ │ 2.13.2 │ log4j: improper validation of certificate with host mismatch │
│ │ │ │ │ │ in SMTP appender │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2020-9488
├──────────────────────────────────────────────────────────────┼─────────────────────┼──────────┼───────────────────┼─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ mysql:mysql-connector-java (mysql-connector-java-5.1.18.jar) │ CVE-2017-3523 │ HIGH │ 5.1.18 │ 5.1.41 │ mysql-connector-java: Improper automatic deserialization of │
│ │ │ │ │ │ binary data (CPU Apr 2017) │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2017-3523
│ ├─────────────────────┤ │ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2018-3258 │ │ │ 8.0.13 │ mysql-connector-java: Connector/J unspecified vulnerability │
│ │ │ │ │ │ (CPU October 2018) │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2018-3258
│ ├─────────────────────┼──────────┤ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2015-2575 │ MEDIUM │ │ 5.1.35 │ mysql-connector-java: unspecified vulnerability related to │
│ │ │ │ │ │ Connector/J (CPU April 2015) │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2015-2575
│ ├─────────────────────┤ │ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2017-3586 │ │ │ 5.1.42 │ mysql-connector-java: Connector/J unspecified vulnerability │
│ │ │ │ │ │ (CPU Apr 2017) │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2017-3586
│ ├─────────────────────┤ │ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2019-2692 │ │ │ 8.0.16 │ mysql-connector-java: privilege escalation in MySQL │
│ │ │ │ │ │ connector │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2019-2692
│ ├─────────────────────┤ │ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2020-2875 │ │ │ 5.1.49, 8.0.15 │ mysql-connector-java: allows unauthenticated attacker with │
│ │ │ │ │ │ network access via multiple protocols to compromise... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2020-2875
│ ├─────────────────────┤ │ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2020-2934 │ │ │ 5.1.49, 8.0.20 │ mysql-connector-java: allows unauthenticated attacker with │
│ │ │ │ │ │ network access via multiple protocols to compromise... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2020-2934
│ ├─────────────────────┤ │ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2022-21363 │ │ │ 8.0.28 │ mysql-connector-java: Difficult to exploit vulnerability │
│ │ │ │ │ │ allows high privileged attacker with network access... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-21363
│ ├─────────────────────┼──────────┤ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2017-3589 │ LOW │ │ 5.1.42 │ mysql-connector-java: Connector/J unspecified vulnerability │
│ │ │ │ │ │ (CPU Apr 2017) │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2017-3589
│ ├─────────────────────┤ │ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2020-2933 │ │ │ 5.1.49 │ mysql-connector-java: allows high privileged attacker with │
│ │ │ │ │ │ network access via multiple protocols to... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2020-2933
├──────────────────────────────────────────────────────────────┼─────────────────────┼──────────┼───────────────────┼─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ net.minidev:json-smart (json-smart-2.2.jar) │ CVE-2021-27568 │ CRITICAL │ 2.2 │ 1.3.2, 2.3.1, 2.4.1 │ json-smart: uncaught exception may lead to crash or │
│ │ │ │ │ │ information disclosure │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2021-27568
├──────────────────────────────────────────────────────────────┼─────────────────────┼──────────┼───────────────────┼─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ org.apache.commons:commons-email (commons-email-1.3.2.jar) │ CVE-2017-9801 │ HIGH │ 1.3.2 │ 1.5 │ Improper Input Validation in Apache Commons Email │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2017-9801
│ ├─────────────────────┤ │ │ ├──────────────────────────────────────────────────────────────┤
│ │ CVE-2018-1294 │ │ │ │ Improper Input Validation Apache Commons Email │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2018-1294
├──────────────────────────────────────────────────────────────┼─────────────────────┼──────────┼───────────────────┼─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ org.apache.logging.log4j:log4j-api (log4j-api-2.12.1.jar) │ CVE-2021-44832 │ MEDIUM │ 2.12.1 │ 2.17.1 │ log4j-core: remote code execution via JDBC Appender │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2021-44832
│ ├─────────────────────┤ │ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2021-45105 │ │ │ 2.12.3, 2.17.0 │ log4j-core: DoS in log4j 2.x with Thread Context Map (MDC) │
│ │ │ │ │ │ input data... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2021-45105
├──────────────────────────────────────────────────────────────┼─────────────────────┤ ├───────────────────┼─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ org.codehaus.groovy:groovy-all (groovy-all-2.4.7.jar) │ CVE-2020-17521 │ │ 2.4.7 │ 2.4.21, 2.5.14, 3.0.7 │ groovy: OS temporary directory leads to information │
│ │ │ │ │ │ disclosure │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2020-17521
├──────────────────────────────────────────────────────────────┼─────────────────────┼──────────┼───────────────────┼─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ org.dom4j:dom4j (dom4j-2.1.0.jar) │ CVE-2020-10683 │ CRITICAL │ 2.1.0 │ 2.0.3, 2.1.3 │ dom4j: XML External Entity vulnerability in default SAX │
│ │ │ │ │ │ parser │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2020-10683
│ ├─────────────────────┼──────────┤ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2018-1000632 │ HIGH │ │ 2.0.3, 2.1.1 │ dom4j: XML Injection in Class: Element. Methods: addElement, │
│ │ │ │ │ │ addAttribute which can impact... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2018-1000632
├──────────────────────────────────────────────────────────────┼─────────────────────┤ ├───────────────────┼─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ org.yaml:snakeyaml (snakeyaml-1.23.jar) │ CVE-2017-18640 │ │ 1.23 │ 1.26 │ snakeyaml: Billion laughs attack via alias feature │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2017-18640
│ ├─────────────────────┤ │ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2022-25857 │ │ │ 1.31 │ snakeyaml: Denial of Service due missing to nested depth │
│ │ │ │ │ │ limitation for... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-25857
│ ├─────────────────────┼──────────┤ │ ├──────────────────────────────────────────────────────────────┤
│ │ CVE-2022-38749 │ MEDIUM │ │ │ Using snakeYAML to parse untrusted YAML files may be │
│ │ │ │ │ │ vulnerable to Den... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-38749
│ ├─────────────────────┤ │ ├─────────────────────────────┼──────────────────────────────────────────────────────────────┤
│ │ CVE-2022-38752 │ │ │ 1.32 │ Using snakeYAML to parse untrusted YAML files may be │
│ │ │ │ │ │ vulnerable to Den... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-38752
└──────────────────────────────────────────────────────────────┴─────────────────────┴──────────┴───────────────────┴─────────────────────────────┴──────────────────────────────────────────────────────────────┘

Create a "parseMessageXXX" operation

Add a new operator to the stack interface (only implement on SIP for now) that will parse a SIPMessage and set it into a parameter.

This message will be incomplete (no associated transaction, channel, listenpoint).

The sendMessageXXX operator should also be able to send this msg from this parameter (don't forget to clone the message before sending in case it used mutiple times).

Genscript fails on Linux and Windows

Hi,

if I try to generate an MTS script from a capture file it fails on Windows and on Linux too with different errors:
Given the following command:
genscript.bat SIP:172.16.74.112:5060 ..\tutorial\genscript\URI_DISCOV_01.pcap test_mcdata.xml

on Win10, I get the following exception:

-------- GENSCRIPT -------------------------------------------------------
START => capture file: ..\tutorial\genscript\URI_DISCOV_01.pcap
CAPTURE filter: => SIP:172.16.74.112:5060
EXCEPTION => java.net.BindException: Cannot assign requested address: Cannot bind
java.net.BindException: Cannot assign requested address: Cannot bind
at java.net.DualStackPlainDatagramSocketImpl.socketBind(Native Method)
at java.net.DualStackPlainDatagramSocketImpl.bind0(Unknown Source)
at java.net.AbstractPlainDatagramSocketImpl.bind(Unknown Source)
at java.net.DatagramSocket.bind(Unknown Source)
at java.net.DatagramSocket.(Unknown Source)
at com.devoteam.srit.xmlloader.udp.bio.ListenpointUdpBIO.create(ListenpointUdpBIO.java:67)
at com.devoteam.srit.xmlloader.udp.ListenpointUdp.create(ListenpointUdp.java:143)
at com.devoteam.srit.xmlloader.core.protocol.Listenpoint.create(Listenpoint.java:314)
at com.devoteam.srit.xmlloader.core.protocol.Stack.createListenpoint(Stack.java:427)
at com.devoteam.srit.xmlloader.core.protocol.Stack.initializePrivate(Stack.java:256)
at com.devoteam.srit.xmlloader.core.protocol.Stack.(Stack.java:237)
at com.devoteam.srit.xmlloader.core.protocol.Stack.(Stack.java:159)
at com.devoteam.srit.xmlloader.sip.StackSipCommon.(StackSipCommon.java:70)
at com.devoteam.srit.xmlloader.sip.light.StackSip.(StackSip.java:54)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.devoteam.srit.xmlloader.core.protocol.StackFactory.getStack(StackFactory.java:119)
at com.devoteam.srit.xmlloader.genscript.genscriptCmd.main(genscriptCmd.java:132)

Then the same command on Redhat 7.5 gives the follwong message and then stucks:

atlas@nginlab52:/data4/workspace/horzoli/MTS_Home/bin$ ./genscript.sh SIP:172.16.74.112:5060 ../../URI_DISCOV_01.pcap testout.xml
-------- GENSCRIPT -------------------------------------------------------
START => capture file: ../../URI_DISCOV_01.pcap
CAPTURE filter: => SIP:172.16.74.112:5060
Thread[Thread-3,5,main]
java.lang.InstantiationException: jpcap.packet.DatalinkPacket
at jpcap.JpcapCaptor.processPacket(Native Method)
at com.devoteam.srit.xmlloader.core.protocol.probe.PJpcapThread.run(PJpcapThread.java:198)
at com.devoteam.srit.xmlloader.core.ThreadRunner.run(ThreadRunner.java:59)

Switch from legacy threads to akka

Rely on akka to execute scenarios. Akka is a completely asynchronous and scalable framework.
That would imply two major improvements :

  • Test could be wrote the same way for functional or load tests
  • No need for master mode anymore, real native cluster

Need info on how to pass IMEISV

Hello Experts

I would need your help .M trying to pass IMEISV from MTS but the encoding is not okay and hence the OCS at other sides is failing to decode the values .THis is what MTS says

User-Equipment-Info - RFC 4006: allows the credit-control client to indicate the identity and
capability of the UE
- User-Equipment-Info-Type: IMEISV|MAC|EUI64|MODIFIED_EUI64
- User-Equipment-Info-Value - OctetString: for IMEISV type the value shall be a UTF-8 encoded decimal :
IMEI (15 digits) + SV (2digits)

What i have tried (IMEI:490154203237518)

parameter name="[User-Equipment-Info-Type]" operation="set" value="0"

parameter name="[User-Equipment-Info-Value]" operation="set" value="490154203237518"

But it fails .Could you please share info on how should i encode & pass the values and put in on MTS scenario ?

S1AP protocol testing

Hi, MTS-E//

Having problem with S1AP. Can you help ?
Trying to send PDU (S1SetupRequest):

<S1AP-PDU> <initiatingMessage> <procedureCode>17</procedureCode> <criticality>reject</criticality> <value> <S1SetupRequest> <protocolIEs> <protocolIEs> <id>59</id> <criticality>reject</criticality> <value> <Global-ENB-ID> <pLMNidentity>22F050</pLMNidentity> <eNB-ID> <macroENB-ID>11110011000001010000</macroENB-ID> </eNB-ID> </Global-ENB-ID> </value> </protocolIEs> <protocolIEs> <id>60</id> <criticality>ignore</criticality> <value> <ENBname>Mirko_Test_Sumarice</ENBname> </value> </protocolIEs> <protocolIEs> <id>64</id> <criticality>reject</criticality> <value> <SupportedTAs> <SupportedTAs-Item> <tAC>0100</tAC> <broadcastPLMNs> <PLMNidentity>22F050</PLMNidentity> </broadcastPLMNs> </SupportedTAs-Item> </SupportedTAs> </value> </protocolIEs> <protocolIEs> <id>137</id> <criticality>ignore</criticality> <value> <PagingDRX>v64</PagingDRX> </value> </protocolIEs> </protocolIEs> </S1SetupRequest> </value> </initiatingMessage> </S1AP-PDU>

but I am getting error:

`CAUSE: NotHandledCaseException

                                  Complete stack :
                                      com.ericsson.mts.asn1.exception.NotHandledCaseException
                                      com.ericsson.mts.asn1.translator.PERRestrictedCharacterStringTranslator.doEncode(PERRestrictedCharacterStringTranslator.java:52)
                                      com.ericsson.mts.asn1.translator.AbstractRestrictedCharacterStringTranslator.encode(AbstractRestrictedCharacterStringTranslator.java:50)
                                      com.ericsson.mts.asn1.translator.AbstractTranslator.encode(AbstractTranslator.java:82)
                                      com.ericsson.mts.asn1.translator.PERObjectClassFieldTranslator.doEncode(PERObjectClassFieldTranslator.java:65)
                                      com.ericsson.mts.asn1.translator.AbstractObjectClassFieldTranslator.encode(AbstractObjectClassFieldTranslator.java:63)
                                      com.ericsson.mts.asn1.translator.PERSequenceTranslator.doEncode(PERSequenceTranslator.java:79)
                                      com.ericsson.mts.asn1.translator.AbstractSequenceTranslator.encode(AbstractSequenceTranslator.java:162)
                                      com.ericsson.mts.asn1.translator.PERSequenceOfTranslator.launchEncode(PERSequenceOfTranslator.java:84)
                                      com.ericsson.mts.asn1.translator.PERSequenceOfTranslator.doEncode(PERSequenceOfTranslator.java:67)
                                      com.ericsson.mts.asn1.translator.AbstractSequenceOfTranslator.encode(AbstractSequenceOfTranslator.java:82)
                                      com.ericsson.mts.asn1.translator.PERSequenceTranslator.doEncode(PERSequenceTranslator.java:79)
                                      com.ericsson.mts.asn1.translator.AbstractSequenceTranslator.encode(AbstractSequenceTranslator.java:162)
                                      com.ericsson.mts.asn1.translator.AbstractTranslator.encode(AbstractTranslator.java:82)
                                      com.ericsson.mts.asn1.translator.PERObjectClassFieldTranslator.doEncode(PERObjectClassFieldTranslator.java:65)
                                      com.ericsson.mts.asn1.translator.AbstractObjectClassFieldTranslator.encode(AbstractObjectClassFieldTranslator.java:63)
                                      com.ericsson.mts.asn1.translator.PERSequenceTranslator.doEncode(PERSequenceTranslator.java:79)
                                      com.ericsson.mts.asn1.translator.AbstractSequenceTranslator.encode(AbstractSequenceTranslator.java:162)
                                      com.ericsson.mts.asn1.translator.AbstractTranslator.encode(AbstractTranslator.java:82)
                                      com.ericsson.mts.asn1.translator.PERChoiceTranslator.doEncode(PERChoiceTranslator.java:55)
                                      com.ericsson.mts.asn1.translator.AbstractChoiceTranslator.encode(AbstractChoiceTranslator.java:66)
                                      com.ericsson.mts.asn1.translator.AbstractTranslator.encode(AbstractTranslator.java:82)
                                      com.ericsson.mts.asn1.ASN1Translator.encode(ASN1Translator.java:40)
                                      com.devoteam.srit.xmlloader.s1ap.MsgS1ap.parseFromXml(MsgS1ap.java:251)
                                      com.devoteam.srit.xmlloader.core.protocol.Stack.parseMsgFromXml(Stack.java:601)
                                      com.devoteam.srit.xmlloader.core.operations.protocol.OperationSendMessage.execute(OperationSendMessage.java:142)
                                      com.devoteam.srit.xmlloader.core.operations.Operation.executeAndStat(Operation.java:179)
                                      com.devoteam.srit.xmlloader.core.operations.basic.OperationSequence.execute(OperationSequence.java:88)
                                      com.devoteam.srit.xmlloader.core.operations.functions.Function.execute(Function.java:112)
                                      com.devoteam.srit.xmlloader.core.operations.basic.OperationCall.execute(OperationCall.java:118)
                                      com.devoteam.srit.xmlloader.core.operations.Operation.executeAndStat(Operation.java:179)
                                      com.devoteam.srit.xmlloader.core.operations.basic.OperationSequence.execute(OperationSequence.java:88)
                                      com.devoteam.srit.xmlloader.core.Scenario.executeScenario(Scenario.java:67)
                                      com.devoteam.srit.xmlloader.core.ScenarioRunner.run(ScenarioRunner.java:269)
                                      com.devoteam.srit.xmlloader.core.ThreadRunner.run(ThreadRunner.java:59)
                                  ;`

Switch to a web UI

Replace the current swing UI by a web-ui using recent technologies.
MTS could become a service and would be a lot more usable on headless and/or remote servers through SSH tunnels.

MTS problem with receiving early media

Hi all,

I’m stuck with an RTP related problem. Perhaps you could help me with this?

 UserA => SBC-A => AS => SBC-B => UserB

UserA and UserB are MTS scenarios. The case is about to respond by UserB with 180+SDP & sending early media. In standard configuration original RTP stream iis delivered do UserB (incl. original SSRC headers). MTS scenario for UserA receives such traffic (receiveMessageRTPFLOW OK - same SSRC as originating one).

Oracle SBC offers the possibility to send locally generated stream (local media playback from WAV file). So after 180 being sent to UserA SBC-A starts sending its own stream (ignoring any media coming from UserB). Such stream has of course completely different RTP headers (ssrc/seqnum/time). In such situation MTS is ignoring the stream (which still reaches correct IP/port) and receiveMessageRTPFLOW timed out.

Later on after 200/ACK both users send/receive media without any problems in all cases (forwarded or local stream on SBC-A).

Do you have any suggestion or hint where to check? Or something in protocol configuration should be modified (for udp/rtp/rtpflow)? It seems I cannot set route.MESSAGE_ID for RTPFLOW config since it is not what UserB emits – so what else?

BTW it there any other distribution list for MTS or this is the right/only place?

Regards,
Mariusz

can not receive response for messages sent on an sctp channel

Using mts 6.5.1

I'm trying to send SIP INVITEs through an SCTP multihoming channel with the following sequence

openChannelSIP name="channelUAC" localHost="[localHostSIP(0)],[localHostSIP_sec(0)]" localPort="[localPortSIP_client(0)]" remoteHost="[remoteHostSIP(0)]" remotePort="[remotePortSIP(0)]" transport="SCTP"
sendMessageSIP name="initial INVITE" channel="channelUAC" remoteHost="[remoteHostSIP(0)]" remotePort="[remotePortSIP(0)]" transport="SCTP"

100 trying is routed correctly to originating scenario, but subsesuent responses results in a NullPointerException

java.lang.NullPointerException
at com.devoteam.srit.xmlloader.sip.MsgSipCommon.getResponseTransactionId(MsgSipCommon.java:80)
at com.devoteam.srit.xmlloader.sip.StackSipCommon.doReceiveMessage(StackSipCommon.java:188)
at com.devoteam.srit.xmlloader.core.protocol.Stack$1.run(Stack.java:917)

if i send the same message in SCTP avoiding channel indication in send message
with the following:
sendMessageSIP name="initial INVITE" remoteHost="[remoteHostSIP(0)]" remotePort="[remotePortSIP(0)]" transport="SCTP"

a new channel is created automatically and responses appears to be managed correctly in this case
therefore in this way i have no longer the option to choose source IPs and port for the SCTP channel, so i can not have the wanted multihoming configuration (mts use all available address and a random source port in this case)

what should be the right approach ?
am i missing something ?

Cannot compile on a Mac with java 12

Trying to compile MTS on a macbook pro and run into 2 problems:

Package javax.cml.bind does not exist:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project mts: Compilation failure: Compilation failure:
[ERROR] /Users/rjlouro/Documents/WIT/RCS/MTS_Git/mts/src/main/java/com/devoteam/srit/xmlloader/core/operations/basic/operators/PluggableParameterOperatorBinary.java:[66,21] error: package javax.xml.bind does not exist
[ERROR] /Users/rjlouro/Documents/WIT/RCS/MTS_Git/mts/src/main/java/com/devoteam/srit/xmlloader/core/operations/basic/operators/PluggableParameterOperatorBinary.java:[478,34] error: cannot find symbol

Solved by adding it to pom.xml. Tried version 2.3.0 and it worked.

--- a/pom.xml
+++ b/pom.xml
@@ -538,5 +538,10 @@
             <scope>system</scope>
             <systemPath>${basedir}/lib/jpcap.jar</systemPath>
         </dependency>
+       <dependency>
+               <groupId>javax.xml.bind</groupId>
+               <artifactId>jaxb-api</artifactId>
+               <version>2.3.0</version>
+       </dependency>
     </dependencies>
 </project>

Build fails with incompatible type

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project mts: Compilation failure: Compilation failure:
[ERROR] /Users/rjlouro/Documents/WIT/RCS/MTS_Git/mts/src/main/java/com/devoteam/srit/xmlloader/gui/model/ModelTreeRTStats.java:[251,77] error: incompatible types: Enumeration<TreeNode> cannot be converted to Enumeration<DefaultMutableTreeNode>
[ERROR] /Users/rjlouro/Documents/WIT/RCS/MTS_Git/mts/src/main/java/com/devoteam/srit/xmlloader/gui/model/ModelTreeRTStats.java:[302,77] error: incompatible types: Enumeration<TreeNode> cannot be converted to Enumeration<DefaultMutableTreeNode>

Solved by the following changes:

--- a/src/main/java/com/devoteam/srit/xmlloader/gui/model/ModelTreeRTStats.java
+++ b/src/main/java/com/devoteam/srit/xmlloader/gui/model/ModelTreeRTStats.java
@@ -248,7 +248,7 @@ public class ModelTreeRTStats extends DefaultTreeModel {
         boolean alreadyExist = false;

         // We get all children of node parent
-        Enumeration<DefaultMutableTreeNode> allChildren = nodeParent.children();
+        Enumeration allChildren = nodeParent.children();

         // For each child
         while (allChildren.hasMoreElements()) {
@@ -298,12 +298,12 @@ public class ModelTreeRTStats extends DefaultTreeModel {
         DefaultMutableTreeNode node = null;

         // We get all children of node parent
-        Enumeration<DefaultMutableTreeNode> allChildren = nodeParent.children();
+        Enumeration allChildren = nodeParent.children();

         // For each child
         while (allChildren.hasMoreElements()) {
             // Get the current child
-            node = allChildren.nextElement();
+            node = (DefaultMutableTreeNode) allChildren.nextElement();

             // If this child match (with the name) with the node searching
             if (node.toString().equals(nodeChild.toString())) {

My environment:

MacOS Mojave 10.14.6 

java 12.0.2 2019-07-16
Java(TM) SE Runtime Environment (build 12.0.2+10)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)

Usage of insecure message digest algorithm (MD5)

I am reaching out to you as we conducted an empirical study to understand the nature of cryptographic misuses in enterprise-driven projects on GitHub. During our study, we randomly inspected a few of the misuses. One of the misuses for which we could confirm the finding of the analysis, CogniCryptSAST, is one in your project:

  • PluggableParameterOperatorDigest uses MD5 as a parameter to java.security.MessageDigest. By now, it is possible to have collisions with MD5 and are not considered secure any longer. Therefore, one should not use MD5 anymore in a security context like password storage, token generation, or computation integrity. This misuse is also considered problematic by industry tools like SonarSource.

We hope that this information helps you and to hear back from you

Gestion des variables lors des exécutions en mode CLI

Il me semble avoir identifier un bug dans la gestion des variables lors les exécutions en mode CLI.
Voici une petite explication :

Nous gérons l’exécution de nos testcase avec des variables :

<parameter name="testcase_11.1" operation="set" value="true"/>
<parameter name="testcase_11.1.1" operation="set" value="true"/>
<parameter name="testcase_11.14" operation="set" value="false"/>

Ensuite nous utilisons ces variables pour exécuter ou non les testcase :

<testcase name="ipv6_register_dev1" description="Reg" state="[testcase_11.1]">           executé car = true
<testcase name="call_Stand_A_to_B" description="Reg" state="[testcase_11.1.1]">        executé car = true
<testcase name="ipv6_register_dev5" description="Reg" state="[testcase_11.14]">         executé mais = fasle !!!!

Mais nous avons remarqué que des testcase sont exécutés en mode CLI alors que la variable est initialisée a « false ».
Comme je le montre ci-dessus, le testscase_11.14 (ipv6_register_dev5) est exécuté en CLI malgré une initialisation de la variable a « false ».
En mode GUI, nous ne rencontrons pas ce problème.

HTTP and HTTP2 conflict

HTTP doesn't release port when test file is reload which lead conflict with HTTP2 (same port 8080).

In order to make it works, we need to wait until os close port itself

test s1apsetup encode fail

I have tested two ways to add the IE broadcastPLMNs in the SupportedTAs, but the encoder fail at parsing xml nodes.
the first way:

<SupportedTAs>
    <SupportedTAs>
		<tAC>1</tAC>
		<broadcastPLMNs>
		<broadcastPLMNs>
                       <PLMNidentity>00f110</PLMNidentity>
		</broadcastPLMNs>
		</broadcastPLMNs>
	</SupportedTAs>
</SupportedTAs>

MTS reports this error :
CAUSE: Could not find element null, child of broadcastPLMNs

Complete stack :
java.lang.RuntimeException: Could not find element null, child of broadcastPLMNs
com.ericsson.mts.asn1.XMLFormatReader.getChildNode(XMLFormatReader.java:197)
com.ericsson.mts.asn1.XMLFormatReader.bytesValue(XMLFormatReader.java:152)
com.ericsson.mts.asn1.translator.AbstractOctetStringTranslator.encode(AbstractOctetStringTranslator.java:50)
com.ericsson.mts.asn1.translator.AbstractTranslator.encode(AbstractTranslator.java:82)
com.ericsson.mts.asn1.translator.PERSequenceOfTranslator.launchEncode(PERSequenceOfTranslator.java:77)

application.log

the second way :

<SupportedTAs>
   <SupportedTAs>
		<tAC>1</tAC>
		<broadcastPLMNs>
                       <PLMNidentity>00f110</PLMNidentity>
		</broadcastPLMNs>
	</SupportedTAs>
</SupportedTAs>

the encode is fail in this:
CAUSE: Could not find element broadcastPLMNs, child of broadcastPLMNs

Complete stack :
java.lang.RuntimeException: Could not find element broadcastPLMNs, child of broadcastPLMNs
com.ericsson.mts.asn1.XMLFormatReader.getChildNode(XMLFormatReader.java:197)

Here is the ASN.1:

SupportedTAs ::= SEQUENCE (SIZE(1.. maxnoofTACs)) OF SupportedTAs-Item
SupportedTAs-Item ::=	SEQUENCE  {
	tAC					TAC,
	broadcastPLMNs		BPLMNs,
	iE-Extensions		ProtocolExtensionContainer { {SupportedTAs-Item-ExtIEs} } OPTIONAL,
	...
}
BPLMNs ::= SEQUENCE (SIZE(1.. maxnoofBPLMNs)) OF PLMNidentity	

Wrong User Manual reference

File

MTS_user_manual_core.doc.

Chapter 2.1

Test XML file.

Quote

Here is a more complete description of the XML test file structure: You could also get the XSD file at the <Install_Dir>/doc/schemas/test.xsd location if you are familiar with that XML files.

Problem

<Install_Dir>/doc/schemas/ contains only test.html XML grammar reference. Actual location for test.xsd is an <Install_Dir>/conf/schemas/test.xsd.

Improvement suggestion

Maybe it's worth starting a project to transfer documentation to Markdown format, as is binary doc files is not git-friendly and it's hard to create a well formed pull request. If you do not mind accepting such changes, I'll port some of the doc files.

MTSScript.groovy: setMTSParam method does not work properly for <List> parameters

Hello @mjezequel, @egwepas, all,

It seems that the "setMTSParam" method does not work properly for parameters.
As you can see below, only the last value in the list is assigned to the parameter:

<?xml version="1.0" encoding="UTF-8"?>

<scenario>

	<parameter name="[myParam]" operation="set" value="paramValue"/>

	<parameter name="[myList]" operation="list.set" value="value1"/>
	<parameter name="[myList]" operation="list.addLast" value="[myList]" value2="value2"/>
	<parameter name="[myList]" operation="list.addLast" value="[myList]" value2="value3"/>

	<log level="DEBUG">myParam >> [myParam]</log>
	<log level="DEBUG">myList >> [myList]
	</log>
	
	<!-- 
	**Output:**
	myParam >> paramValue
	myList >> value1
	myList >> value2
	myList >> value3
	-->
	
	<groovy>
		groovy_myParam = getMTSParamList("[myParam]")
		groovy_myList = getMTSParamList("[myList]")
		
		groovy_myParam = "updatedValue"
		groovy_myList = ["value4", "value5", "value6"]

		setMTSParam("[myParam]", groovy_myParam)
		setMTSParam("[myList]", groovy_myList)

	</groovy>
	
	<log level="DEBUG">myParam >> [myParam]</log>
	<log level="DEBUG">myList >> [myList]
	</log>
	
	<!-- 
	**Output:**
	myParam >> updatedValue
	myList >> value6
	
	**Expected behavior:**
	myParam >> updatedValue
	myList >> value4
	myList >> value5
	myList >> value6
	-->
	
</scenario>

BTW it there any other distribution list for MTS or this is the right/only place?

Regards,
Olivier

Fix ClassCast exception

[Build] java.lang.ClassCastException: com.devoteam.srit.xmlloader.core.Runner cannot be cast to com.devoteam.srit.xmlloader.core.ScenarioRunner
[Build]        at com.devoteam.srit.xmlloader.core.log.FileTextListenerProvider.provide(FileTextListenerProvider.java:75)
[Build]        at com.devoteam.srit.xmlloader.core.log.TextListenerProviderRegistry.provide(TextListenerProviderRegistry.java:64)
[Build]        at com.devoteam.srit.xmlloader.core.log.GenericLogger.print(GenericLogger.java:104)
[Build]        at com.devoteam.srit.xmlloader.core.log.GenericLogger.debug(GenericLogger.java:68)
[Build]        at com.devoteam.srit.xmlloader.core.operations.basic.OperationParameter.execute(OperationParameter.java:103)
[Build]        at com.devoteam.srit.xmlloader.core.operations.Operation.executeAndStat(Operation.java:179)
[Build]        at com.devoteam.srit.xmlloader.core.Test.executeParameterOperations(Test.java:229)
[Build]        at com.devoteam.srit.xmlloader.core.Test.initForLoopsTestcasesRunProfile(Test.java:179)
[Build]        at com.devoteam.srit.xmlloader.core.Test.<init>(Test.java:118)
[Build]        at com.devoteam.srit.xmlloader.core.Tester.open_openFile(Tester.java:140)
[Build]        at com.devoteam.srit.xmlloader.cmd.TextTester.<init>(TextTester.java:70)
[Build]        at com.devoteam.srit.xmlloader.cmd.TextImplementation.main(TextImplementation.java:197)

Regression noted on sending http request

By validating the integration of the MTS release 6.6.2 in our environment, I think I have found a regression on sending http request compared to version 6.4.5.

At first glance, this would impact http request queries on put method.

Here is a trace of running a testcase:
2425;14.08.2019 11:51:18 136;INFO;CORE;INFO : Envoi Req PUT /phones/{mac};
2426;14.08.2019 11:51:18 136;INFO;USER;INFO : Envoi Req PUT /phones/{mac};
2427;14.08.2019 11:51:18 136;INFO;CORE;Write in Scenariolog with the level = INFO the message INFO : Envoi Req PUT /phones/{mac};
2428;14.08.2019 11:51:18 136;INFO;PROTOCOL;

;

Here are now the application logs:
1859;14.08.2019 11:51:11 551;INFO;PARAM;SET [testcase:Forwarder_Number] => [1][[Forwarder]_Number]];
1868;14.08.2019 11:51:11 551;INFO;PARAM;SET [testcase:Caller_Number] => [1][789143245];
1883;14.08.2019 11:51:11 570;INFO;PARAM;SET [testcase:Callee_Number] => [1][[Callee]_Number]];
2376;14.08.2019 11:51:18 123;INFO;CALLFLOW;SEND>>> msg HTTP > GET
GET /phones/88:75:98:06:92:57/service HTTP/1.1
;
2379;14.08.2019 11:51:18 127;INFO;PROTOCOL;Receive a response (response time = 0.004 s) for the transaction : GET_in / 200_out (TRANSACTION_ID=5);
2380;14.08.2019 11:51:18 127;INFO;PROTOCOL;Routing: route the received response by TRANSACTION_ID to "Mobile4G_Sg2" (TRANSACTION_ID=5).;
2381;14.08.2019 11:51:18 127;INFO;CALLFLOW;>>>RECEIVE msg HTTP > GET > 200
HTTP/1.1 200 OK
;
2429;14.08.2019 11:51:18 137;WARN;PROTOCOL;Error while sending message
CAUSE: Length required

                                        Complete stack :
                                            org.apache.hc.core5.http.LengthRequiredException: Length required
                                            org.apache.hc.core5.http.impl.io.DefaultBHttpClientConnection.sendRequestEntity(DefaultBHttpClientConnection.java:150)
                                            com.devoteam.srit.xmlloader.http.SocketClientHttp.sendMessage(SocketClientHttp.java:106)
                                            com.devoteam.srit.xmlloader.http.ChannelHttp.sendMessage(ChannelHttp.java:121)
                                            com.devoteam.srit.xmlloader.core.protocol.Stack.sendMessage(Stack.java:696)
                                            com.devoteam.srit.xmlloader.http.StackHttp.sendMessage(StackHttp.java:365)
                                            com.devoteam.srit.xmlloader.core.protocol.Stack.sendMessageException(Stack.java:868)
                                            com.devoteam.srit.xmlloader.core.protocol.Stack.sendMessage(Stack.java:729)
                                            com.devoteam.srit.xmlloader.core.operations.protocol.OperationSendMessage.execute(OperationSendMessage.java:243)
                                            com.devoteam.srit.xmlloader.core.operations.Operation.executeAndStat(Operation.java:179)
                                            com.devoteam.srit.xmlloader.core.operations.basic.OperationSequence.execute(OperationSequence.java:88)
                                            com.devoteam.srit.xmlloader.core.operations.basic.OperationWhile.execute(OperationWhile.java:106)
                                            com.devoteam.srit.xmlloader.core.operations.Operation.executeAndStat(Operation.java:179)
                                            com.devoteam.srit.xmlloader.core.operations.basic.OperationSequence.execute(OperationSequence.java:88)
                                            com.devoteam.srit.xmlloader.core.operations.functions.Function.execute(Function.java:112)
                                            com.devoteam.srit.xmlloader.core.operations.basic.OperationCall.execute(OperationCall.java:118)
                                            com.devoteam.srit.xmlloader.core.operations.Operation.executeAndStat(Operation.java:179)
                                            com.devoteam.srit.xmlloader.core.operations.basic.OperationSequence.execute(OperationSequence.java:88)
                                            com.devoteam.srit.xmlloader.core.Scenario.executeScenario(Scenario.java:67)
                                            com.devoteam.srit.xmlloader.core.ScenarioRunner.run(ScenarioRunner.java:269)
                                            com.devoteam.srit.xmlloader.core.ThreadRunner.run(ThreadRunner.java:59)
                                        ;

2430;14.08.2019 11:51:18 137;WARN;PROTOCOL;Restoring connection and re-sending pending requests;
2431;14.08.2019 11:51:18 144;WARN;PROTOCOL;Error while sending message
CAUSE: Length required

                                        Complete stack :
                                            org.apache.hc.core5.http.LengthRequiredException: Length required
                                            org.apache.hc.core5.http.impl.io.DefaultBHttpClientConnection.sendRequestEntity(DefaultBHttpClientConnection.java:150)
                                            com.devoteam.srit.xmlloader.http.SocketClientHttp.sendMessage(SocketClientHttp.java:106)
                                            com.devoteam.srit.xmlloader.http.ChannelHttp.sendMessage(ChannelHttp.java:121)
                                            com.devoteam.srit.xmlloader.http.SocketClientHttp.restoreConnection(SocketClientHttp.java:83)
                                            com.devoteam.srit.xmlloader.http.SocketClientHttp.sendMessage(SocketClientHttp.java:123)
                                            com.devoteam.srit.xmlloader.http.ChannelHttp.sendMessage(ChannelHttp.java:121)
                                            com.devoteam.srit.xmlloader.core.protocol.Stack.sendMessage(Stack.java:696)
                                            com.devoteam.srit.xmlloader.http.StackHttp.sendMessage(StackHttp.java:365)

Then MTS goes in infinite loop and the process is killed on exception:
java.lang.StackOverflowError
at sun.net.spi.DefaultProxySelector $ 3.run (DefaultProxySelector.java:219)
at sun.net.spi.DefaultProxySelector $ 3.run (DefaultProxySelector.java:209)
at java.security.AccessController.doPrivileged (Native Method)
at sun.net.spi.DefaultProxySelector.select (DefaultProxySelector.java:208)
at java.net.SocksSocketImpl.connect (SocksSocketImpl.java:384)
at java.net.Socket.connect (Socket.java:589)
at java.net.Socket.connect (Socket.java:538)
at com.devoteam.srit.xmlloader.http.bio.BIOChannelHttp.open (BIOChannelHttp.java:141)
at com.devoteam.srit.xmlloader.http.SocketClientHttp.restoreConnection (SocketClientHttp.java:78)
at com.devoteam.srit.xmlloader.http.SocketClientHttp.sendMessage (SocketClientHttp.java:123)
at com.devoteam.srit.xmlloader.http.ChannelHttp.sendMessage (ChannelHttp.java:121)
at com.devoteam.srit.xmlloader.http.SocketClientHttp.restoreConnection (SocketClientHttp.java:83)
at com.devoteam.srit.xmlloader.http.SocketClientHttp.sendMessage (SocketClientHttp.java:123)
at com.devoteam.srit.xmlloader.http.ChannelHttp.sendMessage (ChannelHttp.java:121)
at com.devoteam.srit.xmlloader.http.SocketClientHttp.restoreConnection (SocketClientHttp.java:83)
at com.devoteam.srit.xmlloader.http.SocketClientHttp.sendMessage (SocketClientHttp.java:123)
at com.devoteam.srit.xmlloader.http.ChannelHttp.sendMessage (ChannelHttp.java:121)
at com.devoteam.srit.xmlloader.http.SocketClientHttp.restoreConnection (SocketClientHttp.java:83)
at com.devoteam.srit.xmlloader.http.SocketClientHttp.sendMessage (SocketClientHttp.java:123)
at com.devoteam.srit.xmlloader.http.ChannelHttp.sendMessage (ChannelHttp.java:121)

Improve parsing

Rely on jaxb instead of handwrited DOM parsing and xsd.

  • java first (doc in annotations)
  • no parsing (deserialization)
  • xsd generated from java with maven plugin

That would make the tool more simple to extend, maintain, document, with a lot less code.

However that would imply to re-code the parameters subsitution and special care for protocols where messages are described in XML (can a jaxb object contain DOM item ?).

bug in groovy tag management

I created this ticket to share a potential bug identified in the management of MTS groovy tags.

We get an error when we try to run a groovy script that is not under the tree in which the main test file is located. This groovy tag has an attribute named "name" that defines the path to the groovy script.

For example, an error will be raised if you execute the following code:
groovy_Attenuator.run()

In the source code of MTS, I found a function in the \ src \ main \ java \ com \ devoteam \ srit \ xmlloader \ core \ operations \ basic \ OperationGroovy.java file named prepareScriptProperties that seems to be in charge of the management of this tag.

After studying this source code, I think that the current revision of MTS does not allow to define a path with .. or ./.

Here is the function that seems to be problematic :
/**
* generate a property name based on the groovy script filename and store
* the script instance in the map
*
* @param groovyFilename
* @param script
* @throws ExecutionException
*/
private void prepareScriptProperties(Runner runner, String groovyFilename, Script script) throws ExecutionException {
// the property name is prefixed by "groovy_" followed by the script filename
// without suffix
// ie if we load Toto.groovy, the script instance property will be groovy_Toto

    int first = groovyFilename.lastIndexOf('/');
    if (first == -1) {
        first = 0;
    } else if (first > 0) {
        //remove last '/'
        first += 1;
    }
    int last = groovyFilename.indexOf('.');
    if (last >= first) {
        String propertyName = MTSBinding.GROOVY_VAR_PREFIX + groovyFilename.substring(first, last);
        injectedScripts.put(propertyName, script);
        GlobalLogger.instance().getSessionLogger().debug(runner, TextEvent.Topic.CORE, "injecting " + propertyName + " object for script " + groovyFilename);
    } else {
        throw new ExecutionException("cannot load groovy script " + groovyFilename + " : invalid file name");
    }
}

The consequence of this bug is that it is not possible to point a script that is not in the tree in which the test file is located.

SIGTRAN issue with SCTP stream-id

Need to be able to :

  • choose stream id for outgoing requests
  • send responses on same stream id as related request
  • add stream id to message properties

Incomplete operation on Cipher

I am reaching out to you as we conducted an empirical study to understand the nature of cryptographic misuses in enterprise-driven projects on GitHub. During our study, we randomly inspected a few of the misuses. One of the misuses for which we could confirm the finding of the analysis, CogniCryptSAST, is one in your project:

  • SRTPTransformer miss to call the methods init, update, wrap, doFinal upon javax.crypto.Cipher. Thus, the cipher object is not used properly either resulting in incomplete encryption or unused code.

We hope that this information helps you and to hear back from you

Fix diameter regression

There might be a regression where an Origin-Host AVP cannot be sent when containing an FQDN.

Bug on the dk.i1 stack, with auto CER/CEA enabled.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.