summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Withnall <philip@tecnocode.co.uk>2013-07-08 21:25:00 +0100
committerPhilip Withnall <philip@tecnocode.co.uk>2013-08-02 12:02:17 +0200
commit8afe6edc8900691a9d018532963a08661b7f48ef (patch)
tree5f914093368cc3f0c464a4c67270d08ad4aa1640
parent0e6e38604c23959e510eb21385a803f61587443c (diff)
downloadlibgdata-8afe6edc8900691a9d018532963a08661b7f48ef.tar.gz
tests: Add trace file testing support to the Contacts test suite
-rw-r--r--gdata/tests/contacts.c273
-rw-r--r--gdata/tests/traces/contacts/authentication27
-rw-r--r--gdata/tests/traces/contacts/authentication-async27
-rw-r--r--gdata/tests/traces/contacts/authentication-async-cancellation27
-rw-r--r--gdata/tests/traces/contacts/batch84
-rw-r--r--gdata/tests/traces/contacts/batch-async28
-rw-r--r--gdata/tests/traces/contacts/batch-async-cancellation0
-rw-r--r--gdata/tests/traces/contacts/contact-insert32
-rw-r--r--gdata/tests/traces/contacts/contact-update30
-rw-r--r--gdata/tests/traces/contacts/global-authentication27
-rw-r--r--gdata/tests/traces/contacts/group-insert32
-rw-r--r--gdata/tests/traces/contacts/group_insert-async32
-rw-r--r--gdata/tests/traces/contacts/group_insert-async-cancellation32
-rw-r--r--gdata/tests/traces/contacts/photo-add30
-rw-r--r--gdata/tests/traces/contacts/photo-delete25
-rw-r--r--gdata/tests/traces/contacts/photo-get27
-rw-r--r--gdata/tests/traces/contacts/photo_add-async30
-rw-r--r--gdata/tests/traces/contacts/photo_add-async-cancellation28
-rw-r--r--gdata/tests/traces/contacts/photo_delete-async25
-rw-r--r--gdata/tests/traces/contacts/photo_delete-async-cancellation34
-rw-r--r--gdata/tests/traces/contacts/photo_get-async27
-rw-r--r--gdata/tests/traces/contacts/photo_get-async-cancellation27
-rw-r--r--gdata/tests/traces/contacts/query-all-contacts28
-rw-r--r--gdata/tests/traces/contacts/query-all-contacts-async-progress-closure28
-rw-r--r--gdata/tests/traces/contacts/query-all-groups28
-rw-r--r--gdata/tests/traces/contacts/query-all-groups-async-progress-closure28
-rw-r--r--gdata/tests/traces/contacts/query_all_contacts-async28
-rw-r--r--gdata/tests/traces/contacts/query_all_contacts-async-cancellation28
-rw-r--r--gdata/tests/traces/contacts/query_all_groups-async28
-rw-r--r--gdata/tests/traces/contacts/query_all_groups-async-cancellation28
-rw-r--r--gdata/tests/traces/contacts/setup-batch-async32
-rw-r--r--gdata/tests/traces/contacts/setup-query-all-contacts96
-rw-r--r--gdata/tests/traces/contacts/setup-query-all-groups96
-rw-r--r--gdata/tests/traces/contacts/setup-temp-contact32
-rw-r--r--gdata/tests/traces/contacts/setup-temp-contact-with-photo58
-rw-r--r--gdata/tests/traces/contacts/teardown-batch-async25
-rw-r--r--gdata/tests/traces/contacts/teardown-insert25
-rw-r--r--gdata/tests/traces/contacts/teardown-insert-group25
-rw-r--r--gdata/tests/traces/contacts/teardown-query-all-contacts75
-rw-r--r--gdata/tests/traces/contacts/teardown-query-all-groups75
-rw-r--r--gdata/tests/traces/contacts/teardown-temp-contact53
41 files changed, 1646 insertions, 74 deletions
diff --git a/gdata/tests/contacts.c b/gdata/tests/contacts.c
index 910f60aa..97a1ef97 100644
--- a/gdata/tests/contacts.c
+++ b/gdata/tests/contacts.c
@@ -24,6 +24,8 @@
#include "gdata.h"
#include "common.h"
+static GDataMockServer *mock_server = NULL;
+
typedef struct {
GDataContactsContact *contact;
} TempContactData;
@@ -33,6 +35,8 @@ set_up_temp_contact (TempContactData *data, gconstpointer service)
{
GDataContactsContact *contact;
+ gdata_test_mock_server_start_trace (mock_server, "setup-temp-contact");
+
/* Create a new temporary contact to use for a single test */
contact = gdata_contacts_contact_new (NULL);
gdata_contacts_contact_set_nickname (contact, "Test Contact Esq.");
@@ -44,8 +48,12 @@ set_up_temp_contact (TempContactData *data, gconstpointer service)
g_object_unref (contact);
+ gdata_mock_server_end_trace (mock_server);
+
/* HACK. Wait for the server to propagate distributed changes. */
- sleep (10);
+ if (gdata_mock_server_get_enable_online (mock_server) == TRUE) {
+ sleep (10);
+ }
}
static void
@@ -53,6 +61,8 @@ tear_down_temp_contact (TempContactData *data, gconstpointer service)
{
GDataEntry *updated_contact;
+ gdata_test_mock_server_start_trace (mock_server, "teardown-temp-contact");
+
/* Re-query for the contact to get any updated ETags */
updated_contact = gdata_service_query_single_entry (GDATA_SERVICE (service), gdata_contacts_service_get_primary_authorization_domain (),
gdata_entry_get_id (GDATA_ENTRY (data->contact)), NULL, GDATA_TYPE_CONTACTS_CONTACT,
@@ -66,6 +76,8 @@ tear_down_temp_contact (TempContactData *data, gconstpointer service)
updated_contact, NULL, NULL) == TRUE);
g_object_unref (updated_contact);
+
+ gdata_mock_server_end_trace (mock_server);
}
GDATA_ASYNC_CLOSURE_FUNCTIONS (temp_contact, TempContactData);
@@ -77,6 +89,8 @@ test_authentication (void)
GDataClientLoginAuthorizer *authorizer;
GError *error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "authentication");
+
/* Create an authorizer */
authorizer = gdata_client_login_authorizer_new (CLIENT_ID, GDATA_TYPE_CONTACTS_SERVICE);
@@ -96,6 +110,8 @@ test_authentication (void)
gdata_contacts_service_get_primary_authorization_domain ()) == TRUE);
g_object_unref (authorizer);
+
+ gdata_mock_server_end_trace (mock_server);
}
GDATA_ASYNC_TEST_FUNCTIONS (authentication, void,
@@ -149,6 +165,8 @@ set_up_query_all_contacts (QueryAllContactsData *data, gconstpointer service)
{
GDataContactsContact *contact;
+ gdata_test_mock_server_start_trace (mock_server, "setup-query-all-contacts");
+
/* Create new temporary contacts to use for the query all contacts tests */
contact = gdata_contacts_contact_new (NULL);
gdata_contacts_contact_set_nickname (contact, "Test Contact 1");
@@ -165,13 +183,20 @@ set_up_query_all_contacts (QueryAllContactsData *data, gconstpointer service)
data->contact3 = gdata_contacts_service_insert_contact (GDATA_CONTACTS_SERVICE (service), contact, NULL, NULL);
g_object_unref (contact);
- /* It takes a few seconds for the contacts to reliably propagate around Google's servers. Distributed systems are so fun. Not. */
- g_usleep (G_USEC_PER_SEC * 5);
+ gdata_mock_server_end_trace (mock_server);
+
+ /* It takes a few seconds for the contacts to reliably propagate around Google's servers. Distributed systems are so fun. Not.
+ * Thankfully, we don't have to wait when running against the mock server. */
+ if (gdata_mock_server_get_enable_online (mock_server) == TRUE) {
+ g_usleep (G_USEC_PER_SEC * 5);
+ }
}
static void
tear_down_query_all_contacts (QueryAllContactsData *data, gconstpointer service)
{
+ gdata_test_mock_server_start_trace (mock_server, "teardown-query-all-contacts");
+
/* Delete the new contacts */
g_assert (gdata_service_delete_entry (GDATA_SERVICE (service), gdata_contacts_service_get_primary_authorization_domain (),
GDATA_ENTRY (data->contact1), NULL, NULL) == TRUE);
@@ -184,6 +209,8 @@ tear_down_query_all_contacts (QueryAllContactsData *data, gconstpointer service)
g_assert (gdata_service_delete_entry (GDATA_SERVICE (service), gdata_contacts_service_get_primary_authorization_domain (),
GDATA_ENTRY (data->contact3), NULL, NULL) == TRUE);
g_object_unref (data->contact3);
+
+ gdata_mock_server_end_trace (mock_server);
}
static void
@@ -192,6 +219,8 @@ test_query_all_contacts (QueryAllContactsData *data, gconstpointer service)
GDataFeed *feed;
GError *error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "query-all-contacts");
+
feed = gdata_contacts_service_query_contacts (GDATA_CONTACTS_SERVICE (service), NULL, NULL, NULL, NULL, &error);
g_assert_no_error (error);
g_assert (GDATA_IS_FEED (feed));
@@ -200,6 +229,8 @@ test_query_all_contacts (QueryAllContactsData *data, gconstpointer service)
/* TODO: check entries, kinds and feed properties */
g_object_unref (feed);
+
+ gdata_mock_server_end_trace (mock_server);
}
GDATA_ASYNC_CLOSURE_FUNCTIONS (query_all_contacts, QueryAllContactsData);
@@ -229,6 +260,8 @@ test_query_all_contacts_async_progress_closure (QueryAllContactsData *query_data
{
GDataAsyncProgressClosure *data = g_slice_new0 (GDataAsyncProgressClosure);
+ gdata_test_mock_server_start_trace (mock_server, "query-all-contacts-async-progress-closure");
+
data->main_loop = g_main_loop_new (NULL, TRUE);
gdata_contacts_service_query_contacts_async (GDATA_CONTACTS_SERVICE (service), NULL, NULL,
@@ -243,6 +276,8 @@ test_query_all_contacts_async_progress_closure (QueryAllContactsData *query_data
g_assert_cmpuint (data->async_ready_notify_count, ==, 1);
g_slice_free (GDataAsyncProgressClosure, data);
+
+ gdata_mock_server_end_trace (mock_server);
}
typedef struct {
@@ -258,11 +293,15 @@ set_up_insert (InsertData *data, gconstpointer service)
static void
tear_down_insert (InsertData *data, gconstpointer service)
{
+ gdata_test_mock_server_start_trace (mock_server, "teardown-insert");
+
/* Delete the new contact */
g_assert (gdata_service_delete_entry (GDATA_SERVICE (service), gdata_contacts_service_get_primary_authorization_domain (),
GDATA_ENTRY (data->new_contact), NULL, NULL) == TRUE);
g_object_unref (data->new_contact);
+
+ gdata_mock_server_end_trace (mock_server);
}
static void
@@ -289,6 +328,8 @@ test_contact_insert (InsertData *data, gconstpointer service)
gint64 edited, creation_time;
GError *error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "contact-insert");
+
contact = gdata_contacts_contact_new (NULL);
g_get_current_time (&current_time);
@@ -401,11 +442,14 @@ test_contact_insert (InsertData *data, gconstpointer service)
g_clear_error (&error);
/* Check its edited date. Yes, we have to allow the edited time to possibly precede the creation time because Google's
- * servers can allow this to happen. Somehow. */
+ * servers can allow this to happen. Somehow.
+ * This check isn't run when testing against a mock server because the dates in the trace file may be waaaay out of date. */
edited = gdata_contacts_contact_get_edited (contact);
- creation_time = gdata_contacts_contact_get_edited (new_contact);
- g_assert_cmpint (creation_time + TIME_FUZZINESS, >=, edited);
- g_assert_cmpint (creation_time - TIME_FUZZINESS, <=, edited);
+ if (gdata_mock_server_get_enable_online (mock_server) == TRUE) {
+ creation_time = gdata_contacts_contact_get_edited (new_contact);
+ g_assert_cmpint (creation_time + TIME_FUZZINESS, >=, edited);
+ g_assert_cmpint (creation_time - TIME_FUZZINESS, <=, edited);
+ }
/* Various properties */
g_assert_cmpstr (gdata_contacts_contact_get_nickname (new_contact), ==, "Big J");
@@ -533,6 +577,8 @@ test_contact_insert (InsertData *data, gconstpointer service)
/* TODO: check entries and feed properties */
g_object_unref (contact);
+
+ gdata_mock_server_end_trace (mock_server);
}
static void
@@ -541,6 +587,8 @@ test_contact_update (TempContactData *data, gconstpointer service)
GDataContactsContact *new_contact;
GError *error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "contact-update");
+
/* Update the contact's name and add an extended property */
gdata_entry_set_title (GDATA_ENTRY (data->contact), "John Wilson");
g_assert (gdata_contacts_contact_set_extended_property (data->contact, "contact-test", "value"));
@@ -560,6 +608,8 @@ test_contact_update (TempContactData *data, gconstpointer service)
g_assert (gdata_contacts_contact_is_deleted (new_contact) == FALSE);
g_object_unref (new_contact);
+
+ gdata_mock_server_end_trace (mock_server);
}
typedef struct {
@@ -573,6 +623,8 @@ set_up_query_all_groups (QueryAllGroupsData *data, gconstpointer service)
{
GDataContactsGroup *group;
+ gdata_test_mock_server_start_trace (mock_server, "setup-query-all-groups");
+
group = gdata_contacts_group_new (NULL);
gdata_entry_set_title (GDATA_ENTRY (group), "Test Group 1");
data->group1 = gdata_contacts_service_insert_group (GDATA_CONTACTS_SERVICE (service), group, NULL, NULL);
@@ -591,13 +643,19 @@ set_up_query_all_groups (QueryAllGroupsData *data, gconstpointer service)
g_assert (GDATA_IS_CONTACTS_GROUP (data->group3));
g_object_unref (group);
+ gdata_mock_server_end_trace (mock_server);
+
/* HACK! Guess what? Distributed system inconsistency strikes again! */
- sleep (10);
+ if (gdata_mock_server_get_enable_online (mock_server) == TRUE) {
+ sleep (10);
+ }
}
static void
tear_down_query_all_groups (QueryAllGroupsData *data, gconstpointer service)
{
+ gdata_test_mock_server_start_trace (mock_server, "teardown-query-all-groups");
+
g_assert (gdata_service_delete_entry (GDATA_SERVICE (service), gdata_contacts_service_get_primary_authorization_domain (),
GDATA_ENTRY (data->group1), NULL, NULL) == TRUE);
g_object_unref (data->group1);
@@ -609,6 +667,8 @@ tear_down_query_all_groups (QueryAllGroupsData *data, gconstpointer service)
g_assert (gdata_service_delete_entry (GDATA_SERVICE (service), gdata_contacts_service_get_primary_authorization_domain (),
GDATA_ENTRY (data->group3), NULL, NULL) == TRUE);
g_object_unref (data->group3);
+
+ gdata_mock_server_end_trace (mock_server);
}
static void
@@ -617,6 +677,8 @@ test_query_all_groups (QueryAllGroupsData *data, gconstpointer service)
GDataFeed *feed;
GError *error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "query-all-groups");
+
feed = gdata_contacts_service_query_groups (GDATA_CONTACTS_SERVICE (service), NULL, NULL, NULL, NULL, &error);
g_assert_no_error (error);
g_assert (GDATA_IS_FEED (feed));
@@ -625,6 +687,8 @@ test_query_all_groups (QueryAllGroupsData *data, gconstpointer service)
/* TODO: check entries, kinds and feed properties */
g_object_unref (feed);
+
+ gdata_mock_server_end_trace (mock_server);
}
GDATA_ASYNC_CLOSURE_FUNCTIONS (query_all_groups, QueryAllGroupsData);
@@ -654,6 +718,8 @@ test_query_all_groups_async_progress_closure (QueryAllGroupsData *query_data, gc
{
GDataAsyncProgressClosure *data = g_slice_new0 (GDataAsyncProgressClosure);
+ gdata_test_mock_server_start_trace (mock_server, "query-all-groups-async-progress-closure");
+
data->main_loop = g_main_loop_new (NULL, TRUE);
gdata_contacts_service_query_groups_async (GDATA_CONTACTS_SERVICE (service), NULL, NULL,
@@ -669,6 +735,8 @@ test_query_all_groups_async_progress_closure (QueryAllGroupsData *query_data, gc
g_assert_cmpuint (data->async_ready_notify_count, ==, 1);
g_slice_free (GDataAsyncProgressClosure, data);
+
+ gdata_mock_server_end_trace (mock_server);
}
typedef struct {
@@ -685,12 +753,18 @@ static void
tear_down_insert_group (InsertGroupData *data, gconstpointer service)
{
/* HACK! Distributed systems suck. */
- sleep (10);
+ if (gdata_mock_server_get_enable_online (mock_server) == TRUE) {
+ sleep (10);
+ }
+
+ gdata_test_mock_server_start_trace (mock_server, "teardown-insert-group");
/* Delete the group, just to be tidy */
g_assert (gdata_service_delete_entry (GDATA_SERVICE (service), gdata_contacts_service_get_primary_authorization_domain (),
GDATA_ENTRY (data->new_group), NULL, NULL) == TRUE);
g_object_unref (data->new_group);
+
+ gdata_mock_server_end_trace (mock_server);
}
static void
@@ -701,6 +775,8 @@ test_group_insert (InsertGroupData *data, gconstpointer service)
GHashTable *properties;
GError *error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "group-insert");
+
g_get_current_time (&time_val);
group = gdata_contacts_group_new (NULL);
@@ -720,8 +796,11 @@ test_group_insert (InsertGroupData *data, gconstpointer service)
gdata_test_compare_kind (GDATA_ENTRY (new_group), "http://schemas.google.com/contact/2008#group", NULL);
g_clear_error (&error);
- /* Check the properties */
- g_assert_cmpint (gdata_contacts_group_get_edited (new_group), >=, time_val.tv_sec);
+ /* Check the properties. Time-based properties can't be checked when running against a mock server, since
+ * the trace files may be quite old. */
+ if (gdata_mock_server_get_enable_online (mock_server) == TRUE) {
+ g_assert_cmpint (gdata_contacts_group_get_edited (new_group), >=, time_val.tv_sec);
+ }
g_assert (gdata_contacts_group_is_deleted (new_group) == FALSE);
g_assert (gdata_contacts_group_get_system_group_id (new_group) == NULL);
@@ -731,6 +810,8 @@ test_group_insert (InsertGroupData *data, gconstpointer service)
g_assert_cmpstr (gdata_contacts_group_get_extended_property (new_group, "foobar"), ==, "barfoo");
g_object_unref (group);
+
+ gdata_mock_server_end_trace (mock_server);
}
GDATA_ASYNC_CLOSURE_FUNCTIONS (insert_group, InsertGroupData);
@@ -1918,6 +1999,8 @@ test_photo_add (TempContactData *data, gconstpointer service)
gboolean retval;
GError *error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "photo-add");
+
/* Get the photo */
g_assert (g_file_get_contents (TEST_FILE_DIR "photo.jpg", (gchar**) &photo_data, &length, NULL) == TRUE);
@@ -1928,6 +2011,8 @@ test_photo_add (TempContactData *data, gconstpointer service)
g_clear_error (&error);
g_free (photo_data);
+
+ gdata_mock_server_end_trace (mock_server);
}
GDATA_ASYNC_TEST_FUNCTIONS (photo_add, TempContactData,
@@ -1982,7 +2067,9 @@ add_photo_to_contact (GDataContactsService *service, GDataContactsContact **cont
/* HACK: It fairly consistently seems to take the Google servers about 4 seconds to process uploaded photos. Before this
* time, a query for the photo will return an error. So let's wait for 10.
* Helps: bgo#679072 */
- sleep (10);
+ if (gdata_mock_server_get_enable_online (mock_server) == TRUE) {
+ sleep (10);
+ }
/* Re-query for the contact to get any updated ETags. */
updated_contact = gdata_service_query_single_entry (GDATA_SERVICE (service), gdata_contacts_service_get_primary_authorization_domain (),
@@ -2000,7 +2087,10 @@ static void
set_up_temp_contact_with_photo (TempContactWithPhotoData *data, gconstpointer service)
{
set_up_temp_contact ((TempContactData*) data, service);
- add_photo_to_contact (GDATA_CONTACTS_SERVICE (service), data->contact);
+
+ gdata_test_mock_server_start_trace (mock_server, "setup-temp-contact-with-photo");
+ add_photo_to_contact (GDATA_CONTACTS_SERVICE (service), &data->contact);
+ gdata_mock_server_end_trace (mock_server);
}
static void
@@ -2019,6 +2109,8 @@ test_photo_get (TempContactData *data, gconstpointer service)
gsize length = 0;
GError *error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "photo-get");
+
g_assert (gdata_contacts_contact_get_photo_etag (data->contact) != NULL);
/* Get the photo from the network */
@@ -2033,6 +2125,8 @@ test_photo_get (TempContactData *data, gconstpointer service)
g_free (content_type);
g_free (photo_data);
g_clear_error (&error);
+
+ gdata_mock_server_end_trace (mock_server);
}
GDATA_ASYNC_TEST_FUNCTIONS (photo_get, TempContactData,
@@ -2072,6 +2166,8 @@ test_photo_delete (TempContactData *data, gconstpointer service)
{
GError *error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "photo-delete");
+
g_assert (gdata_contacts_contact_get_photo_etag (data->contact) != NULL);
/* Remove the contact's photo */
@@ -2081,6 +2177,8 @@ test_photo_delete (TempContactData *data, gconstpointer service)
g_assert (gdata_contacts_contact_get_photo_etag (data->contact) == NULL);
g_clear_error (&error);
+
+ gdata_mock_server_end_trace (mock_server);
}
GDATA_ASYNC_TEST_FUNCTIONS (photo_delete, TempContactData,
@@ -2117,6 +2215,8 @@ test_batch (gconstpointer service)
guint op_id, op_id2, op_id3;
GError *error = NULL, *entry_error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "batch");
+
/* Here we hardcode the feed URI, but it should really be extracted from a contacts feed, as the GDATA_LINK_BATCH link */
operation = gdata_batchable_create_operation (GDATA_BATCHABLE (service), gdata_contacts_service_get_primary_authorization_domain (),
"https://www.google.com/m8/feeds/contacts/default/full/batch");
@@ -2216,6 +2316,8 @@ test_batch (gconstpointer service)
g_clear_error (&error);
/*g_object_unref (operation);*/
g_object_unref (inserted_entry3);
+
+ gdata_mock_server_end_trace (mock_server);
}
typedef struct {
@@ -2228,6 +2330,8 @@ setup_batch_async (BatchAsyncData *data, gconstpointer service)
GDataContactsContact *contact;
GError *error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "setup-batch-async");
+
/* Insert a new contact which we can query asyncly */
contact = gdata_contacts_contact_new (NULL);
gdata_entry_set_title (GDATA_ENTRY (contact), "Fooish Bar");
@@ -2238,6 +2342,8 @@ setup_batch_async (BatchAsyncData *data, gconstpointer service)
g_clear_error (&error);
g_object_unref (contact);
+
+ gdata_mock_server_end_trace (mock_server);
}
static void
@@ -2261,6 +2367,8 @@ test_batch_async (BatchAsyncData *data, gconstpointer service)
GDataBatchOperation *operation;
GMainLoop *main_loop;
+ gdata_test_mock_server_start_trace (mock_server, "batch-async");
+
/* Run an async query operation on the contact */
operation = gdata_batchable_create_operation (GDATA_BATCHABLE (service), gdata_contacts_service_get_primary_authorization_domain (),
"https://www.google.com/m8/feeds/contacts/default/full/batch");
@@ -2274,6 +2382,8 @@ test_batch_async (BatchAsyncData *data, gconstpointer service)
g_main_loop_unref (main_loop);
g_object_unref (operation);
+
+ gdata_mock_server_end_trace (mock_server);
}
static void
@@ -2299,6 +2409,8 @@ test_batch_async_cancellation (BatchAsyncData *data, gconstpointer service)
GCancellable *cancellable;
GError *error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "batch-async-cancellation");
+
/* Run an async query operation on the contact */
operation = gdata_batchable_create_operation (GDATA_BATCHABLE (service), gdata_contacts_service_get_primary_authorization_domain (),
"https://www.google.com/m8/feeds/contacts/default/full/batch");
@@ -2319,6 +2431,8 @@ test_batch_async_cancellation (BatchAsyncData *data, gconstpointer service)
g_main_loop_unref (main_loop);
g_object_unref (cancellable);
g_object_unref (operation);
+
+ gdata_mock_server_end_trace (mock_server);
}
static void
@@ -2326,6 +2440,8 @@ teardown_batch_async (BatchAsyncData *data, gconstpointer service)
{
GError *error = NULL;
+ gdata_test_mock_server_start_trace (mock_server, "teardown-batch-async");
+
/* Delete the contact */
g_assert (gdata_service_delete_entry (GDATA_SERVICE (service), gdata_contacts_service_get_primary_authorization_domain (),
GDATA_ENTRY (data->new_contact), NULL, &error) == TRUE);
@@ -2333,6 +2449,8 @@ teardown_batch_async (BatchAsyncData *data, gconstpointer service)
g_clear_error (&error);
g_object_unref (data->new_contact);
+
+ gdata_mock_server_end_trace (mock_server);
}
static void
@@ -2417,74 +2535,81 @@ main (int argc, char *argv[])
gint retval;
GDataAuthorizer *authorizer = NULL;
GDataService *service = NULL;
+ GFile *trace_directory;
gdata_test_init (argc, argv);
- if (gdata_test_internet () == TRUE) {
- authorizer = GDATA_AUTHORIZER (gdata_client_login_authorizer_new (CLIENT_ID, GDATA_TYPE_CONTACTS_SERVICE));
- gdata_client_login_authorizer_authenticate (GDATA_CLIENT_LOGIN_AUTHORIZER (authorizer), USERNAME, PASSWORD, NULL, NULL);
-
- service = GDATA_SERVICE (gdata_contacts_service_new (authorizer));
-
- g_test_add_func ("/contacts/authentication", test_authentication);
- g_test_add ("/contacts/authentication/async", GDataAsyncTestData, NULL, gdata_set_up_async_test_data, test_authentication_async,
- gdata_tear_down_async_test_data);
- g_test_add ("/contacts/authentication/async/cancellation", GDataAsyncTestData, NULL, gdata_set_up_async_test_data,
- test_authentication_async_cancellation, gdata_tear_down_async_test_data);
-
- g_test_add ("/contacts/contact/insert", InsertData, service, set_up_insert, test_contact_insert, tear_down_insert);
- g_test_add ("/contacts/contact/update", TempContactData, service, set_up_temp_contact, test_contact_update, tear_down_temp_contact);
-
- g_test_add ("/contacts/query/all_contacts", QueryAllContactsData, service, set_up_query_all_contacts, test_query_all_contacts,
- tear_down_query_all_contacts);
- g_test_add ("/contacts/query/all_contacts/async", GDataAsyncTestData, service, set_up_query_all_contacts_async,
- test_query_all_contacts_async, tear_down_query_all_contacts_async);
- g_test_add ("/contacts/query/all_contacts/async/progress_closure", QueryAllContactsData, service,
- set_up_query_all_contacts, test_query_all_contacts_async_progress_closure, tear_down_query_all_contacts);
- g_test_add ("/contacts/query/all_contacts/cancellation", GDataAsyncTestData, service, set_up_query_all_contacts_async,
- test_query_all_contacts_async_cancellation, tear_down_query_all_contacts_async);
-
- g_test_add_data_func ("/contacts/photo/has_photo", service, test_photo_has_photo);
- g_test_add ("/contacts/photo/add", TempContactData, service, set_up_temp_contact, test_photo_add, tear_down_temp_contact);
- g_test_add ("/contacts/photo/add/async", GDataAsyncTestData, service, set_up_temp_contact_async, test_photo_add_async,
- tear_down_temp_contact_async);
- g_test_add ("/contacts/photo/add/async/cancellation", GDataAsyncTestData, service, set_up_temp_contact_async,
- test_photo_add_async_cancellation, tear_down_temp_contact_async);
- g_test_add ("/contacts/photo/get", TempContactData, service, set_up_temp_contact_with_photo, test_photo_get, tear_down_temp_contact);
- g_test_add ("/contacts/photo/get/async", GDataAsyncTestData, service, set_up_temp_contact_with_photo_async, test_photo_get_async,
- tear_down_temp_contact_with_photo_async);
- g_test_add ("/contacts/photo/get/async/cancellation", GDataAsyncTestData, service, set_up_temp_contact_with_photo_async,
- test_photo_get_async_cancellation, tear_down_temp_contact_with_photo_async);
- g_test_add ("/contacts/photo/delete", TempContactData, service, set_up_temp_contact_with_photo, test_photo_delete,
- tear_down_temp_contact);
- g_test_add ("/contacts/photo/delete/async", GDataAsyncTestData, service, set_up_temp_contact_with_photo_async,
- test_photo_delete_async, tear_down_temp_contact_with_photo_async);
+ mock_server = gdata_test_get_mock_server ();
+ trace_directory = g_file_new_for_path ("traces/contacts");
+ gdata_mock_server_set_trace_directory (mock_server, trace_directory);
+ g_object_unref (trace_directory);
+
+ gdata_test_mock_server_start_trace (mock_server, "global-authentication");
+ authorizer = GDATA_AUTHORIZER (gdata_client_login_authorizer_new (CLIENT_ID, GDATA_TYPE_CONTACTS_SERVICE));
+ gdata_client_login_authorizer_authenticate (GDATA_CLIENT_LOGIN_AUTHORIZER (authorizer), USERNAME, PASSWORD, NULL, NULL);
+ gdata_mock_server_end_trace (mock_server);
+
+ service = GDATA_SERVICE (gdata_contacts_service_new (authorizer));
+
+ g_test_add_func ("/contacts/authentication", test_authentication);
+ g_test_add ("/contacts/authentication/async", GDataAsyncTestData, NULL, gdata_set_up_async_test_data, test_authentication_async,
+ gdata_tear_down_async_test_data);
+ g_test_add ("/contacts/authentication/async/cancellation", GDataAsyncTestData, NULL, gdata_set_up_async_test_data,
+ test_authentication_async_cancellation, gdata_tear_down_async_test_data);
+
+ g_test_add ("/contacts/contact/insert", InsertData, service, set_up_insert, test_contact_insert, tear_down_insert);
+ g_test_add ("/contacts/contact/update", TempContactData, service, set_up_temp_contact, test_contact_update, tear_down_temp_contact);
+
+ g_test_add ("/contacts/query/all_contacts", QueryAllContactsData, service, set_up_query_all_contacts, test_query_all_contacts,
+ tear_down_query_all_contacts);
+ g_test_add ("/contacts/query/all_contacts/async", GDataAsyncTestData, service, set_up_query_all_contacts_async,
+ test_query_all_contacts_async, tear_down_query_all_contacts_async);
+ g_test_add ("/contacts/query/all_contacts/async/progress_closure", QueryAllContactsData, service,
+ set_up_query_all_contacts, test_query_all_contacts_async_progress_closure, tear_down_query_all_contacts);
+ g_test_add ("/contacts/query/all_contacts/cancellation", GDataAsyncTestData, service, set_up_query_all_contacts_async,
+ test_query_all_contacts_async_cancellation, tear_down_query_all_contacts_async);
+
+ g_test_add_data_func ("/contacts/photo/has_photo", service, test_photo_has_photo);
+ g_test_add ("/contacts/photo/add", TempContactData, service, set_up_temp_contact, test_photo_add, tear_down_temp_contact);
+ g_test_add ("/contacts/photo/add/async", GDataAsyncTestData, service, set_up_temp_contact_async, test_photo_add_async,
+ tear_down_temp_contact_async);
+ g_test_add ("/contacts/photo/add/async/cancellation", GDataAsyncTestData, service, set_up_temp_contact_async,
+ test_photo_add_async_cancellation, tear_down_temp_contact_async);
+ g_test_add ("/contacts/photo/get", TempContactData, service, set_up_temp_contact_with_photo, test_photo_get, tear_down_temp_contact);
+ g_test_add ("/contacts/photo/get/async", GDataAsyncTestData, service, set_up_temp_contact_with_photo_async, test_photo_get_async,
+ tear_down_temp_contact_with_photo_async);
+ g_test_add ("/contacts/photo/get/async/cancellation", GDataAsyncTestData, service, set_up_temp_contact_with_photo_async,
+ test_photo_get_async_cancellation, tear_down_temp_contact_with_photo_async);
+
+ g_test_add ("/contacts/photo/delete", TempContactData, service, set_up_temp_contact_with_photo, test_photo_delete,
+ tear_down_temp_contact);
+ g_test_add ("/contacts/photo/delete/async", GDataAsyncTestData, service, set_up_temp_contact_with_photo_async,
+ test_photo_delete_async, tear_down_temp_contact_with_photo_async);
/*
Too broken to continue running at the moment.
- g_test_add ("/contacts/photo/delete/async/cancellation", GDataAsyncTestData, service, set_up_temp_contact_with_photo_async,
- test_photo_delete_async_cancellation, tear_down_temp_contact_with_photo_async);
+ g_test_add ("/contacts/photo/delete/async/cancellation", GDataAsyncTestData, service, set_up_temp_contact_with_photo_async,
+ test_photo_delete_async_cancellation, tear_down_temp_contact_with_photo_async);
*/
- g_test_add_data_func ("/contacts/batch", service, test_batch);
- g_test_add ("/contacts/batch/async", BatchAsyncData, service, setup_batch_async, test_batch_async, teardown_batch_async);
- g_test_add ("/contacts/batch/async/cancellation", BatchAsyncData, service, setup_batch_async, test_batch_async_cancellation,
- teardown_batch_async);
-
- g_test_add ("/contacts/group/query", QueryAllGroupsData, service, set_up_query_all_groups, test_query_all_groups,
- tear_down_query_all_groups);
- g_test_add ("/contacts/group/query/async", GDataAsyncTestData, service, set_up_query_all_groups_async,
- test_query_all_groups_async, tear_down_query_all_groups_async);
- g_test_add ("/contacts/group/query/async/progress_closure", QueryAllGroupsData, service, set_up_query_all_groups,
- test_query_all_groups_async_progress_closure, tear_down_query_all_groups);
- g_test_add ("/contacts/group/query/async/cancellation", GDataAsyncTestData, service, set_up_query_all_groups_async,
- test_query_all_groups_async_cancellation, tear_down_query_all_groups_async);
-
- g_test_add ("/contacts/group/insert", InsertGroupData, service, set_up_insert_group, test_group_insert, tear_down_insert_group);
- g_test_add ("/contacts/group/insert/async", GDataAsyncTestData, service, set_up_insert_group_async, test_group_insert_async,
- tear_down_insert_group_async);
- g_test_add ("/contacts/group/insert/async/cancellation", GDataAsyncTestData, service, set_up_insert_group_async,
- test_group_insert_async_cancellation, tear_down_insert_group_async);
- }
+ g_test_add_data_func ("/contacts/batch", service, test_batch);
+ g_test_add ("/contacts/batch/async", BatchAsyncData, service, setup_batch_async, test_batch_async, teardown_batch_async);
+ g_test_add ("/contacts/batch/async/cancellation", BatchAsyncData, service, setup_batch_async, test_batch_async_cancellation,
+ teardown_batch_async);
+
+ g_test_add ("/contacts/group/query", QueryAllGroupsData, service, set_up_query_all_groups, test_query_all_groups,
+ tear_down_query_all_groups);
+ g_test_add ("/contacts/group/query/async", GDataAsyncTestData, service, set_up_query_all_groups_async,
+ test_query_all_groups_async, tear_down_query_all_groups_async);
+ g_test_add ("/contacts/group/query/async/progress_closure", QueryAllGroupsData, service, set_up_query_all_groups,
+ test_query_all_groups_async_progress_closure, tear_down_query_all_groups);
+ g_test_add ("/contacts/group/query/async/cancellation", GDataAsyncTestData, service, set_up_query_all_groups_async,
+ test_query_all_groups_async_cancellation, tear_down_query_all_groups_async);
+
+ g_test_add ("/contacts/group/insert", InsertGroupData, service, set_up_insert_group, test_group_insert, tear_down_insert_group);
+ g_test_add ("/contacts/group/insert/async", GDataAsyncTestData, service, set_up_insert_group_async, test_group_insert_async,
+ tear_down_insert_group_async);
+ g_test_add ("/contacts/group/insert/async/cancellation", GDataAsyncTestData, service, set_up_insert_group_async,
+ test_group_insert_async_cancellation, tear_down_insert_group_async);
g_test_add_func ("/contacts/contact/properties", test_contact_properties);
g_test_add_func ("/contacts/contact/escaping", test_contact_escaping);
diff --git a/gdata/tests/traces/contacts/authentication b/gdata/tests/traces/contacts/authentication
new file mode 100644
index 00000000..1d67fad5
--- /dev/null
+++ b/gdata/tests/traces/contacts/authentication
@@ -0,0 +1,27 @@
+> POST /accounts/ClientLogin HTTP/1.1
+> Soup-Debug-Timestamp: 1375253707
+> Soup-Debug: SoupSession 1 (0x66f3f0), SoupMessage 1 (0x7d2aa0), SoupSocket 1 (0x72a190)
+> Host: www.google.com
+> Content-Type: application/x-www-form-urlencoded
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> accountType=HOSTED%5FOR%5FGOOGLE&Email=libgdata%2Etest%40gmail%2Ecom&Passwd=gdata%2Dgdata&service=cp&source=ytapi%2DGNOME%2Dlibgdata%2D444fubtt%2D0
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375253707
+< Soup-Debug: SoupMessage 1 (0x7d2aa0)
+< Content-Type: text/plain
+< Cache-control: no-cache, no-store
+< Pragma: no-cache
+< Expires: Mon, 01-Jan-1990 00:00:00 GMT
+< Date: Wed, 31 Jul 2013 06:55:07 GMT
+< X-Content-Type-Options: nosniff
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 947
+< Server: GSE
+<
+< SID=DQAAANMAAABLVNYA7llnN5GVblNPXi5xnUpfn_1Nt5rUGq5fgJHP3lGFHSyWeFu8iaAhhTy_IkFR4abU1u0PItdmErKC7BAb4yEUNfBsE_DAJW3QiSX9gsUN9Upn3OGfkWWE9rtc3SuMRRUtVa5uIrI3LFeFpTj-mDugsJ6eLNSXuBX_I2ZXut0cc2cye4-y6sIqgEa6bBitbGbEPUUWUaXzXJUu19achuiThwDIztR8au8tSMH6vOxDEpwiFwKoH6MmUj7uyFf1Vfe-CEQlBTjg4gjDCWGlgGudKAQC-7tnHa8Mpi4A3g
+< LSID=DQAAANUAAAANiE0kPwbpbCxKR_R7h-ekhx_I6BM74CA7iCX0q8ILYiIGXDhjanJyMF8-YSr48czMnizyxddpEDZQL5v8W6CaLltlzVYSdSEegJ_p9G0_n6dfhQjgn-2d0prbi6g9_KoLs71vaMnTXGma8Honl3n1_cfdI7asujoOns4QUbs4vhk_n9Ag9wJzNjHW5h7dNerxKH4uzqeOMRifAefv3_ZWNhUdytaF-gx-nTcigWqNiGwTMNT1EnzobE5VzZeHoEAFApRxgK3u-M6QRy9GunbTpPuAqTSivnjFIOCSSV_KrA
+< Auth=DQAAANYAAAANiE0kPwbpbCxKR_R7h-ekhx_I6BM74CA7iCX0q8ILYiIGXDhjanJyMF8-YSr48cy3WO11uK-_KLeoeuvXODGKn-9bqQT-KaNXSV63Iojd-SXaAiAhSaxuNwEGXj5Z7KO_QAebRcA_bmVZzZGO0vjwhBGmnYrukoKPnlexCe2AZeuEyqR-ZY-Hl1JHY3iQ30RK70nlQOM__saeNQYzVz3WoQ35SzAFKQT1edoPh8nL3buIc7jlQGGeNIgn-uV1NTnwMglaxeuT-e67DkK9sDHf-p6UyUYO6xlcyoHTL25Nxw
+
diff --git a/gdata/tests/traces/contacts/authentication-async b/gdata/tests/traces/contacts/authentication-async
new file mode 100644
index 00000000..09d657bd
--- /dev/null
+++ b/gdata/tests/traces/contacts/authentication-async
@@ -0,0 +1,27 @@
+> POST /accounts/ClientLogin HTTP/1.1
+> Soup-Debug-Timestamp: 1375253707
+> Soup-Debug: SoupSession 1 (0x66f500), SoupMessage 1 (0x7d2e60), SoupSocket 1 (0x72a6d0)
+> Host: www.google.com
+> Content-Type: application/x-www-form-urlencoded
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> accountType=HOSTED%5FOR%5FGOOGLE&Email=libgdata%2Etest%40gmail%2Ecom&Passwd=gdata%2Dgdata&service=cp&source=ytapi%2DGNOME%2Dlibgdata%2D444fubtt%2D0
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375253707
+< Soup-Debug: SoupMessage 1 (0x7d2e60)
+< Content-Type: text/plain
+< Cache-control: no-cache, no-store
+< Pragma: no-cache
+< Expires: Mon, 01-Jan-1990 00:00:00 GMT
+< Date: Wed, 31 Jul 2013 06:55:07 GMT
+< X-Content-Type-Options: nosniff
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 947
+< Server: GSE
+<
+< SID=DQAAANMAAABLVNYA7llnN5GVblNPXi5xnUpfn_1Nt5rUGq5fgJHP3lGFHSyWeFu8iaAhhTy_IkFR4abU1u0PItdmErKC7BAb4yEUNfBsE_DAJW3QiSX9gsUN9Upn3OGfkWWE9rtc3SuMRRUtVa5uIrI3LFeFpTj-mDugsJ6eLNSXuBX_I2ZXut0cc2cye4-y6sIqgEa6bBitbGbEPUUWUaXzXJUu19acTECE-3-B2krVhb8vfG1AHN5rzSoc1Q_VyilznzxZBPVRfPhJw3Y5IebOCCnZIXPh7WmGG1ZD873sWpj-kpUpcg
+< LSID=DQAAANYAAAANiE0kPwbpbCxKR_R7h-ekhx_I6BM74CA7iCX0q8ILYiIGXDhjanJyMF8-YSr48czMnizyxddpEDZQL5v8W6CaLltlzVYSdSEegJ_p9G0_n6dfhQjgn-2d0prbi6g9_KoLs71vaMnTXGma8Honl3n1_cfdI7asujoOns4QUbs4vhk_n9Ag9wJzNjHW5h7dNerxKH4uzqeOMRifAefv3_ZWZdV1jE37C_HM4lrLBkVs4g5Nn7QGbEu4zBRfm6tbUsyGGArm184KaDmtlj56BazwIuMxn2vgWds0PoDaD--qFg
+< Auth=DQAAANUAAAANiE0kPwbpbCxKR_R7h-ekhx_I6BM74CA7iCX0q8ILYiIGXDhjanJyMF8-YSr48cy3WO11uK-_KLeoeuvXODGKn-9bqQT-KaNXSV63Iojd-SXaAiAhSaxuNwEGXj5Z7KO_QAebRcA_bmVZzZGO0vjwhBGmnYrukoKPnlexCe2AZeuEyqR-ZY-Hl1JHY3iQ30RK70nlQOM__saeNQYzVz3WzcUjGZQ_0atIQbbOPrlNJvWPUOKBHHVuHDl-TJPvFhdUmvTRCMke4EDhQGxWnq3kfeSnDCzg-OCkD4CAcaOWeQ
+
diff --git a/gdata/tests/traces/contacts/authentication-async-cancellation b/gdata/tests/traces/contacts/authentication-async-cancellation
new file mode 100644
index 00000000..0b9e2fbd
--- /dev/null
+++ b/gdata/tests/traces/contacts/authentication-async-cancellation
@@ -0,0 +1,27 @@
+> POST /accounts/ClientLogin HTTP/1.1
+> Soup-Debug-Timestamp: 1375253708
+> Soup-Debug: SoupSession 1 (0x66f500), SoupMessage 1 (0x7fffe00262a0), SoupSocket 1 (0x7fffe0028190)
+> Host: www.google.com
+> Content-Type: application/x-www-form-urlencoded
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> accountType=HOSTED%5FOR%5FGOOGLE&Email=libgdata%2Etest%40gmail%2Ecom&Passwd=gdata%2Dgdata&service=cp&source=ytapi%2DGNOME%2Dlibgdata%2D444fubtt%2D0
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375253708
+< Soup-Debug: SoupMessage 1 (0x7fffe00262a0)
+< Content-Type: text/plain
+< Cache-control: no-cache, no-store
+< Pragma: no-cache
+< Expires: Mon, 01-Jan-1990 00:00:00 GMT
+< Date: Wed, 31 Jul 2013 06:55:08 GMT
+< X-Content-Type-Options: nosniff
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 947
+< Server: GSE
+<
+< SID=DQAAANMAAAAunusdFJGM1KPwpqzc212kxe0mrSl2NxjpDEq5kCraje_aRE5F-vTgUxDFd2J3_7_snxzNa0pX8sGs-NTcnI2d-2q9fGyosn-1M6rPh3qQA8qy42qG0C2HnOOtogVSG4vWM1nI9upHtxzcGSw4npSifFmn1Rxnhv08ZIMjHNJpIfhaCM4fkeSvEsyxn4lFRdXO4xTrtrjhGlTVTG-Dyqw7vq_i-ngOJqNjcxB8Oxx_CwwgVo16TYC88VIyZp5jS_2btuWvoHYmO-fYxCdJVktq_uXbbxPshT32bfNcRxxroQ
+< LSID=DQAAANUAAADlUiDDxmgwYEQV4ONy1MTegorp3YgAKT-J--NcNIwz1nJvdKlhFWau_6plMST0IUMr9GoPEokwCv7v3YZnLtK1P7wvqIgdQkP6I22lFNIrINcizDYxO_03NJ0QBVsQ4bFCl_zSdILGLIEtUqeos12Z5RCIbgrYoYG_C4I2OoNH33QfeK4v9eFDgmycbDNIXvIkCVkVkN-UpYw6lgp4M-Mwz6UZ6JM5Ow0mzOXe_X-3ObjimaF0dZhTq4f8eqAvYUIZ9MKtRzfGpMRSnTqR5gC7u0F5aLNY78hcwi2-Jf2gqA
+< Auth=DQAAANUAAADlUiDDxmgwYEQV4ONy1MTegorp3YgAKT-J--NcNIwz1nJvdKlhFWau_6plMST0IUMunH-1EPsydhwp7D-n9RF5dIaQg8ezkxVCT2oit_CR7ZIWdyB7LF0F_Nn5fy8S7NWHepGq0pYhHNbCqMUBbr9KWZ6FH_MKT6TmqkrOeWXTuRujoiuv3_F22AIPwJ6coTIyDn5A2FW_YtxU2ZW9mTEbpdFkfwY5MWFoME3wBpxti1C3vVClkEhSr6ZBw5d1Ygiol1jCfzV3BcFtPeHQe6y-A6OAhtDUKb2eeOirjRPr0Q
+
diff --git a/gdata/tests/traces/contacts/batch b/gdata/tests/traces/contacts/batch
new file mode 100644
index 00000000..ac8302d0
--- /dev/null
+++ b/gdata/tests/traces/contacts/batch
@@ -0,0 +1,84 @@
+> POST /m8/feeds/contacts/default/full/batch HTTP/1.1
+> Soup-Debug-Timestamp: 1375362975
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 1 (0x8a22a0), SoupSocket 1 (0x8f3190)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAACEVu1_bRDNe9RgSD9ZBpOd3wrIlCGMT5j4obkMZr9xzaecCbh7Ad88EHTPx_-XXUENDehvQ4HWMlCeXcfB9dwJ3b18s7PWnls2aHGTGVYopRnLzMKvEdl4E2cyU4OZuMcgVVLVwro91w4JG_RSnZmd8J7IEj83YnoNbBiv4x8yjOcPb5WO3wEoyNzGKwcPvEu9b_NOF7EsbiC0nIOY4Lr4MZCkFzK3iUr1OKGLXZHB2HOFyuJHaMDpIUfubYW4M3w1YlkGBCBCfxr18lGeMluMVL2D9u6rELYQwCWwBkeyeg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'>Batch operation feed</title><id>batch1</id><updated>2013-08-01T13:16:15Z</updated><entry><title type='text'>Fooish Bar</title><category term='http://schemas.google.com/contact/2008#contact' scheme='http://schemas.google.com/g/2005#kind'/><batch:id>1</batch:id><batch:operation type='insert'/><gd:name><gd:fullName>Fooish Bar</gd:fullName></gd:name></entry></feed>
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362975
+< Soup-Debug: SoupMessage 1 (0x8a22a0)
+< Content-Type: application/atom+xml; charset=UTF-8; type=feed
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:16:15 GMT
+< Expires: Thu, 01 Aug 2013 13:16:15 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005'><id>https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/batch/1375362975314</id><updated>2013-08-01T13:16:15.339Z</updated><title>Batch operation feed</title><entry gd:etag='&quot;RH05eTVSLit7I2A9WhFWE0sITgM.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/77f272e18a99d7b0</id><updated>2013-08-01T13:16:15.321Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:16:15.321Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title>Fooish Bar</title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/77f272e18a99d7b0'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/77f272e18a99d7b0'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/77f272e18a99d7b0'/><gd:name><gd:fullName>Fooish Bar</gd:fullName><gd:givenName>Fooish</gd:givenName><gd:familyName>Bar</gd:familyName></gd:name><batch:id>1</batch:id><batch:status code='201' reason='Created'/><batch:operation type='insert'/></entry></feed>
+
+> POST /m8/feeds/contacts/default/full/batch HTTP/1.1
+> Soup-Debug-Timestamp: 1375362975
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 2 (0x8a2480), SoupSocket 2 (0x8f3310)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAACEVu1_bRDNe9RgSD9ZBpOd3wrIlCGMT5j4obkMZr9xzaecCbh7Ad88EHTPx_-XXUENDehvQ4HWMlCeXcfB9dwJ3b18s7PWnls2aHGTGVYopRnLzMKvEdl4E2cyU4OZuMcgVVLVwro91w4JG_RSnZmd8J7IEj83YnoNbBiv4x8yjOcPb5WO3wEoyNzGKwcPvEu9b_NOF7EsbiC0nIOY4Lr4MZCkFzK3iUr1OKGLXZHB2HOFyuJHaMDpIUfubYW4M3w1YlkGBCBCfxr18lGeMluMVL2D9u6rELYQwCWwBkeyeg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'>Batch operation feed</title><id>batch1</id><updated>2013-08-01T13:16:15Z</updated><entry><title type='text'>Batch operation query</title><id>https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/77f272e18a99d7b0</id><updated>2013-08-01T13:16:15Z</updated><batch:id>2</batch:id><batch:operation type='query'/></entry><entry><title type='text'>Brian</title><category term='http://schemas.google.com/contact/2008#contact' scheme='http://schemas.google.com/g/2005#kind'/><batch:id>1</batch:id><batch:operation type='insert'/><gd:name><gd:fullName>Brian</gd:fullName></gd:name></entry></feed>
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362975
+< Soup-Debug: SoupMessage 2 (0x8a2480)
+< Content-Type: application/atom+xml; charset=UTF-8; type=feed
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:16:15 GMT
+< Expires: Thu, 01 Aug 2013 13:16:15 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005'><id>https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/batch/1375362975482</id><updated>2013-08-01T13:16:15.509Z</updated><title>Batch operation feed</title><entry gd:etag='&quot;RHozcDVSLit7I2A9WhFWE0sITgM.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/2e8ff7630eb55498</id><updated>2013-08-01T13:16:15.488Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:16:15.488Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title>Brian</title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/2e8ff7630eb55498'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/2e8ff7630eb55498'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/2e8ff7630eb55498'/><gd:name><gd:fullName>Brian</gd:fullName><gd:givenName>Brian</gd:givenName></gd:name><batch:id>1</batch:id><batch:status code='201' reason='Created'/><batch:operation type='insert'/></entry><entry gd:etag='&quot;RH05eTVSLit7I2A9WhFWE0sITgM.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/77f272e18a99d7b0</id><updated>2013-08-01T13:16:15.321Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:16:15.321Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title>Fooish Bar</title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/77f272e18a99d7b0'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/77f272e18a99d7b0'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/77f272e18a99d7b0'/><gd:name><gd:fullName>Fooish Bar</gd:fullName><gd:givenName>Fooish</gd:givenName><gd:familyName>Bar</gd:familyName></gd:name><batch:id>2</batch:id><batch:status code='200' reason='Success'/><batch:operation type='query'/></entry></feed>
+
+> POST /m8/feeds/contacts/default/full/batch HTTP/1.1
+> Soup-Debug-Timestamp: 1375362975
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 3 (0x8a2480), SoupSocket 3 (0x8f33d0)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAACEVu1_bRDNe9RgSD9ZBpOd3wrIlCGMT5j4obkMZr9xzaecCbh7Ad88EHTPx_-XXUENDehvQ4HWMlCeXcfB9dwJ3b18s7PWnls2aHGTGVYopRnLzMKvEdl4E2cyU4OZuMcgVVLVwro91w4JG_RSnZmd8J7IEj83YnoNbBiv4x8yjOcPb5WO3wEoyNzGKwcPvEu9b_NOF7EsbiC0nIOY4Lr4MZCkFzK3iUr1OKGLXZHB2HOFyuJHaMDpIUfubYW4M3w1YlkGBCBCfxr18lGeMluMVL2D9u6rELYQwCWwBkeyeg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'>Batch operation feed</title><id>batch1</id><updated>2013-08-01T13:16:15Z</updated><entry gd:etag='&quot;RHozcDVSLit7I2A9WhFWE0sITgM.&quot;'><title type='text'>Toby</title><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/2e8ff7630eb55498</id><updated>2013-08-01T13:16:15Z</updated><category term='http://schemas.google.com/contact/2008#contact' scheme='http://schemas.google.com/g/2005#kind'/><link href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/2e8ff7630eb55498' rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*'/><link href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/2e8ff7630eb55498' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/><link href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/2e8ff7630eb55498' rel='http://www.iana.org/assignments/relation/edit' type='application/atom+xml'/><batch:id>3</batch:id><batch:operation type='update'/><gd:name><gd:givenName>Brian</gd:givenName><gd:fullName>Toby</gd:fullName></gd:name></entry><entry><title type='text'></title><id>foobar</id><category term='http://schemas.google.com/contact/2008#contact' scheme='http://schemas.google.com/g/2005#kind'/><batch:id>2</batch:id><batch:operation type='delete'/><gd:name/></entry><entry gd:etag='&quot;RH05eTVSLit7I2A9WhFWE0sITgM.&quot;'><title type='text'>Fooish Bar</title><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/77f272e18a99d7b0</id><updated>2013-08-01T13:16:15Z</updated><category term='http://schemas.google.com/contact/2008#contact' scheme='http://schemas.google.com/g/2005#kind'/><link href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/77f272e18a99d7b0' rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*'/><link href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/77f272e18a99d7b0' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/><link href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/77f272e18a99d7b0' rel='http://www.iana.org/assignments/relation/edit' type='application/atom+xml'/><batch:id>1</batch:id><batch:operation type='delete'/><gd:name><gd:givenName>Fooish</gd:givenName><gd:familyName>Bar</gd:familyName><gd:fullName>Fooish Bar</gd:fullName></gd:name></entry></feed>
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362976
+< Soup-Debug: SoupMessage 3 (0x8a2480)
+< Content-Type: application/atom+xml; charset=UTF-8; type=feed
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:16:16 GMT
+< Expires: Thu, 01 Aug 2013 13:16:16 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005'><id>https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/batch/1375362975747</id><updated>2013-08-01T13:16:15.748Z</updated><title>Batch operation feed</title><entry><id>foobar</id><updated>2013-08-01T13:16:15.748Z</updated><title>Error</title><content>Invalid entry Id/Uri</content><batch:id>2</batch:id><batch:status code='400' reason='Invalid entry Id/Uri'/><batch:operation type='delete'/></entry><entry><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/77f272e18a99d7b0</id><updated>2013-08-01T13:16:16.103Z</updated><title>Fooish Bar</title><content>Deleted</content><batch:id>1</batch:id><batch:status code='200' reason='Success'/><batch:operation type='delete'/></entry><entry gd:etag='&quot;R386fDVSLit7I2A9WhFWE0sITgM.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/2e8ff7630eb55498</id><updated>2013-08-01T13:16:16.114Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:16:16.114Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title>Toby</title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/2e8ff7630eb55498'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/2e8ff7630eb55498'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/2e8ff7630eb55498'/><gd:name><gd:fullName>Toby</gd:fullName><gd:givenName>Brian</gd:givenName></gd:name><batch:id>3</batch:id><batch:status code='200' reason='Success'/><batch:operation type='update'/></entry></feed>
+
diff --git a/gdata/tests/traces/contacts/batch-async b/gdata/tests/traces/contacts/batch-async
new file mode 100644
index 00000000..bc5a5f5a
--- /dev/null
+++ b/gdata/tests/traces/contacts/batch-async
@@ -0,0 +1,28 @@
+> POST /m8/feeds/contacts/default/full/batch HTTP/1.1
+> Soup-Debug-Timestamp: 1375362976
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 5 (0x8a2660), SoupSocket 5 (0x8f3790)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAACEVu1_bRDNe9RgSD9ZBpOd3wrIlCGMT5j4obkMZr9xzaecCbh7Ad88EHTPx_-XXUENDehvQ4HWMlCeXcfB9dwJ3b18s7PWnls2aHGTGVYopRnLzMKvEdl4E2cyU4OZuMcgVVLVwro91w4JG_RSnZmd8J7IEj83YnoNbBiv4x8yjOcPb5WO3wEoyNzGKwcPvEu9b_NOF7EsbiC0nIOY4Lr4MZCkFzK3iUr1OKGLXZHB2HOFyuJHaMDpIUfubYW4M3w1YlkGBCBCfxr18lGeMluMVL2D9u6rELYQwCWwBkeyeg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005'><title type='text'>Batch operation feed</title><id>batch1</id><updated>2013-08-01T13:16:16Z</updated><entry><title type='text'>Batch operation query</title><id>https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/35744fd80b8692dc</id><updated>2013-08-01T13:16:16Z</updated><batch:id>1</batch:id><batch:operation type='query'/></entry></feed>
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362976
+< Soup-Debug: SoupMessage 5 (0x8a2660)
+< Content-Type: application/atom+xml; charset=UTF-8; type=feed
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:16:16 GMT
+< Expires: Thu, 01 Aug 2013 13:16:16 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005'><id>https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/batch/1375362976702</id><updated>2013-08-01T13:16:16.707Z</updated><title>Batch operation feed</title><entry gd:etag='&quot;R3s7eDVSLit7I2A9WhFWE0sITgM.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/35744fd80b8692dc</id><updated>2013-08-01T13:16:16.500Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:16:16.500Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title>Fooish Bar</title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/35744fd80b8692dc'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/35744fd80b8692dc'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/35744fd80b8692dc'/><gd:name><gd:fullName>Fooish Bar</gd:fullName><gd:givenName>Fooish</gd:givenName><gd:familyName>Bar</gd:familyName></gd:name><batch:id>1</batch:id><batch:status code='200' reason='Success'/><batch:operation type='query'/></entry></feed>
+
diff --git a/gdata/tests/traces/contacts/batch-async-cancellation b/gdata/tests/traces/contacts/batch-async-cancellation
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gdata/tests/traces/contacts/batch-async-cancellation
diff --git a/gdata/tests/traces/contacts/contact-insert b/gdata/tests/traces/contacts/contact-insert
new file mode 100644
index 00000000..7446f873
--- /dev/null
+++ b/gdata/tests/traces/contacts/contact-insert
@@ -0,0 +1,32 @@
+> POST /m8/feeds/contacts/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375253708
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 1 (0x7d2c80), SoupSocket 1 (0x72a250)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'>John Smith</title><content type='text'>Notes</content><category term='http://schemas.google.com/contact/2008#contact' scheme='http://schemas.google.com/g/2005#kind'/><gd:name><gd:givenName>John</gd:givenName><gd:familyName>Smith</gd:familyName><gd:fullName>John Smith</gd:fullName></gd:name><gd:email address='liz@gmail.com' rel='http://schemas.google.com/g/2005#work' primary='false'/><gd:email address='liz@example.org' rel='http://schemas.google.com/g/2005#home' primary='false'/><gd:im address='liz@gmail.com' protocol='http://schemas.google.com/g/2005#GOOGLE_TALK' rel='http://schemas.google.com/g/2005#home' primary='false'/><gd:phoneNumber rel='http://schemas.google.com/g/2005#work' primary='true'>(206)555-1212</gd:phoneNumber><gd:phoneNumber rel='http://schemas.google.com/g/2005#home' primary='false'>(206)555-1213</gd:phoneNumber><gd:structuredPostalAddress rel='http://schemas.google.com/g/2005#work' primary='true'><gd:street>1600 Amphitheatre Pkwy Mountain View</gd:street></gd:structuredPostalAddress><gd:organization rel='http://schemas.google.com/g/2005#work' primary='false'><gd:orgName>OrgCorp</gd:orgName><gd:orgTitle>President</gd:orgTitle></gd:organization><gContact:jot rel='other'>This is a jot.</gContact:jot><gContact:relation rel='friend'>Brian Haddock</gContact:relation><gContact:website href='http://example.com/' rel='profile' primary='true'/><gContact:event rel='anniversary'><gd:when startTime='1900-01-01'/></gContact:event><gContact:calendarLink href='http://calendar.example.com/' rel='home' primary='true'/><gContact:externalId value='Number Six' rel='organization'/><gContact:language code='en-GB'/><gd:extendedProperty name='CALURI'>http://example.com/</gd:extendedProperty><gContact:userDefinedField key='Favourite colour' value='Blue'/><gContact:userDefinedField key='My notes' value=''/><gContact:userDefinedField key='Owes me' value='£10'/><gContact:userDefinedField key='' value='Foo'/><gContact:hobby>Rowing</gContact:hobby><gContact:nickname>Big J</gContact:nickname><gContact:fileAs>J, Big</gContact:fileAs><gContact:birthday when='--01-01'/><gContact:billingInformation>Big J Enterprises, Ltd.</gContact:billingInformation><gContact:directoryServer>This is a server</gContact:directoryServer><gContact:gender value='male'/><gContact:initials>A. B. C.</gContact:initials><gContact:maidenName>Smith</gContact:maidenName><gContact:mileage>12km</gContact:mileage><gContact:occupation>Professional bum</gContact:occupation><gContact:priority rel='high'/><gContact:sensitivity rel='personal'/><gContact:shortName>Jon</gContact:shortName><gContact:subject>Charity work</gContact:subject></entry>
+
+< HTTP/1.1 201 Created
+< Soup-Debug-Timestamp: 1375253709
+< Soup-Debug: SoupMessage 1 (0x7d2c80)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Wed, 31 Jul 2013 06:55:09 GMT
+< Date: Wed, 31 Jul 2013 06:55:09 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "SXcyfTVSLit7I2A9WhFWEkgJQAQ."
+< Location: https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/669aee080ec47f33
+< Content-Location: https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/669aee080ec47f33
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;SXcyfTVSLit7I2A9WhFWEkgJQAQ.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/669aee080ec47f33</id><updated>2013-07-31T06:55:08.995Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:08.995Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title>John Smith</title><content>Notes</content><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/669aee080ec47f33'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/669aee080ec47f33'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/669aee080ec47f33'/><gd:name><gd:fullName>John Smith</gd:fullName><gd:givenName>John</gd:givenName><gd:familyName>Smith</gd:familyName></gd:name><gContact:nickname>Big J</gContact:nickname><gContact:maidenName>Smith</gContact:maidenName><gContact:shortName>Jon</gContact:shortName><gContact:initials>A. B. C.</gContact:initials><gContact:gender value='male'/><gContact:birthday when='--01-01'/><gContact:occupation>Professional bum</gContact:occupation><gContact:sensitivity rel='personal'/><gContact:billingInformation>Big J Enterprises, Ltd.</gContact:billingInformation><gContact:priority rel='high'/><gContact:mileage>12km</gContact:mileage><gContact:directoryServer>This is a server</gContact:directoryServer><gContact:subject>Charity work</gContact:subject><gContact:fileAs>J, Big</gContact:fileAs><gd:organization rel='http://schemas.google.com/g/2005#work'><gd:orgName>OrgCorp</gd:orgName><gd:orgTitle>President</gd:orgTitle></gd:organization><gd:email rel='http://schemas.google.com/g/2005#work' address='liz@gmail.com'/><gd:email rel='http://schemas.google.com/g/2005#home' address='liz@example.org'/><gd:im address='liz@gmail.com' protocol='http://schemas.google.com/g/2005#GOOGLE_TALK' rel='http://schemas.google.com/g/2005#home'/><gd:phoneNumber rel='http://schemas.google.com/g/2005#work' primary='true'>(206)555-1212</gd:phoneNumber><gd:phoneNumber rel='http://schemas.google.com/g/2005#home'>(206)555-1213</gd:phoneNumber><gd:structuredPostalAddress primary='true' rel='http://schemas.google.com/g/2005#work'><gd:formattedAddress>1600 Amphitheatre Pkwy Mountain View</gd:formattedAddress><gd:street>1600 Amphitheatre Pkwy Mountain View</gd:street></gd:structuredPostalAddress><gContact:event rel='anniversary'><gd:when startTime='1900-01-01'/></gContact:event><gContact:externalId rel='organization' value='Number Six'/><gContact:relation rel='friend'>Brian Haddock</gContact:relation><gContact:userDefinedField key='Favourite colour' value='Blue'/><gContact:userDefinedField key='My notes' value=''/><gContact:userDefinedField key='Owes me' value='£10'/><gContact:userDefinedField key='' value='Foo'/><gContact:website href='http://example.com/' primary='true' rel='profile'/><gContact:calendarLink href='http://calendar.example.com/' primary='true' rel='home'/><gContact:language code='en-GB'/><gContact:jot rel='other'>This is a jot.</gContact:jot><gContact:hobby>Rowing</gContact:hobby><gd:extendedProperty name='CALURI'>http://example.com/</gd:extendedProperty></entry>
+
diff --git a/gdata/tests/traces/contacts/contact-update b/gdata/tests/traces/contacts/contact-update
new file mode 100644
index 00000000..630f3c17
--- /dev/null
+++ b/gdata/tests/traces/contacts/contact-update
@@ -0,0 +1,30 @@
+> PUT /m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375253710
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 4 (0x7d28c0), SoupSocket 2 (0x72a310)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> If-Match: "SHY-fDVSLit7I2A9WhFWEkgJQAQ."
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app' gd:etag='&quot;SHY-fDVSLit7I2A9WhFWEkgJQAQ.&quot;'><title type='text'>John Wilson</title><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8</id><updated>2013-07-31T06:55:09Z</updated><category term='http://schemas.google.com/contact/2008#contact' scheme='http://schemas.google.com/g/2005#kind'/><link href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8' rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*'/><link href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/><link href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8' rel='http://www.iana.org/assignments/relation/edit' type='application/atom+xml'/><gd:name><gd:fullName>John Wilson</gd:fullName></gd:name><gd:extendedProperty name='contact-test'>value</gd:extendedProperty><gContact:nickname>Test Contact Esq.</gContact:nickname></entry>
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375253710
+< Soup-Debug: SoupMessage 4 (0x7d28c0)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< GData-Version: 3.1
+< ETag: "QXw_eDVSLit7I2A9WhFWEkgJQAU."
+< Date: Wed, 31 Jul 2013 06:55:10 GMT
+< Expires: Wed, 31 Jul 2013 06:55:10 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;QXw_eDVSLit7I2A9WhFWEkgJQAU.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/465577d88b0afee8</id><updated>2013-07-31T06:55:10.240Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:10.240Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title>John Wilson</title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8'/><gd:name><gd:fullName>John Wilson</gd:fullName><gd:givenName>John</gd:givenName><gd:familyName>Wilson</gd:familyName></gd:name><gContact:nickname>Test Contact Esq.</gContact:nickname><gd:extendedProperty name='contact-test'>value</gd:extendedProperty></entry>
+
diff --git a/gdata/tests/traces/contacts/global-authentication b/gdata/tests/traces/contacts/global-authentication
new file mode 100644
index 00000000..477cc54f
--- /dev/null
+++ b/gdata/tests/traces/contacts/global-authentication
@@ -0,0 +1,27 @@
+> POST /accounts/ClientLogin HTTP/1.1
+> Soup-Debug-Timestamp: 1375363883
+> Soup-Debug: SoupSession 1 (0x66f1d0), SoupMessage 1 (0x8a20c0), SoupSocket 1 (0x8f30d0)
+> Host: www.google.com
+> Content-Type: application/x-www-form-urlencoded
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> accountType=HOSTED%5FOR%5FGOOGLE&Email=libgdata%2Etest%40gmail%2Ecom&Passwd=gdata%2Dgdata&service=cp&source=ytapi%2DGNOME%2Dlibgdata%2D444fubtt%2D0
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375363883
+< Soup-Debug: SoupMessage 1 (0x8a20c0)
+< Content-Type: text/plain
+< Cache-control: no-cache, no-store
+< Pragma: no-cache
+< Expires: Mon, 01-Jan-1990 00:00:00 GMT
+< Date: Thu, 01 Aug 2013 13:31:23 GMT
+< X-Content-Type-Options: nosniff
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 947
+< Server: GSE
+<
+< SID=DQAAANQAAACpgx1jJWZrMRCNj1beNPAWmn0jBFgPa1Pehnurr7JLhgCAQwo8fyM7uvBxflnbgU-mX9bBntVKK5JWqGqmQLFTWQf0fsa5oMS8YOb2r3nyS9080jv4WMiqo2It1eBZ6Jd_fRLz6rS-ikxj7GaFcNFgU4UoVZQz-uFktY-hcmrALg_GNYR9JO97m90YBs-Y6nPmHMufAYa88K-HD8GleExE7gWwUjRuCyeUjifxTRcUooJofDwyu0oGsoLP_W8KAJLJoDWrjijHOR_VqSxk8tJMGVnHwqCX3IZMyGV6p_38MQ
+< LSID=DQAAANYAAADtjTOJJU3aN2xxS0RFYXiikPITkpt4b3hR1fQ9TbQlx-Cgsdk1AW48YqFLPUdI1yl4jCrrpq4RMa_PjxX8MS-QcBmWVF_KmdnPY9D0OiCUzGdbCSpXW8DJhvSzTPUn7NuLJtpFSnO686d6Ga9WmsF4VMahl_aRU8Xr8AMeoBb2Hg3yagjNgFhlyHReigIJEQLNq7FPI9kqqGmHDWEAOEtsfEIOe3fQG1c4JE5NzfU3dAn1Ppf73MXfSWZInY-jg4Fhzrm-6P3_LiG6Oy56zNRtIp9Cyy8KGaX2solLGSB06A
+< Auth=DQAAANUAAADtjTOJJU3aN2xxS0RFYXiikPITkpt4b3hR1fQ9TbQlx-Cgsdk1AW48YqFLPUdI1ykyKbaS_VSAfv5B_IGEi3Wa1McgCuVz7nIjv_OMYVERFthN0-Nj95PWV19GJMPKDhcOwzN_W2wjFTXSyHmhy6pNoc48jWohDPHCzv6G9jsEj9KOTlHT6F9pGe3H3bGf0ga0s6bPJ6Yv2orycMebH1EDv5crVSPRx6e7Uy50qDXVTJH1zXUXShunNRKTm09H_Tmfwn1fdBVj6GshI4GoLbir6j-SD4YXN7PWJEmHVsyBYg
+
diff --git a/gdata/tests/traces/contacts/group-insert b/gdata/tests/traces/contacts/group-insert
new file mode 100644
index 00000000..10a3b988
--- /dev/null
+++ b/gdata/tests/traces/contacts/group-insert
@@ -0,0 +1,32 @@
+> POST /m8/feeds/groups/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375363883
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 1 (0x8a22a0), SoupSocket 1 (0x8f3190)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAADtjTOJJU3aN2xxS0RFYXiikPITkpt4b3hR1fQ9TbQlx-Cgsdk1AW48YqFLPUdI1ykyKbaS_VSAfv5B_IGEi3Wa1McgCuVz7nIjv_OMYVERFthN0-Nj95PWV19GJMPKDhcOwzN_W2wjFTXSyHmhy6pNoc48jWohDPHCzv6G9jsEj9KOTlHT6F9pGe3H3bGf0ga0s6bPJ6Yv2orycMebH1EDv5crVSPRx6e7Uy50qDXVTJH1zXUXShunNRKTm09H_Tmfwn1fdBVj6GshI4GoLbir6j-SD4YXN7PWJEmHVsyBYg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'>New Group!</title><content type='text'>New Group!</content><category term='http://schemas.google.com/contact/2008#group' scheme='http://schemas.google.com/g/2005#kind'/><gd:extendedProperty name='foobar'>barfoo</gd:extendedProperty></entry>
+
+< HTTP/1.1 201 Created
+< Soup-Debug-Timestamp: 1375363883
+< Soup-Debug: SoupMessage 1 (0x8a22a0)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Thu, 01 Aug 2013 13:31:23 GMT
+< Date: Thu, 01 Aug 2013 13:31:23 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "QnY_ejVSLit7I2A9WhFWE0sJTww."
+< Location: https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0
+< Content-Location: https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;QnY_ejVSLit7I2A9WhFWE0sJTww.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/1fff1bc78f083ca0</id><updated>2013-08-01T13:31:23.842Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:31:23.842Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>New Group!</title><content>New Group!</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0'/><gd:extendedProperty name='foobar'>barfoo</gd:extendedProperty></entry>
+
diff --git a/gdata/tests/traces/contacts/group_insert-async b/gdata/tests/traces/contacts/group_insert-async
new file mode 100644
index 00000000..9d4bf2d0
--- /dev/null
+++ b/gdata/tests/traces/contacts/group_insert-async
@@ -0,0 +1,32 @@
+> POST /m8/feeds/groups/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375363894
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 3 (0x8a2660), SoupSocket 2 (0x8f36d0)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAADtjTOJJU3aN2xxS0RFYXiikPITkpt4b3hR1fQ9TbQlx-Cgsdk1AW48YqFLPUdI1ykyKbaS_VSAfv5B_IGEi3Wa1McgCuVz7nIjv_OMYVERFthN0-Nj95PWV19GJMPKDhcOwzN_W2wjFTXSyHmhy6pNoc48jWohDPHCzv6G9jsEj9KOTlHT6F9pGe3H3bGf0ga0s6bPJ6Yv2orycMebH1EDv5crVSPRx6e7Uy50qDXVTJH1zXUXShunNRKTm09H_Tmfwn1fdBVj6GshI4GoLbir6j-SD4YXN7PWJEmHVsyBYg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'>New Group!</title><content type='text'>New Group!</content><category term='http://schemas.google.com/contact/2008#group' scheme='http://schemas.google.com/g/2005#kind'/><gd:extendedProperty name='foobar'>barfoo</gd:extendedProperty></entry>
+
+< HTTP/1.1 201 Created
+< Soup-Debug-Timestamp: 1375363894
+< Soup-Debug: SoupMessage 3 (0x8a2660)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Thu, 01 Aug 2013 13:31:34 GMT
+< Date: Thu, 01 Aug 2013 13:31:34 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "RXg_fzVSLit7I2A9WhFWE0sJTw0."
+< Location: https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0
+< Content-Location: https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;RXg_fzVSLit7I2A9WhFWE0sJTw0.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/1fff1bc78f083ca0</id><updated>2013-08-01T13:31:34.647Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:31:34.647Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>New Group!</title><content>New Group!</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0'/><gd:extendedProperty name='foobar'>barfoo</gd:extendedProperty></entry>
+
diff --git a/gdata/tests/traces/contacts/group_insert-async-cancellation b/gdata/tests/traces/contacts/group_insert-async-cancellation
new file mode 100644
index 00000000..91aa78d6
--- /dev/null
+++ b/gdata/tests/traces/contacts/group_insert-async-cancellation
@@ -0,0 +1,32 @@
+> POST /m8/feeds/groups/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375363905
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 6 (0x7fffe00299c0), SoupSocket 4 (0x8f3190)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAADtjTOJJU3aN2xxS0RFYXiikPITkpt4b3hR1fQ9TbQlx-Cgsdk1AW48YqFLPUdI1ykyKbaS_VSAfv5B_IGEi3Wa1McgCuVz7nIjv_OMYVERFthN0-Nj95PWV19GJMPKDhcOwzN_W2wjFTXSyHmhy6pNoc48jWohDPHCzv6G9jsEj9KOTlHT6F9pGe3H3bGf0ga0s6bPJ6Yv2orycMebH1EDv5crVSPRx6e7Uy50qDXVTJH1zXUXShunNRKTm09H_Tmfwn1fdBVj6GshI4GoLbir6j-SD4YXN7PWJEmHVsyBYg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'>New Group!</title><content type='text'>New Group!</content><category term='http://schemas.google.com/contact/2008#group' scheme='http://schemas.google.com/g/2005#kind'/><gd:extendedProperty name='foobar'>barfoo</gd:extendedProperty></entry>
+
+< HTTP/1.1 201 Created
+< Soup-Debug-Timestamp: 1375363905
+< Soup-Debug: SoupMessage 6 (0x7fffe00299c0)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Thu, 01 Aug 2013 13:31:45 GMT
+< Date: Thu, 01 Aug 2013 13:31:45 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "RHk5ezVSLit7I2A9WhFWE0sJTgQ."
+< Location: https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0
+< Content-Location: https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;RHk5ezVSLit7I2A9WhFWE0sJTgQ.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/1fff1bc78f083ca0</id><updated>2013-08-01T13:31:45.723Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:31:45.723Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>New Group!</title><content>New Group!</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0'/><gd:extendedProperty name='foobar'>barfoo</gd:extendedProperty></entry>
+
diff --git a/gdata/tests/traces/contacts/photo-add b/gdata/tests/traces/contacts/photo-add
new file mode 100644
index 00000000..b6944b5d
--- /dev/null
+++ b/gdata/tests/traces/contacts/photo-add
@@ -0,0 +1,30 @@
+> PUT /m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362368
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 2 (0x9b1460), SoupSocket 1 (0x8d79a0)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> If-Match: *
+> Content-Type: image/jpeg
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> ÿØÿà
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362369
+< Soup-Debug: SoupMessage 2 (0x9b1460)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< GData-Version: 3.1
+< ETag: "RmtJPnAWSit7I2A9KxQuEiQCNkcWGnsvRA8."
+< Date: Thu, 01 Aug 2013 13:06:09 GMT
+< Expires: Thu, 01 Aug 2013 13:06:09 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;RmtJPnAWSit7I2A9KxQuEiQCNkcWGnsvRA8.&quot;'><id>http://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8</id><updated>2013-08-01T13:05:57.969Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:05:57.969Z</app:edited><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8'/></entry>
+
diff --git a/gdata/tests/traces/contacts/photo-delete b/gdata/tests/traces/contacts/photo-delete
new file mode 100644
index 00000000..6a4f0f90
--- /dev/null
+++ b/gdata/tests/traces/contacts/photo-delete
@@ -0,0 +1,25 @@
+> DELETE /m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362414
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 14 (0x9b1460), SoupSocket 3 (0x8d7b20)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> If-Match: "aBJ3HEkWSit7I2BdXXBUFRhSPF4eKzkSPTo."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362414
+< Soup-Debug: SoupMessage 14 (0x9b1460)
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:06:54 GMT
+< Expires: Thu, 01 Aug 2013 13:06:54 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+
diff --git a/gdata/tests/traces/contacts/photo-get b/gdata/tests/traces/contacts/photo-get
new file mode 100644
index 00000000..bb920af6
--- /dev/null
+++ b/gdata/tests/traces/contacts/photo-get
@@ -0,0 +1,27 @@
+> GET /m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362392
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 8 (0x9b1460), SoupSocket 2 (0x8d7a60)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362392
+< Soup-Debug: SoupMessage 8 (0x9b1460)
+< Content-Type: image/jpeg
+< Expires: Thu, 01 Aug 2013 13:06:32 GMT
+< Date: Thu, 01 Aug 2013 13:06:32 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "LA9-MXQRfCt7I2BuDXFTQzcJIgBFemkvdgg."
+< Transfer-Encoding: chunked
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+<
+< ÿØÿà
+
diff --git a/gdata/tests/traces/contacts/photo_add-async b/gdata/tests/traces/contacts/photo_add-async
new file mode 100644
index 00000000..011402fd
--- /dev/null
+++ b/gdata/tests/traces/contacts/photo_add-async
@@ -0,0 +1,30 @@
+> PUT /m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362425
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 18 (0x9b1640), SoupSocket 4 (0x8d7be0)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> If-Match: *
+> Content-Type: image/jpeg
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> ÿØÿà
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362426
+< Soup-Debug: SoupMessage 18 (0x9b1640)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< GData-Version: 3.1
+< ETag: "RmtJPnAWSit7I2A9KxQuEiQCNkcWGnsvRA8."
+< Date: Thu, 01 Aug 2013 13:07:06 GMT
+< Expires: Thu, 01 Aug 2013 13:07:06 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;RmtJPnAWSit7I2A9KxQuEiQCNkcWGnsvRA8.&quot;'><id>http://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8</id><updated>2013-08-01T13:06:55.321Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:06:55.321Z</app:edited><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8'/></entry>
+
diff --git a/gdata/tests/traces/contacts/photo_add-async-cancellation b/gdata/tests/traces/contacts/photo_add-async-cancellation
new file mode 100644
index 00000000..6247f4e3
--- /dev/null
+++ b/gdata/tests/traces/contacts/photo_add-async-cancellation
@@ -0,0 +1,28 @@
+> PUT /m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362439
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 24 (0x7fffe003cc60), SoupSocket 7 (0x8d7ca0)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> If-Match: "RmtJPnAWSit7I2A9KxQuEiQCNkcWGnsvRA8."
+> Content-Type: image/jpeg
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> ÿØÿà
+
+< HTTP/1.1 412 Precondition Failed
+< Soup-Debug-Timestamp: 1375362439
+< Soup-Debug: SoupMessage 24 (0x7fffe003cc60)
+< Content-Type: text/html; charset=UTF-8
+< Date: Thu, 01 Aug 2013 13:07:19 GMT
+< Expires: Thu, 01 Aug 2013 13:07:19 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< Mismatch: etags = [&quot;RmtJPnAWSit7I2A9KxQuEiQCNkcWGnsvRA8.&quot;], version = [Y1Z3GIaOT23c55tloASGCQ]
+
diff --git a/gdata/tests/traces/contacts/photo_delete-async b/gdata/tests/traces/contacts/photo_delete-async
new file mode 100644
index 00000000..51bf9ed3
--- /dev/null
+++ b/gdata/tests/traces/contacts/photo_delete-async
@@ -0,0 +1,25 @@
+> DELETE /m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362507
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 44 (0x7fffd8012c70), SoupSocket 12 (0x8d7d60)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> If-Match: "Ug8gAXAjSit7I2BBEEQJSjFPBQwfNDlxbxc."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362507
+< Soup-Debug: SoupMessage 44 (0x7fffd8012c70)
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:08:27 GMT
+< Expires: Thu, 01 Aug 2013 13:08:27 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+
diff --git a/gdata/tests/traces/contacts/photo_delete-async-cancellation b/gdata/tests/traces/contacts/photo_delete-async-cancellation
new file mode 100644
index 00000000..a5c40da2
--- /dev/null
+++ b/gdata/tests/traces/contacts/photo_delete-async-cancellation
@@ -0,0 +1,34 @@
+> DELETE /m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362290
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 52 (0x7d2e50), SoupSocket 15 (0x70d480)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAABD9I2qzuaphzCwqlPN1nD-UVlDvXxpCfZZs2DpQs8CyuKugZr-827LLW6Se0g49UTlhYYurHxHCMNk3l9iJjeGlq6ZYd51VYAKkGzvyTnwj1fvWfFIkrj53HVYeTy0ER0oRBCi1BISjJtxb_EeYStuDF4mfHC9FSeHXqNUW_Qf3gtQl1WytVURmYC_H89IVrQB8UOZEzZXgjh3jNv1w9cQv8j3_dszdG0F6dLOehzkyPgckEHapxSOoFFvUzbawNaGQcNgFx1RVALkHKkBga-7PnPzzUEMfj7snBhGt53LQ
+> GData-Version: 3
+> If-Match: "VDd2MAY7Sit7I2BuKnEXWjN4L2wpH1IffSY."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+> Soup-Debug-Timestamp: 1375362290
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 52 (0x7d2e50), SoupSocket 16 (0x70d480), restarted
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAABD9I2qzuaphzCwqlPN1nD-UVlDvXxpCfZZs2DpQs8CyuKugZr-827LLW6Se0g49UTlhYYurHxHCMNk3l9iJjeGlq6ZYd51VYAKkGzvyTnwj1fvWfFIkrj53HVYeTy0ER0oRBCi1BISjJtxb_EeYStuDF4mfHC9FSeHXqNUW_Qf3gtQl1WytVURmYC_H89IVrQB8UOZEzZXgjh3jNv1w9cQv8j3_dszdG0F6dLOehzkyPgckEHapxSOoFFvUzbawNaGQcNgFx1RVALkHKkBga-7PnPzzUEMfj7snBhGt53LQ
+> GData-Version: 3
+> If-Match: "VDd2MAY7Sit7I2BuKnEXWjN4L2wpH1IffSY."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362290
+< Soup-Debug: SoupMessage 52 (0x7d2e50)
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:04:50 GMT
+< Expires: Thu, 01 Aug 2013 13:04:50 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+
diff --git a/gdata/tests/traces/contacts/photo_get-async b/gdata/tests/traces/contacts/photo_get-async
new file mode 100644
index 00000000..1004407d
--- /dev/null
+++ b/gdata/tests/traces/contacts/photo_get-async
@@ -0,0 +1,27 @@
+> GET /m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362461
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 30 (0x7fffe003ce40), SoupSocket 8 (0x8d7d60)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362461
+< Soup-Debug: SoupMessage 30 (0x7fffe003ce40)
+< Content-Type: image/jpeg
+< Expires: Thu, 01 Aug 2013 13:07:41 GMT
+< Date: Thu, 01 Aug 2013 13:07:41 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "VA1zYFIFWit7I2BUEVQUegRNQ3Y_Fl0Df1s."
+< Transfer-Encoding: chunked
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+<
+< ÿØÿà
+
diff --git a/gdata/tests/traces/contacts/photo_get-async-cancellation b/gdata/tests/traces/contacts/photo_get-async-cancellation
new file mode 100644
index 00000000..307e66f7
--- /dev/null
+++ b/gdata/tests/traces/contacts/photo_get-async-cancellation
@@ -0,0 +1,27 @@
+> GET /m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362484
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 38 (0x7fffd8012a90), SoupSocket 11 (0x8d7e20)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362484
+< Soup-Debug: SoupMessage 38 (0x7fffd8012a90)
+< Content-Type: image/jpeg
+< Expires: Thu, 01 Aug 2013 13:08:04 GMT
+< Date: Thu, 01 Aug 2013 13:08:04 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "cG9-DmMFfCt7I2BtXU1XFBwMAHUoK1h4YCs."
+< Transfer-Encoding: chunked
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+<
+< ÿØÿà
+
diff --git a/gdata/tests/traces/contacts/query-all-contacts b/gdata/tests/traces/contacts/query-all-contacts
new file mode 100644
index 00000000..69460352
--- /dev/null
+++ b/gdata/tests/traces/contacts/query-all-contacts
@@ -0,0 +1,28 @@
+> GET /m8/feeds/contacts/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375253717
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 10 (0x7d28c0), SoupSocket 5 (0x72a550)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375253717
+< Soup-Debug: SoupMessage 10 (0x7d28c0)
+< Content-Type: application/atom+xml; charset=UTF-8; type=feed
+< Expires: Wed, 31 Jul 2013 06:55:17 GMT
+< Date: Wed, 31 Jul 2013 06:55:17 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: W/"CUAFRn4zfit7I2A9WhFWEkg."
+< Last-Modified: Wed, 31 Jul 2013 06:55:17 GMT
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/&quot;CUAFRn4zfit7I2A9WhFWEkg.&quot;'><id>libgdata.test@googlemail.com</id><updated>2013-07-31T06:55:17.086Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title>GData Test's Contacts</title><link rel='alternate' type='text/html' href='http://www.google.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#batch' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/batch'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full?max-results=25'/><author><name>GData Test</name><email>libgdata.test@googlemail.com</email></author><generator version='1.0' uri='http://www.google.com/m8/feeds'>Contacts</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='&quot;QH86cDVSLit7I2A9WhFWEkgJQAU.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/1660ed0d098026ce</id><updated>2013-07-31T06:55:11.118Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:11.118Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/1660ed0d098026ce'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/1660ed0d098026ce'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/1660ed0d098026ce'/><gContact:nickname>Test Contact 1</gContact:nickname></entry><entry gd:etag='&quot;QHo5eTVSLit7I2A9WhFWEkgJQAU.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/359e540f0902d2fd</id><updated>2013-07-31T06:55:11.421Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:11.421Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/359e540f0902d2fd'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/359e540f0902d2fd'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/359e540f0902d2fd'/><gContact:nickname>Test Contact 2</gContact:nickname></entry><entry gd:etag='&quot;QHY4fDVSLyt7I2A9WhFWEkgJQAU.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/667e01988b79ac61</id><updated>2013-07-31T06:55:11.834Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:11.834Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/667e01988b79ac61'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/667e01988b79ac61'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/667e01988b79ac61'/><gContact:nickname>Test Contact 3</gContact:nickname></entry></feed>
+
diff --git a/gdata/tests/traces/contacts/query-all-contacts-async-progress-closure b/gdata/tests/traces/contacts/query-all-contacts-async-progress-closure
new file mode 100644
index 00000000..b33af77f
--- /dev/null
+++ b/gdata/tests/traces/contacts/query-all-contacts-async-progress-closure
@@ -0,0 +1,28 @@
+> GET /m8/feeds/contacts/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375253740
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 33 (0x7fffe0026660), SoupSocket 16 (0x7fffe0028190)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375253740
+< Soup-Debug: SoupMessage 33 (0x7fffe0026660)
+< Content-Type: application/atom+xml; charset=UTF-8; type=feed
+< Expires: Wed, 31 Jul 2013 06:55:40 GMT
+< Date: Wed, 31 Jul 2013 06:55:40 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: W/"CUAAQX8-eit7I2A9WhFWEkg."
+< Last-Modified: Wed, 31 Jul 2013 06:55:40 GMT
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/&quot;CUAAQX8-eit7I2A9WhFWEkg.&quot;'><id>libgdata.test@googlemail.com</id><updated>2013-07-31T06:55:40.152Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title>GData Test's Contacts</title><link rel='alternate' type='text/html' href='http://www.google.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#batch' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/batch'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full?max-results=25'/><author><name>GData Test</name><email>libgdata.test@googlemail.com</email></author><generator version='1.0' uri='http://www.google.com/m8/feeds'>Contacts</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='&quot;RXw9fjVSLit7I2A9WhFWEkgJQAc.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/169313448d21bd4c</id><updated>2013-07-31T06:55:34.266Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:34.266Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/169313448d21bd4c'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/169313448d21bd4c'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/169313448d21bd4c'/><gContact:nickname>Test Contact 1</gContact:nickname></entry><entry gd:etag='&quot;RXg_eDVSLit7I2A9WhFWEkgJQAc.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/436c264a097a0e67</id><updated>2013-07-31T06:55:34.640Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:34.640Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/436c264a097a0e67'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/436c264a097a0e67'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/436c264a097a0e67'/><gContact:nickname>Test Contact 2</gContact:nickname></entry><entry gd:etag='&quot;RXc7cDVSLit7I2A9WhFWEkgJQAc.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/4e3d4cd30d411fa8</id><updated>2013-07-31T06:55:34.908Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:34.908Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/4e3d4cd30d411fa8'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/4e3d4cd30d411fa8'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/4e3d4cd30d411fa8'/><gContact:nickname>Test Contact 3</gContact:nickname></entry></feed>
+
diff --git a/gdata/tests/traces/contacts/query-all-groups b/gdata/tests/traces/contacts/query-all-groups
new file mode 100644
index 00000000..7d1c9f6e
--- /dev/null
+++ b/gdata/tests/traces/contacts/query-all-groups
@@ -0,0 +1,28 @@
+> GET /m8/feeds/groups/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375363445
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 4 (0x844280), SoupSocket 3 (0x8f3320)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAA8mPvhNGE-jJP2si5Hm0QdulqULfifDPolWHjOKLlxd2YLRzsE7It5Cr31q7NYMk1fYHKYBOoOFHZtlqyPu2_0ui_i2GKjj5ltAZxojvss1QJriJ5cdCRtMfIGV620jdp6BshoRtUYoCVLwcTLeyniROXrfyIVaZF7cn2z6dZ2D_6zi45FNAaR57jS4wTDt50MSEHYaiPQVvkuWhhqGir6M0igoQ67LHHO76-MnLu69LB-oi-yZIlCRTzshjg0vFebEbvHGtiardyGk1gs3RWb9_9OroE_zLLdLjMd12GSrQ
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375363445
+< Soup-Debug: SoupMessage 4 (0x844280)
+< Content-Type: application/atom+xml; charset=UTF-8; type=feed
+< Expires: Thu, 01 Aug 2013 13:24:05 GMT
+< Date: Thu, 01 Aug 2013 13:24:05 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: W/"CUMARHs5fCt7I2A9WhFWE0s."
+< Last-Modified: Thu, 01 Aug 2013 13:24:05 GMT
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/&quot;CUMARHs5fCt7I2A9WhFWE0s.&quot;'><id>libgdata.test@googlemail.com</id><updated>2013-08-01T13:24:05.524Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>GData Test's Contact Groups</title><link rel='alternate' type='text/html' href='http://www.google.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#batch' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/batch'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full?max-results=25'/><author><name>GData Test</name><email>libgdata.test@googlemail.com</email></author><generator version='1.0' uri='http://www.google.com/m8/feeds'>Contacts</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/6</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: My Contacts</title><content>System Group: My Contacts</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/6'/><gContact:systemGroup id='Contacts'/></entry><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/d</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: Friends</title><content>System Group: Friends</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/d'/><gContact:systemGroup id='Friends'/></entry><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/e</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: Family</title><content>System Group: Family</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/e'/><gContact:systemGroup id='Family'/></entry><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/f</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: Coworkers</title><content>System Group: Coworkers</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/f'/><gContact:systemGroup id='Coworkers'/></entry><entry gd:etag='&quot;RH05eDVSLit7I2A9WhFWE0sJQwc.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/54e3ce689463892</id><updated>2013-08-01T13:23:55.320Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:23:55.320Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 3</title><content>Test Group 3</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/54e3ce689463892'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/54e3ce689463892'/></entry><entry gd:etag='&quot;RH46ejVSLit7I2A9WhFWE0sJQwc.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/26cfdebe0a0840fe</id><updated>2013-08-01T13:23:55.012Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:23:55.012Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 2</title><content>Test Group 2</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/26cfdebe0a0840fe'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/26cfdebe0a0840fe'/></entry><entry gd:etag='&quot;RXk4eTVSLit7I2A9WhFWE0sJQwc.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/79e69f5a8f487596</id><updated>2013-08-01T13:23:54.731Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:23:54.731Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 1</title><content>Test Group 1</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/79e69f5a8f487596'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/79e69f5a8f487596'/></entry></feed>
+
diff --git a/gdata/tests/traces/contacts/query-all-groups-async-progress-closure b/gdata/tests/traces/contacts/query-all-groups-async-progress-closure
new file mode 100644
index 00000000..21ca1747
--- /dev/null
+++ b/gdata/tests/traces/contacts/query-all-groups-async-progress-closure
@@ -0,0 +1,28 @@
+> GET /m8/feeds/groups/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375363469
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 18 (0x7fffe003d8d0), SoupSocket 9 (0x8f34a0)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAA8mPvhNGE-jJP2si5Hm0QdulqULfifDPolWHjOKLlxd2YLRzsE7It5Cr31q7NYMk1fYHKYBOoOFHZtlqyPu2_0ui_i2GKjj5ltAZxojvss1QJriJ5cdCRtMfIGV620jdp6BshoRtUYoCVLwcTLeyniROXrfyIVaZF7cn2z6dZ2D_6zi45FNAaR57jS4wTDt50MSEHYaiPQVvkuWhhqGir6M0igoQ67LHHO76-MnLu69LB-oi-yZIlCRTzshjg0vFebEbvHGtiardyGk1gs3RWb9_9OroE_zLLdLjMd12GSrQ
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375363469
+< Soup-Debug: SoupMessage 18 (0x7fffe003d8d0)
+< Content-Type: application/atom+xml; charset=UTF-8; type=feed
+< Expires: Thu, 01 Aug 2013 13:24:29 GMT
+< Date: Thu, 01 Aug 2013 13:24:29 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: W/"CUMCSH06cCt7I2A9WhFWE0s."
+< Last-Modified: Thu, 01 Aug 2013 13:24:29 GMT
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/&quot;CUMCSH06cCt7I2A9WhFWE0s.&quot;'><id>libgdata.test@googlemail.com</id><updated>2013-08-01T13:24:29.318Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>GData Test's Contact Groups</title><link rel='alternate' type='text/html' href='http://www.google.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#batch' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/batch'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full?max-results=25'/><author><name>GData Test</name><email>libgdata.test@googlemail.com</email></author><generator version='1.0' uri='http://www.google.com/m8/feeds'>Contacts</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/6</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: My Contacts</title><content>System Group: My Contacts</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/6'/><gContact:systemGroup id='Contacts'/></entry><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/d</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: Friends</title><content>System Group: Friends</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/d'/><gContact:systemGroup id='Friends'/></entry><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/e</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: Family</title><content>System Group: Family</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/e'/><gContact:systemGroup id='Family'/></entry><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/f</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: Coworkers</title><content>System Group: Coworkers</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/f'/><gContact:systemGroup id='Coworkers'/></entry><entry gd:etag='&quot;SXkzeTVSLit7I2A9WhFWE0sJQwE.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/234eba4c0e7f7b56</id><updated>2013-08-01T13:24:18.781Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:24:18.781Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 2</title><content>Test Group 2</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/234eba4c0e7f7b56'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/234eba4c0e7f7b56'/></entry><entry gd:etag='&quot;SXs4fzVSLit7I2A9WhFWE0sJQwE.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/6558a3a30cb947af</id><updated>2013-08-01T13:24:18.537Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:24:18.537Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 1</title><content>Test Group 1</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/6558a3a30cb947af'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/6558a3a30cb947af'/></entry><entry gd:etag='&quot;SH48fzVSLit7I2A9WhFWE0sJQwE.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/7810274a093ad5a1</id><updated>2013-08-01T13:24:19.077Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:24:19.077Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 3</title><content>Test Group 3</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/7810274a093ad5a1'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/7810274a093ad5a1'/></entry></feed>
+
diff --git a/gdata/tests/traces/contacts/query_all_contacts-async b/gdata/tests/traces/contacts/query_all_contacts-async
new file mode 100644
index 00000000..4f4cd4f3
--- /dev/null
+++ b/gdata/tests/traces/contacts/query_all_contacts-async
@@ -0,0 +1,28 @@
+> GET /m8/feeds/contacts/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375253724
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 17 (0x7fffe0026660), SoupSocket 8 (0x72a250)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375253724
+< Soup-Debug: SoupMessage 17 (0x7fffe0026660)
+< Content-Type: application/atom+xml; charset=UTF-8; type=feed
+< Expires: Wed, 31 Jul 2013 06:55:24 GMT
+< Date: Wed, 31 Jul 2013 06:55:24 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: W/"CUAGRXo-fCt7I2A9WhFWEkg."
+< Last-Modified: Wed, 31 Jul 2013 06:55:24 GMT
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/&quot;CUAGRXo-fCt7I2A9WhFWEkg.&quot;'><id>libgdata.test@googlemail.com</id><updated>2013-07-31T06:55:24.454Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title>GData Test's Contacts</title><link rel='alternate' type='text/html' href='http://www.google.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#batch' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/batch'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full?max-results=25'/><author><name>GData Test</name><email>libgdata.test@googlemail.com</email></author><generator version='1.0' uri='http://www.google.com/m8/feeds'>Contacts</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='&quot;SXo6cTVSLit7I2A9WhFWEkgJQAU.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/276293b50c9c9c90</id><updated>2013-07-31T06:55:18.419Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:18.419Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/276293b50c9c9c90'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/276293b50c9c9c90'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/276293b50c9c9c90'/><gContact:nickname>Test Contact 1</gContact:nickname></entry><entry gd:etag='&quot;SH8zfzVSLit7I2A9WhFWEkgJQAU.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/5383be18886ab2dd</id><updated>2013-07-31T06:55:19.187Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:19.187Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/5383be18886ab2dd'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/5383be18886ab2dd'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/5383be18886ab2dd'/><gContact:nickname>Test Contact 3</gContact:nickname></entry><entry gd:etag='&quot;SXY6fDVSLit7I2A9WhFWEkgJQAU.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/7164f0b208a6afbe</id><updated>2013-07-31T06:55:18.814Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:18.814Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/7164f0b208a6afbe'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/7164f0b208a6afbe'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/7164f0b208a6afbe'/><gContact:nickname>Test Contact 2</gContact:nickname></entry></feed>
+
diff --git a/gdata/tests/traces/contacts/query_all_contacts-async-cancellation b/gdata/tests/traces/contacts/query_all_contacts-async-cancellation
new file mode 100644
index 00000000..3b992450
--- /dev/null
+++ b/gdata/tests/traces/contacts/query_all_contacts-async-cancellation
@@ -0,0 +1,28 @@
+> GET /m8/feeds/contacts/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375253733
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 26 (0x7fffe4002ac0), SoupSocket 13 (0x7fffe0028610)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375253733
+< Soup-Debug: SoupMessage 26 (0x7fffe4002ac0)
+< Content-Type: application/atom+xml; charset=UTF-8; type=feed
+< Expires: Wed, 31 Jul 2013 06:55:33 GMT
+< Date: Wed, 31 Jul 2013 06:55:33 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: W/"CUAHQn4ycCt7I2A9WhFWEkg."
+< Last-Modified: Wed, 31 Jul 2013 06:55:33 GMT
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/&quot;CUAHQn4ycCt7I2A9WhFWEkg.&quot;'><id>libgdata.test@googlemail.com</id><updated>2013-07-31T06:55:33.098Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title>GData Test's Contacts</title><link rel='alternate' type='text/html' href='http://www.google.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#batch' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/batch'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full?max-results=25'/><author><name>GData Test</name><email>libgdata.test@googlemail.com</email></author><generator version='1.0' uri='http://www.google.com/m8/feeds'>Contacts</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='&quot;RHk4fzVSLit7I2A9WhFWEkgJQAY.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/3ccb56000a5f60e9</id><updated>2013-07-31T06:55:25.737Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:25.737Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/3ccb56000a5f60e9'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/3ccb56000a5f60e9'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/3ccb56000a5f60e9'/><gContact:nickname>Test Contact 1</gContact:nickname></entry><entry gd:etag='&quot;R3gzfTVSLit7I2A9WhFWEkgJQAY.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/5f1e7d538ff8fc72</id><updated>2013-07-31T06:55:26.685Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:26.685Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/5f1e7d538ff8fc72'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/5f1e7d538ff8fc72'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/5f1e7d538ff8fc72'/><gContact:nickname>Test Contact 3</gContact:nickname></entry><entry gd:etag='&quot;R384fzVSLit7I2A9WhFWEkgJQAY.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/6c6edb5e0ff91e8f</id><updated>2013-07-31T06:55:26.137Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:26.137Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/6c6edb5e0ff91e8f'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/6c6edb5e0ff91e8f'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/6c6edb5e0ff91e8f'/><gContact:nickname>Test Contact 2</gContact:nickname></entry></feed>
+
diff --git a/gdata/tests/traces/contacts/query_all_groups-async b/gdata/tests/traces/contacts/query_all_groups-async
new file mode 100644
index 00000000..6cc1446a
--- /dev/null
+++ b/gdata/tests/traces/contacts/query_all_groups-async
@@ -0,0 +1,28 @@
+> GET /m8/feeds/groups/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375363457
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 11 (0x844640), SoupSocket 6 (0x8f3560)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAA8mPvhNGE-jJP2si5Hm0QdulqULfifDPolWHjOKLlxd2YLRzsE7It5Cr31q7NYMk1fYHKYBOoOFHZtlqyPu2_0ui_i2GKjj5ltAZxojvss1QJriJ5cdCRtMfIGV620jdp6BshoRtUYoCVLwcTLeyniROXrfyIVaZF7cn2z6dZ2D_6zi45FNAaR57jS4wTDt50MSEHYaiPQVvkuWhhqGir6M0igoQ67LHHO76-MnLu69LB-oi-yZIlCRTzshjg0vFebEbvHGtiardyGk1gs3RWb9_9OroE_zLLdLjMd12GSrQ
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375363457
+< Soup-Debug: SoupMessage 11 (0x844640)
+< Content-Type: application/atom+xml; charset=UTF-8; type=feed
+< Expires: Thu, 01 Aug 2013 13:24:17 GMT
+< Date: Thu, 01 Aug 2013 13:24:17 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: W/"CUMBRnw9cSt7I2A9WhFWE0s."
+< Last-Modified: Thu, 01 Aug 2013 13:24:17 GMT
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/&quot;CUMBRnw9cSt7I2A9WhFWE0s.&quot;'><id>libgdata.test@googlemail.com</id><updated>2013-08-01T13:24:17.269Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>GData Test's Contact Groups</title><link rel='alternate' type='text/html' href='http://www.google.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#batch' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/batch'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full?max-results=25'/><author><name>GData Test</name><email>libgdata.test@googlemail.com</email></author><generator version='1.0' uri='http://www.google.com/m8/feeds'>Contacts</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/6</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: My Contacts</title><content>System Group: My Contacts</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/6'/><gContact:systemGroup id='Contacts'/></entry><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/d</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: Friends</title><content>System Group: Friends</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/d'/><gContact:systemGroup id='Friends'/></entry><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/e</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: Family</title><content>System Group: Family</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/e'/><gContact:systemGroup id='Family'/></entry><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/f</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: Coworkers</title><content>System Group: Coworkers</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/f'/><gContact:systemGroup id='Coworkers'/></entry><entry gd:etag='&quot;Rn4yfTVSLyt7I2A9WhFWE0sJQwA.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/377767bb09f90f34</id><updated>2013-08-01T13:24:07.095Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:24:07.095Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 3</title><content>Test Group 3</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/377767bb09f90f34'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/377767bb09f90f34'/></entry><entry gd:etag='&quot;R3YzezVSLit7I2A9WhFWE0sJQwA.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/388305830838ca36</id><updated>2013-08-01T13:24:06.883Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:24:06.883Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 2</title><content>Test Group 2</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/388305830838ca36'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/388305830838ca36'/></entry><entry gd:etag='&quot;R3g7cTVSLit7I2A9WhFWE0sJQwA.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/6046a1160bbddc7a</id><updated>2013-08-01T13:24:06.609Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:24:06.609Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 1</title><content>Test Group 1</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/6046a1160bbddc7a'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/6046a1160bbddc7a'/></entry></feed>
+
diff --git a/gdata/tests/traces/contacts/query_all_groups-async-cancellation b/gdata/tests/traces/contacts/query_all_groups-async-cancellation
new file mode 100644
index 00000000..d6884bbe
--- /dev/null
+++ b/gdata/tests/traces/contacts/query_all_groups-async-cancellation
@@ -0,0 +1,28 @@
+> GET /m8/feeds/groups/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375363481
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 27 (0x7fffe003dc90), SoupSocket 13 (0x8f3320)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAA8mPvhNGE-jJP2si5Hm0QdulqULfifDPolWHjOKLlxd2YLRzsE7It5Cr31q7NYMk1fYHKYBOoOFHZtlqyPu2_0ui_i2GKjj5ltAZxojvss1QJriJ5cdCRtMfIGV620jdp6BshoRtUYoCVLwcTLeyniROXrfyIVaZF7cn2z6dZ2D_6zi45FNAaR57jS4wTDt50MSEHYaiPQVvkuWhhqGir6M0igoQ67LHHO76-MnLu69LB-oi-yZIlCRTzshjg0vFebEbvHGtiardyGk1gs3RWb9_9OroE_zLLdLjMd12GSrQ
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375363482
+< Soup-Debug: SoupMessage 27 (0x7fffe003dc90)
+< Content-Type: application/atom+xml; charset=UTF-8; type=feed
+< Expires: Thu, 01 Aug 2013 13:24:41 GMT
+< Date: Thu, 01 Aug 2013 13:24:41 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: W/"CUMMQHczeit7I2A9WhFWE0s."
+< Last-Modified: Thu, 01 Aug 2013 13:24:41 GMT
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/&quot;CUMMQHczeit7I2A9WhFWE0s.&quot;'><id>libgdata.test@googlemail.com</id><updated>2013-08-01T13:24:41.982Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>GData Test's Contact Groups</title><link rel='alternate' type='text/html' href='http://www.google.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full'/><link rel='http://schemas.google.com/g/2005#batch' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/batch'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full?max-results=25'/><author><name>GData Test</name><email>libgdata.test@googlemail.com</email></author><generator version='1.0' uri='http://www.google.com/m8/feeds'>Contacts</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/6</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: My Contacts</title><content>System Group: My Contacts</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/6'/><gContact:systemGroup id='Contacts'/></entry><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/d</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: Friends</title><content>System Group: Friends</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/d'/><gContact:systemGroup id='Friends'/></entry><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/e</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: Family</title><content>System Group: Family</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/e'/><gContact:systemGroup id='Family'/></entry><entry gd:etag='&quot;YDwreyM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/f</id><updated>1970-01-01T00:00:00.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>System Group: Coworkers</title><content>System Group: Coworkers</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/f'/><gContact:systemGroup id='Coworkers'/></entry><entry gd:etag='&quot;QXYzfDVSLit7I2A9WhFWE0sJQwM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/2fde485a09fdbe59</id><updated>2013-08-01T13:24:30.884Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:24:30.884Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 3</title><content>Test Group 3</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/2fde485a09fdbe59'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/2fde485a09fdbe59'/></entry><entry gd:etag='&quot;QXg9cDVSLit7I2A9WhFWE0sJQwM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/31334ff58d460e9c</id><updated>2013-08-01T13:24:30.668Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:24:30.668Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 2</title><content>Test Group 2</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/31334ff58d460e9c'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/31334ff58d460e9c'/></entry><entry gd:etag='&quot;QXo9ezVSLit7I2A9WhFWE0sJQwM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/4acbf0b68dc2aa64</id><updated>2013-08-01T13:24:30.463Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:24:30.463Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 1</title><content>Test Group 1</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/4acbf0b68dc2aa64'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/4acbf0b68dc2aa64'/></entry></feed>
+
diff --git a/gdata/tests/traces/contacts/setup-batch-async b/gdata/tests/traces/contacts/setup-batch-async
new file mode 100644
index 00000000..7884e7cf
--- /dev/null
+++ b/gdata/tests/traces/contacts/setup-batch-async
@@ -0,0 +1,32 @@
+> POST /m8/feeds/contacts/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375362977
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 7 (0x8a20c0), SoupSocket 6 (0x8f3550)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAACEVu1_bRDNe9RgSD9ZBpOd3wrIlCGMT5j4obkMZr9xzaecCbh7Ad88EHTPx_-XXUENDehvQ4HWMlCeXcfB9dwJ3b18s7PWnls2aHGTGVYopRnLzMKvEdl4E2cyU4OZuMcgVVLVwro91w4JG_RSnZmd8J7IEj83YnoNbBiv4x8yjOcPb5WO3wEoyNzGKwcPvEu9b_NOF7EsbiC0nIOY4Lr4MZCkFzK3iUr1OKGLXZHB2HOFyuJHaMDpIUfubYW4M3w1YlkGBCBCfxr18lGeMluMVL2D9u6rELYQwCWwBkeyeg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'>Fooish Bar</title><category term='http://schemas.google.com/contact/2008#contact' scheme='http://schemas.google.com/g/2005#kind'/><gd:name><gd:fullName>Fooish Bar</gd:fullName></gd:name></entry>
+
+< HTTP/1.1 201 Created
+< Soup-Debug-Timestamp: 1375362977
+< Soup-Debug: SoupMessage 7 (0x8a20c0)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Thu, 01 Aug 2013 13:16:17 GMT
+< Date: Thu, 01 Aug 2013 13:16:17 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "Rnw_eDVSLit7I2A9WhFWE0sITgM."
+< Location: https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/545ea63d0c76f4ac
+< Content-Location: https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/545ea63d0c76f4ac
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;Rnw_eDVSLit7I2A9WhFWE0sITgM.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/545ea63d0c76f4ac</id><updated>2013-08-01T13:16:17.240Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:16:17.240Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title>Fooish Bar</title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/545ea63d0c76f4ac'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/545ea63d0c76f4ac'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/545ea63d0c76f4ac'/><gd:name><gd:fullName>Fooish Bar</gd:fullName><gd:givenName>Fooish</gd:givenName><gd:familyName>Bar</gd:familyName></gd:name></entry>
+
diff --git a/gdata/tests/traces/contacts/setup-query-all-contacts b/gdata/tests/traces/contacts/setup-query-all-contacts
new file mode 100644
index 00000000..dddde169
--- /dev/null
+++ b/gdata/tests/traces/contacts/setup-query-all-contacts
@@ -0,0 +1,96 @@
+> POST /m8/feeds/contacts/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375253734
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 30 (0x7d2c80), SoupSocket 14 (0x72a310)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'></title><category term='http://schemas.google.com/contact/2008#contact' scheme='http://schemas.google.com/g/2005#kind'/><gd:name/><gContact:nickname>Test Contact 1</gContact:nickname></entry>
+
+< HTTP/1.1 201 Created
+< Soup-Debug-Timestamp: 1375253734
+< Soup-Debug: SoupMessage 30 (0x7d2c80)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Wed, 31 Jul 2013 06:55:34 GMT
+< Date: Wed, 31 Jul 2013 06:55:34 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "RXw9fjVSLit7I2A9WhFWEkgJQAc."
+< Location: https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/169313448d21bd4c
+< Content-Location: https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/169313448d21bd4c
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;RXw9fjVSLit7I2A9WhFWEkgJQAc.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/169313448d21bd4c</id><updated>2013-07-31T06:55:34.266Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:34.266Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/169313448d21bd4c'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/169313448d21bd4c'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/169313448d21bd4c'/><gContact:nickname>Test Contact 1</gContact:nickname></entry>
+
+> POST /m8/feeds/contacts/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375253734
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 31 (0x7d2aa0), SoupSocket 15 (0x72a250)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'></title><category term='http://schemas.google.com/contact/2008#contact' scheme='http://schemas.google.com/g/2005#kind'/><gd:name/><gContact:nickname>Test Contact 2</gContact:nickname></entry>
+
+< HTTP/1.1 201 Created
+< Soup-Debug-Timestamp: 1375253734
+< Soup-Debug: SoupMessage 31 (0x7d2aa0)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Wed, 31 Jul 2013 06:55:34 GMT
+< Date: Wed, 31 Jul 2013 06:55:34 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "RXg_eDVSLit7I2A9WhFWEkgJQAc."
+< Location: https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/436c264a097a0e67
+< Content-Location: https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/436c264a097a0e67
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;RXg_eDVSLit7I2A9WhFWEkgJQAc.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/436c264a097a0e67</id><updated>2013-07-31T06:55:34.640Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:34.640Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/436c264a097a0e67'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/436c264a097a0e67'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/436c264a097a0e67'/><gContact:nickname>Test Contact 2</gContact:nickname></entry>
+
+> POST /m8/feeds/contacts/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375253734
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 32 (0x7d28c0), SoupSocket 16 (0x7fffe0028190)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'></title><category term='http://schemas.google.com/contact/2008#contact' scheme='http://schemas.google.com/g/2005#kind'/><gd:name/><gContact:nickname>Test Contact 3</gContact:nickname></entry>
+
+< HTTP/1.1 201 Created
+< Soup-Debug-Timestamp: 1375253735
+< Soup-Debug: SoupMessage 32 (0x7d28c0)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Wed, 31 Jul 2013 06:55:34 GMT
+< Date: Wed, 31 Jul 2013 06:55:34 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "RXc7cDVSLit7I2A9WhFWEkgJQAc."
+< Location: https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/4e3d4cd30d411fa8
+< Content-Location: https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/4e3d4cd30d411fa8
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;RXc7cDVSLit7I2A9WhFWEkgJQAc.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/4e3d4cd30d411fa8</id><updated>2013-07-31T06:55:34.908Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-07-31T06:55:34.908Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/4e3d4cd30d411fa8'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/4e3d4cd30d411fa8'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/4e3d4cd30d411fa8'/><gContact:nickname>Test Contact 3</gContact:nickname></entry>
+
diff --git a/gdata/tests/traces/contacts/setup-query-all-groups b/gdata/tests/traces/contacts/setup-query-all-groups
new file mode 100644
index 00000000..ab0331fa
--- /dev/null
+++ b/gdata/tests/traces/contacts/setup-query-all-groups
@@ -0,0 +1,96 @@
+> POST /m8/feeds/groups/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375363470
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 22 (0x844460), SoupSocket 10 (0x8f33e0)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAA8mPvhNGE-jJP2si5Hm0QdulqULfifDPolWHjOKLlxd2YLRzsE7It5Cr31q7NYMk1fYHKYBOoOFHZtlqyPu2_0ui_i2GKjj5ltAZxojvss1QJriJ5cdCRtMfIGV620jdp6BshoRtUYoCVLwcTLeyniROXrfyIVaZF7cn2z6dZ2D_6zi45FNAaR57jS4wTDt50MSEHYaiPQVvkuWhhqGir6M0igoQ67LHHO76-MnLu69LB-oi-yZIlCRTzshjg0vFebEbvHGtiardyGk1gs3RWb9_9OroE_zLLdLjMd12GSrQ
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'>Test Group 1</title><content type='text'>Test Group 1</content><category term='http://schemas.google.com/contact/2008#group' scheme='http://schemas.google.com/g/2005#kind'/></entry>
+
+< HTTP/1.1 201 Created
+< Soup-Debug-Timestamp: 1375363470
+< Soup-Debug: SoupMessage 22 (0x844460)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Thu, 01 Aug 2013 13:24:30 GMT
+< Date: Thu, 01 Aug 2013 13:24:30 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "QXo9ezVSLit7I2A9WhFWE0sJQwM."
+< Location: https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/4acbf0b68dc2aa64
+< Content-Location: https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/4acbf0b68dc2aa64
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;QXo9ezVSLit7I2A9WhFWE0sJQwM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/4acbf0b68dc2aa64</id><updated>2013-08-01T13:24:30.463Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:24:30.463Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 1</title><content>Test Group 1</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/4acbf0b68dc2aa64'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/4acbf0b68dc2aa64'/></entry>
+
+> POST /m8/feeds/groups/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375363470
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 23 (0x844460), SoupSocket 11 (0x8f3320)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAA8mPvhNGE-jJP2si5Hm0QdulqULfifDPolWHjOKLlxd2YLRzsE7It5Cr31q7NYMk1fYHKYBOoOFHZtlqyPu2_0ui_i2GKjj5ltAZxojvss1QJriJ5cdCRtMfIGV620jdp6BshoRtUYoCVLwcTLeyniROXrfyIVaZF7cn2z6dZ2D_6zi45FNAaR57jS4wTDt50MSEHYaiPQVvkuWhhqGir6M0igoQ67LHHO76-MnLu69LB-oi-yZIlCRTzshjg0vFebEbvHGtiardyGk1gs3RWb9_9OroE_zLLdLjMd12GSrQ
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'>Test Group 2</title><content type='text'>Test Group 2</content><category term='http://schemas.google.com/contact/2008#group' scheme='http://schemas.google.com/g/2005#kind'/></entry>
+
+< HTTP/1.1 201 Created
+< Soup-Debug-Timestamp: 1375363470
+< Soup-Debug: SoupMessage 23 (0x844460)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Thu, 01 Aug 2013 13:24:30 GMT
+< Date: Thu, 01 Aug 2013 13:24:30 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "QXg9cDVSLit7I2A9WhFWE0sJQwM."
+< Location: https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/31334ff58d460e9c
+< Content-Location: https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/31334ff58d460e9c
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;QXg9cDVSLit7I2A9WhFWE0sJQwM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/31334ff58d460e9c</id><updated>2013-08-01T13:24:30.668Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:24:30.668Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 2</title><content>Test Group 2</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/31334ff58d460e9c'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/31334ff58d460e9c'/></entry>
+
+> POST /m8/feeds/groups/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375363470
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 24 (0x844280), SoupSocket 12 (0x8f3260)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAA8mPvhNGE-jJP2si5Hm0QdulqULfifDPolWHjOKLlxd2YLRzsE7It5Cr31q7NYMk1fYHKYBOoOFHZtlqyPu2_0ui_i2GKjj5ltAZxojvss1QJriJ5cdCRtMfIGV620jdp6BshoRtUYoCVLwcTLeyniROXrfyIVaZF7cn2z6dZ2D_6zi45FNAaR57jS4wTDt50MSEHYaiPQVvkuWhhqGir6M0igoQ67LHHO76-MnLu69LB-oi-yZIlCRTzshjg0vFebEbvHGtiardyGk1gs3RWb9_9OroE_zLLdLjMd12GSrQ
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'>Test Group 3</title><content type='text'>Test Group 3</content><category term='http://schemas.google.com/contact/2008#group' scheme='http://schemas.google.com/g/2005#kind'/></entry>
+
+< HTTP/1.1 201 Created
+< Soup-Debug-Timestamp: 1375363470
+< Soup-Debug: SoupMessage 24 (0x844280)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Thu, 01 Aug 2013 13:24:30 GMT
+< Date: Thu, 01 Aug 2013 13:24:30 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "QXYzfDVSLit7I2A9WhFWE0sJQwM."
+< Location: https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/2fde485a09fdbe59
+< Content-Location: https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/2fde485a09fdbe59
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;QXYzfDVSLit7I2A9WhFWE0sJQwM.&quot;'><id>http://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/base/2fde485a09fdbe59</id><updated>2013-08-01T13:24:30.884Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:24:30.884Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#group'/><title>Test Group 3</title><content>Test Group 3</content><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/2fde485a09fdbe59'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/groups/libgdata.test%40googlemail.com/full/2fde485a09fdbe59'/></entry>
+
diff --git a/gdata/tests/traces/contacts/setup-temp-contact b/gdata/tests/traces/contacts/setup-temp-contact
new file mode 100644
index 00000000..a76c2367
--- /dev/null
+++ b/gdata/tests/traces/contacts/setup-temp-contact
@@ -0,0 +1,32 @@
+> POST /m8/feeds/contacts/default/full HTTP/1.1
+> Soup-Debug-Timestamp: 1375362485
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 41 (0x9b1460), SoupSocket 12 (0x8d7d60)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> Content-Type: application/atom+xml
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:gd='http://schemas.google.com/g/2005' xmlns:app='http://www.w3.org/2007/app'><title type='text'></title><category term='http://schemas.google.com/contact/2008#contact' scheme='http://schemas.google.com/g/2005#kind'/><gd:name/><gContact:nickname>Test Contact Esq.</gContact:nickname></entry>
+
+< HTTP/1.1 201 Created
+< Soup-Debug-Timestamp: 1375362485
+< Soup-Debug: SoupMessage 41 (0x9b1460)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Thu, 01 Aug 2013 13:08:05 GMT
+< Date: Thu, 01 Aug 2013 13:08:05 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "RHozeTVSLit7I2A9WhFWE0sIQww."
+< Location: https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8
+< Content-Location: https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;RHozeTVSLit7I2A9WhFWE0sIQww.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/465577d88b0afee8</id><updated>2013-08-01T13:08:05.481Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:08:05.481Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8'/><gContact:nickname>Test Contact Esq.</gContact:nickname></entry>
+
diff --git a/gdata/tests/traces/contacts/setup-temp-contact-with-photo b/gdata/tests/traces/contacts/setup-temp-contact-with-photo
new file mode 100644
index 00000000..a8b1fa71
--- /dev/null
+++ b/gdata/tests/traces/contacts/setup-temp-contact-with-photo
@@ -0,0 +1,58 @@
+> PUT /m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362495
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 42 (0x9b1280), SoupSocket 12 (0x8d7d60)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> If-Match: *
+> Content-Type: image/jpeg
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+>
+> ÿØÿà
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362496
+< Soup-Debug: SoupMessage 42 (0x9b1280)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< GData-Version: 3.1
+< ETag: "RmtJPnAWSit7I2A9KxQuEiQCNkcWGnsvRA8."
+< Date: Thu, 01 Aug 2013 13:08:16 GMT
+< Expires: Thu, 01 Aug 2013 13:08:16 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;RmtJPnAWSit7I2A9KxQuEiQCNkcWGnsvRA8.&quot;'><id>http://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8</id><updated>2013-08-01T13:08:05.481Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:08:05.481Z</app:edited><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8'/></entry>
+
+> GET /m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362506
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 43 (0x9b10a0), SoupSocket 12 (0x8d7d60)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362507
+< Soup-Debug: SoupMessage 43 (0x9b10a0)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Thu, 01 Aug 2013 13:08:26 GMT
+< Date: Thu, 01 Aug 2013 13:08:26 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "RHc-eDVSLit7I2A9WhFWE0sIQw0."
+< Last-Modified: Thu, 01 Aug 2013 13:08:15 GMT
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;RHc-eDVSLit7I2A9WhFWE0sIQw0.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/465577d88b0afee8</id><updated>2013-08-01T13:08:15.950Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:08:15.950Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8' gd:etag='&quot;Ug8gAXAjSit7I2BBEEQJSjFPBQwfNDlxbxc.&quot;'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8'/><gContact:nickname>Test Contact Esq.</gContact:nickname></entry>
+
diff --git a/gdata/tests/traces/contacts/teardown-batch-async b/gdata/tests/traces/contacts/teardown-batch-async
new file mode 100644
index 00000000..1b788702
--- /dev/null
+++ b/gdata/tests/traces/contacts/teardown-batch-async
@@ -0,0 +1,25 @@
+> DELETE /m8/feeds/contacts/libgdata.test%40googlemail.com/full/545ea63d0c76f4ac HTTP/1.1
+> Soup-Debug-Timestamp: 1375362977
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 8 (0x8a22a0), SoupSocket 6 (0x8f3550)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAACEVu1_bRDNe9RgSD9ZBpOd3wrIlCGMT5j4obkMZr9xzaecCbh7Ad88EHTPx_-XXUENDehvQ4HWMlCeXcfB9dwJ3b18s7PWnls2aHGTGVYopRnLzMKvEdl4E2cyU4OZuMcgVVLVwro91w4JG_RSnZmd8J7IEj83YnoNbBiv4x8yjOcPb5WO3wEoyNzGKwcPvEu9b_NOF7EsbiC0nIOY4Lr4MZCkFzK3iUr1OKGLXZHB2HOFyuJHaMDpIUfubYW4M3w1YlkGBCBCfxr18lGeMluMVL2D9u6rELYQwCWwBkeyeg
+> GData-Version: 3
+> If-Match: "Rnw_eDVSLit7I2A9WhFWE0sITgM."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362977
+< Soup-Debug: SoupMessage 8 (0x8a22a0)
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:16:17 GMT
+< Expires: Thu, 01 Aug 2013 13:16:17 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+
diff --git a/gdata/tests/traces/contacts/teardown-insert b/gdata/tests/traces/contacts/teardown-insert
new file mode 100644
index 00000000..a835da68
--- /dev/null
+++ b/gdata/tests/traces/contacts/teardown-insert
@@ -0,0 +1,25 @@
+> DELETE /m8/feeds/contacts/libgdata.test%40googlemail.com/full/669aee080ec47f33 HTTP/1.1
+> Soup-Debug-Timestamp: 1375253709
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 2 (0x7d2c80), SoupSocket 1 (0x72a250)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> If-Match: "SXcyfTVSLit7I2A9WhFWEkgJQAQ."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375253709
+< Soup-Debug: SoupMessage 2 (0x7d2c80)
+< GData-Version: 3.1
+< Date: Wed, 31 Jul 2013 06:55:09 GMT
+< Expires: Wed, 31 Jul 2013 06:55:09 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+
diff --git a/gdata/tests/traces/contacts/teardown-insert-group b/gdata/tests/traces/contacts/teardown-insert-group
new file mode 100644
index 00000000..cbbdf9d2
--- /dev/null
+++ b/gdata/tests/traces/contacts/teardown-insert-group
@@ -0,0 +1,25 @@
+> DELETE /m8/feeds/groups/libgdata.test%40googlemail.com/full/1fff1bc78f083ca0 HTTP/1.1
+> Soup-Debug-Timestamp: 1375363915
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 7 (0x8a22a0), SoupSocket 4 (0x8f3190)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAADtjTOJJU3aN2xxS0RFYXiikPITkpt4b3hR1fQ9TbQlx-Cgsdk1AW48YqFLPUdI1ykyKbaS_VSAfv5B_IGEi3Wa1McgCuVz7nIjv_OMYVERFthN0-Nj95PWV19GJMPKDhcOwzN_W2wjFTXSyHmhy6pNoc48jWohDPHCzv6G9jsEj9KOTlHT6F9pGe3H3bGf0ga0s6bPJ6Yv2orycMebH1EDv5crVSPRx6e7Uy50qDXVTJH1zXUXShunNRKTm09H_Tmfwn1fdBVj6GshI4GoLbir6j-SD4YXN7PWJEmHVsyBYg
+> GData-Version: 3
+> If-Match: "RHk5ezVSLit7I2A9WhFWE0sJTgQ."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375363916
+< Soup-Debug: SoupMessage 7 (0x8a22a0)
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:31:56 GMT
+< Expires: Thu, 01 Aug 2013 13:31:56 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+
diff --git a/gdata/tests/traces/contacts/teardown-query-all-contacts b/gdata/tests/traces/contacts/teardown-query-all-contacts
new file mode 100644
index 00000000..6af83d41
--- /dev/null
+++ b/gdata/tests/traces/contacts/teardown-query-all-contacts
@@ -0,0 +1,75 @@
+> DELETE /m8/feeds/contacts/libgdata.test%40googlemail.com/full/169313448d21bd4c HTTP/1.1
+> Soup-Debug-Timestamp: 1375253740
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 34 (0x7d28c0), SoupSocket 16 (0x7fffe0028190)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> If-Match: "RXw9fjVSLit7I2A9WhFWEkgJQAc."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375253740
+< Soup-Debug: SoupMessage 34 (0x7d28c0)
+< GData-Version: 3.1
+< Date: Wed, 31 Jul 2013 06:55:40 GMT
+< Expires: Wed, 31 Jul 2013 06:55:40 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+
+> DELETE /m8/feeds/contacts/libgdata.test%40googlemail.com/full/436c264a097a0e67 HTTP/1.1
+> Soup-Debug-Timestamp: 1375253740
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 35 (0x7d2aa0), SoupSocket 16 (0x7fffe0028190)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> If-Match: "RXg_eDVSLit7I2A9WhFWEkgJQAc."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375253740
+< Soup-Debug: SoupMessage 35 (0x7d2aa0)
+< GData-Version: 3.1
+< Date: Wed, 31 Jul 2013 06:55:40 GMT
+< Expires: Wed, 31 Jul 2013 06:55:40 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+
+> DELETE /m8/feeds/contacts/libgdata.test%40googlemail.com/full/4e3d4cd30d411fa8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375253740
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 36 (0x7d2c80), SoupSocket 16 (0x7fffe0028190)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAAXK6VbKHFb8MrY8VDDk8TplfYU8Pl8OJ_JDJA5Ku7Q1SXgGXmiXXNSumd183YRnbThEZBRN5nYygedI2kQsVKzOFACPFEPo7ShQaRGycnxE3GLDfmMWN_zc43HzWPka0-WgOvpmqpxLFWh0EYyD3pF7Yebk_jLBxJEBWU9v8FZrljhbtK-g4kiiBeuNs4kYYLTu-vF7GCSIcSC2WuHSkxI091viwmbQhZY_6fi_MaY_qgOPss9HlAHeJ543JSjtRmsVtK_4aNWbmaz9VcCr9lXEksu1dUTvroRvtlr8XyvOg
+> GData-Version: 3
+> If-Match: "RXc7cDVSLit7I2A9WhFWEkgJQAc."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375253741
+< Soup-Debug: SoupMessage 36 (0x7d2c80)
+< GData-Version: 3.1
+< Date: Wed, 31 Jul 2013 06:55:40 GMT
+< Expires: Wed, 31 Jul 2013 06:55:40 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+
diff --git a/gdata/tests/traces/contacts/teardown-query-all-groups b/gdata/tests/traces/contacts/teardown-query-all-groups
new file mode 100644
index 00000000..3c2aeae8
--- /dev/null
+++ b/gdata/tests/traces/contacts/teardown-query-all-groups
@@ -0,0 +1,75 @@
+> DELETE /m8/feeds/groups/libgdata.test%40googlemail.com/full/4acbf0b68dc2aa64 HTTP/1.1
+> Soup-Debug-Timestamp: 1375363482
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 28 (0x8440a0), SoupSocket 13 (0x8f3320)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAA8mPvhNGE-jJP2si5Hm0QdulqULfifDPolWHjOKLlxd2YLRzsE7It5Cr31q7NYMk1fYHKYBOoOFHZtlqyPu2_0ui_i2GKjj5ltAZxojvss1QJriJ5cdCRtMfIGV620jdp6BshoRtUYoCVLwcTLeyniROXrfyIVaZF7cn2z6dZ2D_6zi45FNAaR57jS4wTDt50MSEHYaiPQVvkuWhhqGir6M0igoQ67LHHO76-MnLu69LB-oi-yZIlCRTzshjg0vFebEbvHGtiardyGk1gs3RWb9_9OroE_zLLdLjMd12GSrQ
+> GData-Version: 3
+> If-Match: "QXo9ezVSLit7I2A9WhFWE0sJQwM."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375363482
+< Soup-Debug: SoupMessage 28 (0x8440a0)
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:24:42 GMT
+< Expires: Thu, 01 Aug 2013 13:24:42 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+
+> DELETE /m8/feeds/groups/libgdata.test%40googlemail.com/full/31334ff58d460e9c HTTP/1.1
+> Soup-Debug-Timestamp: 1375363482
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 29 (0x8440a0), SoupSocket 13 (0x8f3320)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAA8mPvhNGE-jJP2si5Hm0QdulqULfifDPolWHjOKLlxd2YLRzsE7It5Cr31q7NYMk1fYHKYBOoOFHZtlqyPu2_0ui_i2GKjj5ltAZxojvss1QJriJ5cdCRtMfIGV620jdp6BshoRtUYoCVLwcTLeyniROXrfyIVaZF7cn2z6dZ2D_6zi45FNAaR57jS4wTDt50MSEHYaiPQVvkuWhhqGir6M0igoQ67LHHO76-MnLu69LB-oi-yZIlCRTzshjg0vFebEbvHGtiardyGk1gs3RWb9_9OroE_zLLdLjMd12GSrQ
+> GData-Version: 3
+> If-Match: "QXg9cDVSLit7I2A9WhFWE0sJQwM."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375363482
+< Soup-Debug: SoupMessage 29 (0x8440a0)
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:24:42 GMT
+< Expires: Thu, 01 Aug 2013 13:24:42 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+
+> DELETE /m8/feeds/groups/libgdata.test%40googlemail.com/full/2fde485a09fdbe59 HTTP/1.1
+> Soup-Debug-Timestamp: 1375363482
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 30 (0x844280), SoupSocket 13 (0x8f3320)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANUAAAA8mPvhNGE-jJP2si5Hm0QdulqULfifDPolWHjOKLlxd2YLRzsE7It5Cr31q7NYMk1fYHKYBOoOFHZtlqyPu2_0ui_i2GKjj5ltAZxojvss1QJriJ5cdCRtMfIGV620jdp6BshoRtUYoCVLwcTLeyniROXrfyIVaZF7cn2z6dZ2D_6zi45FNAaR57jS4wTDt50MSEHYaiPQVvkuWhhqGir6M0igoQ67LHHO76-MnLu69LB-oi-yZIlCRTzshjg0vFebEbvHGtiardyGk1gs3RWb9_9OroE_zLLdLjMd12GSrQ
+> GData-Version: 3
+> If-Match: "QXYzfDVSLit7I2A9WhFWE0sJQwM."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375363482
+< Soup-Debug: SoupMessage 30 (0x844280)
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:24:42 GMT
+< Expires: Thu, 01 Aug 2013 13:24:42 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+
diff --git a/gdata/tests/traces/contacts/teardown-temp-contact b/gdata/tests/traces/contacts/teardown-temp-contact
new file mode 100644
index 00000000..e17145d0
--- /dev/null
+++ b/gdata/tests/traces/contacts/teardown-temp-contact
@@ -0,0 +1,53 @@
+> GET /m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362507
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 45 (0x9b10a0), SoupSocket 12 (0x8d7d60)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362507
+< Soup-Debug: SoupMessage 45 (0x9b10a0)
+< Content-Type: application/atom+xml; charset=UTF-8; type=entry
+< Expires: Thu, 01 Aug 2013 13:08:27 GMT
+< Date: Thu, 01 Aug 2013 13:08:27 GMT
+< Cache-control: private, max-age=0, must-revalidate, no-transform
+< Vary: Accept, X-GData-Authorization, GData-Version
+< GData-Version: 3.1
+< ETag: "RHc-eDVSLit7I2A9WhFWE0sIQw0."
+< Last-Modified: Thu, 01 Aug 2013 13:08:15 GMT
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Server: GSE
+< Transfer-Encoding: chunked
+<
+< <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='&quot;RHc-eDVSLit7I2A9WhFWE0sIQw0.&quot;'><id>http://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/base/465577d88b0afee8</id><updated>2013-08-01T13:08:15.950Z</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2013-08-01T13:08:15.950Z</app:edited><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/><title></title><link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/libgdata.test%40googlemail.com/465577d88b0afee8' gd:etag='&quot;Ug8gAXAjSit7I2BBEEQJSjFPBQwfNDlxbxc.&quot;'/><link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8'/><link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8'/><gContact:nickname>Test Contact Esq.</gContact:nickname></entry>
+
+> DELETE /m8/feeds/contacts/libgdata.test%40googlemail.com/full/465577d88b0afee8 HTTP/1.1
+> Soup-Debug-Timestamp: 1375362507
+> Soup-Debug: SoupSession 1 (0x66f2e0), SoupMessage 46 (0x9b1280), SoupSocket 12 (0x8d7d60)
+> Host: www.google.com
+> Authorization: GoogleLogin auth=DQAAANYAAAAWvJzyD2J6d8-v1A-RQD2CZTFj0cXmZR5bhO3uJZYudiF6fHFDR_cHNwZtRrJtSgV87AW-TE_m-GQ4qhW8JBqLxAf_sJm20_8TtptsoN0SC0d9j-MJPc5QimHpp1nfIWrM5Ni9qmSQqpgB_vxH0KMXVyaC88nkQel0Hcz4U8Z4oH1Msd-XmDhGIlcgrWsKIiF0Mx4eOgsS8ces49E_U9HBXETdKHsFFg50rkU9wq6qx_eL7bzeTmra421N8QrAzP48g_zKQdSGmAEIs3ujmXW8mQCrmL0TGUhGuJBDqRyWqg
+> GData-Version: 3
+> If-Match: "RHc-eDVSLit7I2A9WhFWE0sIQw0."
+> Accept-Encoding: gzip, deflate
+> Connection: Keep-Alive
+
+< HTTP/1.1 200 OK
+< Soup-Debug-Timestamp: 1375362507
+< Soup-Debug: SoupMessage 46 (0x9b1280)
+< GData-Version: 3.1
+< Date: Thu, 01 Aug 2013 13:08:27 GMT
+< Expires: Thu, 01 Aug 2013 13:08:27 GMT
+< Cache-control: private, max-age=0
+< X-Content-Type-Options: nosniff
+< X-Frame-Options: SAMEORIGIN
+< X-XSS-Protection: 1; mode=block
+< Content-Length: 0
+< Server: GSE
+< Content-Type: text/html; charset=UTF-8
+<
+