aboutsummaryrefslogblamecommitdiffstats
path: root/lib/common_test/test/ct_snmp_SUITE.erl
blob: 9e4bbedcfb69844dd8f2162d9fa49fb17c58bed6 (plain) (tree)























































































































































                                                                              
%%--------------------------------------------------------------------
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 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%
%%
%%----------------------------------------------------------------------
%% File: ct_snmp_SUITE.erl
%%
%% Description:
%%    This file contains the test cases for the ct_snmp API.
%%
%% @author Support
%% @doc Test  of SNMP support in common_test
%% @end
%%----------------------------------------------------------------------
%%----------------------------------------------------------------------
-module(ct_snmp_SUITE).
-include_lib("common_test/include/ct.hrl").
-include_lib("snmp/include/STANDARD-MIB.hrl").
-include_lib("snmp/include/snmp_types.hrl").

-compile(export_all).

%% Default timetrap timeout (set in init_per_testcase).
-define(default_timeout, ?t:minutes(1)).

%% SNMP user stuff
-behaviour(snmpm_user).
-export([handle_error/3,
	 handle_agent/5,
	 handle_pdu/4,
	 handle_trap/3,
	 handle_inform/3,
	 handle_report/3]).


suite() ->
    [{require, snmp_mgr_agent, snmp},
     {require, snmp_app_cfg, snmp_app}].

all() ->
    [start_stop,
    {group,get_set}].


groups() ->
    [{get_set,[get_values,get_next_values,set_values]}].

init_per_group(get_set, Config) ->
    ok = ct_snmp:start(Config,snmp_mgr_agent,snmp_app_cfg),
    Config.

end_per_group(get_set, Config) ->
    ok = ct_snmp:stop(Config),
    Config.

init_per_testcase(_Case, Config) ->
    Dog = test_server:timetrap(?default_timeout),
    [{watchdog, Dog}|Config].

end_per_testcase(_Case, Config) ->
    Dog=?config(watchdog, Config),
    test_server:timetrap_cancel(Dog),
    ok.

init_per_suite(Config) ->
    Config.

end_per_suite(Config) ->
    Config.

break(_Config) ->
    test_server:break(""),
    ok.

start_stop(Config) ->
    ok = ct_snmp:start(Config,snmp_mgr_agent,snmp_app_cfg),
    timer:sleep(1000),
    {snmp,_,_} = lists:keyfind(snmp,1,application:which_applications()),
    [_|_] = filelib:wildcard("*/*.conf",?config(priv_dir,Config)),

    ok = ct_snmp:stop(Config),
    timer:sleep(1000),
    false = lists:keyfind(snmp,1,application:which_applications()),
    [] = filelib:wildcard("*/*.conf",?config(priv_dir,Config)),
    ok.

get_values(_Config) ->
    Oids1 = [?sysDescr_instance, ?sysName_instance],
    {noError,_,V1} = ct_snmp:get_values(agent_name,Oids1,snmp_mgr_agent),
    [#varbind{oid=?sysDescr_instance,value="Erlang SNMP agent"},
     #varbind{oid=?sysName_instance,value="ct_test"}] = V1,
    ok.

get_next_values(_Config) ->
    Oids2 = [?system],
    {noError,_,V2} = ct_snmp:get_next_values(agent_name,Oids2,snmp_mgr_agent),
    [#varbind{oid=?sysDescr_instance,value="Erlang SNMP agent"}] = V2,
    ok.

set_values(Config) ->
    Oid3 = ?sysName_instance,
    NewName = "ct_test changed by " ++ atom_to_list(?MODULE),
    VarsAndVals = [{Oid3,s,NewName}],
    {noError,_,_} =
	ct_snmp:set_values(agent_name,VarsAndVals,snmp_mgr_agent,Config),

    Oids4 = [?sysName_instance],
    {noError,_,V4} = ct_snmp:get_values(agent_name,Oids4,snmp_mgr_agent),
    [#varbind{oid=?sysName_instance,value=NewName}] = V4,

    ok.


%%%-----------------------------------------------------------------
%%% SNMP Manager User callback
handle_error(ReqId, Reason, UserData) ->
    erlang:display({handle_error,ReqId, Reason, UserData}),
    ignore.

handle_agent(Addr, Port, Type, SnmpInfo, UserData) ->
    erlang:display({handle_agent,Addr, Port, Type, SnmpInfo, UserData}),
    ignore.

handle_pdu(TargetName, ReqId, SnmpPduInfo, UserData) ->
    erlang:display({handle_pdu,TargetName, ReqId, SnmpPduInfo, UserData}),
    ignore.

handle_trap(TargetName, SnmpTrapInfo, UserData) ->
    erlang:display({handle_trap,TargetName, SnmpTrapInfo, UserData}),
    ignore.

handle_inform(TargetName, SnmpInformInfo, UserData) ->
    erlang:display({handle_inform,TargetName, SnmpInformInfo, UserData}),
    ignore.

handle_report(TargetName, SnmpReportInfo, UserData) ->
    erlang:display({handle_report,TargetName, SnmpReportInfo, UserData}),
    ignore.