Log manager erroneously wrote string termination character after every log message.

Added a few trivial test cases.
This commit is contained in:
vraatikka
2013-07-26 15:21:54 +03:00
parent 4a4383f6aa
commit 2f189cb153
2 changed files with 25 additions and 7 deletions

View File

@ -538,7 +538,7 @@ static int logmanager_write_log(
} else {
snprintf(wp, str_len, str);
}
wp[str_len-2]='\n';
wp[str_len-1]='\n';
/** lock-free unregistration */
blockbuf_unregister(bb);
@ -836,9 +836,9 @@ int skygw_log_write_flush(
len = vsnprintf(NULL, 0, str, valist);
va_end(valist);
/**
* Add one for line feed and one for '\0'.
* Add one for line feed.
*/
len += 2;
len += 1;
/**
* Write log string to buffer and add to file write list.
*/
@ -887,9 +887,9 @@ int skygw_log_write(
len = vsnprintf(NULL, 0, str, valist);
va_end(valist);
/**
* Add one for line feed and one for '\0'.
* Add one for line feed.
*/
len += 2;
len += 1;
/**
* Write log string to buffer and add to file write list.
*/

View File

@ -40,6 +40,9 @@ static void* thr_run_morelog(void* data);
#define NTHR 256
#define NITER 100
#define TEST1
#define TEST2
int main(int argc, char* argv[])
{
int err = 0;
@ -60,6 +63,18 @@ int main(int argc, char* argv[])
r = skygw_logmanager_init(NULL, argc, argv);
ss_dassert(r);
skygw_logmanager_init(NULL, argc, argv);
logstr = ("First write with flush.");
err = skygw_log_write_flush(NULL, LOGFILE_ERROR, logstr);
logstr = ("Second write, no flush.");
err = skygw_log_write(NULL, LOGFILE_ERROR, logstr);
logstr = ("Third write, no flush. Next flush only.");
err = skygw_log_write(NULL, LOGFILE_ERROR, logstr);
err = skygw_log_flush(LOGFILE_ERROR);
logstr = "My name is %s %d years and %d months.";
err = skygw_log_write(NULL, LOGFILE_TRACE, logstr, "TraceyTracey", 3, 7);
@ -98,6 +113,8 @@ int main(int argc, char* argv[])
err = skygw_log_write(NULL, LOGFILE_MESSAGE, logstr);
skygw_logmanager_done(NULL);
#if defined(TEST1)
mes = skygw_message_init();
mtx = simple_mutex_init(NULL, strdup("testmtx"));
/** Test starts */
@ -140,7 +157,8 @@ int main(int argc, char* argv[])
for (i=0; i<NTHR; i++) {
free(thr[i]);
}
#endif
#if defined(TEST2)
fprintf(stderr, "\nStarting test #2 \n");
/** 2 */
@ -194,7 +212,7 @@ int main(int argc, char* argv[])
/** Test ended here */
skygw_message_done(mes);
simple_mutex_done(mtx);
#endif
fprintf(stderr, ".. done.\n");
return err;
}