aboutsummaryrefslogblamecommitdiffstats
path: root/lib/asn1/test/testTimer.erl
blob: 9f1b775226fe3068b32fd1d90ed6cfd71d7500a1 (plain) (tree)
1
2
3
4
5
6
7
8
9
10

                   
  
                                                        
  




                                                                      
  



                                                                         
  



                   
                
 
                                                    


                     
        

































































































                                                                           

    
       


                                  

                                       
 
                                                                              
                                                              
 
                                          
 
                                                                                
                                                               
 


                                                                      




                                  

                                     
 
                                    
         
                                 
                               
                                     
%%
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 2001-2012. 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(testTimer).
-export([go/0]).

-include_lib("test_server/include/test_server.hrl").

-define(times, 5000).

val() ->
    {'H323-UserInformation',{'H323-UU-PDU',
			     {callProceeding,
			      {'CallProceeding-UUIE',
			       {0,8,222},
			       {'EndpointType',
				{'NonStandardParameter',
				 {object,{0,9,237}},
				 "O"},
				{'VendorIdentifier',
				 {'H221NonStandard',62,63,16282},
				 "OC",
				 "OC"},
				{'GatekeeperInfo',
				 {'NonStandardParameter',
				  {object,{0,10,260}},
				  "O"}},
				{'GatewayInfo',
				 [{h320,
				   {'H320Caps',
				    {'NonStandardParameter',
				     {object,{0,11,282}},
				     "O"},
				    [{'DataRate',
				      {'NonStandardParameter',
				       {object,
					{0,11,295}},
				       "O"},
				      1290470518,
				      78}],
				    [{'SupportedPrefix',
				      {'NonStandardParameter',
				       {object,
					{0,12,312}},
				       "O"},
				      {'h323-ID',"BM"}}]}}],
				 {'NonStandardParameter',
				  {object,{0,13,326}},
				  "O"}},
				{'McuInfo',
				 {'NonStandardParameter',
				  {object,{1,13,340,340}},
				  "OC"}},
				{'TerminalInfo',
				 {'NonStandardParameter',
				  {object,{1,14,353,354}},
				  "OC"}},
				true,
				true},
			       {ipxAddress,
				{'TransportAddress_ipxAddress',
				 "OCTET ",
				 "OCTE",
				 "OC"}},
			       {'CallIdentifier',"OCTET STRINGOCTE"},
			       {noSecurity,'NULL'},
			       [{'ClearToken',
				 1667517741,
				 "BM",
				 {'DHset',<<1:1>>,<<1:1>>,<<1:1>>},
				 "OCTET STR",
				 -26430296,
				 {'TypedCertificate',
				  {1,16,405,406},
				  "OC"},
				 "BMP",
				 {'NonStandardParameter',
				  {1,16,414,415},
				  "OC"}},
				{'ClearToken',
				 1817656756,
				 "BMP",
				 {'DHset',<<1:1>>,<<1:1>>,<<1:1>>},
				 "OCTET STRI",
				 -16356110,
				 {'TypedCertificate',
				  {1,17,442,443},
				  "OC"},
				 "BMP",
				 {'NonStandardParameter',
				  {1,18,452,452},
				  "OC"}}],
			       [{cryptoGKPwdEncr,
				 {'CryptoH323Token_cryptoGKPwdEncr',
				  {1,18,467,467},
				  {'Params',-7477016,"OCTET ST"},
				  "OC"}},
				{cryptoGKPwdEncr,
				 {'CryptoH323Token_cryptoGKPwdEncr',
				  {1,19,486,486},
				  {'Params',-2404513,"OCTET ST"},
				  []}}],
			       []}},
			     {'NonStandardParameter',{object,{0,3,84}},[]},
			     [],
			     true,
			     [],
			     []},
     {'H323-UserInformation_user-data',24,"O"}}.
    

go() ->
    Module = 'H323-MESSAGES',
    Type = 'H323-UserInformation',
    Value = val(),
    Bytes = Module:encode(Type, Value),
    Value = Module:decode(Type, Bytes),

    {ValWr,done} = timer:tc(fun() -> encode(?times, Module, Type, Value) end),
    io:format("ASN.1 encoding: ~p micro~n", [ValWr / ?times]),

    done = decode(2, Module, Type, Bytes),

    {ValRead,done} = timer:tc(fun() -> decode(?times, Module, Type, Bytes) end),
    io:format("ASN.1 decoding: ~p micro~n", [ValRead /?times]),

    Comment = "encode: "++integer_to_list(round(ValWr/?times)) ++
	" micro, decode: "++integer_to_list(round(ValRead /?times)) ++
	" micro. [" ++ atom_to_list(Module:encoding_rule()) ++ "]",
    {comment,Comment}.

encode(0, _Module,_Type,_Value) ->
    done;
encode(N, Module,Type,Value) ->
    Module:encode(Type, Value),
    encode(N-1, Module, Type, Value).

decode(0, _Module, _Type, _Value) ->
    done;
decode(N, Module, Type, Value) ->
    Module:decode(Type, Value),
    decode(N-1, Module, Type, Value).