From 9a64599a9d864e2dc2e14832eb2f0c17a497972f Mon Sep 17 00:00:00 2001 From: Stefan Held Date: Thu, 28 May 2015 10:56:11 +0200 Subject: changed dlt-test-receiver delete dlt-test-filetranfer make a bash script wich tests the filetransfer Signed-off-by: Stefan Held Signed-off-by: Alexander Wenzel --- tests/CMakeLists.txt | 2 - tests/dlt_test_filetransfer.c | 179 --------------------------------------- tests/dlt_test_receiver.c | 97 ++++----------------- tests/start_filetransfer_test.sh | 28 ++++++ tests/testfile_filetransfer.txt | 6 ++ 5 files changed, 52 insertions(+), 260 deletions(-) delete mode 100644 tests/dlt_test_filetransfer.c create mode 100644 tests/start_filetransfer_test.sh create mode 100644 tests/testfile_filetransfer.txt (limited to 'tests') diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a7ce9aa..771028f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -10,8 +10,6 @@ find_package( ZLIB REQUIRED ) add_executable(gtest_dlt_common gtest_dlt_common.cpp) add_executable(gtest_dlt_user gtest_dlt_user.cpp) add_executable(dlt_test_receiver dlt_test_receiver.c) -add_executable(dlt_test_filetransfer dlt_test_filetransfer.c) target_link_libraries(gtest_dlt_common gtest gtest_main dlt) target_link_libraries(gtest_dlt_user gtest gtest_main dlt) target_link_libraries(dlt_test_receiver dlt ${ZLIB_LIBRARIES}) -target_link_libraries(dlt_test_filetransfer dlt ${ZLIB_LIBRARIES}) diff --git a/tests/dlt_test_filetransfer.c b/tests/dlt_test_filetransfer.c deleted file mode 100644 index 085d90d..0000000 --- a/tests/dlt_test_filetransfer.c +++ /dev/null @@ -1,179 +0,0 @@ -#include -#include -#include - -#include /*Needed for transferring files with the dlt protocol*/ -#include /*Needed for dlt logging*/ -#include - -#define MAXSTRLEN 1024 - -#define FLTR_APP_DESC "Filetransfer application" -#define FLTR_CONTEXT_DESC "Filetransfer context" - -#define FLTR_APP "FLTR" -#define FLTR_CONTEXT "FLTR" - -#define TIMEOUT 1 - -//!Declare some context for the file transfer. It's not a must have to do this, but later you can set a filter on this context in the dlt viewer. -DLT_DECLARE_CONTEXT(fileContext); - -/** - * Print usage information of tool. - */ -void usage() -{ - char version[255]; - - dlt_get_version(version,255); - - printf("Usage: dlt-example-filetransfer [options] absolute-path-to-file\n"); - printf("Simple filetransfer example"); - printf("%s \n", version); - printf("Options:\n"); - printf("-a apid - Set application id to apid (default: FLTR)\n"); - printf("-c ctid - Set context id to ctid (default: FLTR)\n"); - printf("-t ms - Timeout between file packages in ms (minimum 1 ms)\n"); - printf("-d - Flag to delete the file after the transfer (default: false)\n"); - printf("-i - Flag to log file infos to DLT before transfer file (default: false)\n"); - printf("-h - This help\n"); - -} - - -//!Main program dlt-test-filestransfer starts here -int main(int argc, char* argv[]) -{ - //char str[MAXSTRLEN]; - int opt, timeout; - - char apid[DLT_ID_SIZE]; - char ctid[DLT_ID_SIZE]; - - //char version[255]; - int index; - int dflag = 0; - int iflag = 0; - char *file = 0; - char *tvalue = 0; - - unsigned long crc = crc32(0L, Z_NULL, 0); - unsigned long FLENGHT = 1024*1024; // --> 1MB - unsigned char buffer[FLENGHT]; - FILE *fp; - - dlt_set_id(apid, FLTR_APP); - dlt_set_id(ctid, FLTR_CONTEXT); - - while ((opt = getopt(argc, argv, "idf:t:a:c:h")) != -1) - { - switch (opt) - { - case 'd': - { - dflag = 1; - break; - } - case 'i': - { - iflag = 1; - break; - } - case 't': - { - tvalue = optarg; - break; - } - case 'a': - { - dlt_set_id(apid,optarg); - break; - } - case 'c': - { - dlt_set_id(ctid,optarg); - break; - } - case 'h': - { - usage(); - break; - } - case '?': - { - if (optopt == 'a' || optopt == 'c' || optopt == 't') - { - fprintf (stderr, "Option -%c requires an argument.\n", optopt); - } - else if (isprint (optopt)) - { - fprintf (stderr, "Unknown option `-%c'.\n", optopt); - } - else - { - fprintf (stderr, "Unknown option character `\\x%x'.\n",optopt); - } - /* unknown or wrong option used, show usage information and terminate */ - usage(); - return -1; - } - } - } - - for (index = optind; index < argc; index++) - { - file = argv[index]; - } - - if (file == 0) - { - /* no message, show usage and terminate */ - fprintf(stderr,"ERROR: No absolute path to file specified\n"); - usage(); - return -1; - } - - - if (tvalue) - { - timeout = atoi(tvalue); - } - else - { - timeout = TIMEOUT; - } - - //Register the application at the dlt-daemon - DLT_REGISTER_APP(apid,FLTR_APP_DESC); - - //Register the context of the main program at the dlt-daemon - DLT_REGISTER_CONTEXT(fileContext,ctid,FLTR_CONTEXT_DESC); - - // create crc32 checksum - fp = fopen (file,"rb"); - size_t readBytes = fread(buffer, sizeof(char), FLENGHT, fp); - crc = crc32(crc, buffer, readBytes); - fclose(fp); - - // send crc32 checksum to daemon - DLT_LOG(fileContext,DLT_LOG_INFO, DLT_STRING("CRC"), DLT_UINT(crc), DLT_STRING(file)); - - //More details in corresponding methods - if( iflag ) - { - dlt_user_log_file_infoAbout(&fileContext,file); - } - - if( dlt_user_log_file_complete(&fileContext,file,dflag,timeout) < 0 ) - { - printf("File couldn't be transferred. Please check the dlt log messages.\n"); - } - - //Unregister the context in which the file transfer happened from the dlt-daemon - DLT_UNREGISTER_CONTEXT(fileContext); - //Unregister the context of the main program from the dlt-daemon - DLT_UNREGISTER_APP(); - - return 0; -} diff --git a/tests/dlt_test_receiver.c b/tests/dlt_test_receiver.c index 7c52c94..81dcf7b 100644 --- a/tests/dlt_test_receiver.c +++ b/tests/dlt_test_receiver.c @@ -82,14 +82,9 @@ int dlt_receive_filetransfer_callback(DltMessage *message, void *data); typedef struct { - int aflag; - int sflag; - int xflag; - int mflag; int vflag; int yflag; char *ovalue; - char *fvalue; char *evalue; int bvalue; char ecuid[4]; @@ -114,17 +109,12 @@ void usage() printf("Use filters to filter received messages.\n"); printf("%s \n", version); printf("Options:\n"); - printf(" -a Print DLT messages; payload as ASCII\n"); - printf(" -x Print DLT messages; payload as hex\n"); - printf(" -m Print DLT messages; payload as hex and ASCII\n"); - printf(" -s Print DLT messages; only headers\n"); printf(" -v Verbose mode\n"); printf(" -h Usage\n"); printf(" -y Serial device mode\n"); printf(" -b baudrate Serial device baudrate (Default: 115200)\n"); printf(" -e ecuid Set ECU ID (Default: RECV)\n"); printf(" -o filename Output messages in new DLT file\n"); - printf(" -f filename Enable filtering of messages\n"); } /** @@ -138,14 +128,9 @@ int main(int argc, char* argv[]) int index; /* Initialize dltdata */ - dltdata.aflag = 0; - dltdata.sflag = 0; - dltdata.xflag = 0; - dltdata.mflag = 0; dltdata.vflag = 0; dltdata.yflag = 0; dltdata.ovalue = 0; - dltdata.fvalue = 0; dltdata.evalue = 0; dltdata.bvalue = 0; dltdata.ohandle=-1; @@ -153,7 +138,7 @@ int main(int argc, char* argv[]) /* Fetch command line arguments */ opterr = 0; - while ((c = getopt (argc, argv, "vashyxmf:o:e:b:")) != -1) + while ((c = getopt (argc, argv, "vhy:o:e:b:")) != -1) switch (c) { case 'v': @@ -161,26 +146,6 @@ int main(int argc, char* argv[]) dltdata.vflag = 1; break; } - case 'a': - { - dltdata.aflag = 1; - break; - } - case 's': - { - dltdata.sflag = 1; - break; - } - case 'x': - { - dltdata.xflag = 1; - break; - } - case 'm': - { - dltdata.mflag = 1; - break; - } case 'h': { usage(); @@ -191,11 +156,6 @@ int main(int argc, char* argv[]) dltdata.yflag = 1; break; } - case 'f': - { - dltdata.fvalue = optarg; - break; - } case 'o': { dltdata.ovalue = optarg; @@ -213,7 +173,7 @@ int main(int argc, char* argv[]) } case '?': { - if (optopt == 'o' || optopt == 'f') + if (optopt == 'o') { fprintf (stderr, "Option -%c requires an argument.\n", optopt); } @@ -240,7 +200,6 @@ int main(int argc, char* argv[]) dlt_client_init(&dltclient, dltdata.vflag); /* Register callback to be called when message was received */ - // fp = open .... dlt_client_register_message_callback(dlt_receive_filetransfer_callback); /* Setup DLT Client structure */ @@ -286,17 +245,6 @@ int main(int argc, char* argv[]) /* first parse filter file if filter parameter is used */ dlt_filter_init(&(dltdata.filter),dltdata.vflag); - if (dltdata.fvalue) - { - if (dlt_filter_load(&(dltdata.filter),dltdata.fvalue,dltdata.vflag)<0) - { - dlt_file_free(&(dltdata.file),dltdata.vflag); - return -1; - } - - dlt_file_set_filter(&(dltdata.file),&(dltdata.filter),dltdata.vflag); - } - /* open DLT output file */ if (dltdata.ovalue) { @@ -347,12 +295,7 @@ int dlt_receive_filetransfer_callback(DltMessage *message, void *data) { DltReceiveData *dltdata; static char text[DLT_RECEIVE_TEXTBUFSIZE]; - - static char crc[11]; char filename[255]; - unsigned long FLENGTH = 1024*1024; // --> 1MB - - struct iovec iov[2]; int bytes_written; @@ -363,35 +306,32 @@ int dlt_receive_filetransfer_callback(DltMessage *message, void *data) dltdata = (DltReceiveData*)data; - dlt_message_payload(message,text,DLT_RECEIVE_TEXTBUFSIZE,DLT_OUTPUT_ASCII,dltdata->vflag); - printf("[%s]\n",text); - - // 1st get the crc to check the received data - if( strncmp(text, "CRC", 3) == 0) + dlt_message_print_ascii(message, text, DLT_RECEIVE_TEXTBUFSIZE, dltdata->vflag); + + // 1st find starting point of tranfering data packages + if( strncmp(text, "FLST", 4) == 0) { char *tmpFilename; - strncpy(crc, text + 4, 10); - crc[10] = '\0'; tmpFilename = strrchr(text, '/') + 1; + unsigned int i; + for(i=0; i