diff --git a/.gitmodules b/.gitmodules
index 9e54bc21a1af65fea7fdd4c5fa9fd92e20cae753..511a70b30c810c18b1b996207921483164bcc5cc 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -13,3 +13,6 @@
 [submodule "libdap-stream-ch"]
 	path = libdap-stream-ch
 	url = https://github.com/kelvinblockchain/libdap-stream-ch
+[submodule "test/libdap-test"]
+	path = test/libdap-test
+	url = https://github.com/kelvinblockchain/libdap-test
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f2a5aa7faaf9a349eb1b24d4a33a221ece8410eb
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,28 @@
+sudo: required
+language: cpp
+compiler: gcc
+dist: trusty
+notifications:
+  email: false
+
+before_install:
+    - git submodule init
+    - git submodule update --recursive
+
+script:
+    - export CC=gcc-5
+    - mkdir build
+    - cd build 
+    - cmake -DBUILD_LIB_DAP_CLIENT_TESTS=ON ../
+    - make
+    - ctest --verbose
+
+addons:
+  apt:
+    sources:
+    - ubuntu-toolchain-r-test
+    packages:
+    - gcc-5
+    - libev-dev
+    - libmagic-dev
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b31f29a1c95afd77b9afb836afc2172ff263351e..a187fa9467fb197eb176b0c60abdbbc26bad451c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,6 +12,12 @@ add_subdirectory(libdap-server)
 add_subdirectory(libdap-stream)
 add_subdirectory(libdap-stream-ch)
 
+if(BUILD_LIB_DAP_CLIENT_TESTS)
+    enable_testing()
+    add_subdirectory(test)
+endif()
+
+
 file(GLOB DAP_CLIENT_SRCS *.c)
 file(GLOB DAP_CLIENT_HEADERS *.h)
 
@@ -19,7 +25,5 @@ add_library(${PROJECT_NAME} STATIC ${DAP_CLIENT_SRCS} ${DAP_CLIENT_HEADERS})
 
 target_link_libraries(${PROJECT_NAME} dap_crypto dap_core dap_http_server dap_session dap_stream)
 
-#dap_udp_server dap_stream dap_session
-
 target_include_directories(${PROJECT_NAME} INTERFACE .)
 
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4ea6b6a688233d28707ffefb1600484d9c681e63
--- /dev/null
+++ b/test/CMakeLists.txt
@@ -0,0 +1,18 @@
+if(TARGET libdap_client_test)
+    return() # The project has already been built.
+endif()
+project(libdap_client_test)
+
+add_subdirectory(libdap-test)
+
+file(GLOB SOURCES *.c)
+file(GLOB HEADERS *.h)
+
+add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
+
+target_link_libraries(${PROJECT_NAME} dap_test dap_core)
+
+add_test(
+    NAME libdap_client_test
+    COMMAND libdap_client_test
+)
diff --git a/test/libdap-test b/test/libdap-test
new file mode 160000
index 0000000000000000000000000000000000000000..d40ba8973440b7c712d5a64df03a312adcf7c2fd
--- /dev/null
+++ b/test/libdap-test
@@ -0,0 +1 @@
+Subproject commit d40ba8973440b7c712d5a64df03a312adcf7c2fd
diff --git a/test/main.c b/test/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..d015aec2588f35b803c5923f045beeb994a85583
--- /dev/null
+++ b/test/main.c
@@ -0,0 +1,7 @@
+#include "dap_common.h"
+
+int main(void) {
+    // switch off debug info from library
+    set_log_level(L_CRITICAL);
+    return 0;
+}