aboutsummaryrefslogtreecommitdiffstats
path: root/lib/diameter/test/diameter_capx_SUITE.erl
diff options
context:
space:
mode:
authorAnders Svensson <[email protected]>2013-03-15 18:37:56 +0100
committerAnders Svensson <[email protected]>2013-03-18 13:44:03 +0100
commit359bd293d2a3ab65bac48a3fe14fe8b33beffebd (patch)
treebeddfef4dd25c6c7af4ee6d2b167c3c5700603f4 /lib/diameter/test/diameter_capx_SUITE.erl
parentda15b3c5fdc9ff96b8d02f4620c879418648d45c (diff)
downloadotp-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.erl26
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