Prévia do material em texto
Template de apoio à Atividade de Teste de Software Criado para o MOOC Introdução ao Teste de Software – Plataforma Coursera 1. Cenário geral do “Online Charging System Using Diameter Protocol in LTE/4G Networks”. The Diameter is a protocol that enables communication among internet protocol network elements, it can be thought of as the language that servers and software use to communicate within the core of the LTE Network, also is a key element for managing and securing diameter signaling, this protocol provides authentication , authorization and accounting (AAA) messaging services for network access and data mobility applications in 3G, IP Multimedia Systems (IMS), and LTE/4G Networks. The Diameter Signaling Controller (DSC) is usually deployed to centralize routing of diameter messages between diameter agents in the mobile operator´s core network, the DSC is required mainly in the Long-Term Evolution Networks (LTE) 4G networks. The DSC is composed of incoming and outgoing interfaces that are used to route diameter messages. • In the Incoming interface it allows diameter nodes, Clients in this case to send and receive messages through them for different applications. • In the Outgoing interface it allows diameter nodes, Servers in this case to send and receive messages through them for different applications. • Dictionary, in order to identify protocols and related information, it is important to have dictionary for applications. • Supported Applications: “Ro” it is used to Exchange online charging information with OCF (Online Charging Function). Online charging, also known as credit-based charging, is used to charge prepaid services. A typical example of a prepaid service is a calling card purchased for voice or video. The Ro protocol allows a Charging Trigger Function (CTF) to issue charging events to an Online Charging Function (OCF). The charging events can be immediate, event-based, or session-based. We will be using a tool called Seagull it is a free and Open Source multi-protocol traffic Generator, it is a powerful traffic generator for functional, load , endurance, stress and performance/benchmark tests for almost any kind of protocol, in addition due its openness allows to add the support of a brand new protocol in a very few time with not programming knowledge it comes with several protocol families embedded in the source code: • Binary/TLV (Diameter, Radius and many 3GPP and IETF protocols) • External library (TCAP, SCTP). • Text (XCAP, HTTP, H248, ASCII). • An attribute-value pair (AVP) is a fundamental representation of data in computer system which diameter protocol use, in other way avp’s are the basic unit inside that the diameter carries the data. 2. Estratégia(s) de Teste (como será testado) In this module we will perform functional testing with boundary-value analysis, between incoming and outgoing interfaces so we are going to test incoming and outgoing interfaces. 3. Projeto de Casos de Teste (como será testado) Function Description Test Results Charge the user for sending a text or multimedia message A subscriber is sending a text message from phone A to phone B and has to be charged. Verify that the Seagull Client is sending the CC-Request-TYPE value of 4 which is event based credit control process that it uses events as charging mechanism. Event- based charging is typically used when units are not continuously consumed (not session-based) Charge the user for sending a message text or multimedia message. A subscriber is sending a text message from phone A to phone B and has to be charged. Seagull Client is not sending the CC- Request-TYPE since this value is mandatory the system will return a permanent error and will reject the message and trigger na alarm that there is a bug or the system has a malfunction. Charge the user for sending a message text or multimedia message. A subscriber is sending a text message from phone A to phone B and has to be charged. the Seagull Client is sending the CC- Request-TYPE value if which is an invalid value and not supported by the system it will return and check the subscriber plan to see if it is event base or session based otherwise if nothing is returned it will drop the message and it will trigger an alarm of permanent failure. Charge the user for making a call. A subscriber is making a telephone call and since it is taking a period of time the CC-REQUEST-TYPE = 1 or 2 or 3, during the call 1= initial = when the user answer the call and it is connected 2= update the system will deduct credits during the call and 3 = termination of call = where the user finishes the call or no credits are available. The seagull client is sending the CC- Request-Type value 1 then 2 and then 3 which is session based that uses several interrogations which may include first, intermediate and last interrogation. During interrogation money is reserved from the user account. Session- based charging is typically used for scenarios where the charged units are continuously consumed charging for bytes upload/download. Template de apoio à Atividade de Teste de Software Criado para o MOOC Introdução ao Teste de Software – Plataforma Coursera Equivalence Classes 4. Execução (quando e como será testado) Ro Accounting Application – Functional Test Scenario 1 Prerequisites: 1. Diameter Router installed. 2. Ro outgoing interface, called Ro-Out is already created from DSC web page. 3. Ro incoming interface, called Ro-Inc is already created from DSC web page. 4. Seagull Simulator is configured as a client and server to send and receive messages through the incoming and outgoing interfaces created. 5. From the simulator /config: base_ro.xml. 6. From the simulator /config scenario use: ro.ccr-cca.event.client.xml and ro.ccr- cca.event.server.xml. Steps to test it: • Start seagull as Diameter Ro server, then the Ro-Out interface connects to the Seagull Ro Server. • Change in the Client Script the CC-REQUEST-TYPE=”4” • Start seagull as Diameter Ro client, then the Ro-Inc interface connects to the Seagull Ro client and it will send one CCR request to the incoming interface, then it should be routed to the Ro-out interface. Results: 1. The CCR request is successfully sent to the Ro Diameter server through incoming and outgoing interfaces with CC-REQUEST-TYPE = 4 (which is event based) , for EVENT_REQUEST , additional details can be checked on https://www.iana.org/assignments/aaa- parameters/aaa-parameters.xhtml#aaa-parameters-28 , by searching (CC-Request-Type). 2. CCA is successfully routed back to Ro diameter client from Ro diameter Server trough incoming and outgoing interface. 3. 4 TDRs records should be generated: 2 for requests and 2 for responses. 4. Diameter Transaction Records (TDRs) Example of a functional test result which is a success: 10:57:49.455|REQ_IN|1|DIAMETER|272|ro|EVENT_REQUEST|1001|2001|0|roinc||NO_A CTION| input values Valid equivalence classes Invalid equivalence classes Length (CC-REQUEST- TYPE) (t) 1 <= t <=4 t > 4 First character is a letter None. None. It contains characters None. None. https://www.iana.org/assignments/aaa-parameters/aaa-parameters.xhtml#aaa-parameters-28 https://www.iana.org/assignments/aaa-parameters/aaa-parameters.xhtml#aaa-parameters-28 10:57:49.453|REQ_OUT|1|DIAMETER|272|ro|EVENT_REQUEST|1001|2001|2|roinc|roout ||NO_ACTION| 10:57:49.480|RESP_IN|1|DIAMETER|272|ro|EVENT_REQUEST|1001|2001|2|roinc|roout| 2001|Success||NO_ACTION| 10:57:49.542|RESP_OUT|1|DIAMETER|272|ro|RO_EVENT_REQUEST|1001|2001|2|roinc|r oout|2001|Success||NO_ACTION| Ro Accounting Application – Functional Test Scenario 2 Prerequisites: 1. Diameter Router installed. 2. Rooutgoing interface, called Ro-Out is already created from DSC web page. 3. Ro incoming interface, called Ro-Inc is already created from DSC web page. 4. Seagull Simulator is configured as a client and server to send and receive messages through the incoming and outgoing interfaces created. 5. From the simulator /config: base_ro.xml. 6. From the simulator /config scenario use: ro.ccr-cca.event.client.xml and ro.ccr- cca.event.server.xml. Steps to test it: • Start seagull as Diameter Ro server, then the Ro-Out interface connects to the Seagull Ro Server. • Change in the Client Script the CC-REQUEST-TYPE value or delete the value assigned to it. • Start seagull as Diameter Ro client, then the Ro-Inc interface connects to the Seagull Ro client and it will send one CCR request to the incoming interface, then it should be routed to the Ro-out interface. Results: 1. The CCR request is successfully sent to the Ro Diameter server through incoming and outgoing interfaces with CC-REQUEST-TYPE is missing , for EVENT_REQUEST , additional details can be checked on https://www.iana.org/assignments/aaa-parameters/aaa- parameters.xhtml#aaa-parameters-28 , by searching (CC-Request-Type). 2. CCA is successfully routed back to Ro diameter client from Ro diameter Server trough incoming and outgoing interface. 3. 3 TDRs records should be generated: 2 for requests and 1 for responses, since the second response is not routed due to a permanent error. 4. Diameter Transaction Records (TDRs) Example of a functional test result which is a permanent error: 10:57:49.455|REQ_IN|1|DIAMETER|272|ro|EVENT_REQUEST|1001|2001|0|roinc||NO_A CTION| 10:57:49.453|REQ_OUT|1|DIAMETER|272|ro|EVENT_REQUEST|1001|2001|2|roinc|roout ||NO_ACTION| 10:57:49.480|RESP_IN|1|DIAMETER|272|ro|EVENT_REQUEST|1001|2001|2|roinc|roout| 5005|DIAMETER-MISSING-AVP||NO_ACTION| https://www.iana.org/assignments/aaa-parameters/aaa-parameters.xhtml#aaa-parameters-28 https://www.iana.org/assignments/aaa-parameters/aaa-parameters.xhtml#aaa-parameters-28 Template de apoio à Atividade de Teste de Software Criado para o MOOC Introdução ao Teste de Software – Plataforma Coursera Ro Accounting Application – Functional Test Scenario 3 Prerequisites: 7. Diameter Router installed. 8. Ro outgoing interface, called Ro-Out is already created from DSC web page. 9. Ro incoming interface, called Ro-Inc is already created from DSC web page. 10. Seagull Simulator is configured as a client and server to send and receive messages through the incoming and outgoing interfaces created. 11. From the simulator /config: base_ro.xml. 12. From the simulator /config scenario use: ro.ccr-cca.event.client.xml and ro.ccr- cca.event.server.xml. Steps to test it: • Start seagull as Diameter Ro server, then the Ro-Out interface connects to the Seagull Ro Server. • Change in the Client Script the CC-REQUEST-TYPE value to and invalid one for example “abc4”. • Start seagull as Diameter Ro client, then the Ro-Inc interface connects to the Seagull Ro client and it will send one CCR request to the incoming interface, then it should be routed to the Ro-out interface. Results: 1. The CCR request is successfully sent to the Ro Diameter server through incoming and outgoing interfaces with CC-REQUEST-TYPE = “abc4”, invalid value , for EVENT_REQUEST , additional details can be checked on https://www.iana.org/assignments/aaa- parameters/aaa-parameters.xhtml#aaa-parameters-28 , by searching (CC-Request-Type). 2. CCA is successfully routed back to Ro diameter client from Ro diameter Server trough incoming and outgoing interface. 3. 3 TDRs records should be generated: 2 for requests and 1 for responses, since the second response is not routed due to a permanent error. 4. Diameter Transaction Records (TDRs) Example of a functional test result which is a permanent error: 10:57:49.455|REQ_IN|1|DIAMETER|272|ro|EVENT_REQUEST|1001|2001|0|roinc||NO_A CTION| 10:57:49.453|REQ_OUT|1|DIAMETER|272|ro|EVENT_REQUEST|1001|2001|2|roinc|roout ||NO_ACTION| 10:57:49.480|RESP_IN|1|DIAMETER|272|ro|EVENT_REQUEST|1001|2001|2|roinc|roout| 5004|DIAMETER_INVALID_AVP_VALUE||NO_ACTION| https://www.iana.org/assignments/aaa-parameters/aaa-parameters.xhtml#aaa-parameters-28 https://www.iana.org/assignments/aaa-parameters/aaa-parameters.xhtml#aaa-parameters-28 Ro Accounting Application – Functional Test Scenario 4 Prerequisites: 13. Diameter Router installed. 14. Ro outgoing interface, called Ro-Out is already created from DSC web page. 15. Ro incoming interface, called Ro-Inc is already created from DSC web page. 16. Seagull Simulator is configured as a client and server to send and receive messages through the incoming and outgoing interfaces created. 17. From the simulator /config: base_ro.xml. 18. From the simulator /config scenario use: ro.ccr-cca.session.client.xml and ro.ccr- cca.event.session.xml. Steps to test it: • Start seagull as Diameter Ro server, then the Ro-Out interface connects to the Seagull Ro Server. • Change in the Client Script the CC-REQUEST-TYPE value = 1. then seagull should increment it to 2 and then to 3, after this should terminate the session. • Start seagull as Diameter Ro client, then the Ro-Inc interface connects to the Seagull Ro client and it will send 3 CCR requests to the incoming interface, then it should be routed to the Ro-out interface. Results: 1. The CCR request is successfully sent to the Ro Diameter server through incoming and outgoing interfaces with CC-REQUEST-TYPE = 1 then incremented to 2 and then to 3 for SESSION_REQUEST, additional details can be checked on https://www.iana.org/assignments/aaa-parameters/aaa-parameters.xhtml#aaa- parameters-28 , by searching (CC-Request-Type). 2. CCA is successfully routed back to Ro diameter client from Ro diameter Server trough incoming and outgoing interface. 3. 6 TDRs records should be generated: 3 for requests and 3 for responses. 4. Diameter Transaction Records (TDRs) Example of a functional test result which is a success: 10:57:49.455|REQ_IN|1|DIAMETER|272|ro|INITIAL_REQUEST|1045|2045|0|roinc||NO_A CTION| 10:57:55.563|RESP_OUT|1|DIAMETER|272|ro|INITIAL_REQUEST|1045|2045|0|roinc|roo ut|2001|Success||NO_ACTION|| 10:58:48.455|REQ_IN|1|DIAMETER|272|ro|UPDATE_REQUEST|1046|2046|0|roinc|roout |NO_ACTION| 10:59.44.221|RESP_OUT|1|DIAMETER|272|ro|UPDATE_REQUEST|1046|2046|0|roinc|roo ut|2001|Success||NO_ACTION|| 11:00:01.225|REQ_IN|1|DIAMETER|272|ro|TERMINATION_REQUEST|1047|2047|0|roinc| roout|NO_ACTION| 11:00:01.884|RESP_OUT|1|DIAMETER|272|ro|TERMINATION_REQUEST|1047|2047|0|roi nc|roout|2001|Success||NO_ACTION|| https://www.iana.org/assignments/aaa-parameters/aaa-parameters.xhtml#aaa-parameters-28 https://www.iana.org/assignments/aaa-parameters/aaa-parameters.xhtml#aaa-parameters-28 Template de apoio à Atividade de Teste de Software Criado para o MOOC Introdução ao Teste de Software – Plataforma Coursera 5. Análise dos Resultados e próximos passos After the functional tests are done , the tests are satisfactory another tool that can be used for guaranteed and ensure again that the results are correct , functional tests are correct we can use a protocol analyzer which is called Wireshark and it will tell us if the information has been sent correctly to the final destination, this tool let us know what is happening at the network, also it stores data for offline analysis, those functional test will be repeated for each value included in this scripts, after those tests are finished , a load test , or regression testing can be executed in order to see the behavior of the system where fixes are added and also when there is a load of messages introduced to the router, it helped to see if the steps were implemented properly too. Scripts used to generate the scenarios: Seagull Diameter Server Sample XML ConfigurationFile for ro.ccr-cca.event.server.xml: <?xml version="1.0" encoding="ISO-8859-1" ?> <scenario> <init> <receive channel="channel-1"> <command name="CER"> </command> <action> <store name="ven" entity="Vendor-Id"> </store> </action> </receive> <send channel="channel-1"> <command name="CEA"> <avp name="Result-Code" value="2001"> </avp> <avp name="Origin-Host" value="idefix.grenoble.hp.com"> </avp> <avp name="Origin-Realm" value="grenoble.hp.com"> </avp> <avp name="Host-IP-Address" value="0x00010f80aa3c"> </avp> <avp name="Vendor-Id" value="11"> </avp> <avp name="Product-Name" value="HP_HSS"> </avp> <avp name="Firmware-Revision" value="1"> </avp> </command> </send> </init> <traffic> <receive channel="channel-1"> <command name="CCR"> <!-- Only need to specify what needs to be parsed --> <avp name="Session-Id" value="dont_care"> </avp> </command> <!-- Store action is at the end of the command --> <action> <store name="HbH" entity="HbH-id"></store> <store name="E2E" entity="EtE-id"></store> <store name="sid" entity="Session-Id"></store> </action> </receive> <send channel="channel-1"> <!-- Restore action is before the command --> <action> <restore name="HbH" entity="HbH-id"> </restore> <restore name="E2E" entity="EtE-id"> </restore> <restore name="sid" entity="Session-Id"> </restore> </action> <!-- Warning: content of CCA to check --> <command name="CCA"> <avp name="Session-Id" value="will_be_erased"> </avp> <avp name="Vendor-Specific-Application-Id"> <avp name="Vendor-Id" value="11"></avp> <avp name="Auth-Application-Id" value="167772151"></avp> <avp name="Acct-Application-Id" value="0"></avp> </avp> <avp name="Origin-Host" value="idefix.grenoble.hp.com"> </avp> <avp name="Origin-Realm" value="grenoble.hp.com"> </avp> <avp name="Auth-Session-State" value="1"> </avp> <avp name="Server-Name" value="idefix.grenoble.hp.com"> </avp> <avp name="Result-Code" value="2001"> </avp> </command> </send> </traffic> </scenario> Seagull Diameter Server Sample XML Configuration File: <?xml version="1.0" encoding="ISO-8859-1"?> <configuration name="Simple IP Server Conf"> <define entity="transport" name="trans-1" file="libtrans_ip.so" create_function="create_cipio_instance" delete_function="delete_cipio_instance" init-args="type=tcp;decode-buf-len=262144;encode-buf-len=262144"> </define> <define entity="channel" name="channel-1" protocol="diameter-v1" transport="trans-1" open-args="mode=server;source=192.168.0.2:12000"> </define> <define entity="traffic-param" name="display-period" value="1"></define> <define entity="traffic-param" name="model-traffic-select" value="best-effort"></define> <define entity="traffic-param" name="log-stat-period" value="1"></define> <define entity="traffic-param" name="log-stat-file" value="../logs/server-stat.csv"></define> <define entity="traffic-param" name="call-timeout-ms" value="10000"></define> <define entity="traffic-param" name="display-scenario-stat" value="true"></define> <define entity="traffic-param" name="display-protocol-stat" value="true"></define> <define entity="traffic-param" name="log-protocol-stat-period" value="5"></define> <define entity="traffic-param" name="log-protocol-stat-name" value="all"></define> <define entity="traffic-param" name="log-protocol-stat-file" value="../logs/server-protocol- stat.csv"></define> <define entity="traffic-param" name="max-send" value="1"></define> <define entity="traffic-param" name="max-receive" value="1"></define> <define entity="traffic-param" name="max-simultaneous-calls" value="1"></define> <define entity="traffic-param" name="select-timeout-ms" value="50"></define> Template de apoio à Atividade de Teste de Software Criado para o MOOC Introdução ao Teste de Software – Plataforma Coursera </configuration> Seagull Diameter Client Sample XML Configuration File for ro.ccr-cca.event.client.xml: <?xml version="1.0" encoding="ISO-8859-1" ?> <scenario> <counter> <counterdef name="HbH-counter" init="1000"> </counterdef> <counterdef name="EtE-counter" init="2000"> </counterdef> <counterdef name="session-counter" init="0"> </counterdef> <!--counterdef name="session-counter-update" init="0"> </counterdef--> <!--counterdef name="session-counter-terminate" init="0"> </counterdef--> <!--counterdef name="request-type-counter" init="1" max="3" behaviour="init"> </counterdef--> </counter> <init> <send channel="channel-1"> <command name="CER"> <avp name="Origin-Host" value="test1.test.com"> </avp> <avp name="Origin-Realm" value="test.com"> </avp> <avp name="Host-IP-Address" value="0x00017F000001"> </avp> <avp name="Vendor-Id" value="10415"> </avp> <avp name="Product-Name" value="Ro Interface"> </avp> <avp name="Origin-State-Id" value="1094807040"> </avp> <avp name="Supported-Vendor-Id" value="10415"> </avp> <avp name="Acct-Application-Id" value="4"> </avp> <avp name="Vendor-Specific-Application-Id"> <avp name="Vendor-Id" value="10415"></avp> <avp name="Acct-Application-Id" value="4"></avp> </avp> <avp name="Firmware-Revision" value="1"> </avp> </command> </send> <receive channel="channel-1"> <command name="CEA"> </command> </receive> </init> <!-- Traffic --> <traffic> <!-- Transaction in Ro CCR/CCA session --> <send channel="channel-1"> <action> <!-- For each new call, increment the session-ID counter --> <inc-counter name="HbH-counter"> </inc-counter> <inc-counter name="EtE-counter"> </inc-counter> <inc-counter name="session-counter"> </inc-counter> <set-value name="HbH-id" format="$(HbH-counter)"></set-value> <set-value name="EtE-id" format="$(EtE-counter)"></set-value> <set-value name="Session-Id" format="ro1.1;38;13403563;$(session-counter)"></set-value> <!--set-value name="CC-Request-Type" format="$(request-type-counter)"></set-value--> <!— session based --> </action> <command name="CCR"> <avp name="Session-Id" value="value_is_replaced"> </avp> <avp name="Service-Context-Id" value="context1"> </avp> <avp name="Origin-Host" value="node1.test.com"> </avp> <avp name="Origin-Realm" value="test.com"> </avp> <avp name="Destination-Realm" value="test2.com"> </avp> <avp name="Destination-Host" value="node2.test2.com"> </avp> <avp name="CC-Request-Type" value="4"> </avp> <!--Event based--> <avp name="CC-Request-Number" value="0"> </avp> <avp name="Auth-Application-Id" value="4"></avp> </command> <action> <start-timer></start-timer> </action> </send> <receive channel="channel-1"> <action> <stop-timer></stop-timer> </action> <command name="CCA"> </command> </receive> </traffic> </scenario> Seagull Diameter RO base file example: <?xml version="1.0" encoding="ISO-8859-1"?> <protocol name="diameter-v1" type="binary" padding="4"> <types> <!-- Types defined for the AVP --> <typedef name="Integer32" type="signed" size="4" unit="octet"></typedef> <typedef name="Unsigned32" type="number" size="4" unit="octet"></typedef> <typedef name="Integer64" type="signed64" size="8" unit="octet"></typedef> <typedef name="Unsigned64" type="number64" size="8" unit="octet"></typedef> <typedef name="OctetString" type="string" size="4" unit="octet"></typedef> <typedef name="Grouped"type="grouped"></typedef> </types> <header name="command" length="msg-length" type="cmd-code"> <fielddef name="protocol-version" size="1" unit="octet"></fielddef> <fielddef name="msg-length" size="3" unit="octet"></fielddef> <fielddef name="flags" size="1" unit="octet"></fielddef> <fielddef name="cmd-code" size="3" unit="octet"></fielddef> <fielddef name="application-id" size="4" unit="octet"></fielddef> <fielddef name="HbH-id" size="4" unit="octet"></fielddef> <fielddef name="EtE-id" size="4" unit="octet"></fielddef> </header> <body> <header name="avp" length="avp-length" type="avp-code"> <fielddef name="avp-code" size="4" unit="octet"></fielddef> <fielddef name="flags" size="1" unit="octet"></fielddef> <fielddef name="avp-length" size="3" unit="octet"></fielddef> Template de apoio à Atividade de Teste de Software Criado para o MOOC Introdução ao Teste de Software – Plataforma Coursera <optional> <fielddef name="Vendor-ID" size="4" unit="octet" condition="mask" field="flags" mask="128"> </fielddef> </optional> </header> </body> <dictionary> <!-- AVP definitions --> <avp> <!-- Diameter Base (RFC 3588) AVPs --> <define name="Acct-Interim-Interval" type="Unsigned32"> <setfield name="avp-code" value="85"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Accounting-Realtime-Required" type="Unsigned32"> <setfield name="avp-code" value="483"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Acct-Multi-Session-Id" type="OctetString"> <setfield name="avp-code" value="50"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Accounting-Record-Number" type="Unsigned32"> <setfield name="avp-code" value="485"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Accounting-Record-Type" type="OctetString"> <setfield name="avp-code" value="480"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Accounting-Session-Id" type="OctetString"> <setfield name="avp-code" value="44"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Accounting-Sub-Session-Id" type="Unsigned64"> <setfield name="avp-code" value="287"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Acct-Application-Id" type="Unsigned32"> <setfield name="avp-code" value="259"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Auth-Application-Id" type="Unsigned32"> <setfield name="avp-code" value="258"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Auth-Request-Type" type="Unsigned32"> <setfield name="avp-code" value="274"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Authorization-Lifetime" type="Unsigned32"> <setfield name="avp-code" value="291"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Auth-Grace-Period" type="Unsigned32"> <setfield name="avp-code" value="276"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Auth-Session-State" type="Unsigned32"> <setfield name="avp-code" value="277"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Re-Auth-Request-Type" type="Unsigned32"> <setfield name="avp-code" value="285"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Class" type="OctetString"> <setfield name="avp-code" value="25"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Destination-Host" type="OctetString"> <setfield name="avp-code" value="293"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Destination-Realm" type="OctetString"> <setfield name="avp-code" value="283"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Disconnect-Cause" type="Unsigned32"> <setfield name="avp-code" value="273"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Error-Message" type="OctetString"> <setfield name="avp-code" value="281"></setfield> <setfield name="flags" value="0"></setfield> </define> <define name="Error-Reporting-Host" type="OctetString"> <setfield name="avp-code" value="294"></setfield> <setfield name="flags" value="0"></setfield> </define> <define name="Event-Timestamp" type="OctetString"> <setfield name="avp-code" value="55"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Failed-AVP" type="Grouped"> <setfield name="avp-code" value="279"></setfield> <setfield name="flags" value="0"></setfield> </define> <define name="Firmware-Revision" type="Unsigned32"> <setfield name="avp-code" value="267"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Host-IP-Address" type="OctetString"> <setfield name="avp-code" value="257"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Origin-Host" type="OctetString"> <setfield name="avp-code" value="264"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Origin-Realm" type="OctetString"> <setfield name="avp-code" value="296"></setfield> <setfield name="flags" value="64"></setfield> Template de apoio à Atividade de Teste de Software Criado para o MOOC Introdução ao Teste de Software – Plataforma Coursera </define> <define name="Origin-State-Id" type="Unsigned32"> <setfield name="avp-code" value="278"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Product-Name" type="OctetString"> <setfield name="avp-code" value="269"></setfield> <setfield name="flags" value="0"></setfield> </define> <define name="Result-Code" type="Unsigned32"> <setfield name="avp-code" value="268"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Route-Record" type="OctetString"> <setfield name="avp-code" value="282"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Session-Id" type="OctetString"> <setfield name="avp-code" value="263"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Session-Timeout" type="Unsigned32"> <setfield name="avp-code" value="27"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Supported-Vendor-Id" type="Unsigned32"> <setfield name="avp-code" value="265"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Termination-Cause" type="Unsigned32"> <setfield name="avp-code" value="295"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="User-Name" type="OctetString"> <setfield name="avp-code" value="1"></setfield> <setfield name="flags" value="64"></setfield></define> <define name="Vendor-Id" type="Unsigned32"> <setfield name="avp-code" value="266"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Vendor-Specific-Application-Id" type="Grouped"> <setfield name="avp-code" value="260"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Service-Information" type="Grouped"> <setfield name="avp-code" value="873"></setfield> <setfield name="flags" value="64"></setfield> </define> <!-- Diameter RFC 4006 AVPs --> <define name="Service-Context-Id" type="OctetString"> <setfield name="avp-code" value="461"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="CC-Request-Type" type="OctetString"> <setfield name="avp-code" value="416"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="CC-Request-Number" type="Unsigned32"> <setfield name="avp-code" value="415"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Requested-Action" type="Unsigned32"> <setfield name="avp-code" value="436"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Granted-Service-Unit" type="Grouped"> <setfield name="avp-code" value="431"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Requested-Service-Unit" type="Grouped"> <setfield name="avp-code" value="456"></setfield> <setfield name="flags" value="64"></setfield> </define> <define name="Value-Digits" type="Integer64"> <setfield name="avp-code" value="447"></setfield> <setfield name="flags" value="64"></setfield> </define> </avp> <!-- COMMAND definitions --> <command session-id="Session-Id" out-of-session-id="HbH-id"> <!-- Diameter Base (RFC 3588) commands --> <define name="CER"> <!-- It's a request, R bit is set --> <setfield name="flags" value="128"></setfield> <setfield name="cmd-code" value="257"></setfield> <setfield name="protocol-version" value="1"></setfield> </define> <define name="CEA"> <!-- It's an answer, R bit is unset --> <setfield name="flags" value="0"></setfield> <setfield name="cmd-code" value="257"></setfield> <setfield name="protocol-version" value="1"></setfield> </define> <!-- Diameter RFC 4006 commands --> <define name="CCR"> <!-- It's a request, R bit is set --> <setfield name="flags" value="128"></setfield> <setfield name="cmd-code" value="4"></setfield> <setfield name="application-id" value="4"></setfield> <setfield name="protocol-version" value="1"></setfield> </define> <define name="CCA"> <!-- It's an answer, R bit is unset --> <setfield name="flags" value="0"></setfield> <setfield name="cmd-code" value="4"></setfield> <setfield name="application-id" value="4"></setfield> <setfield name="protocol-version" value="1"></setfield> </define> </command> </dictionary> </protocol>