From 1236195e9b93aeb6bfa625956fa027f96003756d Mon Sep 17 00:00:00 2001 From: Lutz Helwing Date: Wed, 15 Jul 2015 14:14:19 +0200 Subject: DLT daemon improvement - dlt_init()-check DLT daemon improvement - parameter value range check Adapt unit tests to check for enum return values Changed C version to gnu99 and C++ version to gnu++0c Signed-off-by: Alexander Wenzel --- src/tests/dlt-test-multi-process-client.c | 340 +++++++++++++++--------------- 1 file changed, 170 insertions(+), 170 deletions(-) (limited to 'src/tests/dlt-test-multi-process-client.c') diff --git a/src/tests/dlt-test-multi-process-client.c b/src/tests/dlt-test-multi-process-client.c index fdd0307..c943578 100644 --- a/src/tests/dlt-test-multi-process-client.c +++ b/src/tests/dlt-test-multi-process-client.c @@ -63,22 +63,22 @@ // Local data structures typedef struct { - int max_messages; - int verbose; - int serial; - int baudrate; - char *output; - int output_handle; - int messages_left; - DltClient *client_ref; + int max_messages; + int verbose; + int serial; + int baudrate; + char *output; + int output_handle; + int messages_left; + DltClient *client_ref; } s_parameters; typedef struct { - int messages_received; - int broken_messages_received; - int bytes_received; - int first_message_time; - int output_bytes; + int messages_received; + int broken_messages_received; + int bytes_received; + int first_message_time; + int output_bytes; } s_statistics; // Forward declarations @@ -88,17 +88,17 @@ int receive(DltMessage *msg, void *data); * Print usage information */ void usage(char *name) { - char version[255]; - dlt_get_version(version,255); - - printf("Usage: %s [options] \n", name); - printf("Receive messages from dlt-test-multi-process.\n"); - printf("%s", version); - printf("Options:\n"); - printf(" -m Total messages to receive. (Default: 10000)\n"); + char version[255]; + dlt_get_version(version,255); + + printf("Usage: %s [options] \n", name); + printf("Receive messages from dlt-test-multi-process.\n"); + printf("%s", version); + printf("Options:\n"); + printf(" -m Total messages to receive. (Default: 10000)\n"); printf(" -y Serial device mode.\n"); printf(" -b baudrate Serial device baudrate. (Default: 115200)\n"); - printf(" -v Verbose. Increases the verbosity level of dlt client library.\n"); + printf(" -v Verbose. Increases the verbosity level of dlt client library.\n"); printf(" -o filename Output messages in new DLT file.\n"); } @@ -106,106 +106,106 @@ void usage(char *name) { * Initialize reasonable default parameters. */ void init_params(s_parameters *params) { - params->max_messages = 10000; - params->verbose = 0; - params->serial = 0; - params->output = NULL; - params->output_handle = -1; - params->baudrate = 115200; + params->max_messages = 10000; + params->verbose = 0; + params->serial = 0; + params->output = NULL; + params->output_handle = -1; + params->baudrate = 115200; } /** * Read the command line parameters */ int read_params(s_parameters *params, int argc, char *argv[]) { - init_params(params); - int c; - opterr = 0; - while ((c = getopt(argc, argv, "m:yb:vo:")) != -1) { - switch (c) { - case 'm': - params->max_messages = atoi(optarg); - break; - case 'y': - params->serial = 1; - break; - case 'b': - params->baudrate = atoi(optarg); - break; - case 'v': - params->verbose = 1; - break; - case 'o': - params->output = optarg; - break; - case '?': - if(optopt == 'm' || optopt == 'b' || optopt == 'o') - { - fprintf(stderr, "Option -%c requires an argument.\n", optopt); - } - if (isprint(optopt)) { - fprintf(stderr, "Unknown option '-%c'.\n", optopt); - } else { - fprintf(stderr, "Unknown option character '\\x%x'.\n", optopt); - } - return -1; - break; - default: - return -1; - } - } - return 0; + init_params(params); + int c; + opterr = 0; + while ((c = getopt(argc, argv, "m:yb:vo:")) != -1) { + switch (c) { + case 'm': + params->max_messages = atoi(optarg); + break; + case 'y': + params->serial = 1; + break; + case 'b': + params->baudrate = atoi(optarg); + break; + case 'v': + params->verbose = 1; + break; + case 'o': + params->output = optarg; + break; + case '?': + if(optopt == 'm' || optopt == 'b' || optopt == 'o') + { + fprintf(stderr, "Option -%c requires an argument.\n", optopt); + } + if (isprint(optopt)) { + fprintf(stderr, "Unknown option '-%c'.\n", optopt); + } else { + fprintf(stderr, "Unknown option character '\\x%x'.\n", optopt); + } + return -1; + break; + default: + return -1; + } + } + return 0; } /** * Set the connection parameters for dlt client */ int init_dlt_connect(DltClient *client, const s_parameters *params, int argc, char *argv[]) { - char id[4]; - if (argc < 2) - return -1; - if(params->serial > 0) - { - client->serial_mode = 1; - client->serialDevice = argv[argc - 1]; - dlt_client_setbaudrate(client, params->baudrate); - } - else - { - client->servIP = argv[argc - 1]; - } - dlt_set_id(id, ECUID); - return 0; + char id[4]; + if (argc < 2) + return -1; + if(params->serial > 0) + { + client->serial_mode = 1; + client->serialDevice = argv[argc - 1]; + dlt_client_setbaudrate(client, params->baudrate); + } + else + { + client->servIP = argv[argc - 1]; + } + dlt_set_id(id, ECUID); + return 0; } /** * Entry point */ int main(int argc, char *argv[]) { - s_parameters params; - DltClient client; - params.client_ref = &client; - int err = read_params(¶ms, argc, argv); - - if (err != 0) { - usage(argv[0]); - return err; - } - - dlt_client_init(&client, params.verbose); - dlt_client_register_message_callback(receive); - - err = init_dlt_connect(&client, ¶ms, argc, argv); - if (err != 0) { - usage(argv[0]); - return err; - } - - err = dlt_client_connect(&client, params.verbose); - if (err != 0) { - printf("Failed to connect %s.\n", client.serial_mode > 0 ? client.serialDevice : client.servIP); - return err; - } + s_parameters params; + DltClient client; + params.client_ref = &client; + int err = read_params(¶ms, argc, argv); + + if (err != 0) { + usage(argv[0]); + return err; + } + + dlt_client_init(&client, params.verbose); + dlt_client_register_message_callback(receive); + + err = init_dlt_connect(&client, ¶ms, argc, argv); + if (err != 0) { + usage(argv[0]); + return err; + } + + err = dlt_client_connect(&client, params.verbose); + if (err != DLT_RETURN_OK) { + printf("Failed to connect %s.\n", client.serial_mode > 0 ? client.serialDevice : client.servIP); + return err; + } if(params.output) { @@ -220,13 +220,13 @@ int main(int argc, char *argv[]) { params.messages_left = params.max_messages; - dlt_client_main_loop(&client, ¶ms, params.verbose); + dlt_client_main_loop(&client, ¶ms, params.verbose); - if(params.output_handle > 0) - { - close(params.output_handle); - } - return 0; + if(params.output_handle > 0) + { + close(params.output_handle); + } + return 0; } /** @@ -234,79 +234,79 @@ int main(int argc, char *argv[]) { */ void print_stats(s_statistics stats, s_parameters params) { - static int last_print_time; - if(last_print_time >= time(NULL) && // Only print once a second - (stats.messages_received+stats.broken_messages_received) % 1000 != 0 && - params.messages_left != 0) // Print also every 1000th message - { - return; - } - printf("\033[2J\033[1;1H"); // Clear screen. - printf("Statistics:\n"); - printf(" Messages received : %d\n", stats.messages_received); - printf(" Broken messages received : %d\n", stats.broken_messages_received); - printf(" Bytes received : %d\n", stats.bytes_received); - printf(" Time running (seconds) : %ld\n", time(NULL)-stats.first_message_time); - printf(" Throughput (msgs/sec)/(B/sec) : %ld/%ld\n", - stats.messages_received/((time(NULL)-stats.first_message_time)+1), - (stats.bytes_received)/((time(NULL)-stats.first_message_time)+1)); - if(params.messages_left == 0) - { - if(stats.broken_messages_received == 0) - printf("All messages received succesfully!\n"); - else - printf("Test failure! There were %d broken messages.", stats.broken_messages_received); - - } - fflush(stdout); - last_print_time = time(NULL); + static int last_print_time; + if(last_print_time >= time(NULL) && // Only print once a second + (stats.messages_received+stats.broken_messages_received) % 1000 != 0 && + params.messages_left != 0) // Print also every 1000th message + { + return; + } + printf("\033[2J\033[1;1H"); // Clear screen. + printf("Statistics:\n"); + printf(" Messages received : %d\n", stats.messages_received); + printf(" Broken messages received : %d\n", stats.broken_messages_received); + printf(" Bytes received : %d\n", stats.bytes_received); + printf(" Time running (seconds) : %ld\n", time(NULL)-stats.first_message_time); + printf(" Throughput (msgs/sec)/(B/sec) : %ld/%ld\n", + stats.messages_received/((time(NULL)-stats.first_message_time)+1), + (stats.bytes_received)/((time(NULL)-stats.first_message_time)+1)); + if(params.messages_left == 0) + { + if(stats.broken_messages_received == 0) + printf("All messages received succesfully!\n"); + else + printf("Test failure! There were %d broken messages.", stats.broken_messages_received); + + } + fflush(stdout); + last_print_time = time(NULL); } /** * Callback for dlt client */ int receive(DltMessage *msg, void *data) { - static s_statistics stats; - char apid[5]; - struct iovec iov[2]; - s_parameters *params = (s_parameters *)data; + static s_statistics stats; + char apid[5]; + struct iovec iov[2]; + s_parameters *params = (s_parameters *)data; - memset(apid, 0, 5); - memcpy(apid, msg->extendedheader->apid, 4); + memset(apid, 0, 5); + memcpy(apid, msg->extendedheader->apid, 4); - if(apid[0] != 'M' || apid[1] != 'T') // TODO: Check through the app description - return 0; + if(apid[0] != 'M' || apid[1] != 'T') // TODO: Check through the app description + return 0; params->messages_left--; - if(stats.first_message_time == 0) - { - stats.first_message_time = time(NULL); - } + if(stats.first_message_time == 0) + { + stats.first_message_time = time(NULL); + } - int buflen = msg->datasize + 1; - char *buf = malloc(buflen); - if(buf==0) - { - printf("Out of memory\n"); - return -1; - } - memset(buf, 0, buflen); + int buflen = msg->datasize + 1; + char *buf = malloc(buflen); + if(buf==0) + { + printf("Out of memory\n"); + return -1; + } + memset(buf, 0, buflen); - dlt_message_payload(msg,buf,buflen-1,DLT_OUTPUT_ASCII,0); + dlt_message_payload(msg,buf,buflen-1,DLT_OUTPUT_ASCII,0); - if(strcmp(buf, PAYLOAD_DATA) == 0) - { - stats.messages_received++; - } - else - { - stats.broken_messages_received++; - } - stats.bytes_received += msg->datasize+msg->headersize-sizeof(DltStorageHeader);; + if(strcmp(buf, PAYLOAD_DATA) == 0) + { + stats.messages_received++; + } + else + { + stats.broken_messages_received++; + } + stats.bytes_received += msg->datasize+msg->headersize-sizeof(DltStorageHeader);; - free(buf); + free(buf); - print_stats(stats, *params); + print_stats(stats, *params); if (params->output_handle > 0) { @@ -319,7 +319,7 @@ int receive(DltMessage *msg, void *data) { } if(params->messages_left < 1) { - dlt_client_cleanup(params->client_ref, params->verbose); + dlt_client_cleanup(params->client_ref, params->verbose); } - return 0; + return 0; } -- cgit v1.2.1