#######################
# This file contains the description of configuration and general information about the
# "test_app" extension.

# This extension provides a simple way to send a predefined message over the Diameter Network.
# It may be used to test the Routing or other base mechanisms from the Diameter network.

# In order to enable this extension, the main freeDiameter configuration file
# must contain the following declaration:
# LoadExtension = "extensions/app_test.fdx" : "/path/to/app_test.conf" ;
# Note that the conffile may be omitted, in which case default parameters will be assumed.
#######################


#######################
# Configuration of the test message

# This application is defined as a Vendor-Specific application. 
# Since freeDiameter does not have a IANA-assigned Vendor ID, we let a configurable value here:
# vendor-id = 999999;

# The application id. Same remark as previously.
# appli-id = 999999;

# The command code for Test-Request and Test-Answer. The range 0xfffffe-ffffff (dec: 16777215) is reserved for experimental use.
# cmd-id = 16777214;

# The AVP id for the test.
# avp-id = 345678;

# Another AVP id for long payload test. default to value 0, meaning this is not used.
# long-avp-id = 0;

# Define the payload length of the long-avp. Default 5000 bytes.
# long-avp-len = 5000;


#######################
# Configuration of the extension behavior

# The mode for the extension.
# - server: Answer incoming requests. The signal is ignored.
# - client: Send a request when the signal is received, and measure the time to receiving answer.
# - both: acts as client and server
# mode = both;

# The behavior can be changed by specifying additional "benchmark;" keyword.
# When this keyword appears, it changes the behavior as follow:
#  - server is silent on message reception, only the activity summary is displayed every 30 seconds
#  - client attempts to send as many messages as possible during 10 seconds and counts them.
# The benchmark keyword can be followed optionally by two integers:
#   duration is the time for the measurement, in seconds (default 10).
#   concurrency is the number of messages that can be on the wire before waiting for an answer (default 100).
# benchmark [duration concurrency];


#######################
# Client-specific configuration

# The Destination-Realm for the message
# (default is sending to same realm as local peer).
# dest-realm = "foreign.net";

# The Destination-Host for the message.
# (default is not providing this AVP).
# dest-host = "server.foreign.net";

# The User-Name for the message (may be useful for some routing tests).
# (default is not providing this AVP).
# user-name = "user@server.foreign.net";

# The signal that triggers sending the test message
# Note: Symbolic names are not recognized, you must use integers
# signal = 10;
