summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2013-04-15 20:35:26 -0400
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2013-04-15 20:35:26 -0400
commit24b9657597be6d0b7af472d5deda4b4828ead606 (patch)
tree40d2d891ab4e8d8f25e65053a092492b0b47f973
parent8d3afb35d878e49a505fef26dbbe6ea347966146 (diff)
SH-4061 WIP - improved retry policy test, turned up and fixed a bug in getSecondsUntilRetryAfter
-rwxr-xr-x[-rw-r--r--]indra/llmessage/llhttpconstants.cpp36
-rwxr-xr-xindra/newview/tests/llhttpretrypolicy_test.cpp70
2 files changed, 53 insertions, 53 deletions
diff --git a/indra/llmessage/llhttpconstants.cpp b/indra/llmessage/llhttpconstants.cpp
index 1995fad1e5..016f1f1970 100644..100755
--- a/indra/llmessage/llhttpconstants.cpp
+++ b/indra/llmessage/llhttpconstants.cpp
@@ -2,31 +2,28 @@
* @file llhttpconstants.cpp
* @brief Implementation of the HTTP request / response constant lookups
*
- * $LicenseInfo:firstyear=2013&license=viewergpl$
+ * $LicenseInfo:firstyear=2013&license=viewerlgpl$
*
* Copyright (c) 2013, Linden Research, Inc.
*
* Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * Copyright (C) 2013, Linden Research, Inc.
*
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
*
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
*
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
@@ -220,7 +217,8 @@ bool getSecondsUntilRetryAfter(const std::string& retry_after, F32& seconds_to_w
time_t date = curl_getdate(retry_after.c_str(), NULL );
if (-1 == date) return false;
- seconds_to_wait = (F32)date - (F32)LLTimer::getTotalSeconds();
+ seconds_to_wait = (F64)date - LLTimer::getTotalSeconds();
+
return true;
}
diff --git a/indra/newview/tests/llhttpretrypolicy_test.cpp b/indra/newview/tests/llhttpretrypolicy_test.cpp
index 42bb9abe90..6fa3a57364 100755
--- a/indra/newview/tests/llhttpretrypolicy_test.cpp
+++ b/indra/newview/tests/llhttpretrypolicy_test.cpp
@@ -216,21 +216,23 @@ void RetryPolicyTestObject::test<6>()
time_t nowseconds;
time(&nowseconds);
- std::string str3 = LLDate((F64)nowseconds).asRFC1123();
+ std::string str3 = LLDate((F64)(nowseconds+44)).asRFC1123();
seconds_to_wait = F32_MAX;
success = getSecondsUntilRetryAfter(str3, seconds_to_wait);
+ std::cerr << " str3 [" << str3 << "]" << std::endl;
ensure("parse 3", success);
- ensure_approximately_equals("parse 3", seconds_to_wait, 0.0F, 6);
+ ensure_approximately_equals("parse 3", seconds_to_wait, 44.0F, 2);
}
// Test retry-after field in both llmessage and CoreHttp headers.
template<> template<>
void RetryPolicyTestObject::test<7>()
{
+ std::cerr << "7 starts" << std::endl;
+
LLSD sd_headers;
time_t nowseconds;
time(&nowseconds);
- sd_headers[HTTP_IN_HEADER_RETRY_AFTER] = LLDate((F64)nowseconds).asRFC1123();
LLAdaptiveRetryPolicy policy(17.0,644.0,3.0,5);
F32 seconds_to_wait;
bool should_retry;
@@ -245,40 +247,40 @@ void RetryPolicyTestObject::test<7>()
ensure_approximately_equals("header 1", seconds_to_wait, 17.0F, 6);
// retry header should override, give delay of 0
+ std::string date_string = LLDate((F64)(nowseconds+7)).asRFC1123();
+ sd_headers[HTTP_IN_HEADER_RETRY_AFTER] = date_string;
policy.onFailure(503,sd_headers);
should_retry = policy.shouldRetry(seconds_to_wait);
ensure("header 2", should_retry);
- ensure_approximately_equals("header 2", seconds_to_wait, 0.0F, 6);
-
- // retry header in LLCore::HttpHeaders
- {
- LLCore::HttpResponse *response = new LLCore::HttpResponse();
- LLCore::HttpHeaders *headers = new LLCore::HttpHeaders();
- response->setStatus(503);
- response->setHeaders(headers);
- headers->append(HTTP_IN_HEADER_RETRY_AFTER, std::string("600"));
- policy.onFailure(response);
- should_retry = policy.shouldRetry(seconds_to_wait);
- ensure("header 3",should_retry);
- ensure_approximately_equals("header 3", seconds_to_wait, 600.0F, 6);
- response->release();
- }
-
- // retry header in LLCore::HttpHeaders
- {
- LLCore::HttpResponse *response = new LLCore::HttpResponse();
- LLCore::HttpHeaders *headers = new LLCore::HttpHeaders();
- response->setStatus(503);
- response->setHeaders(headers);
- LLSD sd_headers;
- time(&nowseconds);
- headers->append(HTTP_IN_HEADER_RETRY_AFTER,LLDate((F64)nowseconds).asRFC1123());
- policy.onFailure(response);
- should_retry = policy.shouldRetry(seconds_to_wait);
- ensure("header 4",should_retry);
- ensure_approximately_equals("header 4", seconds_to_wait, 0.0F, 6);
- response->release();
- }
+ ensure_approximately_equals("header 2", seconds_to_wait, 7.0F, 2);
+
+ LLCore::HttpResponse *response;
+ LLCore::HttpHeaders *headers;
+
+ response = new LLCore::HttpResponse();
+ headers = new LLCore::HttpHeaders();
+ response->setStatus(503);
+ response->setHeaders(headers);
+ headers->append(HTTP_IN_HEADER_RETRY_AFTER, std::string("600"));
+ policy.onFailure(response);
+ should_retry = policy.shouldRetry(seconds_to_wait);
+ ensure("header 3",should_retry);
+ ensure_approximately_equals("header 3", seconds_to_wait, 600.0F, 6);
+ response->release();
+
+ response = new LLCore::HttpResponse();
+ headers = new LLCore::HttpHeaders();
+ response->setStatus(503);
+ response->setHeaders(headers);
+ time(&nowseconds);
+ date_string = LLDate((F64)(nowseconds+77)).asRFC1123();
+ std::cerr << "date_string [" << date_string << "]" << std::endl;
+ headers->append(HTTP_IN_HEADER_RETRY_AFTER,date_string);
+ policy.onFailure(response);
+ should_retry = policy.shouldRetry(seconds_to_wait);
+ ensure("header 4",should_retry);
+ ensure_approximately_equals("header 4", seconds_to_wait, 77.0F, 2);
+ response->release();
// Timeout should be clamped at max.
policy.onFailure(500,LLSD());