aboutsummaryrefslogblamecommitdiffstats
path: root/lib/snmp/test/klas3.erl
blob: 9a5c388170aecd8440443dcab203827a435f92bf (plain) (tree)
1
2
3
4
5


                   
                                                        
   










                                                                           





















































                                                                         




                                                            


                                           
                                                                   























































































                                                                          


                                               
%% 
%% %CopyrightBegin%
%% 
%% Copyright Ericsson AB 1997-2016. All Rights Reserved.
%% 
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%%     http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%% 
%% %CopyrightEnd%
%% 

-module(klas3).
-compile(export_all).

ftab(new) ->
   mnesia:create_table([{name, friendsTable3},
			{snmp, [{key, integer}]},
			{attributes, [a1,a2]}]);

ftab(delete) ->
    ok.


ftab(is_set_ok, [2], _Cols) ->
%    io:format("calling ftab is_set_ok - fail~n"),
    {inconsistentValue, 2};
ftab(is_set_ok, _, _Cols) ->
%    io:format("calling ftab is_set_ok - ok~n"),
    {noError, 0};

ftab(undo, [3], _Cols) ->
%    io:format("calling ftab undo - fail~n"),
    {undoFailed, 2};

ftab(undo, [1], _Cols) ->
%    io:format("calling ftab undo~n"),
    {noError, 0};

ftab(set, [4], _Cols) ->
    {commitFailed, 2};

ftab(Op, RowIndex, Cols) ->
    snmp_generic:table_func(Op, RowIndex, Cols, {friendsTable3, mnesia}).


fname(new) -> ok;
fname(delete) -> ok;
fname(get) ->
    Str2 = (catch begin
        case snmpa:current_request_id() of
	    {value, Int} when is_integer(Int) -> ok;
	    {value, _} -> throw("bad_int");
	    _ -> throw("bad_req")
	end,
	case snmpa:current_community() of
	    {value, Str} when is_list(Str) -> Str;
	    {value, _} -> throw("bad_str");
	    _ -> throw("bad_com")
	end,
	case snmpa:current_address() of
	    {value, {[_A,_B,_C,_D], E}} when is_integer(E) -> ok;
	    {value, {D, _}} when is_atom(D) -> ok;
	    {value, Ip} ->
		throw(format_string("bad_ip: ~p", [Ip]));
	    Other ->
		throw(format_string("bad_adr: ~p", [Other]))
	end,
	case snmpa:current_net_if_data() of
	    {value, []} -> ok;
	    {value, [{request_ref, R}]} when is_reference(R) -> ok;
	    {value, _} -> throw("bad_nil");
	    _ -> throw("bad_nid")
	end,
	"ok"
    end),
    {value, Str2}.

fname(is_set_ok, "hoj") ->
    inconsistentValue;
fname(is_set_ok, "xfail") ->
    i_know_this_is_wrong_it_should_be_user_error;
fname(is_set_ok, _) ->
%    io:format("calling fname is_set_ok~n"),
    noError;
fname(set, "fel") -> commitFailed;
fname(set, _) -> noError;
fname(undo, "ufail") ->
%    io:format("calling fname undo - fail~n"),
    undoFailed;
fname(undo, _) ->
%    io:format("calling fname undo~n"),
    noError.

%% snmp_mgr:s([{[fStatus2, 1], 4}, {[fname2,0], "ok"}]). -> noError
%% snmp_mgr:s([{[fStatus2, 1], 4}, {[fname2,0], "hoj"}]). -> {badValue, 2}
%% snmp_mgr:s([{[fStatus2, 3], 4}, {[fname2,0], "hoj"}]). -> {genErr, 1}
%% snmp_mgr:s([{[fStatus2, 4], 4}, {[fname2,0], "ok"}]). -> {genErr, 1}
%% snmp_mgr:s([{[fStatus2, 4], 4}, {[fname2,0], "ufail"}]). -> {genErr, 1}
%% snmp_mgr:s([{[fStatus2, 1], 4}, {[fname2,0], "xfail"}]). -> {genErr, 2}


fname4(get) ->
    {value, none}.


ftab2(_) ->
    ok.


%% Following 2 clauses is for OTP-1222
ftab2(is_set_ok, [1], _Cols) ->
    % bad column - In: col 2 & 3
    io:format("** Here comes Error Report is_set_ok bad column~n"),
    {inconsistentValue, 1};
ftab2(is_set_ok, _, _Cols) ->
    {noError, 0};

ftab2(set, [2], _Cols) ->
    % bad column - In: col 2 & 3
    io:format("** Here comes Error Report set bad column~n"),
    {commitFailed, 4};
ftab2(set, _, _Cols) ->
    {noError, 0};

%% Unfortunatly we can't force the undo - we don't know which var
%% is tried first.
%ftab2(undo, [3], Cols) ->
%    % bad column - In: col 2 & 3
%    io:format("** Here comes (no Error Report) undo bad column~n"),
%    {undoFailed, 5};
%ftab2(undo, _, Cols) ->
%    {noError, 0};

ftab2(get, [4], _Cols) ->
    % bad return value
    io:format("** Here comes Error Report get 1 bad return~n"),
    [];
ftab2(get, [5], _Cols) ->
    % bad return value
    io:format("** Here comes Error Report get 2 bad return~n"),
    [{value, 1}];
ftab2(get, [6], _Cols) ->
    % bad return value
    io:format("** Here comes Error Report get 3 bad return~n"),
    [{value,1},{value,2},{value,3}];

ftab2(get_next, [7], _Cols) ->
    % bad return value
    io:format("** Here comes Error Report get_next 1 bad return~n"),
    [];
ftab2(get_next, [8], _Cols) ->
    % bad return value
    io:format("** Here comes Error Report get_next 2 bad return~n"),
    [endOfTable];
ftab2(get_next, [9], _Cols) ->
    % bad return value
    io:format("** Here comes Error Report get_next 3 bad return~n"),
    [{[1,5],1},{[2,5],3},{[2,6],3}].    

format_string(Format, Args) ->
    lists:flatten(io_lib:format(Format, Args)).