summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2014-06-24 07:58:13 -0400
committerColin Walters <walters@verbum.org>2014-06-24 07:58:13 -0400
commitfcf29f0595ae7927056bbe60675f0ea60ac22e69 (patch)
tree72786c3e34399d50d788f42e323c720ed489ccb8
parentd40b49d8f7406d51cfe610f9cfbef75a5782e4ed (diff)
downloadostree-wip/staticdeltas.tar.gz
test-rollsum: Process all input, print more statisticswip/staticdeltas
Copying the bup code, we need to loop over all chunks even after hitting the rollsum returning 0. Also print more statistics.
-rw-r--r--tests/test-rollsum.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/tests/test-rollsum.c b/tests/test-rollsum.c
index f33ec2bb..1b9174cc 100644
--- a/tests/test-rollsum.c
+++ b/tests/test-rollsum.c
@@ -31,17 +31,27 @@ rollsum_checksums_for_data (GBytes *bytes)
{
const guint8 *start;
gsize len;
+ gboolean rollsum_end = FALSE;
GPtrArray *ret = g_ptr_array_new_with_free_func ((GDestroyNotify)g_variant_unref);
start = g_bytes_get_data (bytes, &len);
- while (TRUE)
+ while (len > 0)
{
int offset, bits;
- offset = bupsplit_find_ofs (start, MIN(G_MAXINT32, len), &bits);
- if (offset == 0)
- break;
- if (offset > BLOB_MAX)
- offset = BLOB_MAX;
+ if (!rollsum_end)
+ {
+ offset = bupsplit_find_ofs (start, MIN(G_MAXINT32, len), &bits);
+ if (offset == 0)
+ {
+ rollsum_end = TRUE;
+ offset = MIN(BLOB_MAX, len);
+ }
+ else if (offset > BLOB_MAX)
+ offset = BLOB_MAX;
+ }
+ else
+ offset = MIN(BLOB_MAX, len);
+
{
gs_free char *blobcsum =
g_compute_checksum_for_data (G_CHECKSUM_SHA256,
@@ -103,6 +113,7 @@ main (int argc, char **argv)
{
guint j;
gs_unref_ptrarray GPtrArray *rollsums = NULL;
+ guint64 this_rollsum_size = 0;
path = g_file_new_for_path (argv[i]);
bytes = gs_file_map_readonly (path, cancellable, error);
@@ -126,9 +137,11 @@ main (int argc, char **argv)
g_hash_table_add (sums, g_strdup (csum));
rollsum_size += ofs;
}
+ this_rollsum_size += ofs;
}
+ g_print ("input: rollsum size: %" G_GUINT64_FORMAT "\n", this_rollsum_size);
}
- g_print ("rollsums:%u input:%" G_GUINT64_FORMAT " output: %" G_GUINT64_FORMAT " speedup:%f\n",
+ g_print ("rollsum total:%u input:%" G_GUINT64_FORMAT " output: %" G_GUINT64_FORMAT " speedup:%f\n",
g_hash_table_size (sums), input_size, rollsum_size,
(((double)(input_size+1)) / ((double) rollsum_size + 1)));
}