diff options
| author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2013-04-15 20:35:26 -0400 | 
|---|---|---|
| committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2013-04-15 20:35:26 -0400 | 
| commit | 24b9657597be6d0b7af472d5deda4b4828ead606 (patch) | |
| tree | 40d2d891ab4e8d8f25e65053a092492b0b47f973 | |
| parent | 8d3afb35d878e49a505fef26dbbe6ea347966146 (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.cpp | 36 | ||||
| -rwxr-xr-x | indra/newview/tests/llhttpretrypolicy_test.cpp | 70 | 
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()); | 
