osaf/services/saf/logsv/lgs/lgs_imm.c | 61 ++++++++++++++++++++++++++++------ tests/logsv/saflogtest.c | 13 ++++++- 2 files changed, 61 insertions(+), 13 deletions(-)
- Replace saImmOiAdminOperationResult() with saImmOiAdminOperationResult_o2() Remove LOG_ER. Reuse error messages. - For test purpose, add possibility to create log stream with runtime IMM object and keep it open in test tool saflogtest. See ...test/logsv. For more info use saflogtest -h diff --git a/osaf/services/saf/logsv/lgs/lgs_imm.c b/osaf/services/saf/logsv/lgs/lgs_imm.c --- a/osaf/services/saf/logsv/lgs/lgs_imm.c +++ b/osaf/services/saf/logsv/lgs/lgs_imm.c @@ -35,6 +35,7 @@ #include <saImmOm.h> #include <saImmOi.h> +#include <saImmOm_A_2_11.h> #include "immutil.h" #include "lgs.h" @@ -272,6 +273,16 @@ static void adminOperationCallback(SaImm SaUint32T severityFilter; const SaImmAdminOperationParamsT_2 *param = params[0]; log_stream_t *stream; + + char ao_err_string[256]; + SaStringT p_ao_err_string = ao_err_string; + SaImmAdminOperationParamsT_2 ao_err_param = { + SA_IMM_PARAM_ADMOP_ERROR, + SA_IMM_ATTR_SASTRINGT, + &p_ao_err_string }; + const SaImmAdminOperationParamsT_2 *ao_err_params[2] = { + &ao_err_param, + NULL }; TRACE_ENTER2("%s", objectName->value); @@ -281,36 +292,56 @@ static void adminOperationCallback(SaImm } if ((stream = log_stream_get_by_name((char *)objectName->value)) == NULL) { - LOG_ER("Stream %s not found", objectName->value); - (void)immutil_saImmOiAdminOperationResult(immOiHandle, invocation, SA_AIS_ERR_INVALID_PARAM); + TRACE("Stream %s not found", objectName->value); + (void) snprintf(ao_err_string, 256, + "Stream %s not found", objectName->value); + (void) saImmOiAdminOperationResult_o2(immOiHandle, invocation, + SA_AIS_ERR_INVALID_PARAM, + ao_err_params); goto done; } if (opId == SA_LOG_ADMIN_CHANGE_FILTER) { /* Only allowed to update runtime objects (application streams) */ if (stream->streamType != STREAM_TYPE_APPLICATION) { - LOG_ER("Admin op change filter for non app stream"); - (void)immutil_saImmOiAdminOperationResult(immOiHandle, invocation, SA_AIS_ERR_INVALID_PARAM); + TRACE("Admin op change filter for non app stream"); + (void) snprintf(ao_err_string, 256, + "Admin op change filter for non app stream"); + (void) saImmOiAdminOperationResult_o2(immOiHandle, invocation, + SA_AIS_ERR_INVALID_PARAM, + ao_err_params); goto done; } if (strcmp(param->paramName, "saLogStreamSeverityFilter") != 0) { - LOG_ER("Admin op change filter, invalid param name"); - (void)immutil_saImmOiAdminOperationResult(immOiHandle, invocation, SA_AIS_ERR_INVALID_PARAM); + TRACE("Admin op change filter, invalid param name"); + (void) snprintf(ao_err_string, 256, + "Admin op change filter, invalid param name"); + (void) saImmOiAdminOperationResult_o2(immOiHandle, invocation, + SA_AIS_ERR_INVALID_PARAM, + ao_err_params); goto done; } if (param->paramType != SA_IMM_ATTR_SAUINT32T) { - LOG_ER("Admin op change filter: invalid parameter type"); - (void)immutil_saImmOiAdminOperationResult(immOiHandle, invocation, SA_AIS_ERR_INVALID_PARAM); + TRACE("Admin op change filter: invalid parameter type"); + (void) snprintf(ao_err_string, 256, + "Admin op change filter: invalid parameter type"); + (void) saImmOiAdminOperationResult_o2(immOiHandle, invocation, + SA_AIS_ERR_INVALID_PARAM, + ao_err_params); goto done; } severityFilter = *((SaUint32T *)param->paramBuffer); if (severityFilter > 0x7f) { /* not a level, a bitmap */ - LOG_ER("Admin op change filter: invalid severity"); - (void)immutil_saImmOiAdminOperationResult(immOiHandle, invocation, SA_AIS_ERR_INVALID_PARAM); + TRACE("Admin op change filter: invalid severity"); + (void) snprintf(ao_err_string, 256, + "Admin op change filter: invalid severity"); + (void) saImmOiAdminOperationResult_o2(immOiHandle, invocation, + SA_AIS_ERR_INVALID_PARAM, + ao_err_params); goto done; } @@ -331,8 +362,14 @@ static void adminOperationCallback(SaImm /* Checkpoint to standby LOG server */ ckpt_stream(stream); } else { - LOG_ER("Invalid operation ID, should be %d (one) for change filter", SA_LOG_ADMIN_CHANGE_FILTER); - (void)immutil_saImmOiAdminOperationResult(immOiHandle, invocation, SA_AIS_ERR_INVALID_PARAM); + TRACE("Invalid operation ID, should be %d (one) for change filter", + SA_LOG_ADMIN_CHANGE_FILTER); + (void) snprintf(ao_err_string, 256, + "Invalid operation ID, should be %d (one) for change filter", + SA_LOG_ADMIN_CHANGE_FILTER); + (void) saImmOiAdminOperationResult_o2(immOiHandle, invocation, + SA_AIS_ERR_INVALID_PARAM, + ao_err_params); } done: TRACE_LEAVE(); diff --git a/tests/logsv/saflogtest.c b/tests/logsv/saflogtest.c --- a/tests/logsv/saflogtest.c +++ b/tests/logsv/saflogtest.c @@ -99,6 +99,7 @@ static void usage(void) printf(" -i INT or --interval=INT write with interval INT us (only with --count, default 0us)\n"); printf(" -c CNT or --count=CNT write CNT number of times, -1 forever (with interval INT) \n"); printf(" valid severity names: emerg, alert, crit, error, warn, notice, info\n"); + printf(" -o Open log stream and wait forever. Exit on any key\n"); } static void logWriteLogCallbackT(SaInvocationT invocation, SaAisErrorT error) @@ -222,6 +223,7 @@ static SaLogSeverityT get_severity(char int main(int argc, char *argv[]) { + bool do_not_exit_f = false; int c, i; SaNameT logStreamName = {.length = 0 }; SaLogFileCreateAttributesT_2 *logFileCreateAttributes = NULL; @@ -280,11 +282,14 @@ int main(int argc, char *argv[]) appLogFileCreateAttributes.logFileFmt = DEFAULT_FORMAT_EXPRESSION; while (1) { - c = getopt_long(argc, argv, "hklnya:b:s:i:c:", long_options, NULL); + c = getopt_long(argc, argv, "ohklnya:b:s:i:c:", long_options, NULL); if (c == -1) { break; } switch (c) { + case 'o': /* Open log stream and wait forever. Exit on Enter key */ + do_not_exit_f = true; + break; case 'c': write_count = atoi(optarg); break; @@ -377,6 +382,12 @@ int main(int argc, char *argv[]) usleep(interval); } + /* Open log stream and wait forever. Exit on any key */ + if (do_not_exit_f == true) { + (void) getchar(); + do_not_exit_f = false; + } + error = saLogStreamClose(logStreamHandle); if (SA_AIS_OK != error) { fprintf(stderr, "saLogStreamClose FAILED: %u\n", error); ------------------------------------------------------------------------------ October Webinars: Code for Performance Free Intel webinars can help you accelerate application performance. Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from the latest Intel processors and coprocessors. See abstracts and register > http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel