aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/test/bench/per_bm.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/asn1/test/bench/per_bm.erl')
-rw-r--r--lib/asn1/test/bench/per_bm.erl650
1 files changed, 650 insertions, 0 deletions
diff --git a/lib/asn1/test/bench/per_bm.erl b/lib/asn1/test/bench/per_bm.erl
new file mode 100644
index 0000000000..23f8a8f010
--- /dev/null
+++ b/lib/asn1/test/bench/per_bm.erl
@@ -0,0 +1,650 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2002-2009. 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
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+%%
+-module(per_bm).
+
+-define(DATADIR,"/clearcase/otp/erts/lib/asn1/test/asn1_SUITE_data/").
+-include("bench.hrl").
+
+-export([init/0,benchmarks/0]).
+-export([encode/1,decode/1,ranap_enc/1,ranap_dec/1]).
+
+
+init() ->
+ ok = asn1ct:compile(?DATADIR++"H235-SECURITY-MESSAGES",[per_bin]),
+ ok = asn1ct:compile(?DATADIR++"H323-MESSAGES",[per_bin]),
+ ok = asn1ct:compile("RanapASN1",[per_bin]),
+ ok.
+
+
+benchmarks() ->
+ {5000,[encode,decode,ranap_enc,ranap_dec]}.
+
+ranap_dec(N) ->
+ V = ranap_v2(),
+ {ok,Bl} = asn1rt:encode('RanapASN1','RANAP-PDU',V),
+ B = list_to_binary(Bl),
+ ranap_n_dec(N,B),
+ ok.
+
+ranap_n_dec(0,_) ->
+ ok;
+ranap_n_dec(N,B) ->
+ {ok,V}=asn1rt:decode('RanapASN1','RANAP-PDU',B),
+ ranap_n_dec(N-1,B).
+
+ranap_enc(N) ->
+ V = ranap_v2(),
+ ranap_n_enc(N,V),
+ ok.
+
+ranap_n_enc(0,V) ->
+ ok;
+ranap_n_enc(N,V) ->
+ {ok,B} = asn1rt:encode('RanapASN1','RANAP-PDU',V),
+ ranap_n_enc(N-1,V).
+
+
+decode(N) ->
+ V = v1(),
+ {ok,Bl} = asn1rt:encode('H323-MESSAGES','H323-UserInformation',V),
+ B = list_to_binary(Bl),
+ n_decode(N,B),
+ ok.
+
+n_decode(0,_) ->
+ ok;
+n_decode(N,B) ->
+ {ok,V}=asn1rt:decode('H323-MESSAGES','H323-UserInformation',B),
+ n_decode(N-1,B).
+
+
+v1() ->
+ V =
+ {'H323-UserInformation',
+ {'H323-UU-PDU',
+ {callProceeding,
+ {'CallProceeding-UUIE',
+ {0,
+ 7,
+ 180},
+ {'EndpointType',
+ {'NonStandardParameter',
+ {object,
+ {0,
+ 8,
+ 202}},
+ "O"},
+ {'VendorIdentifier',
+ {'H221NonStandard',
+ 55,
+ 55,
+ 14277},
+ "OC",
+ "OC"},
+ {'GatekeeperInfo',
+ {'NonStandardParameter',
+ {object,
+ {0,
+ 9,
+ 232}},
+ "O"}},
+ {'GatewayInfo',
+ [{h320,
+ {'H320Caps',
+ {'NonStandardParameter',
+ {object,
+ {0,
+ 10,
+ 268}},
+ "O"},
+ [{'DataRate',
+ {'NonStandardParameter',
+ {object,
+ {0,
+ 11,
+ 284}},
+ "O"},
+ 1244176737,
+ 75}],
+ [{'SupportedPrefix',
+ {'NonStandardParameter',
+ {object,
+ {0,
+ 12,
+ 304}},
+ "O"},
+ {'h323-ID',
+ "BM"}}]}}],
+ {'NonStandardParameter',
+ {object,
+ {0,
+ 13,
+ 324}},
+ "O"}},
+ {'McuInfo',
+ {'NonStandardParameter',
+ {object,
+ {1,
+ 13,
+ 346,
+ 347}},
+ "OC"}},
+ {'TerminalInfo',
+ {'NonStandardParameter',
+ {object,
+ {1,
+ 14,
+ 363,
+ 363}},
+ "OC"}},
+ true,
+ true},
+ {ipxAddress,
+ {'TransportAddress_ipxAddress',
+ "OCTET ",
+ "OCTE",
+ "OC"}},
+ {'CallIdentifier',
+ "OCTET STRINGOCTE"},
+ {noSecurity,
+ 'NULL'},
+ [
+% {'ClearToken',
+% 1703375497,
+% "BM",
+% {'DHset',
+% [1],
+% [1],
+% [1]},
+% "OCTET STRI",
+% -21825559,
+% {'TypedCertificate',
+% {1,
+% 17,
+% 424,
+% 424},
+% "OC"},
+% "BMP",
+% {'NonStandardParameter',
+% {1,
+% 17,
+% 435,
+% 436},
+% "OC"}},
+ {'ClearToken',
+ 1929575502,
+ "BMP",
+ {'DHset',
+ [1],
+ [1],
+ [1]},
+ "OCTET STRI",
+ -9591354,
+ {'TypedCertificate',
+ {1,
+ 18,
+ 471,
+ 471},
+ "OC"},
+ "BMP",
+ {'NonStandardParameter',
+ {1,
+ 19,
+ 482,
+ 483},
+ "OC"}}],
+ [
+% {cryptoEPCert,
+% {'CryptoH323Token_cryptoEPCert',
+% {'ClearToken',
+% 2227304001,
+% "BMP",
+% {'DHset',
+% [1],
+% [1],
+% [1]},
+% "OCTET STRI",
+% 9574387,
+% {'TypedCertificate',
+% {1,
+% 21,
+% 541,
+% 542},
+% "OCT"},
+% "BMP",
+% {'NonStandardParameter',
+% {1,
+% 22,
+% 552,
+% 553},
+% "OCT"}},
+% {1,
+% 22,
+% 559,
+% 560},
+% {'Params',
+% 18993485,
+% "OCTET ST"},
+% [1,
+% 0,
+% 1]}},
+ {cryptoEPCert,
+ {'CryptoH323Token_cryptoEPCert',
+ {'ClearToken',
+ 2581405450,
+ "BMPS",
+ {'DHset',
+ [1,
+ 0,
+ 1],
+ [1,
+ 0,
+ 1],
+ [1,
+ 0,
+ 1]},
+ "OCTET STRIN",
+ 32050976,
+ {'TypedCertificate',
+ {1,
+ 25,
+ 625,
+ 625},
+ "OCT"},
+ "BMPS",
+ {'NonStandardParameter',
+ {1,
+ 25,
+ 636,
+ 637},
+ "OCT"}},
+ {1,
+ 25,
+ 644,
+ 645},
+ {'Params',
+ 40708757,
+ "OCTET ST"},
+ [1,
+ 0,
+ 1]}}],
+ ["OCT",
+ "OCT",
+ "OCT"]}},
+ {'NonStandardParameter',
+ {h221NonStandard,
+ {'H221NonStandard',
+ 173,
+ 173,
+ 44666}},
+ "OCTE"},
+ ["OCTE",
+ "OCTE",
+ "OCTE",
+ "OCTE"],
+ true,
+ ["OCTE",
+ "OCTE",
+ "OCTE",
+ "OCTE"],
+ [
+% {'NonStandardParameter',
+% {h221NonStandard,
+% {'H221NonStandard',
+% 182,
+% 183,
+% 46981}},
+% "OCTE"},
+% {'NonStandardParameter',
+% {h221NonStandard,
+% {'H221NonStandard',
+% 186,
+% 187,
+% 48016}},
+% "OCTE"},
+% {'NonStandardParameter',
+% {h221NonStandard,
+% {'H221NonStandard',
+% 190,
+% 191,
+% 49026}},
+% "OCTE"},
+ {'NonStandardParameter',
+ {h221NonStandard,
+ {'H221NonStandard',
+ 195,
+ 196,
+ 50303}},
+ "OCTE"}]},
+ {'H323-UserInformation_user-data',
+ 197,
+ "OCTE"}}.
+
+encode(N) ->
+ V = v1(),
+ n_encode(N,V),
+ ok.
+
+n_encode(0,V) ->
+ ok;
+n_encode(N,V) ->
+ {ok,B} = asn1rt:encode('H323-MESSAGES','H323-UserInformation',V),
+ n_encode(N-1,V).
+
+
+ranap_v1() ->
+ {successfulOutcome,
+ {'SuccessfulOutcome',
+ 9,
+ ignore,
+ {'ResetAcknowledge',
+ [{'ProtocolIE-Field',3,ignore,'ps-domain'},
+ {'ProtocolIE-Field',
+ 86,
+ ignore,
+ {'GlobalRNC-ID',"!Ce",2}}],
+ asn1_NOVALUE}}}.
+
+ranap_v2() ->
+ {initiatingMessage,{'InitiatingMessage',
+ 6,
+ {'Criticality',reject},
+ {'SecurityModeCommand',
+ [{'ProtocolIE-Field',
+ 12,
+ {'Criticality',reject},
+ {'IntegrityProtectionInformation',
+ ['standard-UMTS-integrity-algorithm-UIA1'],
+ [0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0],
+ asn1_NOVALUE}},
+ {'ProtocolIE-Field',
+ 11,
+ {'Criticality',ignore},
+ {'EncryptionInformation',
+ ['no-encryption',
+ 'standard-UMTS-encryption-algorith-UEA1'],
+ [0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1],
+ asn1_NOVALUE}},
+ {'ProtocolIE-Field',
+ 75,
+ {'Criticality',reject},
+ new}],
+ asn1_NOVALUE}}}.
+
+
+
+
+
+
+