blob: d6a92c9f94f865e4aea21f74c02fd6267bdeef98 [file] [log] [blame]
/*
* etimetest.c
*
* HEADER Testing read_config.c shutdown callback
*
* Expected SUCCESSes for all tests: 8
*
* Test of snmpd_unregister_config_handler SUCCESSes: 4
* Test of unregister_all_config_handlers SUCCESSes: 4
*
*/
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include <net-snmp/library/testing.h>
/* #undef TEST_INTERNAL_API */
#define TEST_INTERNAL_API 1
/*
* Global variables.
*/
int callback_called = 0;
static void test_callback(void);
static void test_callback(void) {
++callback_called;
};
static void parse_config(const char *token, char *cptr);
static void parse_config(const char *token, char *cptr) {
/* do nothing */
};
/* each test returns 0 on success, and >0 on failure */
int test1(void);
int test2(void);
int test3(void);
int (*tests[])(void) = { test1, test2, test3 };
int main(int argc, char *argv[])
{
int i,ret=0;
for(i=0;i<sizeof(tests)/sizeof(*tests);++i)
ret+=tests[i]();
if (__did_plan == 0) {
PLAN(__test_counter);
}
return ret;
}
int test1() {
int sum = 0;
callback_called = 0;
fprintf(stdout, "# snmpd_unregister_config_handler tests\n");
init_snmp("testing");
OKF(callback_called==0, ("Callback shouldn't be called before registering it - it was called %d times\n",callback_called));
sum += callback_called;
callback_called = 0;
register_app_config_handler("testing", parse_config, test_callback, "module-name module-path");
OKF(callback_called==0, ("Callback shouldn't be called after registering it - it was called %d times\n",callback_called));
sum += callback_called;
callback_called = 0;
unregister_app_config_handler("testing");
OKF(callback_called==1, ("Callback should have been called once and only once after unregistering handler - it was called %d times\n",callback_called));
sum += callback_called;
callback_called = 0;
snmp_shutdown("testing");
OKF(callback_called==0, ("Callback should have been called once and only once after shutdown - it was called %d times\n",callback_called));
sum += callback_called;
return (sum==1)?0:1;
}
int test2(void) {
int sum = 0;
callback_called = 0;
fprintf(stdout, "# unregister_all_config_handlers tests\n");
init_snmp("testing");
OKF(callback_called==0, ("Callback shouldn't be called before registering it - it was called %d times\n",callback_called));
sum += callback_called;
callback_called = 0;
register_app_config_handler("testing", parse_config, test_callback, "module-name module-path");
OKF(callback_called==0, ("Callback shouldn't be called after registering it - it was called %d times\n",callback_called));
sum += callback_called;
callback_called = 0;
snmp_shutdown("testing");
OKF(callback_called==1, ("Callback should have been called once and only once during shutdown - it was called %d times\n",callback_called));
sum += callback_called;
return (sum==1)?0:1;
}
int test3(void) {
#ifdef TEST_INTERNAL_API
int sum = 0;
callback_called = 0;
fprintf(stdout, "# unregister_all_config_handlers internal api tests\n");
init_snmp("testing");
OKF(callback_called==0, ("Callback shouldn't be called before registering it - it was called %d times\n",callback_called));
sum += callback_called;
callback_called = 0;
register_app_config_handler("testing", parse_config, test_callback, "module-name module-path");
OKF(callback_called==0, ("Callback shouldn't be called after registering it - it was called %d times\n",callback_called));
sum += callback_called;
callback_called = 0;
unregister_all_config_handlers();
OKF(callback_called==1, ("Callback should have been called once and only once after unregistering handler - it was called %d times\n",callback_called));
sum += callback_called;
callback_called = 0;
snmp_shutdown("testing");
OKF(callback_called==0, ("Callback should not have been called during shutdown after unregistering handler - it was called %d times\n",callback_called));
sum += callback_called;
return (sum==1)?0:1;
#else
return 0;
#endif
}