diff options
author | Anders Svensson <[email protected]> | 2013-03-23 19:16:19 +0100 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2013-03-24 15:53:03 +0100 |
commit | dbdab43a5b4eab278538b9c82c17fccac7f778a3 (patch) | |
tree | 65d4bdca049f9c85e37101720df0eab0b0603a59 | |
parent | 849d61f719120fddac1e0797cd282e4f0ec7e335 (diff) | |
download | otp-dbdab43a5b4eab278538b9c82c17fccac7f778a3.tar.gz otp-dbdab43a5b4eab278538b9c82c17fccac7f778a3.tar.bz2 otp-dbdab43a5b4eab278538b9c82c17fccac7f778a3.zip |
Move example dict compilation to examples suite
From compiler suite.
-rw-r--r-- | lib/diameter/test/diameter_compiler_SUITE.erl | 51 | ||||
-rw-r--r-- | lib/diameter/test/diameter_examples_SUITE.erl | 81 |
2 files changed, 80 insertions, 52 deletions
diff --git a/lib/diameter/test/diameter_compiler_SUITE.erl b/lib/diameter/test/diameter_compiler_SUITE.erl index 79bf9d32db..81722c8dca 100644 --- a/lib/diameter/test/diameter_compiler_SUITE.erl +++ b/lib/diameter/test/diameter_compiler_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2010-2012. All Rights Reserved. +%% Copyright Ericsson AB 2010-2013. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -31,8 +31,7 @@ %% testcases -export([format/1, format/2, replace/1, replace/2, - generate/1, generate/4, - examples/1]). + generate/1, generate/4]). -export([dict/0]). %% fake dictionary module @@ -328,14 +327,6 @@ "@codecs mymod " "Origin-Host Origin-Realm\n&"}]}]). -%% Standard dictionaries in examples/dict. --define(EXAMPLES, [rfc4004_mip, - rfc4005_nas, - rfc4006_cc, - rfc4072_eap, - rfc4590_digest, - rfc4740_sip]). - %% =========================================================================== suite() -> @@ -344,8 +335,7 @@ suite() -> all() -> [format, replace, - generate, - examples]. + generate]. %% Error handling testcases will make an erroneous dictionary out of %% the base dictionary and check that the expected error results. @@ -429,41 +419,6 @@ generate(Mods, Bin, N, Mode) -> andalso ({ok, _} = compile:file(File ++ ".erl", [return_errors])). %% =========================================================================== -%% examples/1 -%% -%% Compile dictionaries extracted from various standards. - -examples(_Config) -> - Dir = filename:join([code:lib_dir(diameter, examples), "dict"]), - [D || D <- ?EXAMPLES, _ <- [examples(?S(D), Dir)]]. - -examples(Dict, Dir) -> - {Name, Pre} = make_name(Dict), - ok = diameter_make:codec(filename:join([Dir, Dict ++ ".dia"]), - [{name, Name}, - {prefix, Pre}, - inherits("rfc3588_base") - | opts(Dict)]), - {ok, _, _} = compile:file(Name ++ ".erl", [return]). - -opts(M) - when M == "rfc4006_cc"; - M == "rfc4072_eap" -> - [inherits("rfc4005_nas")]; -opts("rfc4740_sip") -> - [inherits("rfc4590_digest")]; -opts(_) -> - []. - -inherits(File) -> - {Name, _} = make_name(File), - {inherits, File ++ "/" ++ Name}. - -make_name(File) -> - {R, [$_|N]} = lists:splitwith(fun(C) -> C /= $_ end, File), - {string:join(["diameter_gen", N, R], "_"), "diameter_" ++ N}. - -%% =========================================================================== modify(Bin, Mods) -> lists:foldl(fun re/2, Bin, Mods). diff --git a/lib/diameter/test/diameter_examples_SUITE.erl b/lib/diameter/test/diameter_examples_SUITE.erl index f857f893e2..16b858041a 100644 --- a/lib/diameter/test/diameter_examples_SUITE.erl +++ b/lib/diameter/test/diameter_examples_SUITE.erl @@ -27,7 +27,8 @@ all/0]). %% testcases --export([compile/1, +-export([dict/1, dict/0, + code/1, enslave/1, start/1, traffic/1, @@ -57,17 +58,87 @@ suite() -> [{timetrap, {seconds, 45}}]. all() -> - [compile, + [dict, + code, enslave, start, traffic, stop]. %% =========================================================================== +%% dict/1 +%% +%% Compile example dictionaries in examples/dict. + +-define(EXAMPLES, [rfc4004_mip, + rfc4005_nas, + rfc4006_cc, + rfc4072_eap, + rfc4590_digest, + rfc4740_sip]). + +dict() -> + [{timetrap, {minutes, length(?EXAMPLES)}}]. + +dict(_Config) -> + Dir = filename:join([code:lib_dir(diameter, examples), "dict"]), + [] = [RC || D <- ?EXAMPLES, + RC <- [dict(atom_to_list(D), Dir)], + RC /= ok]. + +dict(Dict, Dir) -> + {Name, Pre} = make_name(Dict), + try + ok = make(filename:join([Dir, Dict ++ ".dia"]), + [{name, Name}, + {prefix, Pre}, + inherits("rfc3588_base") + | opts(Dict)]), + ok = compile(Name) + catch + throw: {_,_} = E -> + E + end. + +make(File, Opts) -> + case diameter_make:codec(File, Opts) of + ok -> + ok; + No -> + throw({make, No}) + end. + +compile(Name) -> + case compile:file(Name ++ ".erl", [return]) of + {ok, _, _} -> + ok; + No -> + throw({compile, No}) + end. -%% compile/1 +opts(M) + when M == "rfc4006_cc"; + M == "rfc4072_eap" -> + [inherits("rfc4005_nas")]; +opts("rfc4740_sip") -> + [inherits("rfc4590_digest")]; +opts(_) -> + []. -compile(Config) -> +inherits(File) -> + {Name, _} = make_name(File), + {inherits, File ++ "/" ++ Name}. + +make_name(File) -> + {R, [$_|N]} = lists:splitwith(fun(C) -> C /= $_ end, File), + {string:join(["diameter_gen", N, R], "_"), "diameter_" ++ N}. + +%% =========================================================================== +%% code/1 +%% +%% Compile example code under examples/code. + +code(Config) -> Node = slave(hd(?NODES), here()), [] = rpc:call(Node, ?MODULE, @@ -129,6 +200,8 @@ find_files(Dir, RE) -> cons(H,T) -> [H|T]. +%% =========================================================================== + %% enslave/1 %% %% Start two nodes: one for the server, one for the client. |