ericsson-mts / mts Goto Github PK
View Code? Open in Web Editor NEWProject of Multi-protocol Test Tool opensourced by Ericsson
License: GNU General Public License v3.0
Project of Multi-protocol Test Tool opensourced by Ericsson
License: GNU General Public License v3.0
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
MTS_user_manual_core.doc.
Test XML file.
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.
<Install_Dir>/doc/schemas/
contains only test.html
XML grammar reference. Actual location for test.xsd
is an <Install_Dir>/conf/schemas/test.xsd
.
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.
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
Hello everyone,
Can someone explain how to configure TLS on MTS ?
Regards
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.
Rely on jaxb instead of handwrited DOM parsing and xsd.
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 ?).
Add this new argument to documentation
Avoid unrelated exceptions when something go wrong.
The path logs/testPlan.csv is hardocded. This makes running multiple instances of MTS (in cli) at the same time impossible because of conflicts over this file.
Add an argument to the cli to change the name of the file.
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 │
└──────────────────────────────────────────────────────────────┴─────────────────────┴──────────┴───────────────────┴─────────────────────────────┴──────────────────────────────────────────────────────────────┘
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)
I have nver used mts before and would like to know how I can get tit installed and configure, is there any documentation or Wiki ?
Does MTS Support for SD & SY Interface ? ?
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)
;`
Need to be able to :
Error: Invalid or corrupt jarfile ../Uninstaller/uninstaller.jar
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
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.
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.
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).
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.
the test_conditions documentation isn't generated anymore
the parameter_operations documentation has the wrong parameter description for some operators
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.
[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)
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 ?
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:
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
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
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
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)
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:
We hope that this information helps you and to hear back from you
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)
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
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
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 ?
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)
Rely on akka to execute scenarios. Akka is a completely asynchronous and scalable framework.
That would imply two major improvements :
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.