You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by ro...@apache.org on 2006/11/07 23:10:52 UTC
svn commit: r472298 -
/incubator/abdera/java/trunk/client/src/test/java/org/apache/abdera/test/client/app/AppTest.java
Author: rooneg
Date: Tue Nov 7 14:10:51 2006
New Revision: 472298
URL: http://svn.apache.org/viewvc?view=rev&rev=472298
Log:
Fix hangs in client tests. This is based on Ugo's initial patch, but rather
than just sticking a response.release() whenever we were done with a response
I went a bit further and used try/finally, as you would expect a real caller
to do. I figure having our tests match the style a real client would use may
inspire us to find a better API ;-)
[ In client/src/test/java/org/apache/abdera/test/client/app ]
* AppTest.java
(testAppClient): Apply liberal doses of try/finally in order to ensure
that responses are released before returning.
Modified:
incubator/abdera/java/trunk/client/src/test/java/org/apache/abdera/test/client/app/AppTest.java
Modified: incubator/abdera/java/trunk/client/src/test/java/org/apache/abdera/test/client/app/AppTest.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/client/src/test/java/org/apache/abdera/test/client/app/AppTest.java?view=diff&rev=472298&r1=472297&r2=472298
==============================================================================
--- incubator/abdera/java/trunk/client/src/test/java/org/apache/abdera/test/client/app/AppTest.java (original)
+++ incubator/abdera/java/trunk/client/src/test/java/org/apache/abdera/test/client/app/AppTest.java Tue Nov 7 14:10:51 2006
@@ -330,72 +330,124 @@
}
public void testAppClient() throws Exception {
-
Client client = new CommonsClient();
Entry entry = getFactory().newEntry();
RequestOptions options = client.getDefaultRequestOptions();
options.setHeader("Connection", "close");
+
// do the introspection step
- ClientResponse response = client.get("http://localhost:8080/service",options);
- assertEquals(200, response.getStatus());
- Document<Service> service_doc = response.getDocument();
- assertNotNull(service_doc);
- assertEquals(1, service_doc.getRoot().getWorkspaces().size());
- Workspace workspace = service_doc.getRoot().getWorkspace("Test");
- assertNotNull(workspace);
- for (Collection c: workspace.getCollections()) {
- assertNotNull(c.getTitle());
- assertNotNull(c.getHref());
+ ClientResponse response = client.get("http://localhost:8080/service",
+ options);
+ String col_uri;
+
+ try {
+ assertEquals(200, response.getStatus());
+
+ Document<Service> service_doc = response.getDocument();
+ assertNotNull(service_doc);
+ assertEquals(1, service_doc.getRoot().getWorkspaces().size());
+
+ Workspace workspace = service_doc.getRoot().getWorkspace("Test");
+ assertNotNull(workspace);
+
+ for (Collection c: workspace.getCollections()) {
+ assertNotNull(c.getTitle());
+ assertNotNull(c.getHref());
+ }
+
+ col_uri = getBase() + "/collections/entries";
+ } finally {
+ response.release();
}
-
- String col_uri = getBase() + "/collections/entries";
-
+
// post a new entry
response = client.post(col_uri, entry, options);
- assertEquals(201, response.getStatus());
- assertNotNull(response.getLocation());
- assertNotNull(response.getContentLocation());
-
- String self_uri = response.getLocation().toString();
-
+
+ String self_uri;
+
+ try {
+ assertEquals(201, response.getStatus());
+ assertNotNull(response.getLocation());
+ assertNotNull(response.getContentLocation());
+
+ self_uri = response.getLocation().toString();
+ } finally {
+ response.release();
+ }
+
// get the collection to see if our entry is there
response = client.get(col_uri, options);
- assertEquals(200, response.getStatus());
- Document<Feed> feed_doc = response.getDocument();
- assertEquals(1, feed_doc.getRoot().getEntries().size());
-
+
+ try {
+ assertEquals(200, response.getStatus());
+ Document<Feed> feed_doc = response.getDocument();
+ assertEquals(1, feed_doc.getRoot().getEntries().size());
+ } finally {
+ response.release();
+ }
+
// get the entry to see if we can get it
response = client.get(self_uri, options);
- assertEquals(200, response.getStatus());
- Document<Entry> entry_doc = response.getDocument();
- assertEquals(self_uri, entry_doc.getRoot().getId().toString()); // this isn't always true in real life, but for our tests they are the same
-
- // get the edit uri from the entry
- String edit_uri = entry_doc.getRoot().getEditLink().getHref().toString();
-
- // change the entry
- Document<Entry> doc = response.getDocument();
- entry = (Entry) doc.getRoot().clone();
- entry.setTitle("New title");
+
+ String edit_uri;
+
+ try {
+ assertEquals(200, response.getStatus());
+ Document<Entry> entry_doc = response.getDocument();
+
+ // this isn't always true, but for our tests they are the same
+ assertEquals(self_uri, entry_doc.getRoot().getId().toString());
+
+ // get the edit uri from the entry
+ edit_uri = entry_doc.getRoot().getEditLink().getHref().toString();
+ // change the entry
+ Document<Entry> doc = response.getDocument();
+ entry = (Entry) doc.getRoot().clone();
+ entry.setTitle("New title");
+ } finally {
+ response.release();
+ }
+
// submit the changed entry back to the server
response = client.put(edit_uri, entry, options);
- assertEquals(204, response.getStatus());
+
+ try {
+ assertEquals(204, response.getStatus());
+ } finally {
+ response.release();
+ }
// check to see if the entry was modified properly
response = client.get(self_uri, options);
- assertEquals(200, response.getStatus());
- entry_doc = response.getDocument();
- assertEquals("New title", entry_doc.getRoot().getTitle());
-
+
+ try {
+ assertEquals(200, response.getStatus());
+
+ Document<Entry> entry_doc = response.getDocument();
+ assertEquals("New title", entry_doc.getRoot().getTitle());
+ } finally {
+ response.release();
+ }
+
// delete the entry
response = client.delete(edit_uri, options);
- assertEquals(204, response.getStatus());
-
+
+ try {
+ assertEquals(204, response.getStatus());
+ } finally {
+ response.release();
+ }
+
// is it gone?
response = client.get(self_uri, options);
- assertEquals(404, response.getStatus());
-
+
+ try {
+ assertEquals(404, response.getStatus());
+ } finally {
+ response.release();
+ }
+
// YAY! We're a working APP client
// Now let's try to do a media post
@@ -404,71 +456,131 @@
options = client.getDefaultRequestOptions();
options.setContentType("text/plain");
options.setHeader("Connection", "close");
- response = client.post(col_uri, new ByteArrayInputStream("test".getBytes()), options);
- assertEquals(201, response.getStatus());
- assertNotNull(response.getLocation());
- assertNotNull(response.getContentLocation());
-
- self_uri = response.getLocation().toString();
+
+ response = client.post(col_uri,
+ new ByteArrayInputStream("test".getBytes()),
+ options);
+
+ try {
+ assertEquals(201, response.getStatus());
+ assertNotNull(response.getLocation());
+ assertNotNull(response.getContentLocation());
+
+ self_uri = response.getLocation().toString();
+ } finally {
+ response.release();
+ }
// was an entry created?
options = client.getDefaultRequestOptions();
options.setHeader("Connection", "close");
response = client.get(self_uri, options);
- assertEquals(200, response.getStatus());
- entry_doc = response.getDocument();
- assertEquals(self_uri, entry_doc.getRoot().getId().toString()); // this isn't always true in real life, but for our tests they are the same
-
- // get the right links from the entry
- edit_uri = entry_doc.getRoot().getEditLink().getHref().toString();
- String edit_media = entry_doc.getRoot().getLink("edit-media").getHref().toString();
- String media = entry_doc.getRoot().getContentElement().getSrc().toString();
-
- // edit the entry
- doc = response.getDocument();
- entry = (Entry) doc.getRoot().clone();
- entry.setTitle("New title");
+
+ String edit_media, media;
+
+ try {
+ assertEquals(200, response.getStatus());
+ Document<Entry> entry_doc = response.getDocument();
+
+ // this isn't always true, but for our tests they are the same
+ assertEquals(self_uri, entry_doc.getRoot().getId().toString());
+ // get the right links from the entry
+ edit_uri = entry_doc.getRoot().getEditLink().getHref().toString();
+ edit_media = entry_doc.getRoot()
+ .getLink("edit-media")
+ .getHref().toString();
+ media = entry_doc.getRoot().getContentElement().getSrc().toString();
+
+ // edit the entry
+ Document doc = response.getDocument();
+ entry = (Entry) doc.getRoot().clone();
+ entry.setTitle("New title");
+ } finally {
+ response.release();
+ }
+
// submit the changes
options = client.getDefaultRequestOptions();
options.setContentType("application/atom+xml");
options.setHeader("Connection", "close");
+
response = client.put(edit_uri, entry, options);
- assertEquals(204, response.getStatus());
+
+ try {
+ assertEquals(204, response.getStatus());
+ } finally {
+ response.release();
+ }
// get the media resource
response = client.get(media);
- assertEquals(200, response.getStatus());
- String mediavalue = read(response.getInputStream());
- assertEquals("test", mediavalue);
-
+
+ try {
+ assertEquals(200, response.getStatus());
+
+ String mediavalue = read(response.getInputStream());
+ assertEquals("test", mediavalue);
+ } finally {
+ response.release();
+ }
+
// edit the media resource
options = client.getDefaultRequestOptions();
options.setHeader("Connection", "close");
options.setContentType("text/plain");
- response = client.put(edit_media, new ByteArrayInputStream("TEST".getBytes()), options);
- assertEquals(204, response.getStatus());
+
+ response = client.put(edit_media,
+ new ByteArrayInputStream("TEST".getBytes()),
+ options);
+
+ try {
+ assertEquals(204, response.getStatus());
+ } finally {
+ response.release();
+ }
// was the resource changed?
response = client.get(media, options);
- assertEquals(200, response.getStatus());
- mediavalue = read(response.getInputStream());
- assertEquals("TEST", mediavalue);
-
+
+ try {
+ assertEquals(200, response.getStatus());
+
+ String mediavalue = read(response.getInputStream());
+ assertEquals("TEST", mediavalue);
+ } finally {
+ response.release();
+ }
+
// delete the entry
response = client.delete(edit_uri, options);
- assertEquals(204, response.getStatus());
-
+
+ try {
+ assertEquals(204, response.getStatus());
+ } finally {
+ response.release();
+ }
+
// is the entry gone?
response = client.get(self_uri, options);
- assertEquals(404, response.getStatus());
+
+ try {
+ assertEquals(404, response.getStatus());
+ } finally {
+ response.release();
+ }
// is the media resource gone?
options.setNoCache(true); // need to force revalidation to check
+
response = client.get(media, options);
- assertEquals(404, response.getStatus());
-
+
+ try {
+ assertEquals(404, response.getStatus());
+ } finally {
+ response.release();
+ }
+
// YAY! We can handle media link entries
-
}
}