summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonty Brandenberg <monty@lindenlab.com>2012-05-07 15:16:31 -0400
committerMonty Brandenberg <monty@lindenlab.com>2012-05-07 15:16:31 -0400
commit74d59e7128bb02a4b49af99e44f437a736a3f62b (patch)
tree5a5b750b47a55e8a378a871eb278d0bb8425b5c4
parent438a6431e418eac5a3a4e00f7adfe379994869d7 (diff)
Build llcorehttp as part of a viewer dependency with unit tests. This required
boost::thread and the easiest path to that was to go with the 1.48 Boost release in the 3P tree (eliminating a fork for a modified 1.45 packaging). One unit test, the most important one, is failing in test_httprequest but that can be attended to later. This test issues a GET to http://localhost:2/ and that is hitting the wire but the libcurl plumbing isn't delivering the failure, only the eventual timeout. An unexpected change in behavior.
-rw-r--r--autobuild.xml12
-rw-r--r--indra/cmake/Boost.cmake23
-rw-r--r--indra/cmake/LLCoreHttp.cmake2
-rw-r--r--indra/cmake/LLPrimitive.cmake8
-rw-r--r--indra/llcommon/linden_common.h4
-rw-r--r--indra/llcorehttp/CMakeLists.txt30
-rw-r--r--indra/llcorehttp/_httpoprequest.cpp2
-rw-r--r--indra/llcorehttp/_thread.h4
-rw-r--r--indra/llcorehttp/httpcommon.h2
-rw-r--r--indra/llcorehttp/tests/llcorehttp_test.cpp (renamed from indra/llcorehttp/tests/all_test.cpp)4
-rw-r--r--indra/llcorehttp/tests/test_bufferarray.hpp3
-rw-r--r--indra/llcorehttp/tests/test_httpheaders.hpp2
-rw-r--r--indra/llcorehttp/tests/test_httpoperation.hpp2
-rw-r--r--indra/llcorehttp/tests/test_httprequest.hpp12
-rw-r--r--indra/llcorehttp/tests/test_httpstatus.hpp2
-rw-r--r--indra/llcorehttp/tests/test_refcounted.hpp2
16 files changed, 68 insertions, 46 deletions
diff --git a/autobuild.xml b/autobuild.xml
index 9914be6867..5c9af29b99 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -186,9 +186,9 @@
<key>archive</key>
<map>
<key>hash</key>
- <string>d98078791ce345bf6168ce9ba53ca2d7</string>
+ <string>0c4678ac85395f5f5294b63da1d79007</string>
<key>url</key>
- <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/222752/arch/Darwin/installer/boost-1.45.0-darwin-20110304.tar.bz2</string>
+ <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/249117/arch/Darwin/installer/boost-1.48.0-darwin-20120208.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@@ -198,9 +198,9 @@
<key>archive</key>
<map>
<key>hash</key>
- <string>a34e7fffdb94a6a4d8a2966b1f216da3</string>
+ <string>848766eac189e0fa785f4a025532acd9</string>
<key>url</key>
- <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.45.0-linux-20110310.tar.bz2</string>
+ <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/249117/arch/Linux/installer/boost-1.48.0-linux-20120208.tar.bz2</string>
</map>
<key>name</key>
<string>linux</string>
@@ -210,9 +210,9 @@
<key>archive</key>
<map>
<key>hash</key>
- <string>98be22c8833aa2bca184b9fa09fbb82b</string>
+ <string>cd1e60a00d40f4475ae5e0aca86f74c1</string>
<key>url</key>
- <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.45.0-windows-20110124.tar.bz2</string>
+ <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/249117/arch/CYGWIN/installer/boost-1.48.0-windows-20120208.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake
index 2135f0584c..24de1fc0c2 100644
--- a/indra/cmake/Boost.cmake
+++ b/indra/cmake/Boost.cmake
@@ -12,12 +12,13 @@ if (STANDALONE)
set(BOOST_SIGNALS_LIBRARY boost_signals-mt)
set(BOOST_SYSTEM_LIBRARY boost_system-mt)
set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)
+ set(BOOST_THREAD_LIBRARY boost_thread-mt)
else (STANDALONE)
use_prebuilt_binary(boost)
set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
if (WINDOWS)
- set(BOOST_VERSION 1_45)
+ set(BOOST_VERSION 1_48)
if(MSVC80)
set(BOOST_PROGRAM_OPTIONS_LIBRARY
optimized libboost_program_options-vc80-mt-${BOOST_VERSION}
@@ -37,22 +38,26 @@ else (STANDALONE)
else(MSVC80)
# MSVC 10.0 config
set(BOOST_PROGRAM_OPTIONS_LIBRARY
- optimized libboost_program_options-vc100-mt-${BOOST_VERSION}
- debug libboost_program_options-vc100-mt-gd-${BOOST_VERSION})
+ optimized libboost_program_options-mt
+ debug libboost_program_options-mt-gd)
set(BOOST_REGEX_LIBRARY
- optimized libboost_regex-vc100-mt-${BOOST_VERSION}
- debug libboost_regex-vc100-mt-gd-${BOOST_VERSION})
+ optimized libboost_regex-mt
+ debug libboost_regex-mt-gd)
set(BOOST_SYSTEM_LIBRARY
- optimized libboost_system-vc100-mt-${BOOST_VERSION}
- debug libboost_system-vc100-mt-gd-${BOOST_VERSION})
+ optimized libboost_system-mt
+ debug libboost_system-mt-gd)
set(BOOST_FILESYSTEM_LIBRARY
- optimized libboost_filesystem-vc100-mt-${BOOST_VERSION}
- debug libboost_filesystem-vc100-mt-gd-${BOOST_VERSION})
+ optimized libboost_filesystem-mt
+ debug libboost_filesystem-mt-gd)
+ set(BOOST_THREAD_LIBRARY
+ optimized libboost_thread-mt
+ debug libboost_thread-mt-gd)
endif (MSVC80)
elseif (DARWIN OR LINUX)
set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options)
set(BOOST_REGEX_LIBRARY boost_regex)
set(BOOST_SYSTEM_LIBRARY boost_system)
set(BOOST_FILESYSTEM_LIBRARY boost_filesystem)
+ set(BOOST_THREAD_LIBRARY boost_thread)
endif (WINDOWS)
endif (STANDALONE)
diff --git a/indra/cmake/LLCoreHttp.cmake b/indra/cmake/LLCoreHttp.cmake
index 280189da3d..61e4b23d98 100644
--- a/indra/cmake/LLCoreHttp.cmake
+++ b/indra/cmake/LLCoreHttp.cmake
@@ -3,12 +3,14 @@
include(CARes)
include(CURL)
include(OpenSSL)
+include(Boost)
set(LLCOREHTTP_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llcorehttp
${CARES_INCLUDE_DIRS}
${CURL_INCLUDE_DIRS}
${OPENSSL_INCLUDE_DIRS}
+ ${BOOST_INCLUDE_DIRS}
)
set(LLCOREHTTP_LIBRARIES llcorehttp)
diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake
index f15a2c2649..ab39cbb6be 100644
--- a/indra/cmake/LLPrimitive.cmake
+++ b/indra/cmake/LLPrimitive.cmake
@@ -15,10 +15,10 @@ if (WINDOWS)
optimized llprimitive
debug libcollada14dom22-d
optimized libcollada14dom22
- debug libboost_filesystem-vc100-mt-gd-1_45
- optimized libboost_filesystem-vc100-mt-1_45
- debug libboost_system-vc100-mt-gd-1_45
- optimized libboost_system-vc100-mt-1_45
+ debug libboost_filesystem-mt-gd
+ optimized libboost_filesystem-mt
+ debug libboost_system-mt-gd
+ optimized libboost_system-mt
)
else (WINDOWS)
set(LLPRIMITIVE_LIBRARIES
diff --git a/indra/llcommon/linden_common.h b/indra/llcommon/linden_common.h
index bdcc98e402..50db03cb6a 100644
--- a/indra/llcommon/linden_common.h
+++ b/indra/llcommon/linden_common.h
@@ -82,4 +82,8 @@
#include "llfile.h"
#include "llformat.h"
+// Boost 1.45 had version 2 as the default for the filesystem library,
+// 1.48 has version 3 as the default. Keep compatibility for now.
+#define BOOST_FILESYSTEM_VERSION 2
+
#endif
diff --git a/indra/llcorehttp/CMakeLists.txt b/indra/llcorehttp/CMakeLists.txt
index e0d1817781..a950e9180c 100644
--- a/indra/llcorehttp/CMakeLists.txt
+++ b/indra/llcorehttp/CMakeLists.txt
@@ -73,23 +73,24 @@ target_link_libraries(
${CARES_LIBRARIES}
${OPENSSL_LIBRARIES}
${CRYPTO_LIBRARIES}
+ ${BOOST_THREAD_LIBRARY}
)
# tests
-#if (LL_TESTS)
-if (LL_TESTS AND 0)
+if (LL_TESTS)
+#if (LL_TESTS AND 0)
SET(llcorehttp_TEST_SOURCE_FILES
- test_allocator.cpp
+ tests/test_allocator.cpp
)
set(llcorehttp_TEST_HEADER_FILS
- test_httpstatus.hpp
- test_refcounted.hpp
- test_httpoperation.hpp
- test_httprequest.hpp
- test_httprequestqueue.hpp
- test_httpheaders.hpp
- test_bufferarray.hpp
+ tests/test_httpstatus.hpp
+ tests/test_refcounted.hpp
+ tests/test_httpoperation.hpp
+ tests/test_httprequest.hpp
+ tests/test_httprequestqueue.hpp
+ tests/test_httpheaders.hpp
+ tests/test_bufferarray.hpp
)
set_source_files_properties(${llcorehttp_TEST_HEADER_FILES}
@@ -105,13 +106,16 @@ if (LL_TESTS AND 0)
${WINDOWS_LIBRARIES}
${LLCOMMON_LIBRARIES}
${GOOGLEMOCK_LIBRARIES}
+ ${CURL_LIBRARIES}
+ ${OPENSSL_LIBRARIES}
+ ${CRYPTO_LIBRARIES}
)
- LL_ADD_INTEGRATION_TEST(all
+ LL_ADD_INTEGRATION_TEST(llcorehttp
"${llcorehttp_TEST_SOURCE_FILES}"
"${test_libs}"
)
-#endif (LL_TESTS)
-endif (LL_TESTS AND 0)
+endif (LL_TESTS)
+#endif (LL_TESTS AND 0)
diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp
index 316df8bd49..3c9eb71b9a 100644
--- a/indra/llcorehttp/_httpoprequest.cpp
+++ b/indra/llcorehttp/_httpoprequest.cpp
@@ -259,6 +259,8 @@ HttpStatus HttpOpRequest::prepareForGet(HttpService * service)
HttpStatus status;
mCurlHandle = curl_easy_init();
+ curl_easy_setopt(mCurlHandle, CURLOPT_TIMEOUT, 30);
+ curl_easy_setopt(mCurlHandle, CURLOPT_CONNECTTIMEOUT, 30);
curl_easy_setopt(mCurlHandle, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(mCurlHandle, CURLOPT_NOPROGRESS, 1);
curl_easy_setopt(mCurlHandle, CURLOPT_URL, mReqURL.c_str());
diff --git a/indra/llcorehttp/_thread.h b/indra/llcorehttp/_thread.h
index 0937d698c7..46a333a749 100644
--- a/indra/llcorehttp/_thread.h
+++ b/indra/llcorehttp/_thread.h
@@ -27,9 +27,11 @@
#ifndef LLCOREINT_THREAD_H_
#define LLCOREINT_THREAD_H_
+#include <boost/thread.hpp>
+#include <boost/function.hpp>
-#include "_refcounted.h"
+#include "_refcounted.h"
namespace LLCoreInt
{
diff --git a/indra/llcorehttp/httpcommon.h b/indra/llcorehttp/httpcommon.h
index cd7c09f097..5fc497e720 100644
--- a/indra/llcorehttp/httpcommon.h
+++ b/indra/llcorehttp/httpcommon.h
@@ -93,6 +93,8 @@
/// <TBD>
///
+#include "linden_common.h"
+
#include <string>
diff --git a/indra/llcorehttp/tests/all_test.cpp b/indra/llcorehttp/tests/llcorehttp_test.cpp
index 636f6f8c05..ad596d61cc 100644
--- a/indra/llcorehttp/tests/all_test.cpp
+++ b/indra/llcorehttp/tests/llcorehttp_test.cpp
@@ -1,5 +1,5 @@
/**
- * @file test_all
+ * @file llcorehttp_test
* @brief Main test runner
*
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
@@ -41,6 +41,7 @@
#include "test_bufferarray.hpp"
#include "test_httprequestqueue.hpp"
+#if 0
namespace tut
{
@@ -62,3 +63,4 @@ int main()
curl_global_cleanup();
}
+#endif
diff --git a/indra/llcorehttp/tests/test_bufferarray.hpp b/indra/llcorehttp/tests/test_bufferarray.hpp
index 4f5d0284a1..ecbb5ef250 100644
--- a/indra/llcorehttp/tests/test_bufferarray.hpp
+++ b/indra/llcorehttp/tests/test_bufferarray.hpp
@@ -26,7 +26,7 @@
#ifndef TEST_LLCORE_BUFFER_ARRAY_H_
#define TEST_LLCORE_BUFFER_ARRAY_H_
-#include <core-http/bufferarray.h>
+#include "bufferarray.h"
#include <iostream>
@@ -183,7 +183,6 @@ void BufferArrayTestObjectType::test<4>()
char str1[] = "abcdefghij";
size_t str1_len(strlen(str1));
char str2[] = "ABCDEFGHIJ";
- size_t str2_len(strlen(str2));
char buffer[256];
size_t len = ba->write(str1, str1_len);
diff --git a/indra/llcorehttp/tests/test_httpheaders.hpp b/indra/llcorehttp/tests/test_httpheaders.hpp
index d22b516691..ce0d19b058 100644
--- a/indra/llcorehttp/tests/test_httpheaders.hpp
+++ b/indra/llcorehttp/tests/test_httpheaders.hpp
@@ -26,7 +26,7 @@
#ifndef TEST_LLCORE_HTTP_HEADERS_H_
#define TEST_LLCORE_HTTP_HEADERS_H_
-#include <core-http/httpheaders.h>
+#include "httpheaders.h"
#include <iostream>
diff --git a/indra/llcorehttp/tests/test_httpoperation.hpp b/indra/llcorehttp/tests/test_httpoperation.hpp
index c9feaddb2a..6c3df1e9e3 100644
--- a/indra/llcorehttp/tests/test_httpoperation.hpp
+++ b/indra/llcorehttp/tests/test_httpoperation.hpp
@@ -27,7 +27,7 @@
#define TEST_LLCORE_HTTP_OPERATION_H_
#include "_httpoperation.h"
-#include <core-http/httphandler.h>
+#include "httphandler.h"
#include <iostream>
diff --git a/indra/llcorehttp/tests/test_httprequest.hpp b/indra/llcorehttp/tests/test_httprequest.hpp
index df5640859f..ab25a2eb1a 100644
--- a/indra/llcorehttp/tests/test_httprequest.hpp
+++ b/indra/llcorehttp/tests/test_httprequest.hpp
@@ -26,11 +26,11 @@
#ifndef TEST_LLCORE_HTTP_REQUEST_H_
#define TEST_LLCORE_HTTP_REQUEST_H_
-#include <core-http/httprequest.h>
-#include <core-http/httphandler.h>
-#include <core-http/httpresponse.h>
-#include <core-http/_httpservice.h>
-#include <core-http/_httprequestqueue.h>
+#include "httprequest.h"
+#include "httphandler.h"
+#include "httpresponse.h"
+#include "_httpservice.h"
+#include "_httprequestqueue.h"
#include <curl/curl.h>
@@ -360,7 +360,7 @@ void HttpRequestTestObjectType::test<5>()
mStatus = HttpStatus(HttpStatus::EXT_CURL_EASY, CURLE_COULDNT_CONNECT);
HttpHandle handle = req->requestGetByteRange(HttpRequest::DEFAULT_POLICY_ID,
0.0f,
- "http://localhost:2/nothing/here",
+ "http://127.0.0.1:2/nothing/here",
0,
0,
NULL,
diff --git a/indra/llcorehttp/tests/test_httpstatus.hpp b/indra/llcorehttp/tests/test_httpstatus.hpp
index fa5803a17c..38bf494dec 100644
--- a/indra/llcorehttp/tests/test_httpstatus.hpp
+++ b/indra/llcorehttp/tests/test_httpstatus.hpp
@@ -27,7 +27,7 @@
#ifndef TEST_HTTP_STATUS_H_
#define TEST_HTTP_STATUS_H_
-#include <core-http/httpcommon.h>
+#include "httpcommon.h"
#include <curl/curl.h>
#include <curl/multi.h>
diff --git a/indra/llcorehttp/tests/test_refcounted.hpp b/indra/llcorehttp/tests/test_refcounted.hpp
index 6a17947288..cb4b50287a 100644
--- a/indra/llcorehttp/tests/test_refcounted.hpp
+++ b/indra/llcorehttp/tests/test_refcounted.hpp
@@ -26,7 +26,7 @@
#ifndef TEST_LLCOREINT_REF_COUNTED_H_
#define TEST_LLCOREINT_REF_COUNTED_H_
-#include <_refcounted.h>
+#include "_refcounted.h"
#include "test_allocator.h"