From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Ulf Hansson <ulf.hansson@linaro.org>,
James Bottomley <JBottomley@Odin.com>,
Kees Cook <keescook@chromium.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/3] lib/test-string_helpers.c: add string_get_size() tests
Date: Tue, 27 Oct 2015 09:56:31 +0100 [thread overview]
Message-ID: <877fm8y9j4.fsf@vitty.brq.redhat.com> (raw)
In-Reply-To: <87y4ep5m9b.fsf@rasmusvillemoes.dk> (Rasmus Villemoes's message of "Mon, 26 Oct 2015 22:54:24 +0100")
Rasmus Villemoes <linux@rasmusvillemoes.dk> writes:
> On Mon, Oct 26 2015, Vitaly Kuznetsov <vkuznets@redhat.com> wrote:
>
>> Add a couple of simple tests for string_get_size().
>>
>> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
>> ---
>> lib/test-string_helpers.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 44 insertions(+)
>>
>> diff --git a/lib/test-string_helpers.c b/lib/test-string_helpers.c
>> index 8e376ef..a158cb3 100644
>> --- a/lib/test-string_helpers.c
>> +++ b/lib/test-string_helpers.c
>> @@ -326,6 +326,47 @@ out:
>> kfree(out_test);
>> }
>>
>> +#define string_get_size_maxbuf 16
>> +#define test_string_get_size_one(size, blk_size, units, exp_result) \
>> + do { \
>> + BUILD_BUG_ON(sizeof(exp_result) >= string_get_size_maxbuf); \
>> + __test_string_get_size((size), (blk_size), (units), \
>> + (exp_result)); \
>> + } while (0)
>> +
>> +
>> +static __init void __test_string_get_size(const u64 size, const u32 blk_size,
>> + const enum string_size_units units,
>> + const char *exp_result)
>> +{
>> + char buf[string_get_size_maxbuf];
>> +
>> + string_get_size(size, blk_size, units, buf, sizeof(buf));
>> + if (!memcmp(buf, exp_result, strlen(exp_result) + 1))
>> + return;
>> +
>> + buf[sizeof(buf) - 1] = '\0';
>> + pr_warn("Test 'test_string_get_size_one' failed!\n");
>> + pr_warn("string_get_size(size = %llu, blk_size = %u, units = %d\n",
>> + size, blk_size, units);
>> + pr_warn("expected: '%s', got '%s'\n", exp_result, buf);
>> +}
>> +
>> +static __init void test_string_get_size(void)
>> +{
>> + test_string_get_size_one(16384, 512, STRING_UNITS_2, "8.00 MiB");
>> + test_string_get_size_one(500118192, 512, STRING_UNITS_2, "238 GiB");
>> + test_string_get_size_one(8192, 4096, STRING_UNITS_10, "33.5 MB");
>> + test_string_get_size_one(1100, 1, STRING_UNITS_10, "1.10 kB");
>> + test_string_get_size_one(3000, 1900, STRING_UNITS_10, "5.70 MB");
>> + test_string_get_size_one(151234561234657, 3456789, STRING_UNITS_10,
>> + "522 EB");
>
> Since we're changing this anyway, can't we test every pair of
> (size,blk_size) with both units? That'll be twice the number of tests
> for less horizontal real estate. E.g.
>
> test_string_get_size_one(8192, 4096, "32.0 MiB", "33.5 MB");
>
Nice idea, will do.
> Do we really care how and if string_get_size works for a non-power-of-2
> blk_size?
Probably not but there is nothing in current algorithm which prevents it
from working correctly with a non-power-of-2 blk_sizes. The issue you
found is even more visible on (3000, 1900) test.
> I certainly assume that we're passed a non-zero value.
Oh crap, we don't have a check for blk_size = 0 and this leads to an
infinite loop now... will do something in v2.
>
> Rasmus
--
Vitaly
prev parent reply other threads:[~2015-10-27 8:56 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-26 13:55 [PATCH 0/3] lib/string_helpers: fix precision issues and introduce tests Vitaly Kuznetsov
2015-10-26 13:55 ` [PATCH 1/3] lib/string_helpers: change blk_size to u32 for string_get_size() interface Vitaly Kuznetsov
2015-10-26 13:55 ` [PATCH 2/3] lib/string_helpers.c: don't lose precision in string_get_size() Vitaly Kuznetsov
2015-10-26 16:08 ` Andy Shevchenko
2015-10-27 8:36 ` Vitaly Kuznetsov
2015-10-27 9:34 ` Andy Shevchenko
2015-10-26 21:48 ` Rasmus Villemoes
2015-10-27 8:45 ` Vitaly Kuznetsov
2015-10-26 13:55 ` [PATCH 3/3] lib/test-string_helpers.c: add string_get_size() tests Vitaly Kuznetsov
2015-10-26 15:13 ` Andy Shevchenko
2015-10-26 15:18 ` Vitaly Kuznetsov
2015-10-26 15:21 ` Andy Shevchenko
2015-10-26 15:50 ` Vitaly Kuznetsov
2015-10-26 21:54 ` Rasmus Villemoes
2015-10-27 8:56 ` Vitaly Kuznetsov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877fm8y9j4.fsf@vitty.brq.redhat.com \
--to=vkuznets@redhat.com \
--cc=JBottomley@Odin.com \
--cc=akpm@linux-foundation.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=ulf.hansson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.