James,
Here is the JUnit I used to test, in case you want it as well.
I did include it cuz it is based on a TestCase of my own...
// test out some additional options added to Abdera client
public void testAbderaClient() throws Exception {
String urlPath = getURLPath();
String fullURL = getServerURL() + urlPath;
String id = urlPath;
// UPDATE
// this one should fail cuz we set
setTestingAlternatelyFailOnPut
AbderaClient client = new AbderaClient();
RequestOptions options = client.getDefaultRequestOptions();
options.setHeader("Connection", "close");
int soTimeout = 1;
client.setSoTimeout( soTimeout );
assertEquals(soTimeout, client.getSoTimeout());
try {
ClientResponse response = client.get( fullURL);
fail( "should not get here" );
} catch ( org.apache.abdera.protocol.client.ClientException
ee ) {
assertTrue( ee.getCause() instanceof
java.net.SocketTimeoutException );
}
client.setSoTimeout(5000);
int connTimeout = 1;
client.setConnectionTimeout( connTimeout );
assertEquals(connTimeout, client.getConnectionTimeout() );
try {
ClientResponse response = client.get( "http://
www.foo.com/nowhere" );
fail( "should not get here" );
} catch ( org.apache.abdera.protocol.client.ClientException
ee ) {
assertTrue( ee.getCause() instanceof
org.apache.commons.httpclient.ConnectTimeoutException );
}
client.setConnectionTimeout( 5000 );
client.setTcpNoDelay( true );
assertEquals( true, client.getTcpNoDelay() );
// we have to trust that this one times out cuz even at 1ms
it doesn't -- since it is all in memory
long conMngrTimeout = 5000L;
client.setConnectionManagerTimeout( conMngrTimeout );
assertEquals(conMngrTimeout,
client.getConnectionManagerTimeout() );
ClientResponse response = client.get( fullURL );
assertEquals(400, response.getStatus());
}
}
On Dec 7, 2007, at 11:06 PM, James M Snell (JIRA) wrote:
[ https://issues.apache.org/jira/browse/ABDERA-83?
page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
James M Snell resolved ABDERA-83.
---------------------------------
Resolution: Fixed
Fix Version/s: 0.4.0
Committed to trunk
Allow access to some essential parameters to HttpClient from
AbderaClient
---------------------------------------------------------------------
----
Key: ABDERA-83
URL: https://issues.apache.org/jira/browse/ABDERA-83
Project: Abdera
Issue Type: Improvement
Reporter: Chris Berry
Fix For: 0.4.0
Attachments: AbderaClient.patch
The AbderaClient does not expose a way to set the
ConnectionTimeout and SocketTimeout in its wrapped HttpClient.
(We are using 0.3.0 BTW)
Setting this value is critical. Without it clients can hang
(unless they add their own timeout mechanism)
Unfortunately, the wrapped HttpClient in AbderaClient is private
-- not protected -- so there is no easy fix for this (without
hacking AbderaClient itself)
I have attached a patch (built as "svn diff > patch" from the
toplevel of 0.3.0)
This patch exposes socketTimeout, connectionTimeout,
HttpConnectionManagetTimeout, and TCP_NoDelay, all of which are
important for use in a Production application
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
S'all good --- chriswberry at gmail dot com