summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorStefan Held <stefan_held@mentor.com>2015-05-28 10:56:11 +0200
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2015-06-17 08:50:39 +0200
commit9a64599a9d864e2dc2e14832eb2f0c17a497972f (patch)
tree875ad070401a04c0e81b6e923df30a81d2e7c713 /tests
parentabef04eac17f8ff270d1b3aa0a56bbca2a8ab195 (diff)
downloadDLT-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>
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt2
-rw-r--r--tests/dlt_test_filetransfer.c179
-rw-r--r--tests/dlt_test_receiver.c97
-rw-r--r--tests/start_filetransfer_test.sh28
-rw-r--r--tests/testfile_filetransfer.txt6
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