diff --git a/test/cpp/Makefile.am b/test/cpp/Makefile.am
index 66f8c1e..5e96596 100755
--- a/test/cpp/Makefile.am
+++ b/test/cpp/Makefile.am
@@ -59,7 +59,7 @@
 	$(top_builddir)/lib/cpp/libthrift.la \
 	$(top_builddir)/lib/cpp/libthriftz.la \
 	$(top_builddir)/lib/cpp/libthriftnb.la \
-	-levent -lboost_program_options
+	-levent -lboost_program_options -lboost_system -lboost_filesystem
 
 TestClient_SOURCES = \
 	src/TestClient.cpp
@@ -69,7 +69,7 @@
 	$(top_builddir)/lib/cpp/libthrift.la \
 	$(top_builddir)/lib/cpp/libthriftz.la \
 	$(top_builddir)/lib/cpp/libthriftnb.la \
-	-levent -lboost_program_options
+	-levent -lboost_program_options -lboost_system -lboost_filesystem
 
 StressTest_SOURCES = \
 	src/StressTest.cpp
diff --git a/test/cpp/src/TestClient.cpp b/test/cpp/src/TestClient.cpp
index 7a783d2..8c97dc0 100755
--- a/test/cpp/src/TestClient.cpp
+++ b/test/cpp/src/TestClient.cpp
@@ -33,6 +33,7 @@
 
 #include <boost/shared_ptr.hpp>
 #include <boost/program_options.hpp>
+#include <boost/filesystem.hpp>
 #include <thrift/cxxfunctional.h>
 #if _WIN32
    #include <thrift/windows/TWinsockSingleton.h>
@@ -47,6 +48,9 @@
 using namespace thrift::test;
 using namespace apache::thrift::async;
 
+// Length of argv[0] - Length of script dir
+#define EXECUTABLE_FILE_NAME_LENGTH 19
+
 //extern uint32_t g_socket_syscalls;
 
 // Current time, microseconds since the epoch
@@ -92,6 +96,8 @@
 }
 
 int main(int argc, char** argv) {
+  string file_path = boost::filesystem::system_complete(argv[0]).string();
+  string dir_path = file_path.substr(0, file_path.size()-EXECUTABLE_FILE_NAME_LENGTH);
 #if _WIN32
   transport::TWinsockSingleton::create();
 #endif
@@ -155,7 +161,7 @@
   if (vm.count("ssl")) {
     ssl = true;
   }
-  
+
   if (vm.count("noinsane")) {
     noinsane = true;
   }
@@ -169,7 +175,7 @@
   if (ssl) {
     factory = boost::shared_ptr<TSSLSocketFactory>(new TSSLSocketFactory());
     factory->ciphers("ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
-    factory->loadTrustedCertificates("keys/CA.pem");
+    factory->loadTrustedCertificates((dir_path + "../keys/CA.pem").c_str());
     factory->authenticate(true);
     socket = factory->createSocket(host, port);
   } else {
diff --git a/test/cpp/src/TestServer.cpp b/test/cpp/src/TestServer.cpp
index 7a16314..a343221 100755
--- a/test/cpp/src/TestServer.cpp
+++ b/test/cpp/src/TestServer.cpp
@@ -45,6 +45,7 @@
 #include <sstream>
 
 #include <boost/program_options.hpp>
+#include <boost/filesystem.hpp>
 #include <thrift/cxxfunctional.h>
 
 #include <signal.h>
@@ -63,6 +64,9 @@
 
 using namespace thrift::test;
 
+// Length of argv[0] - Length of script dir
+#define EXECUTABLE_FILE_NAME_LENGTH 19
+
 class TestHandler : public ThriftTestIf {
  public:
   TestHandler() {}
@@ -494,7 +498,11 @@
 
 
 int main(int argc, char **argv) {
-#if _WIN32
+
+  string file_path = boost::filesystem::system_complete(argv[0]).string();
+  string dir_path = file_path.substr(0, file_path.size()-EXECUTABLE_FILE_NAME_LENGTH);
+
+  #if _WIN32
   transport::TWinsockSingleton::create();
 #endif
   int port = 9090;
@@ -600,8 +608,8 @@
 
   if (ssl) {
     sslSocketFactory = boost::shared_ptr<TSSLSocketFactory>(new TSSLSocketFactory());
-    sslSocketFactory->loadCertificate("keys/server.crt");
-    sslSocketFactory->loadPrivateKey("keys/server.key");
+    sslSocketFactory->loadCertificate((dir_path + "../keys/server.crt").c_str());
+    sslSocketFactory->loadPrivateKey((dir_path + "../keys/server.key").c_str());
     sslSocketFactory->ciphers("ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
     serverSocket = boost::shared_ptr<TServerSocket>(new TSSLServerSocket(port, sslSocketFactory));
   } else {
