diff options
author | Stefan Held <stefan_held@mentor.com> | 2015-05-28 10:56:11 +0200 |
---|---|---|
committer | Alexander Wenzel <Alexander.AW.Wenzel@bmw.de> | 2015-06-17 08:50:39 +0200 |
commit | 9a64599a9d864e2dc2e14832eb2f0c17a497972f (patch) | |
tree | 875ad070401a04c0e81b6e923df30a81d2e7c713 | |
parent | abef04eac17f8ff270d1b3aa0a56bbca2a8ab195 (diff) | |
download | DLT-daemon-9a64599a9d864e2dc2e14832eb2f0c17a497972f.tar.gz |
changed dlt-test-receiver delete dlt-test-filetranfer make a bash script wich tests the filetransfer
Signed-off-by: Stefan Held <stefan_held@mentor.com>
Signed-off-by: Alexander Wenzel <Alexander.AW.Wenzel@bmw.de>
-rw-r--r-- | tests/CMakeLists.txt | 2 | ||||
-rw-r--r-- | tests/dlt_test_filetransfer.c | 179 | ||||
-rw-r--r-- | tests/dlt_test_receiver.c | 97 | ||||
-rw-r--r-- | tests/start_filetransfer_test.sh | 28 | ||||
-rw-r--r-- | tests/testfile_filetransfer.txt | 6 |
5 files changed, 52 insertions, 260 deletions
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 <stdlib.h> -#include <stdio.h> -#include <ctype.h> - -#include <dlt_filetransfer.h> /*Needed for transferring files with the dlt protocol*/ -#include <dlt.h> /*Needed for dlt logging*/ -#include <zlib.h> - -#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<strlen(tmpFilename);i++) + { + if(isspace(tmpFilename[i])) + { + tmpFilename[i] ='\0'; + break; + } + } // create file for each received file, as named as crc value snprintf(filename, 255, "/tmp/%s", tmpFilename); fp = fopen(filename, "w+"); } - // 3rd create crc and verify on finish + // 3rd close fp if( strncmp(text, "FLFI", 4) == 0) { - unsigned long crcnew = crc32(0L, Z_NULL, 0); - unsigned char buffer[FLENGTH]; - fseek(fp, SEEK_SET, 0); - size_t readBytes = fread(buffer, sizeof(char), FLENGTH, fp); - crcnew = crc32(crcnew, buffer, readBytes); - - if( (unsigned) atol(crc) == crcnew) - printf("FILETRANSFER SUCCESSFULL"); - else - printf("ERROR ON FILETRANSFER"); - fclose(fp); + printf("TEST FILETRANSFER PASSED\n"); + fclose(fp); } // 2nd check if incomming data are filetransfer data @@ -408,7 +348,6 @@ int dlt_receive_filetransfer_callback(DltMessage *message, void *data) // truncate ending of data stream ( FLDA ) int len = strlen(text); text[len - 4] = '\0'; - printf("## [%s]\n", text); // hex to ascii and store at /tmp char tmp[3]; int i; diff --git a/tests/start_filetransfer_test.sh b/tests/start_filetransfer_test.sh new file mode 100644 index 0000000..cd44332 --- /dev/null +++ b/tests/start_filetransfer_test.sh @@ -0,0 +1,28 @@ +#!/bin/bash +file="testfile_filetransfer.txt" +fullpath="$(pwd)/testfile_filetransfer.txt" + +#start dlt-daemon +dlt-daemon & +#start dlt-test-receiver +./../build/tests/dlt_test_receiver localhost & +#send file to daemon +dlt-example-filetransfer $fullpath & + + +md5_1=($(md5sum $file)) +md5_2=($(md5sum /tmp/$file)) + + +echo $md5_1 +echo $md5_2 + +tput setaf 1 +if [ $md5_1 == $md5_2 ] +then + echo "Files are equal. Transfer succuess." +else + echo "File not equal. Error on transmission" +fi +tput setaf 7 +pkill dlt-daemon diff --git a/tests/testfile_filetransfer.txt b/tests/testfile_filetransfer.txt new file mode 100644 index 0000000..4850be0 --- /dev/null +++ b/tests/testfile_filetransfer.txt @@ -0,0 +1,6 @@ +TEST DATEI. +123. +qwertzuiopü+ +asdfghjklöä# +<yxcvbnm,.- +1 2 3 4 5 6 7 8 9 0 |