Message ID | 20220304133429.1047752-9-sughosh.ganu@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | tpm: rng: Move TPM RNG functionality to driver model | expand |
Hi Sughosh, On Fri, 4 Mar 2022 at 06:35, Sughosh Ganu <sughosh.ganu@linaro.org> wrote: > > The 'rng' command dumps a number of random bytes on the console. Add a > set of tests for the 'rng' command. The test function performs basic > sanity testing of the command. > > Since a unit test is being added for the command, enable it by default > in the sandbox platforms. > > Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> > --- > > Changes since V2: None > > cmd/Kconfig | 1 + > test/dm/rng.c | 29 +++++++++++++++++++++++++++++ > 2 files changed, 30 insertions(+) Reviewed-by: Simon Glass <sjg@chromium.org> > > diff --git a/cmd/Kconfig b/cmd/Kconfig > index 5e25e45fd2..47f1e23ef0 100644 > --- a/cmd/Kconfig > +++ b/cmd/Kconfig > @@ -1810,6 +1810,7 @@ config CMD_GETTIME > config CMD_RNG > bool "rng command" > depends on DM_RNG > + default y if SANDBOX > select HEXDUMP > help > Print bytes from the hardware random number generator. > diff --git a/test/dm/rng.c b/test/dm/rng.c > index 5b34c93ed6..6d1f68848d 100644 > --- a/test/dm/rng.c > +++ b/test/dm/rng.c > @@ -25,3 +25,32 @@ static int dm_test_rng_read(struct unit_test_state *uts) > return 0; > } > DM_TEST(dm_test_rng_read, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); > + > +/* Test the rng command */ > +static int dm_test_rng_cmd(struct unit_test_state *uts) > +{ > + struct udevice *dev; > + > + ut_assertok(uclass_get_device(UCLASS_RNG, 0, &dev)); > + ut_assertnonnull(dev); > + > + ut_assertok(console_record_reset_enable()); > + > + run_command("rng", 0); > + ut_assert_nextlinen("00000000:"); > + ut_assert_nextlinen("00000010:"); > + ut_assert_nextlinen("00000020:"); > + ut_assert_nextlinen("00000030:"); This is good enough for testing, except that here you don't have any actual data. How come? > + ut_assert_console_end(); > + > + run_command("rng 0 10", 0); > + ut_assert_nextlinen("00000000:"); > + ut_assert_console_end(); > + > + run_command("rng 20", 0); > + ut_assert_nextlinen("No RNG device"); > + ut_assert_console_end(); > + > + return 0; > +} > +DM_TEST(dm_test_rng_cmd, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT | UT_TESTF_CONSOLE_REC); > -- > 2.25.1 > Regards, SImon
hi Simon, On Wed, 9 Mar 2022 at 08:06, Simon Glass <sjg@chromium.org> wrote: > > Hi Sughosh, > > On Fri, 4 Mar 2022 at 06:35, Sughosh Ganu <sughosh.ganu@linaro.org> wrote: > > > > The 'rng' command dumps a number of random bytes on the console. Add a > > set of tests for the 'rng' command. The test function performs basic > > sanity testing of the command. > > > > Since a unit test is being added for the command, enable it by default > > in the sandbox platforms. > > > > Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> > > --- > > > > Changes since V2: None > > > > cmd/Kconfig | 1 + > > test/dm/rng.c | 29 +++++++++++++++++++++++++++++ > > 2 files changed, 30 insertions(+) > > Reviewed-by: Simon Glass <sjg@chromium.org> > > > > > diff --git a/cmd/Kconfig b/cmd/Kconfig > > index 5e25e45fd2..47f1e23ef0 100644 > > --- a/cmd/Kconfig > > +++ b/cmd/Kconfig > > @@ -1810,6 +1810,7 @@ config CMD_GETTIME > > config CMD_RNG > > bool "rng command" > > depends on DM_RNG > > + default y if SANDBOX > > select HEXDUMP > > help > > Print bytes from the hardware random number generator. > > diff --git a/test/dm/rng.c b/test/dm/rng.c > > index 5b34c93ed6..6d1f68848d 100644 > > --- a/test/dm/rng.c > > +++ b/test/dm/rng.c > > @@ -25,3 +25,32 @@ static int dm_test_rng_read(struct unit_test_state *uts) > > return 0; > > } > > DM_TEST(dm_test_rng_read, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); > > + > > +/* Test the rng command */ > > +static int dm_test_rng_cmd(struct unit_test_state *uts) > > +{ > > + struct udevice *dev; > > + > > + ut_assertok(uclass_get_device(UCLASS_RNG, 0, &dev)); > > + ut_assertnonnull(dev); > > + > > + ut_assertok(console_record_reset_enable()); > > + > > + run_command("rng", 0); > > + ut_assert_nextlinen("00000000:"); > > + ut_assert_nextlinen("00000010:"); > > + ut_assert_nextlinen("00000020:"); > > + ut_assert_nextlinen("00000030:"); > > This is good enough for testing, except that here you don't have any > actual data. How come? This being a test for a random number device, we cannot anticipate what data we will be getting. The sandbox RNG driver does not return a fixed set of values on each invocation of the command. -sughosh > > > + ut_assert_console_end(); > > + > > + run_command("rng 0 10", 0); > > + ut_assert_nextlinen("00000000:"); > > + ut_assert_console_end(); > > + > > + run_command("rng 20", 0); > > + ut_assert_nextlinen("No RNG device"); > > + ut_assert_console_end(); > > + > > + return 0; > > +} > > +DM_TEST(dm_test_rng_cmd, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT | UT_TESTF_CONSOLE_REC); > > -- > > 2.25.1 > > > > Regards, > SImon
Hi Sughosh, On Tue, 8 Mar 2022 at 23:18, Sughosh Ganu <sughosh.ganu@linaro.org> wrote: > > hi Simon, > > On Wed, 9 Mar 2022 at 08:06, Simon Glass <sjg@chromium.org> wrote: > > > > Hi Sughosh, > > > > On Fri, 4 Mar 2022 at 06:35, Sughosh Ganu <sughosh.ganu@linaro.org> wrote: > > > > > > The 'rng' command dumps a number of random bytes on the console. Add a > > > set of tests for the 'rng' command. The test function performs basic > > > sanity testing of the command. > > > > > > Since a unit test is being added for the command, enable it by default > > > in the sandbox platforms. > > > > > > Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> > > > --- > > > > > > Changes since V2: None > > > > > > cmd/Kconfig | 1 + > > > test/dm/rng.c | 29 +++++++++++++++++++++++++++++ > > > 2 files changed, 30 insertions(+) > > > > Reviewed-by: Simon Glass <sjg@chromium.org> > > > > > > > > diff --git a/cmd/Kconfig b/cmd/Kconfig > > > index 5e25e45fd2..47f1e23ef0 100644 > > > --- a/cmd/Kconfig > > > +++ b/cmd/Kconfig > > > @@ -1810,6 +1810,7 @@ config CMD_GETTIME > > > config CMD_RNG > > > bool "rng command" > > > depends on DM_RNG > > > + default y if SANDBOX > > > select HEXDUMP > > > help > > > Print bytes from the hardware random number generator. > > > diff --git a/test/dm/rng.c b/test/dm/rng.c > > > index 5b34c93ed6..6d1f68848d 100644 > > > --- a/test/dm/rng.c > > > +++ b/test/dm/rng.c > > > @@ -25,3 +25,32 @@ static int dm_test_rng_read(struct unit_test_state *uts) > > > return 0; > > > } > > > DM_TEST(dm_test_rng_read, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); > > > + > > > +/* Test the rng command */ > > > +static int dm_test_rng_cmd(struct unit_test_state *uts) > > > +{ > > > + struct udevice *dev; > > > + > > > + ut_assertok(uclass_get_device(UCLASS_RNG, 0, &dev)); > > > + ut_assertnonnull(dev); > > > + > > > + ut_assertok(console_record_reset_enable()); > > > + > > > + run_command("rng", 0); > > > + ut_assert_nextlinen("00000000:"); > > > + ut_assert_nextlinen("00000010:"); > > > + ut_assert_nextlinen("00000020:"); > > > + ut_assert_nextlinen("00000030:"); > > > > This is good enough for testing, except that here you don't have any > > actual data. How come? > > This being a test for a random number device, we cannot anticipate > what data we will be getting. The sandbox RNG driver does not return a > fixed set of values on each invocation of the command. How come? Can you fix that by setting the random seed at the start of the test? Regards, Simon > > -sughosh > > > > > > + ut_assert_console_end(); > > > + > > > + run_command("rng 0 10", 0); > > > + ut_assert_nextlinen("00000000:"); > > > + ut_assert_console_end(); > > > + > > > + run_command("rng 20", 0); > > > + ut_assert_nextlinen("No RNG device"); > > > + ut_assert_console_end(); > > > + > > > + return 0; > > > +} > > > +DM_TEST(dm_test_rng_cmd, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT | UT_TESTF_CONSOLE_REC); > > > -- > > > 2.25.1 > > > > > > > Regards, > > SImon
hi Simon, On Sat, 12 Mar 2022 at 08:14, Simon Glass <sjg@chromium.org> wrote: > > Hi Sughosh, > > On Tue, 8 Mar 2022 at 23:18, Sughosh Ganu <sughosh.ganu@linaro.org> wrote: > > > > hi Simon, > > > > On Wed, 9 Mar 2022 at 08:06, Simon Glass <sjg@chromium.org> wrote: > > > > > > Hi Sughosh, > > > > > > On Fri, 4 Mar 2022 at 06:35, Sughosh Ganu <sughosh.ganu@linaro.org> wrote: > > > > > > > > The 'rng' command dumps a number of random bytes on the console. Add a > > > > set of tests for the 'rng' command. The test function performs basic > > > > sanity testing of the command. > > > > > > > > Since a unit test is being added for the command, enable it by default > > > > in the sandbox platforms. > > > > > > > > Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> > > > > --- > > > > > > > > Changes since V2: None > > > > > > > > cmd/Kconfig | 1 + > > > > test/dm/rng.c | 29 +++++++++++++++++++++++++++++ > > > > 2 files changed, 30 insertions(+) > > > > > > Reviewed-by: Simon Glass <sjg@chromium.org> > > > > > > > > > > > diff --git a/cmd/Kconfig b/cmd/Kconfig > > > > index 5e25e45fd2..47f1e23ef0 100644 > > > > --- a/cmd/Kconfig > > > > +++ b/cmd/Kconfig > > > > @@ -1810,6 +1810,7 @@ config CMD_GETTIME > > > > config CMD_RNG > > > > bool "rng command" > > > > depends on DM_RNG > > > > + default y if SANDBOX > > > > select HEXDUMP > > > > help > > > > Print bytes from the hardware random number generator. > > > > diff --git a/test/dm/rng.c b/test/dm/rng.c > > > > index 5b34c93ed6..6d1f68848d 100644 > > > > --- a/test/dm/rng.c > > > > +++ b/test/dm/rng.c > > > > @@ -25,3 +25,32 @@ static int dm_test_rng_read(struct unit_test_state *uts) > > > > return 0; > > > > } > > > > DM_TEST(dm_test_rng_read, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); > > > > + > > > > +/* Test the rng command */ > > > > +static int dm_test_rng_cmd(struct unit_test_state *uts) > > > > +{ > > > > + struct udevice *dev; > > > > + > > > > + ut_assertok(uclass_get_device(UCLASS_RNG, 0, &dev)); > > > > + ut_assertnonnull(dev); > > > > + > > > > + ut_assertok(console_record_reset_enable()); > > > > + > > > > + run_command("rng", 0); > > > > + ut_assert_nextlinen("00000000:"); > > > > + ut_assert_nextlinen("00000010:"); > > > > + ut_assert_nextlinen("00000020:"); > > > > + ut_assert_nextlinen("00000030:"); > > > > > > This is good enough for testing, except that here you don't have any > > > actual data. How come? > > > > This being a test for a random number device, we cannot anticipate > > what data we will be getting. The sandbox RNG driver does not return a > > fixed set of values on each invocation of the command. > > How come? Can you fix that by setting the random seed at the start of the test? Well I can, but do we really need to do that. I think the current test that we have for the rng command and the uclass is fine. -sughosh > > Regards, > Simon > > > > > > > -sughosh > > > > > > > > > + ut_assert_console_end(); > > > > + > > > > + run_command("rng 0 10", 0); > > > > + ut_assert_nextlinen("00000000:"); > > > > + ut_assert_console_end(); > > > > + > > > > + run_command("rng 20", 0); > > > > + ut_assert_nextlinen("No RNG device"); > > > > + ut_assert_console_end(); > > > > + > > > > + return 0; > > > > +} > > > > +DM_TEST(dm_test_rng_cmd, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT | UT_TESTF_CONSOLE_REC); > > > > -- > > > > 2.25.1 > > > > > > > > > > Regards, > > > SImon
Hi Sughosh, On Sun, 13 Mar 2022 at 05:08, Sughosh Ganu <sughosh.ganu@linaro.org> wrote: > > hi Simon, > > On Sat, 12 Mar 2022 at 08:14, Simon Glass <sjg@chromium.org> wrote: > > > > Hi Sughosh, > > > > On Tue, 8 Mar 2022 at 23:18, Sughosh Ganu <sughosh.ganu@linaro.org> wrote: > > > > > > hi Simon, > > > > > > On Wed, 9 Mar 2022 at 08:06, Simon Glass <sjg@chromium.org> wrote: > > > > > > > > Hi Sughosh, > > > > > > > > On Fri, 4 Mar 2022 at 06:35, Sughosh Ganu <sughosh.ganu@linaro.org> wrote: > > > > > > > > > > The 'rng' command dumps a number of random bytes on the console. Add a > > > > > set of tests for the 'rng' command. The test function performs basic > > > > > sanity testing of the command. > > > > > > > > > > Since a unit test is being added for the command, enable it by default > > > > > in the sandbox platforms. > > > > > > > > > > Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> > > > > > --- > > > > > > > > > > Changes since V2: None > > > > > > > > > > cmd/Kconfig | 1 + > > > > > test/dm/rng.c | 29 +++++++++++++++++++++++++++++ > > > > > 2 files changed, 30 insertions(+) > > > > > > > > Reviewed-by: Simon Glass <sjg@chromium.org> > > > > > > > > > > > > > > diff --git a/cmd/Kconfig b/cmd/Kconfig > > > > > index 5e25e45fd2..47f1e23ef0 100644 > > > > > --- a/cmd/Kconfig > > > > > +++ b/cmd/Kconfig > > > > > @@ -1810,6 +1810,7 @@ config CMD_GETTIME > > > > > config CMD_RNG > > > > > bool "rng command" > > > > > depends on DM_RNG > > > > > + default y if SANDBOX > > > > > select HEXDUMP > > > > > help > > > > > Print bytes from the hardware random number generator. > > > > > diff --git a/test/dm/rng.c b/test/dm/rng.c > > > > > index 5b34c93ed6..6d1f68848d 100644 > > > > > --- a/test/dm/rng.c > > > > > +++ b/test/dm/rng.c > > > > > @@ -25,3 +25,32 @@ static int dm_test_rng_read(struct unit_test_state *uts) > > > > > return 0; > > > > > } > > > > > DM_TEST(dm_test_rng_read, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); > > > > > + > > > > > +/* Test the rng command */ > > > > > +static int dm_test_rng_cmd(struct unit_test_state *uts) > > > > > +{ > > > > > + struct udevice *dev; > > > > > + > > > > > + ut_assertok(uclass_get_device(UCLASS_RNG, 0, &dev)); > > > > > + ut_assertnonnull(dev); > > > > > + > > > > > + ut_assertok(console_record_reset_enable()); > > > > > + > > > > > + run_command("rng", 0); > > > > > + ut_assert_nextlinen("00000000:"); > > > > > + ut_assert_nextlinen("00000010:"); > > > > > + ut_assert_nextlinen("00000020:"); > > > > > + ut_assert_nextlinen("00000030:"); > > > > > > > > This is good enough for testing, except that here you don't have any > > > > actual data. How come? > > > > > > This being a test for a random number device, we cannot anticipate > > > what data we will be getting. The sandbox RNG driver does not return a > > > fixed set of values on each invocation of the command. > > > > How come? Can you fix that by setting the random seed at the start of the test? > > Well I can, but do we really need to do that. I think the current test > that we have for the rng command and the uclass is fine. It is OK, but not great, since if there is a bug in the data output or in the collection of the random data, then you will not find it with this test. Regards, Simon
hi Heinrich, On Fri, 4 Mar 2022 at 19:05, Sughosh Ganu <sughosh.ganu@linaro.org> wrote: > > The 'rng' command dumps a number of random bytes on the console. Add a > set of tests for the 'rng' command. The test function performs basic > sanity testing of the command. > > Since a unit test is being added for the command, enable it by default > in the sandbox platforms. > > Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> > --- > > Changes since V2: None > > cmd/Kconfig | 1 + > test/dm/rng.c | 29 +++++++++++++++++++++++++++++ > 2 files changed, 30 insertions(+) Can you please pick this up, as this is unrelated to the TPM RNG changes which are still under discussion. Thanks. -sughosh > > diff --git a/cmd/Kconfig b/cmd/Kconfig > index 5e25e45fd2..47f1e23ef0 100644 > --- a/cmd/Kconfig > +++ b/cmd/Kconfig > @@ -1810,6 +1810,7 @@ config CMD_GETTIME > config CMD_RNG > bool "rng command" > depends on DM_RNG > + default y if SANDBOX > select HEXDUMP > help > Print bytes from the hardware random number generator. > diff --git a/test/dm/rng.c b/test/dm/rng.c > index 5b34c93ed6..6d1f68848d 100644 > --- a/test/dm/rng.c > +++ b/test/dm/rng.c > @@ -25,3 +25,32 @@ static int dm_test_rng_read(struct unit_test_state *uts) > return 0; > } > DM_TEST(dm_test_rng_read, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); > + > +/* Test the rng command */ > +static int dm_test_rng_cmd(struct unit_test_state *uts) > +{ > + struct udevice *dev; > + > + ut_assertok(uclass_get_device(UCLASS_RNG, 0, &dev)); > + ut_assertnonnull(dev); > + > + ut_assertok(console_record_reset_enable()); > + > + run_command("rng", 0); > + ut_assert_nextlinen("00000000:"); > + ut_assert_nextlinen("00000010:"); > + ut_assert_nextlinen("00000020:"); > + ut_assert_nextlinen("00000030:"); > + ut_assert_console_end(); > + > + run_command("rng 0 10", 0); > + ut_assert_nextlinen("00000000:"); > + ut_assert_console_end(); > + > + run_command("rng 20", 0); > + ut_assert_nextlinen("No RNG device"); > + ut_assert_console_end(); > + > + return 0; > +} > +DM_TEST(dm_test_rng_cmd, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT | UT_TESTF_CONSOLE_REC); > -- > 2.25.1 >
diff --git a/cmd/Kconfig b/cmd/Kconfig index 5e25e45fd2..47f1e23ef0 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -1810,6 +1810,7 @@ config CMD_GETTIME config CMD_RNG bool "rng command" depends on DM_RNG + default y if SANDBOX select HEXDUMP help Print bytes from the hardware random number generator. diff --git a/test/dm/rng.c b/test/dm/rng.c index 5b34c93ed6..6d1f68848d 100644 --- a/test/dm/rng.c +++ b/test/dm/rng.c @@ -25,3 +25,32 @@ static int dm_test_rng_read(struct unit_test_state *uts) return 0; } DM_TEST(dm_test_rng_read, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); + +/* Test the rng command */ +static int dm_test_rng_cmd(struct unit_test_state *uts) +{ + struct udevice *dev; + + ut_assertok(uclass_get_device(UCLASS_RNG, 0, &dev)); + ut_assertnonnull(dev); + + ut_assertok(console_record_reset_enable()); + + run_command("rng", 0); + ut_assert_nextlinen("00000000:"); + ut_assert_nextlinen("00000010:"); + ut_assert_nextlinen("00000020:"); + ut_assert_nextlinen("00000030:"); + ut_assert_console_end(); + + run_command("rng 0 10", 0); + ut_assert_nextlinen("00000000:"); + ut_assert_console_end(); + + run_command("rng 20", 0); + ut_assert_nextlinen("No RNG device"); + ut_assert_console_end(); + + return 0; +} +DM_TEST(dm_test_rng_cmd, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT | UT_TESTF_CONSOLE_REC);
The 'rng' command dumps a number of random bytes on the console. Add a set of tests for the 'rng' command. The test function performs basic sanity testing of the command. Since a unit test is being added for the command, enable it by default in the sandbox platforms. Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> --- Changes since V2: None cmd/Kconfig | 1 + test/dm/rng.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+)