summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Muck <christian.muck@bmw.de>2012-01-13 10:36:49 +0100
committerChristian Muck <christian.muck@bmw.de>2012-01-13 10:36:49 +0100
commit3d3de8d77645d2b7186dc58830d4cb94a3bcb0da (patch)
treed6cbcb898c4954051fafa014702455410b0c06ab
parentb512a5a86504ce52371f0ff01bd13fb903d156ad (diff)
downloadDLT-daemon-3d3de8d77645d2b7186dc58830d4cb94a3bcb0da.tar.gz
Updated filetransfer documentation, lib and test application
-rwxr-xr-xdoc/filetransfer_mainpage.h44
-rw-r--r--src/lib/dlt_filetransfer.c10
-rw-r--r--src/tests/dlt-test-filetransfer.c216
3 files changed, 130 insertions, 140 deletions
diff --git a/doc/filetransfer_mainpage.h b/doc/filetransfer_mainpage.h
index 1a3c074..11b1c1e 100755
--- a/doc/filetransfer_mainpage.h
+++ b/doc/filetransfer_mainpage.h
@@ -102,14 +102,23 @@ Here is the content of the information package:
\subsection File transfer error
\code
+//! Error code for dlt_user_log_file_complete
#define ERROR_FILE_COMPLETE -300
+//! Error code for dlt_user_log_file_complete
#define ERROR_FILE_COMPLETE1 -301
+//! Error code for dlt_user_log_file_complete
#define ERROR_FILE_COMPLETE2 -302
+//! Error code for dlt_user_log_file_complete
#define ERROR_FILE_COMPLETE3 -303
+//! Error code for dlt_user_log_file_head
#define ERROR_FILE_HEAD -400
+//! Error code for dlt_user_log_file_data
#define ERROR_FILE_DATA -500
+//! Error code for dlt_user_log_file_end
#define ERROR_FILE_END -600
+//! Error code for dlt_user_log_file_infoAbout
#define ERROR_INFO_ABOUT -700
+//! Error code for dlt_user_log_file_packagesCount
#define ERROR_PACKAGE_COUNT -800
\endcode
If an error happens during file transfer, the library will execute the mehtod:
@@ -153,34 +162,21 @@ If the file doesn't exist, the conent of the error package is a little bit diffe
|----------------------------------------------------|
\endcode
-\section Compile
-Use the following commands to compile the dlt filetransfer:
-\code
-mkdir build
-cd build
-cmake ..
-make
-sudo make install
-\endcode
-If you want to generate the doc, you must set ENABLE_BUILD_DOC=ON at cmake.
-
-
\section Using Using DLT Filetransfer
There are two ways to use the filetransfer
- \li Automatic filetransfer in one step (this is the easiest way to go)
+ \li Automatic filetransfer in one step
\li Header, data and end package order handeld by the user
\subsection Automatic Automatic
-If you won't want to carry about the header, data and end packages ordering, you should use
-this method call
+Call
\li dlt_user_log_file_complete
The method needs the following arguments:
\li fileContext -> Context for logging the file to dlt
\li filename -> Use the absolute file path to the file
\li deleteFlag -> Flag if the file will be deleted after transfer. 1->delete, 0->notDelete
- \li timeout -> Timeout in ms to wait between some logs. Important: The FIFO of dlt should not be flooded with to many messages in a short period of time. The timeout can not be smaller than MIN_TIMEOUT.
-
+ \li timeout -> Deprecated.
+
The order of the packages is to send at first the header, then one or more data packages (depends on the filesize) and in the end the end package.
The advantage of this method is, that you must not handle the package ordering by your own.
@@ -224,19 +220,19 @@ When you call "sudo make install", some automatic tests will be installed. Start
dlt-test-filetransfer
\endcode
It's important that the dlt-filetransfer example files are installed in /usr/share/dlt-filetransfer which will be done automatically by using "sudo make install".
-\subsection testF1P1
+\subsection testFile1Run1
Test the file transfer with the condition that the transferred file is smaller as the file transfer buffer using dlt_user_log_file_complete.
-\subsection testF1P2
+\subsection testFile1Run2
Test the file transfer with the condition that the transferred file is smaller as the file transfer buffer using single package transfer
-\subsection testF2P1
+\subsection testFile2Run1
Test the file transfer with the condition that the transferred file is bigger as the file transfer buffer using dlt_user_log_file_complete.
-\subsection testF2P2
+\subsection testFile2Run2
Test the file transfer with the condition that the transferred file is bigger as the file transfer buffer using single package transfer
-\subsection testF3P1
+\subsection testFile3Run1
Test the file transfer with the condition that the transferred file does not exist using dlt_user_log_file_complete.
-\subsection testF3P2
+\subsection testFile3Run2
Test the file transfer with the condition that the transferred file does not exist using single package transfer
-\subsection testF3P3
+\subsection testFile3Run3
Test which logs some information about the file.
diff --git a/src/lib/dlt_filetransfer.c b/src/lib/dlt_filetransfer.c
index c11db67..bdb9759 100644
--- a/src/lib/dlt_filetransfer.c
+++ b/src/lib/dlt_filetransfer.c
@@ -6,15 +6,23 @@
//!Defines the minimum timeout between two dlt logs. This is important because dlt should not be flooded with too many logs in a short period of time.
#define MIN_TIMEOUT 20
-
+//! Error code for dlt_user_log_file_complete
#define ERROR_FILE_COMPLETE -300
+//! Error code for dlt_user_log_file_complete
#define ERROR_FILE_COMPLETE1 -301
+//! Error code for dlt_user_log_file_complete
#define ERROR_FILE_COMPLETE2 -302
+//! Error code for dlt_user_log_file_complete
#define ERROR_FILE_COMPLETE3 -303
+//! Error code for dlt_user_log_file_head
#define ERROR_FILE_HEAD -400
+//! Error code for dlt_user_log_file_data
#define ERROR_FILE_DATA -500
+//! Error code for dlt_user_log_file_end
#define ERROR_FILE_END -600
+//! Error code for dlt_user_log_file_infoAbout
#define ERROR_INFO_ABOUT -700
+//! Error code for dlt_user_log_file_packagesCount
#define ERROR_PACKAGE_COUNT -800
diff --git a/src/tests/dlt-test-filetransfer.c b/src/tests/dlt-test-filetransfer.c
index 75b77d2..cf52920 100644
--- a/src/tests/dlt-test-filetransfer.c
+++ b/src/tests/dlt-test-filetransfer.c
@@ -1,5 +1,5 @@
#include <dlt_filetransfer.h> /*Needed for transferring files with the dlt protocol*/
-#include <dlt.h> /*Needed for dlt logging*/
+#include <dlt.h> /*Needed for dlt logging*/
//!Declare some context for the main program. It's a must have to do this, when you want to log with dlt.
DLT_DECLARE_CONTEXT(mainContext);
@@ -20,116 +20,34 @@ char *file3_3;
//!Just some variables
int i,countPackages, transferResult, dltResult;
-extern int testF1P1();
-extern int testF1P2();
-extern int testF2P1();
-extern int testF2P2();
-extern int testF3P1();
-extern int testF3P2();
-extern int testF3P3();
+//!Prints the test result
+void printTestResultPositiveExpected(const char *function, int result){
-//!Main program dlt-test-filestransfer starts here
-int main(void)
-{
- //First file contains some text
- file1 = "/usr/share/dlt-filetransfer/dlt-test-filetransfer-file";
- //Second file is a picture
- file2 = "/usr/share/dlt-filetransfer/dlt-test-filetransfer-image.png";
- //Third file doesn't exist. Just to test the reaction when the file isn't available.
- file3_1 = "dlt-test-filetransfer-doesntExist_1";
- //Third file doesn't exist. Just to test the reaction when the file isn't available.
- file3_2 = "dlt-test-filetransfer-doesntExist_2";
- //Third file doesn't exist. Just to test the reaction when the file isn't available.
- file3_3 = "dlt-test-filetransfer-doesntExist_3";
-
- //Register the application at the dlt-daemon
- dltResult = DLT_REGISTER_APP("FLTR","Test Application filetransfer");
- if(dltResult < 0){
- printf("Error: DLT_REIGSTER_APP: FLTR\n");
- return -1;
+ if(result >= 0){
+ printf("%s successful\n",function);
}
- //Register the context of the main program at the dlt-daemon
- dltResult = DLT_REGISTER_CONTEXT(mainContext,"MAIN","Main context for filetransfer test");
- if(dltResult < 0){
- printf("Error: DLT_REGISTER_CONTEXT: MAIN\n");
- return -1;
+ else
+ {
+ printf("%s failed\n",function);
}
- //Register the context in which the file transfer will be logged at the dlt-daemon
- dltResult = DLT_REGISTER_CONTEXT(fileContext,"FLTR","Test Context for filetransfer");
- if(dltResult < 0){
- printf("Error: DLT_REGISTER_CONTEXT:FLTR\n");
- return -1;
+
+}
+
+//!Prints the test result
+void printTestResultNegativeExpected(const char *function, int result){
+
+ if(result < 0){
+ printf("%s successful\n",function);
+ }
+ else
+ {
+ printf("%s failed\n",function);
}
- //More details in corresponding methods
- if(testF1P1() >= 0){
- printf("testF1P1 successful\n");
- }
- else
- {
- printf("testF1P1 failed\n");
- }
-
- if(testF1P2() >= 0){
- printf("testF1P2 successful\n");
- }
- else
- {
- printf("testF1P2 failed\n");
- }
-
- if(testF2P1() >= 0){
- printf("testF2P1 successful\n");
- }
- else
- {
- printf("testF2P1 failed\n");
- }
-
- if(testF2P2() >= 0){
- printf("testF2P2 successful\n");
- }
- else
- {
- printf("testF2P2 failed\n");
- }
-
- if(testF3P1() < 0){
- printf("testF3P1 successful\n");
- }
- else
- {
- printf("testF3P1 failed\n");
- }
-
- if(testF3P2() < 0){
- printf("testF3P2 successful\n");
- }
- else
- {
- printf("testF3P2 failed\n");
- }
-
- if(testF3P3() < 0 ){
- printf("testF3P3 successful\n");
- }
- else
- {
- printf("testF3P3 failed\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_CONTEXT(mainContext);
- //Unregister the app from the dlt-daemon
- DLT_UNREGISTER_APP();
-
- return(0);
}
//!Test the file transfer with the condition that the transferred file is smaller as the file transfer buffer using dlt_user_log_file_complete.
-int testF1P1(){
+int testFile1Run1(){
//Just some log to the main context
DLT_LOG(mainContext,DLT_LOG_INFO,DLT_STRING("Started testF1P1 - dlt_user_log_file_complete"),DLT_STRING(file1));
@@ -143,17 +61,20 @@ int testF1P1(){
//Just some log to the main context
DLT_LOG(mainContext,DLT_LOG_INFO,DLT_STRING("Finished testF1P1"),DLT_STRING(file1));
+ printTestResultPositiveExpected(__FUNCTION__,transferResult);
+
return transferResult;
}
//!Test the file transfer with the condition that the transferred file is smaller as the file transfer buffer using single package transfer
-int testF1P2(){
+int testFile1Run2(){
//Get the information how many packages have the file
countPackages = dlt_user_log_file_packagesCount(&fileContext,file1);
if(countPackages < 0 )
{
printf("Error: dlt_user_log_file_packagesCount\n");
+ printTestResultPositiveExpected(__FUNCTION__,countPackages);
return -1;
}
//Just some log to the main context
@@ -172,6 +93,7 @@ int testF1P2(){
if(transferResult < 0)
{
printf("Error: dlt_user_log_file_data\n");
+ printTestResultPositiveExpected(__FUNCTION__,transferResult);
return transferResult;
}
}
@@ -182,22 +104,24 @@ int testF1P2(){
if(transferResult < 0)
{
printf("Error: dlt_user_log_file_end\n");
+ printTestResultPositiveExpected(__FUNCTION__,transferResult);
return transferResult;
}
}
else
{
printf("Error: dlt_user_log_file_header\n");
+ printTestResultPositiveExpected(__FUNCTION__,transferResult);
return transferResult;
}
//Just some log to main context
DLT_LOG(mainContext,DLT_LOG_INFO,DLT_STRING("Finished testF1P2 - transfer single package"),DLT_STRING(file1));
-
+ printTestResultPositiveExpected(__FUNCTION__,transferResult);
return 0;
}
//!Test the file transfer with the condition that the transferred file is bigger as the file transfer buffer using dlt_user_log_file_complete.
-int testF2P1(){
+int testFile2Run1(){
//Just some log to main context
DLT_LOG(mainContext,DLT_LOG_INFO,DLT_STRING("Started testF2P1 - dlt_user_log_file_complete"),DLT_STRING(file2));
@@ -206,22 +130,24 @@ int testF2P1(){
if(transferResult < 0)
{
printf("Error: dlt_user_log_file_complete\n");
+ printTestResultPositiveExpected(__FUNCTION__,transferResult);
return transferResult;
}
//Just some log to main context
DLT_LOG(mainContext,DLT_LOG_INFO,DLT_STRING("Finished testF2P1"),DLT_STRING(file2));
-
+ printTestResultPositiveExpected(__FUNCTION__,transferResult);
return transferResult;
}
//!Test the file transfer with the condition that the transferred file is bigger as the file transfer buffer using single package transfer
-int testF2P2(){
+int testFile2Run2(){
//Get the information how many packages have the file
countPackages = dlt_user_log_file_packagesCount(&fileContext,file2);
if(countPackages < 0 )
{
printf("Error: dlt_user_log_file_packagesCount\n");
+ printTestResultPositiveExpected(__FUNCTION__,countPackages);
return -1;
}
@@ -241,6 +167,7 @@ int testF2P2(){
if(transferResult < 0)
{
printf("Error: dlt_user_log_file_data\n");
+ printTestResultPositiveExpected(__FUNCTION__,transferResult);
return transferResult;
}
}
@@ -251,22 +178,24 @@ int testF2P2(){
if(transferResult < 0)
{
printf("Error: dlt_user_log_file_end\n");
+ printTestResultPositiveExpected(__FUNCTION__,transferResult);
return transferResult;
}
}
else
{
printf("Error: dlt_user_log_file_header\n");
+ printTestResultPositiveExpected(__FUNCTION__,transferResult);
return transferResult;
}
//Just some log to the main context
DLT_LOG(mainContext,DLT_LOG_INFO,DLT_STRING("Finished testF2P2"),DLT_STRING(file2));
-
+ printTestResultPositiveExpected(__FUNCTION__,transferResult);
return 0;
}
//!Test the file transfer with the condition that the transferred file does not exist using dlt_user_log_file_complete.
-int testF3P1(){
+int testFile3Run1(){
//Just some log to the main context
DLT_LOG(mainContext,DLT_LOG_INFO,DLT_STRING("Started testF3P1"),DLT_STRING(file3_1));
@@ -279,14 +208,16 @@ int testF3P1(){
//printf("Error: dlt_user_log_file_complete\n");
//Just some log to the main context
DLT_LOG(mainContext,DLT_LOG_INFO,DLT_STRING("Finished testF3P1"),DLT_STRING(file3_1));
+ printTestResultNegativeExpected(__FUNCTION__,transferResult);
return transferResult;
}
+ printTestResultNegativeExpected(__FUNCTION__,transferResult);
return transferResult;
}
//!Test the file transfer with the condition that the transferred file does not exist using single package transfer
-int testF3P2(){
+int testFile3Run2(){
//Get the information how many packages have the file
countPackages = dlt_user_log_file_packagesCount(&fileContext,file3_2);
@@ -296,6 +227,7 @@ int testF3P2(){
//printf("Error: dlt_user_log_file_packagesCount\n");
//Just some log to the main context
DLT_LOG(mainContext,DLT_LOG_INFO,DLT_STRING("Finished testF3P1"),DLT_STRING(file3_2));
+ printTestResultNegativeExpected(__FUNCTION__,countPackages);
return -1;
}
//Just some log to the main context
@@ -314,6 +246,7 @@ int testF3P2(){
if(transferResult < 0)
{
printf("Error: dlt_user_log_file_data\n");
+ printTestResultNegativeExpected(__FUNCTION__,transferResult);
return transferResult;
}
}
@@ -324,16 +257,17 @@ int testF3P2(){
if(transferResult < 0)
{
printf("Error: dlt_user_log_file_end\n");
+ printTestResultNegativeExpected(__FUNCTION__,transferResult);
return transferResult;
}
}
-
+ printTestResultNegativeExpected(__FUNCTION__,transferResult);
return 0;
}
//!Logs some information about the file.
-int testF3P3(){
+int testFile3Run3(){
//Just some log to the main context
DLT_LOG(mainContext,DLT_LOG_INFO,DLT_STRING("Started testF3P2"),DLT_STRING(file3_3));
@@ -346,9 +280,61 @@ int testF3P3(){
//printf("Error: dlt_user_log_file_infoAbout\n");
//Just some log to the main context
DLT_LOG(mainContext,DLT_LOG_INFO,DLT_STRING("Finished testF3P2"),DLT_STRING(file3_3));
-
+ printTestResultNegativeExpected(__FUNCTION__,transferResult);
return transferResult;
}
-
+ printTestResultNegativeExpected(__FUNCTION__,transferResult);
return 0;
}
+
+//!Main program dlt-test-filestransfer starts here
+int main(void)
+{
+ //First file contains some text
+ file1 = "/usr/share/dlt-filetransfer/dlt-test-filetransfer-file";
+ //Second file is a picture
+ file2 = "/usr/share/dlt-filetransfer/dlt-test-filetransfer-image.png";
+ //Third file doesn't exist. Just to test the reaction when the file isn't available.
+ file3_1 = "dlt-test-filetransfer-doesntExist_1";
+ //Third file doesn't exist. Just to test the reaction when the file isn't available.
+ file3_2 = "dlt-test-filetransfer-doesntExist_2";
+ //Third file doesn't exist. Just to test the reaction when the file isn't available.
+ file3_3 = "dlt-test-filetransfer-doesntExist_3";
+
+ //Register the application at the dlt-daemon
+ dltResult = DLT_REGISTER_APP("FLTR","Test Application filetransfer");
+ if(dltResult < 0){
+ printf("Error: DLT_REIGSTER_APP: FLTR\n");
+ return -1;
+ }
+ //Register the context of the main program at the dlt-daemon
+ dltResult = DLT_REGISTER_CONTEXT(mainContext,"MAIN","Main context for filetransfer test");
+ if(dltResult < 0){
+ printf("Error: DLT_REGISTER_CONTEXT: MAIN\n");
+ return -1;
+ }
+ //Register the context in which the file transfer will be logged at the dlt-daemon
+ dltResult = DLT_REGISTER_CONTEXT(fileContext,"FLTR","Test Context for filetransfer");
+ if(dltResult < 0){
+ printf("Error: DLT_REGISTER_CONTEXT:FLTR\n");
+ return -1;
+ }
+
+ //More details in corresponding methods
+ testFile1Run1();
+ testFile1Run2();
+ testFile2Run1();
+ testFile2Run2();
+ testFile3Run1();
+ testFile3Run2();
+ testFile3Run3();
+
+ //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_CONTEXT(mainContext);
+ //Unregister the app from the dlt-daemon
+ DLT_UNREGISTER_APP();
+
+ return(0);
+}