diff options
author | Anders Svensson <[email protected]> | 2013-03-15 18:37:56 +0100 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2013-03-18 13:44:03 +0100 |
commit | 359bd293d2a3ab65bac48a3fe14fe8b33beffebd (patch) | |
tree | beddfef4dd25c6c7af4ee6d2b167c3c5700603f4 /lib/diameter/test/diameter_capx_SUITE.erl | |
parent | da15b3c5fdc9ff96b8d02f4620c879418648d45c (diff) | |
download | otp-359bd293d2a3ab65bac48a3fe14fe8b33beffebd.tar.gz otp-359bd293d2a3ab65bac48a3fe14fe8b33beffebd.tar.bz2 otp-359bd293d2a3ab65bac48a3fe14fe8b33beffebd.zip |
Deal with RFC 6733 change to Vendor-Specific-Application-Id
RFC 6733 has changed the arity of Vendor-Id in this Grouped AVP, from 1*
in RFC 3588 to 1 in RFC 6773. This impacts the generated dictionary
modules: Vendor-Id is expected to be list-valued in the 3588 dictionary,
integer-valued in the 6733 dictionary. This, in turn, breaks the
independence of capabilities configuration on a service or transport
from the dictionary that will be used to encode an outgoing CER or CEA.
This commit fixes this by massaging any Vendor-Specific-Application-Id
config as appropriate when constructing CER or CEA for a given
dictionary.
Diffstat (limited to 'lib/diameter/test/diameter_capx_SUITE.erl')
-rw-r--r-- | lib/diameter/test/diameter_capx_SUITE.erl | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/lib/diameter/test/diameter_capx_SUITE.erl b/lib/diameter/test/diameter_capx_SUITE.erl index a4e4195a19..6fe6682571 100644 --- a/lib/diameter/test/diameter_capx_SUITE.erl +++ b/lib/diameter/test/diameter_capx_SUITE.erl @@ -34,6 +34,7 @@ %% testcases -export([start/1, + vendor_id/1, start_services/1, add_listeners/1, s_no_common_application/1, @@ -69,7 +70,7 @@ -define(HOST(Name), Name ++ "." ++ ?REALM). %% Config for diameter:start_service/2. --define(SERVICE(Name), +-define(SERVICE, [{'Origin-Realm', ?REALM}, {'Host-IP-Address', [?ADDR]}, {'Vendor-Id', 12345}, @@ -103,6 +104,7 @@ suite() -> [{timetrap, {seconds, 60}}]. all() -> [start, + vendor_id, start_services, add_listeners] ++ [{group, D, P} || D <- ?DICTS, P <- [[], [parallel]]] @@ -156,9 +158,27 @@ tc() -> start(_Config) -> ok = diameter:start(). +%% Ensure that both integer and list-valued vendor id's can be +%% configured in a 'Vendor-Specific-Application-Id, the arity having +%% changed between RFC 3588 and RFC 6733. +vendor_id(_Config) -> + [] = ?util:run([[fun vid/1, V] || V <- [1, [1], [1,2], x]]). + +vid(V) -> + RC = diameter:start_service(make_ref(), + [{'Vendor-Specific-Application-Id', + [[{'Vendor-Id', V}]]} + | ?SERVICE]), + vid(V, RC). + +vid(x, {error, _}) -> + ok; +vid(_, ok) -> + ok. + start_services(_Config) -> - ok = diameter:start_service(?SERVER, ?SERVICE(?SERVER)), - ok = diameter:start_service(?CLIENT, ?SERVICE(?CLIENT)). + ok = diameter:start_service(?SERVER, ?SERVICE), + ok = diameter:start_service(?CLIENT, ?SERVICE). %% One server that responds only to base accounting, one that responds %% to both this and the common application. Share a common service just |