From 5c473892438446704e7b3906fa20f9826730dcf6 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 24 Jun 2014 07:58:13 -0400 Subject: [PATCH] test-rollsum: Process all input, print more statistics Copying the bup code, we need to loop over all chunks even after hitting the rollsum returning 0. Also print more statistics. --- src/libostree/ostree-repo-pull.c | 1 + tests/test-rollsum.c | 27 ++++++++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/libostree/ostree-repo-pull.c b/src/libostree/ostree-repo-pull.c index ada302bc..1d767c89 100644 --- a/src/libostree/ostree-repo-pull.c +++ b/src/libostree/ostree-repo-pull.c @@ -1996,6 +1996,7 @@ ostree_repo_pull_with_options (OstreeRepo *self, shift == 1 ? "B" : "KiB", pull_data->n_fetched_deltaparts, (guint) ((end_time - pull_data->start_time) / G_USEC_PER_SEC)); + ostree_async_progress_set_status (pull_data->progress, msg); } 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))); }