* [Qemu-devel] [PATCH 0/2] tests: fw_cfg: add reboot-timeout test case @ 2019-01-20 7:13 Li Qiang 2019-01-20 7:13 ` [Qemu-devel] [PATCH 1/2] tests: fw_cfg: add a function to get the fw_cfg file entry Li Qiang 2019-01-20 7:13 ` [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case Li Qiang 0 siblings, 2 replies; 18+ messages in thread From: Li Qiang @ 2019-01-20 7:13 UTC (permalink / raw) To: philmd, lersek, kraxel, thuth, lvivier, pbonzini Cc: qemu-devel, liq3ea, Li Qiang The first patch adds a util function to get the fw_cfg file entry. And second adds a reboot-timeout test case. Li Qiang (2): tests: fw_cfg: add a function to get the fw_cfg file entry tests: fw_cfg: add reboot_timeout test case tests/fw_cfg-test.c | 13 ++++++++++++- tests/libqos/fw_cfg.c | 33 +++++++++++++++++++++++++++++++++ tests/libqos/fw_cfg.h | 2 ++ 3 files changed, 47 insertions(+), 1 deletion(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 1/2] tests: fw_cfg: add a function to get the fw_cfg file entry 2019-01-20 7:13 [Qemu-devel] [PATCH 0/2] tests: fw_cfg: add reboot-timeout test case Li Qiang @ 2019-01-20 7:13 ` Li Qiang 2019-01-21 21:32 ` Laszlo Ersek 2019-01-20 7:13 ` [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case Li Qiang 1 sibling, 1 reply; 18+ messages in thread From: Li Qiang @ 2019-01-20 7:13 UTC (permalink / raw) To: philmd, lersek, kraxel, thuth, lvivier, pbonzini Cc: qemu-devel, liq3ea, Li Qiang This is useful to write qtest about fw_cfg file entry. Signed-off-by: Li Qiang <liq3ea@163.com> --- tests/libqos/fw_cfg.c | 33 +++++++++++++++++++++++++++++++++ tests/libqos/fw_cfg.h | 2 ++ 2 files changed, 35 insertions(+) diff --git a/tests/libqos/fw_cfg.c b/tests/libqos/fw_cfg.c index d0889d1e22..e2b0cae7cd 100644 --- a/tests/libqos/fw_cfg.c +++ b/tests/libqos/fw_cfg.c @@ -16,6 +16,7 @@ #include "libqos/fw_cfg.h" #include "libqtest.h" #include "qemu/bswap.h" +#include "standard-headers/linux/qemu_fw_cfg.h" void qfw_cfg_select(QFWCFG *fw_cfg, uint16_t key) { @@ -54,6 +55,38 @@ uint64_t qfw_cfg_get_u64(QFWCFG *fw_cfg, uint16_t key) return le64_to_cpu(value); } +size_t qfw_cfg_get_file(QFWCFG *fw_cfg, const char *filename, + void *data, size_t buflen) +{ + uint32_t count; + uint32_t i; + unsigned char *filesbuf = NULL; + uint32_t dsize; + struct fw_cfg_file *p; + size_t filesize = 0; + + qfw_cfg_get(fw_cfg, FW_CFG_FILE_DIR, &count, sizeof(count)); + count = be32_to_cpu(count); + dsize = sizeof(uint32_t) + count * sizeof(struct fw_cfg_file); + filesbuf = g_malloc0(dsize); + qfw_cfg_get(fw_cfg, FW_CFG_FILE_DIR, filesbuf, dsize); + p = (struct fw_cfg_file *)(filesbuf + sizeof(uint32_t)); + for (i = 0; i < count; ++i, ++p) { + if (!strcmp(p->name, filename)) { + uint32_t len = be32_to_cpu(p->size); + uint16_t sel = be16_to_cpu(p->select); + filesize = len; + if (len > buflen) { + len = buflen; + } + qfw_cfg_get(fw_cfg, sel, data, len); + break; + } + } + g_free(filesbuf); + return filesize; +} + static void mm_fw_cfg_select(QFWCFG *fw_cfg, uint16_t key) { qtest_writew(fw_cfg->qts, fw_cfg->base, key); diff --git a/tests/libqos/fw_cfg.h b/tests/libqos/fw_cfg.h index 0353416af0..de73722e67 100644 --- a/tests/libqos/fw_cfg.h +++ b/tests/libqos/fw_cfg.h @@ -31,6 +31,8 @@ void qfw_cfg_get(QFWCFG *fw_cfg, uint16_t key, void *data, size_t len); uint16_t qfw_cfg_get_u16(QFWCFG *fw_cfg, uint16_t key); uint32_t qfw_cfg_get_u32(QFWCFG *fw_cfg, uint16_t key); uint64_t qfw_cfg_get_u64(QFWCFG *fw_cfg, uint16_t key); +size_t qfw_cfg_get_file(QFWCFG *fw_cfg, const char *filename, + void *data, size_t buflen); QFWCFG *mm_fw_cfg_init(QTestState *qts, uint64_t base); QFWCFG *io_fw_cfg_init(QTestState *qts, uint16_t base); -- 2.17.1 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] tests: fw_cfg: add a function to get the fw_cfg file entry 2019-01-20 7:13 ` [Qemu-devel] [PATCH 1/2] tests: fw_cfg: add a function to get the fw_cfg file entry Li Qiang @ 2019-01-21 21:32 ` Laszlo Ersek 2019-01-22 1:21 ` Li Qiang 0 siblings, 1 reply; 18+ messages in thread From: Laszlo Ersek @ 2019-01-21 21:32 UTC (permalink / raw) To: Li Qiang, philmd, kraxel, thuth, lvivier, pbonzini; +Cc: qemu-devel, liq3ea On 01/20/19 08:13, Li Qiang wrote: > This is useful to write qtest about fw_cfg file entry. > > Signed-off-by: Li Qiang <liq3ea@163.com> > --- > tests/libqos/fw_cfg.c | 33 +++++++++++++++++++++++++++++++++ > tests/libqos/fw_cfg.h | 2 ++ > 2 files changed, 35 insertions(+) > > diff --git a/tests/libqos/fw_cfg.c b/tests/libqos/fw_cfg.c > index d0889d1e22..e2b0cae7cd 100644 > --- a/tests/libqos/fw_cfg.c > +++ b/tests/libqos/fw_cfg.c > @@ -16,6 +16,7 @@ > #include "libqos/fw_cfg.h" > #include "libqtest.h" > #include "qemu/bswap.h" > +#include "standard-headers/linux/qemu_fw_cfg.h" > > void qfw_cfg_select(QFWCFG *fw_cfg, uint16_t key) > { > @@ -54,6 +55,38 @@ uint64_t qfw_cfg_get_u64(QFWCFG *fw_cfg, uint16_t key) > return le64_to_cpu(value); > } > > +size_t qfw_cfg_get_file(QFWCFG *fw_cfg, const char *filename, > + void *data, size_t buflen) > +{ > + uint32_t count; > + uint32_t i; > + unsigned char *filesbuf = NULL; > + uint32_t dsize; dsize should be size_t > + struct fw_cfg_file *p; Please use a better variable name, such as "dir_entry" or similar. > + size_t filesize = 0; > + > + qfw_cfg_get(fw_cfg, FW_CFG_FILE_DIR, &count, sizeof(count)); > + count = be32_to_cpu(count); > + dsize = sizeof(uint32_t) + count * sizeof(struct fw_cfg_file); where does "struct fw_cfg_file" come from? ... more precisely: why use it over the "FWCfgFile" typedef? (applies to the declaration of "p" as well). > + filesbuf = g_malloc0(dsize); > + qfw_cfg_get(fw_cfg, FW_CFG_FILE_DIR, filesbuf, dsize); > + p = (struct fw_cfg_file *)(filesbuf + sizeof(uint32_t)); > + for (i = 0; i < count; ++i, ++p) { > + if (!strcmp(p->name, filename)) { > + uint32_t len = be32_to_cpu(p->size); > + uint16_t sel = be16_to_cpu(p->select); > + filesize = len; > + if (len > buflen) { > + len = buflen; > + } > + qfw_cfg_get(fw_cfg, sel, data, len); > + break; > + } > + } > + g_free(filesbuf); > + return filesize; > +} > + > static void mm_fw_cfg_select(QFWCFG *fw_cfg, uint16_t key) > { > qtest_writew(fw_cfg->qts, fw_cfg->base, key); > diff --git a/tests/libqos/fw_cfg.h b/tests/libqos/fw_cfg.h > index 0353416af0..de73722e67 100644 > --- a/tests/libqos/fw_cfg.h > +++ b/tests/libqos/fw_cfg.h > @@ -31,6 +31,8 @@ void qfw_cfg_get(QFWCFG *fw_cfg, uint16_t key, void *data, size_t len); > uint16_t qfw_cfg_get_u16(QFWCFG *fw_cfg, uint16_t key); > uint32_t qfw_cfg_get_u32(QFWCFG *fw_cfg, uint16_t key); > uint64_t qfw_cfg_get_u64(QFWCFG *fw_cfg, uint16_t key); > +size_t qfw_cfg_get_file(QFWCFG *fw_cfg, const char *filename, > + void *data, size_t buflen); > > QFWCFG *mm_fw_cfg_init(QTestState *qts, uint64_t base); > QFWCFG *io_fw_cfg_init(QTestState *qts, uint16_t base); > Looks OK to me otherwise. Thanks, Laszlo ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] tests: fw_cfg: add a function to get the fw_cfg file entry 2019-01-21 21:32 ` Laszlo Ersek @ 2019-01-22 1:21 ` Li Qiang 0 siblings, 0 replies; 18+ messages in thread From: Li Qiang @ 2019-01-22 1:21 UTC (permalink / raw) To: Laszlo Ersek Cc: Li Qiang, Philippe Mathieu-Daudé, Gerd Hoffmann, Thomas Huth, lvivier, Paolo Bonzini, Qemu Developers Laszlo Ersek <lersek@redhat.com> 于2019年1月22日周二 上午5:32写道: > On 01/20/19 08:13, Li Qiang wrote: > > This is useful to write qtest about fw_cfg file entry. > > > > Signed-off-by: Li Qiang <liq3ea@163.com> > > --- > > tests/libqos/fw_cfg.c | 33 +++++++++++++++++++++++++++++++++ > > tests/libqos/fw_cfg.h | 2 ++ > > 2 files changed, 35 insertions(+) > > > > diff --git a/tests/libqos/fw_cfg.c b/tests/libqos/fw_cfg.c > > index d0889d1e22..e2b0cae7cd 100644 > > --- a/tests/libqos/fw_cfg.c > > +++ b/tests/libqos/fw_cfg.c > > @@ -16,6 +16,7 @@ > > #include "libqos/fw_cfg.h" > > #include "libqtest.h" > > #include "qemu/bswap.h" > > +#include "standard-headers/linux/qemu_fw_cfg.h" > > > > void qfw_cfg_select(QFWCFG *fw_cfg, uint16_t key) > > { > > @@ -54,6 +55,38 @@ uint64_t qfw_cfg_get_u64(QFWCFG *fw_cfg, uint16_t key) > > return le64_to_cpu(value); > > } > > > > +size_t qfw_cfg_get_file(QFWCFG *fw_cfg, const char *filename, > > + void *data, size_t buflen) > > +{ > > + uint32_t count; > > + uint32_t i; > > + unsigned char *filesbuf = NULL; > > + uint32_t dsize; > > dsize should be size_t > > OK. > > + struct fw_cfg_file *p; > > Please use a better variable name, such as "dir_entry" or similar. > > OK. > > + size_t filesize = 0; > > + > > + qfw_cfg_get(fw_cfg, FW_CFG_FILE_DIR, &count, sizeof(count)); > > + count = be32_to_cpu(count); > > + dsize = sizeof(uint32_t) + count * sizeof(struct fw_cfg_file); > > where does "struct fw_cfg_file" come from? > > >From include/standard-headers/linux/qemu_fw_cfg.h > ... more precisely: why use it over the "FWCfgFile" typedef? (applies to > the declaration of "p" as well). > > Ok, I think we should use include/hw/nvram/fw_cfg.h. Thanks, Li Qiang > > + filesbuf = g_malloc0(dsize); > > + qfw_cfg_get(fw_cfg, FW_CFG_FILE_DIR, filesbuf, dsize); > > + p = (struct fw_cfg_file *)(filesbuf + sizeof(uint32_t)); > > + for (i = 0; i < count; ++i, ++p) { > > + if (!strcmp(p->name, filename)) { > > + uint32_t len = be32_to_cpu(p->size); > > + uint16_t sel = be16_to_cpu(p->select); > > + filesize = len; > > + if (len > buflen) { > > + len = buflen; > > + } > > + qfw_cfg_get(fw_cfg, sel, data, len); > > + break; > > + } > > + } > > + g_free(filesbuf); > > + return filesize; > > +} > > + > > static void mm_fw_cfg_select(QFWCFG *fw_cfg, uint16_t key) > > { > > qtest_writew(fw_cfg->qts, fw_cfg->base, key); > > diff --git a/tests/libqos/fw_cfg.h b/tests/libqos/fw_cfg.h > > index 0353416af0..de73722e67 100644 > > --- a/tests/libqos/fw_cfg.h > > +++ b/tests/libqos/fw_cfg.h > > @@ -31,6 +31,8 @@ void qfw_cfg_get(QFWCFG *fw_cfg, uint16_t key, void > *data, size_t len); > > uint16_t qfw_cfg_get_u16(QFWCFG *fw_cfg, uint16_t key); > > uint32_t qfw_cfg_get_u32(QFWCFG *fw_cfg, uint16_t key); > > uint64_t qfw_cfg_get_u64(QFWCFG *fw_cfg, uint16_t key); > > +size_t qfw_cfg_get_file(QFWCFG *fw_cfg, const char *filename, > > + void *data, size_t buflen); > > > > QFWCFG *mm_fw_cfg_init(QTestState *qts, uint64_t base); > > QFWCFG *io_fw_cfg_init(QTestState *qts, uint16_t base); > > > > Looks OK to me otherwise. > > Thanks, > Laszlo > ^ permalink raw reply [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2019-01-20 7:13 [Qemu-devel] [PATCH 0/2] tests: fw_cfg: add reboot-timeout test case Li Qiang 2019-01-20 7:13 ` [Qemu-devel] [PATCH 1/2] tests: fw_cfg: add a function to get the fw_cfg file entry Li Qiang @ 2019-01-20 7:13 ` Li Qiang 2019-01-21 21:38 ` Laszlo Ersek 1 sibling, 1 reply; 18+ messages in thread From: Li Qiang @ 2019-01-20 7:13 UTC (permalink / raw) To: philmd, lersek, kraxel, thuth, lvivier, pbonzini Cc: qemu-devel, liq3ea, Li Qiang Signed-off-by: Li Qiang <liq3ea@163.com> --- tests/fw_cfg-test.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c index 1c5103fe1c..c28e6c3fb5 100644 --- a/tests/fw_cfg-test.c +++ b/tests/fw_cfg-test.c @@ -99,6 +99,15 @@ static void test_fw_cfg_boot_menu(void) g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, boot_menu); } +static void test_fw_cfg_reboot_timeout(void) +{ + uint32_t reboot_timeout; + + qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", + &reboot_timeout, sizeof(reboot_timeout)); + g_assert_cmpint(reboot_timeout, ==, 15); +} + int main(int argc, char **argv) { QTestState *s; @@ -106,7 +115,8 @@ int main(int argc, char **argv) g_test_init(&argc, &argv, NULL); - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8 " + "-boot reboot-timeout=15"); fw_cfg = pc_fw_cfg_init(s); @@ -125,6 +135,7 @@ int main(int argc, char **argv) qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); + qtest_add_func("fw_cfg/reboot_timeout", test_fw_cfg_reboot_timeout); ret = g_test_run(); -- 2.17.1 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2019-01-20 7:13 ` [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case Li Qiang @ 2019-01-21 21:38 ` Laszlo Ersek 2019-01-22 1:28 ` Li Qiang 0 siblings, 1 reply; 18+ messages in thread From: Laszlo Ersek @ 2019-01-21 21:38 UTC (permalink / raw) To: Li Qiang, philmd, kraxel, thuth, lvivier, pbonzini; +Cc: qemu-devel, liq3ea On 01/20/19 08:13, Li Qiang wrote: > Signed-off-by: Li Qiang <liq3ea@163.com> > --- > tests/fw_cfg-test.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c > index 1c5103fe1c..c28e6c3fb5 100644 > --- a/tests/fw_cfg-test.c > +++ b/tests/fw_cfg-test.c > @@ -99,6 +99,15 @@ static void test_fw_cfg_boot_menu(void) > g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, boot_menu); > } > > +static void test_fw_cfg_reboot_timeout(void) > +{ > + uint32_t reboot_timeout; > + > + qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", > + &reboot_timeout, sizeof(reboot_timeout)); > + g_assert_cmpint(reboot_timeout, ==, 15); > +} > + You don't check the return status of qfw_cfg_get_file(), before reading "reboot_timeout". If the qfw_cfg_get_file() fails (returning 0), then the comparison will refer to an indeterminate value. Also, it's theoretically possible for qfw_cfg_get_file() to overwrite only part of the "reboot_timeout" object. So I think we need the function to transfer exactly (sizeof reboot_timeout) bytes. BTW, this reminds me, qfw_cfg_get_file() seems to return the number of bytes that would be necessary for transferring the entire file. That looks like a good idea, but it should be documented. Please add some docs on top of qfw_cfg_get_file(). > int main(int argc, char **argv) > { > QTestState *s; > @@ -106,7 +115,8 @@ int main(int argc, char **argv) > > g_test_init(&argc, &argv, NULL); > > - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); > + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8 " > + "-boot reboot-timeout=15"); > > fw_cfg = pc_fw_cfg_init(s); > > @@ -125,6 +135,7 @@ int main(int argc, char **argv) > qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); > qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); > qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); > + qtest_add_func("fw_cfg/reboot_timeout", test_fw_cfg_reboot_timeout); > > ret = g_test_run(); > > Looks OK otherwise. Thanks Laszlo ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2019-01-21 21:38 ` Laszlo Ersek @ 2019-01-22 1:28 ` Li Qiang 2019-01-22 12:10 ` Laszlo Ersek 0 siblings, 1 reply; 18+ messages in thread From: Li Qiang @ 2019-01-22 1:28 UTC (permalink / raw) To: Laszlo Ersek Cc: Li Qiang, Philippe Mathieu-Daudé, Gerd Hoffmann, Thomas Huth, lvivier, Paolo Bonzini, Qemu Developers Laszlo Ersek <lersek@redhat.com> 于2019年1月22日周二 上午5:38写道: > On 01/20/19 08:13, Li Qiang wrote: > > Signed-off-by: Li Qiang <liq3ea@163.com> > > --- > > tests/fw_cfg-test.c | 13 ++++++++++++- > > 1 file changed, 12 insertions(+), 1 deletion(-) > > > > diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c > > index 1c5103fe1c..c28e6c3fb5 100644 > > --- a/tests/fw_cfg-test.c > > +++ b/tests/fw_cfg-test.c > > @@ -99,6 +99,15 @@ static void test_fw_cfg_boot_menu(void) > > g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, > boot_menu); > > } > > > > +static void test_fw_cfg_reboot_timeout(void) > > +{ > > + uint32_t reboot_timeout; > > + > > + qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", > > + &reboot_timeout, sizeof(reboot_timeout)); > > + g_assert_cmpint(reboot_timeout, ==, 15); > > +} > > + > > You don't check the return status of qfw_cfg_get_file(), before reading > "reboot_timeout". If the qfw_cfg_get_file() fails (returning 0), then > the comparison will refer to an indeterminate value. Also, it's > theoretically possible for qfw_cfg_get_file() to overwrite only part of > the "reboot_timeout" object. > > Right. I will change in the next revision. > So I think we need the function to transfer exactly (sizeof > reboot_timeout) bytes. > > What does this mean? check the return of 'qfw_cfg_get_file' if it is sizeof(reboot_timeout)? > BTW, this reminds me, qfw_cfg_get_file() seems to return the number of > bytes that would be necessary for transferring the entire file. That > looks like a good idea, but it should be documented. Please add some > docs on top of qfw_cfg_get_file(). > > The docs like "return 0 means failed and non-zero means successful but the caller need check the exactly size to avoid partially file size" ? Thanks, Li Qiang > > int main(int argc, char **argv) > > { > > QTestState *s; > > @@ -106,7 +115,8 @@ int main(int argc, char **argv) > > > > g_test_init(&argc, &argv, NULL); > > > > - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); > > + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8 " > > + "-boot reboot-timeout=15"); > > > > fw_cfg = pc_fw_cfg_init(s); > > > > @@ -125,6 +135,7 @@ int main(int argc, char **argv) > > qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); > > qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); > > qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); > > + qtest_add_func("fw_cfg/reboot_timeout", test_fw_cfg_reboot_timeout); > > > > ret = g_test_run(); > > > > > > Looks OK otherwise. > > Thanks > Laszlo > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2019-01-22 1:28 ` Li Qiang @ 2019-01-22 12:10 ` Laszlo Ersek 0 siblings, 0 replies; 18+ messages in thread From: Laszlo Ersek @ 2019-01-22 12:10 UTC (permalink / raw) To: Li Qiang Cc: Li Qiang, Philippe Mathieu-Daudé, Gerd Hoffmann, Thomas Huth, lvivier, Paolo Bonzini, Qemu Developers On 01/22/19 02:28, Li Qiang wrote: > Laszlo Ersek <lersek@redhat.com> 于2019年1月22日周二 上午5:38写道: > >> On 01/20/19 08:13, Li Qiang wrote: >>> Signed-off-by: Li Qiang <liq3ea@163.com> >>> --- >>> tests/fw_cfg-test.c | 13 ++++++++++++- >>> 1 file changed, 12 insertions(+), 1 deletion(-) >>> >>> diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c >>> index 1c5103fe1c..c28e6c3fb5 100644 >>> --- a/tests/fw_cfg-test.c >>> +++ b/tests/fw_cfg-test.c >>> @@ -99,6 +99,15 @@ static void test_fw_cfg_boot_menu(void) >>> g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, >> boot_menu); >>> } >>> >>> +static void test_fw_cfg_reboot_timeout(void) >>> +{ >>> + uint32_t reboot_timeout; >>> + >>> + qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", >>> + &reboot_timeout, sizeof(reboot_timeout)); >>> + g_assert_cmpint(reboot_timeout, ==, 15); >>> +} >>> + >> >> You don't check the return status of qfw_cfg_get_file(), before reading >> "reboot_timeout". If the qfw_cfg_get_file() fails (returning 0), then >> the comparison will refer to an indeterminate value. Also, it's >> theoretically possible for qfw_cfg_get_file() to overwrite only part of >> the "reboot_timeout" object. >> >> > Right. I will change in the next revision. > > > >> So I think we need the function to transfer exactly (sizeof >> reboot_timeout) bytes. >> >> > What does this mean? check the return of 'qfw_cfg_get_file' if it is > sizeof(reboot_timeout)? Yes, that's what I meant. >> BTW, this reminds me, qfw_cfg_get_file() seems to return the number of >> bytes that would be necessary for transferring the entire file. That >> looks like a good idea, but it should be documented. Please add some >> docs on top of qfw_cfg_get_file(). >> >> > The docs like "return 0 means failed and non-zero means successful but > the caller need check the exactly size to avoid partially file size" ? Yes. A bit more precisely, when the return value is nonzero, it means that some bytes have been transferred. If the fw_cfg file in question is smaller than the allocated & passed-in buffer, then the buffer has been populated only in part. Vice versa, if the fw_cfg file in question is larger than the passed-in buffer, then the return value explains how much room would have been necessary in total. And, while the caller's buffer has been fully populated, it has received only a starting slice of the fw_cfg file. In the comparison that follows qfw_cfg_get_file(), we want to be sure that the "reboot_timeout" integer object has been fully populated, *plus* that we aren't ignoring any trailing bytes from the fw_cfg file. Hence the strict equality on the size. Thanks Laszlo ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <20190319023030.947-1-liq3ea@163.com>]
[parent not found: <20190319023030.947-3-liq3ea@163.com>]
* Re: [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case [not found] ` <20190319023030.947-3-liq3ea@163.com> @ 2019-04-18 21:01 ` Philippe Mathieu-Daudé 2019-04-18 21:01 ` Philippe Mathieu-Daudé ` (2 more replies) 0 siblings, 3 replies; 18+ messages in thread From: Philippe Mathieu-Daudé @ 2019-04-18 21:01 UTC (permalink / raw) To: Li Qiang, thuth, lvivier, pbonzini, lersek, kraxel; +Cc: qemu-devel, liq3ea Hi Li, On 3/19/19 3:30 AM, Li Qiang wrote: > Signed-off-by: Li Qiang <liq3ea@163.com> > --- > tests/fw_cfg-test.c | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) > > diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c > index 1c5103fe1c..551b51e38f 100644 > --- a/tests/fw_cfg-test.c > +++ b/tests/fw_cfg-test.c > @@ -99,6 +99,17 @@ static void test_fw_cfg_boot_menu(void) > g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, boot_menu); > } > > +static void test_fw_cfg_reboot_timeout(void) > +{ > + uint32_t reboot_timeout = 0; > + size_t filesize; > + > + filesize = qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", > + &reboot_timeout, sizeof(reboot_timeout)); > + g_assert_cmpint(filesize, ==, sizeof(reboot_timeout)); > + g_assert_cmpint(reboot_timeout, ==, 15); > +} > + > int main(int argc, char **argv) > { > QTestState *s; > @@ -106,7 +117,8 @@ int main(int argc, char **argv) > > g_test_init(&argc, &argv, NULL); > > - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); > + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8 " > + "-boot reboot-timeout=15"); This modify all tests. I'd rather add a specific test with this option. Doing so, we can easily modify the timeout and add the <0 and >0xffff cases. Can you think of a 'splash-time' test (for commit 6912bb0b3d3b1)? Regards, Phil. > > fw_cfg = pc_fw_cfg_init(s); > > @@ -125,6 +137,7 @@ int main(int argc, char **argv) > qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); > qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); > qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); > + qtest_add_func("fw_cfg/reboot_timeout", test_fw_cfg_reboot_timeout); > > ret = g_test_run(); > > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2019-04-18 21:01 ` Philippe Mathieu-Daudé @ 2019-04-18 21:01 ` Philippe Mathieu-Daudé 2019-04-19 2:23 ` Li Qiang 2019-04-20 10:07 ` Li Qiang 2 siblings, 0 replies; 18+ messages in thread From: Philippe Mathieu-Daudé @ 2019-04-18 21:01 UTC (permalink / raw) To: Li Qiang, thuth, lvivier, pbonzini, lersek, kraxel; +Cc: liq3ea, qemu-devel Hi Li, On 3/19/19 3:30 AM, Li Qiang wrote: > Signed-off-by: Li Qiang <liq3ea@163.com> > --- > tests/fw_cfg-test.c | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) > > diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c > index 1c5103fe1c..551b51e38f 100644 > --- a/tests/fw_cfg-test.c > +++ b/tests/fw_cfg-test.c > @@ -99,6 +99,17 @@ static void test_fw_cfg_boot_menu(void) > g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, boot_menu); > } > > +static void test_fw_cfg_reboot_timeout(void) > +{ > + uint32_t reboot_timeout = 0; > + size_t filesize; > + > + filesize = qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", > + &reboot_timeout, sizeof(reboot_timeout)); > + g_assert_cmpint(filesize, ==, sizeof(reboot_timeout)); > + g_assert_cmpint(reboot_timeout, ==, 15); > +} > + > int main(int argc, char **argv) > { > QTestState *s; > @@ -106,7 +117,8 @@ int main(int argc, char **argv) > > g_test_init(&argc, &argv, NULL); > > - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); > + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8 " > + "-boot reboot-timeout=15"); This modify all tests. I'd rather add a specific test with this option. Doing so, we can easily modify the timeout and add the <0 and >0xffff cases. Can you think of a 'splash-time' test (for commit 6912bb0b3d3b1)? Regards, Phil. > > fw_cfg = pc_fw_cfg_init(s); > > @@ -125,6 +137,7 @@ int main(int argc, char **argv) > qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); > qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); > qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); > + qtest_add_func("fw_cfg/reboot_timeout", test_fw_cfg_reboot_timeout); > > ret = g_test_run(); > > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2019-04-18 21:01 ` Philippe Mathieu-Daudé 2019-04-18 21:01 ` Philippe Mathieu-Daudé @ 2019-04-19 2:23 ` Li Qiang 2019-04-19 2:23 ` Li Qiang 2019-04-20 10:07 ` Li Qiang 2 siblings, 1 reply; 18+ messages in thread From: Li Qiang @ 2019-04-19 2:23 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: Li Qiang, Thomas Huth, lvivier, Paolo Bonzini, Laszlo Ersek, Gerd Hoffmann, Qemu Developers Philippe Mathieu-Daudé <philmd@redhat.com> 于2019年4月19日周五 上午5:01写道: > Hi Li, > > On 3/19/19 3:30 AM, Li Qiang wrote: > > Signed-off-by: Li Qiang <liq3ea@163.com> > > --- > > tests/fw_cfg-test.c | 15 ++++++++++++++- > > 1 file changed, 14 insertions(+), 1 deletion(-) > > > > diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c > > index 1c5103fe1c..551b51e38f 100644 > > --- a/tests/fw_cfg-test.c > > +++ b/tests/fw_cfg-test.c > > @@ -99,6 +99,17 @@ static void test_fw_cfg_boot_menu(void) > > g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, > boot_menu); > > } > > > > +static void test_fw_cfg_reboot_timeout(void) > > +{ > > + uint32_t reboot_timeout = 0; > > + size_t filesize; > > + > > + filesize = qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", > > + &reboot_timeout, sizeof(reboot_timeout)); > > + g_assert_cmpint(filesize, ==, sizeof(reboot_timeout)); > > + g_assert_cmpint(reboot_timeout, ==, 15); > > +} > > + > > int main(int argc, char **argv) > > { > > QTestState *s; > > @@ -106,7 +117,8 @@ int main(int argc, char **argv) > > > > g_test_init(&argc, &argv, NULL); > > > > - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); > > + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8 " > > + "-boot reboot-timeout=15"); > > This modify all tests. I'd rather add a specific test with this option. > Doing so, we can easily modify the timeout and add the <0 and >0xffff > cases. > > Ok, will do in the next revision. > Can you think of a 'splash-time' test (for commit 6912bb0b3d3b1)? Ok. PS: any comments in the first patch. Thanks, Li Qiang > > Regards, > > Phil. > > > > > fw_cfg = pc_fw_cfg_init(s); > > > > @@ -125,6 +137,7 @@ int main(int argc, char **argv) > > qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); > > qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); > > qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); > > + qtest_add_func("fw_cfg/reboot_timeout", test_fw_cfg_reboot_timeout); > > > > ret = g_test_run(); > > > > > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2019-04-19 2:23 ` Li Qiang @ 2019-04-19 2:23 ` Li Qiang 0 siblings, 0 replies; 18+ messages in thread From: Li Qiang @ 2019-04-19 2:23 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: lvivier, Thomas Huth, Li Qiang, Qemu Developers, Gerd Hoffmann, Paolo Bonzini, Laszlo Ersek Philippe Mathieu-Daudé <philmd@redhat.com> 于2019年4月19日周五 上午5:01写道: > Hi Li, > > On 3/19/19 3:30 AM, Li Qiang wrote: > > Signed-off-by: Li Qiang <liq3ea@163.com> > > --- > > tests/fw_cfg-test.c | 15 ++++++++++++++- > > 1 file changed, 14 insertions(+), 1 deletion(-) > > > > diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c > > index 1c5103fe1c..551b51e38f 100644 > > --- a/tests/fw_cfg-test.c > > +++ b/tests/fw_cfg-test.c > > @@ -99,6 +99,17 @@ static void test_fw_cfg_boot_menu(void) > > g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, > boot_menu); > > } > > > > +static void test_fw_cfg_reboot_timeout(void) > > +{ > > + uint32_t reboot_timeout = 0; > > + size_t filesize; > > + > > + filesize = qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", > > + &reboot_timeout, sizeof(reboot_timeout)); > > + g_assert_cmpint(filesize, ==, sizeof(reboot_timeout)); > > + g_assert_cmpint(reboot_timeout, ==, 15); > > +} > > + > > int main(int argc, char **argv) > > { > > QTestState *s; > > @@ -106,7 +117,8 @@ int main(int argc, char **argv) > > > > g_test_init(&argc, &argv, NULL); > > > > - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); > > + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8 " > > + "-boot reboot-timeout=15"); > > This modify all tests. I'd rather add a specific test with this option. > Doing so, we can easily modify the timeout and add the <0 and >0xffff > cases. > > Ok, will do in the next revision. > Can you think of a 'splash-time' test (for commit 6912bb0b3d3b1)? Ok. PS: any comments in the first patch. Thanks, Li Qiang > > Regards, > > Phil. > > > > > fw_cfg = pc_fw_cfg_init(s); > > > > @@ -125,6 +137,7 @@ int main(int argc, char **argv) > > qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); > > qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); > > qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); > > + qtest_add_func("fw_cfg/reboot_timeout", test_fw_cfg_reboot_timeout); > > > > ret = g_test_run(); > > > > > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2019-04-18 21:01 ` Philippe Mathieu-Daudé 2019-04-18 21:01 ` Philippe Mathieu-Daudé 2019-04-19 2:23 ` Li Qiang @ 2019-04-20 10:07 ` Li Qiang 2019-04-20 10:07 ` Li Qiang 2 siblings, 1 reply; 18+ messages in thread From: Li Qiang @ 2019-04-20 10:07 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: Li Qiang, Thomas Huth, lvivier, Paolo Bonzini, Laszlo Ersek, Gerd Hoffmann, Qemu Developers Philippe Mathieu-Daudé <philmd@redhat.com> 于2019年4月19日周五 上午5:01写道: > Hi Li, > > On 3/19/19 3:30 AM, Li Qiang wrote: > > Signed-off-by: Li Qiang <liq3ea@163.com> > > --- > > tests/fw_cfg-test.c | 15 ++++++++++++++- > > 1 file changed, 14 insertions(+), 1 deletion(-) > > > > diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c > > index 1c5103fe1c..551b51e38f 100644 > > --- a/tests/fw_cfg-test.c > > +++ b/tests/fw_cfg-test.c > > @@ -99,6 +99,17 @@ static void test_fw_cfg_boot_menu(void) > > g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, > boot_menu); > > } > > > > +static void test_fw_cfg_reboot_timeout(void) > > +{ > > + uint32_t reboot_timeout = 0; > > + size_t filesize; > > + > > + filesize = qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", > > + &reboot_timeout, sizeof(reboot_timeout)); > > + g_assert_cmpint(filesize, ==, sizeof(reboot_timeout)); > > + g_assert_cmpint(reboot_timeout, ==, 15); > > +} > > + > > int main(int argc, char **argv) > > { > > QTestState *s; > > @@ -106,7 +117,8 @@ int main(int argc, char **argv) > > > > g_test_init(&argc, &argv, NULL); > > > > - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); > > + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8 " > > + "-boot reboot-timeout=15"); > > This modify all tests. I'd rather add a specific test with this option. > Doing so, we can easily modify the timeout and add the <0 and >0xffff > cases. > > Can you think of a 'splash-time' test (for commit 6912bb0b3d3b1)? > > Hi Philippe, I have sent out the new revision patchset. Please notice as the new patchset changed a lot(refactor the fw_cfg_test and add two test cases) I don't bump the version. Thanks, Li Qiang > Regards, > > Phil. > > > > > fw_cfg = pc_fw_cfg_init(s); > > > > @@ -125,6 +137,7 @@ int main(int argc, char **argv) > > qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); > > qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); > > qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); > > + qtest_add_func("fw_cfg/reboot_timeout", test_fw_cfg_reboot_timeout); > > > > ret = g_test_run(); > > > > > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2019-04-20 10:07 ` Li Qiang @ 2019-04-20 10:07 ` Li Qiang 0 siblings, 0 replies; 18+ messages in thread From: Li Qiang @ 2019-04-20 10:07 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: lvivier, Thomas Huth, Li Qiang, Qemu Developers, Gerd Hoffmann, Paolo Bonzini, Laszlo Ersek Philippe Mathieu-Daudé <philmd@redhat.com> 于2019年4月19日周五 上午5:01写道: > Hi Li, > > On 3/19/19 3:30 AM, Li Qiang wrote: > > Signed-off-by: Li Qiang <liq3ea@163.com> > > --- > > tests/fw_cfg-test.c | 15 ++++++++++++++- > > 1 file changed, 14 insertions(+), 1 deletion(-) > > > > diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c > > index 1c5103fe1c..551b51e38f 100644 > > --- a/tests/fw_cfg-test.c > > +++ b/tests/fw_cfg-test.c > > @@ -99,6 +99,17 @@ static void test_fw_cfg_boot_menu(void) > > g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, > boot_menu); > > } > > > > +static void test_fw_cfg_reboot_timeout(void) > > +{ > > + uint32_t reboot_timeout = 0; > > + size_t filesize; > > + > > + filesize = qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", > > + &reboot_timeout, sizeof(reboot_timeout)); > > + g_assert_cmpint(filesize, ==, sizeof(reboot_timeout)); > > + g_assert_cmpint(reboot_timeout, ==, 15); > > +} > > + > > int main(int argc, char **argv) > > { > > QTestState *s; > > @@ -106,7 +117,8 @@ int main(int argc, char **argv) > > > > g_test_init(&argc, &argv, NULL); > > > > - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); > > + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8 " > > + "-boot reboot-timeout=15"); > > This modify all tests. I'd rather add a specific test with this option. > Doing so, we can easily modify the timeout and add the <0 and >0xffff > cases. > > Can you think of a 'splash-time' test (for commit 6912bb0b3d3b1)? > > Hi Philippe, I have sent out the new revision patchset. Please notice as the new patchset changed a lot(refactor the fw_cfg_test and add two test cases) I don't bump the version. Thanks, Li Qiang > Regards, > > Phil. > > > > > fw_cfg = pc_fw_cfg_init(s); > > > > @@ -125,6 +137,7 @@ int main(int argc, char **argv) > > qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); > > qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); > > qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); > > + qtest_add_func("fw_cfg/reboot_timeout", test_fw_cfg_reboot_timeout); > > > > ret = g_test_run(); > > > > > ^ permalink raw reply [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 0/2] test: fw_cfg: add reboot-timeout test case @ 2018-10-28 12:40 Li Qiang 2018-10-28 12:40 ` [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout " Li Qiang 0 siblings, 1 reply; 18+ messages in thread From: Li Qiang @ 2018-10-28 12:40 UTC (permalink / raw) To: pbonzini, thuth, lvivier; +Cc: philmd, qemu-devel, Li Qiang This patchset is the test case for the following patch: https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg05254.html Li Qiang (2): tests: fw_cfg: add a function to get the fw_cfg file entry tests: fw_cfg: add reboot_timeout test case tests/fw_cfg-test.c | 13 ++++++++++++- tests/libqos/fw_cfg.c | 30 ++++++++++++++++++++++++++++++ tests/libqos/fw_cfg.h | 2 ++ 3 files changed, 44 insertions(+), 1 deletion(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2018-10-28 12:40 [Qemu-devel] [PATCH 0/2] test: fw_cfg: add reboot-timeout " Li Qiang @ 2018-10-28 12:40 ` Li Qiang 2018-10-30 0:08 ` Philippe Mathieu-Daudé 0 siblings, 1 reply; 18+ messages in thread From: Li Qiang @ 2018-10-28 12:40 UTC (permalink / raw) To: pbonzini, thuth, lvivier; +Cc: philmd, qemu-devel, Li Qiang Signed-off-by: Li Qiang <liq3ea@163.com> --- tests/fw_cfg-test.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c index 1c5103fe1c..37765f15f8 100644 --- a/tests/fw_cfg-test.c +++ b/tests/fw_cfg-test.c @@ -99,6 +99,15 @@ static void test_fw_cfg_boot_menu(void) g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, boot_menu); } +static void test_fw_cfg_reboot_timeout(void) +{ + uint32_t reboot_timeout; + + qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", + &reboot_timeout, sizeof(reboot_timeout)); + g_assert_cmpint(reboot_timeout, <=, 65535); +} + int main(int argc, char **argv) { QTestState *s; @@ -106,7 +115,8 @@ int main(int argc, char **argv) g_test_init(&argc, &argv, NULL); - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8" + " -boot reboot-timeout=4294967295"); fw_cfg = pc_fw_cfg_init(s); @@ -125,6 +135,7 @@ int main(int argc, char **argv) qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); + qtest_add_func("fw_cfg/reboot_timeout", test_fw_cfg_reboot_timeout); ret = g_test_run(); -- 2.17.1 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2018-10-28 12:40 ` [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout " Li Qiang @ 2018-10-30 0:08 ` Philippe Mathieu-Daudé 2018-10-30 1:20 ` li qiang 2018-10-30 4:33 ` 李强 0 siblings, 2 replies; 18+ messages in thread From: Philippe Mathieu-Daudé @ 2018-10-30 0:08 UTC (permalink / raw) To: Li Qiang, pbonzini, thuth, lvivier; +Cc: qemu-devel On 28/10/18 13:40, Li Qiang wrote: > Signed-off-by: Li Qiang <liq3ea@163.com> > --- > tests/fw_cfg-test.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c > index 1c5103fe1c..37765f15f8 100644 > --- a/tests/fw_cfg-test.c > +++ b/tests/fw_cfg-test.c > @@ -99,6 +99,15 @@ static void test_fw_cfg_boot_menu(void) > g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, boot_menu); > } > > +static void test_fw_cfg_reboot_timeout(void) > +{ > + uint32_t reboot_timeout; > + > + qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", > + &reboot_timeout, sizeof(reboot_timeout)); > + g_assert_cmpint(reboot_timeout, <=, 65535); > +} > + > int main(int argc, char **argv) > { > QTestState *s; > @@ -106,7 +115,8 @@ int main(int argc, char **argv) > > g_test_init(&argc, &argv, NULL); > > - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); > + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8" > + " -boot reboot-timeout=4294967295"); I'd rather change this test to use qtest_add_data_func() ...: qtest_add_data_func("fw_cfg/reboot_timeout", "-boot reboot-timeout=4294967295 ", test_fw_cfg_reboot_timeout); ... to avoid adding this command line option to all the tests, because all tests are now failing: $ make check-qtest-i386 [...] ERROR:qemu/tests/fw_cfg-test.c:33:test_fw_cfg_signature: assertion failed (buf == "QEMU"): ("\377\377\377\377" == "QEMU") ERROR:qemu/tests/fw_cfg-test.c:40:test_fw_cfg_id: assertion failed: ((id == 1) || (id == 3)) ERROR:qemu/tests/fw_cfg-test.c:52:test_fw_cfg_uuid: assertion failed: (memcmp(buf, uuid, sizeof(buf)) == 0) ERROR:qemu/tests/fw_cfg-test.c:57:test_fw_cfg_ram_size: assertion failed (qfw_cfg_get_u64(fw_cfg, FW_CFG_RAM_SIZE) == ram_size): (-1 == 134217728) ERROR:qemu/tests/fw_cfg-test.c:62:test_fw_cfg_nographic: assertion failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_NOGRAPHIC) == 0): (65535 == 0) ERROR:qemu/tests/fw_cfg-test.c:67:test_fw_cfg_nb_cpus: assertion failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_NB_CPUS) == nb_cpus): (65535 == 1) ERROR:qemu/tests/fw_cfg-test.c:72:test_fw_cfg_max_cpus: assertion failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_MAX_CPUS) == max_cpus): (65535 == 1) ERROR:qemu/tests/fw_cfg-test.c:80:test_fw_cfg_numa: assertion failed (qfw_cfg_get_u64(fw_cfg, FW_CFG_NUMA) == nb_nodes): (-1 == 0) ERROR:qemu/tests/fw_cfg-test.c:99:test_fw_cfg_boot_menu: assertion failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU) == boot_menu): (65535 == 0) (did you test your patch?) > > fw_cfg = pc_fw_cfg_init(s); > > @@ -125,6 +135,7 @@ int main(int argc, char **argv) > qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); > qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); > qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); > + qtest_add_func("fw_cfg/reboot_timeout", test_fw_cfg_reboot_timeout); > > ret = g_test_run(); > > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2018-10-30 0:08 ` Philippe Mathieu-Daudé @ 2018-10-30 1:20 ` li qiang 2018-10-30 4:33 ` 李强 1 sibling, 0 replies; 18+ messages in thread From: li qiang @ 2018-10-30 1:20 UTC (permalink / raw) To: Philippe Mathieu-Daudé, Li Qiang, pbonzini@redhat.com, thuth@redhat.com, lvivier@redhat.com Cc: qemu-devel@nongnu.org 在 2018/10/30 8:08, Philippe Mathieu-Daudé 写道: > On 28/10/18 13:40, Li Qiang wrote: >> Signed-off-by: Li Qiang <liq3ea@163.com> >> --- >> tests/fw_cfg-test.c | 13 ++++++++++++- >> 1 file changed, 12 insertions(+), 1 deletion(-) >> >> diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c >> index 1c5103fe1c..37765f15f8 100644 >> --- a/tests/fw_cfg-test.c >> +++ b/tests/fw_cfg-test.c >> @@ -99,6 +99,15 @@ static void test_fw_cfg_boot_menu(void) >> g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, >> boot_menu); >> } >> +static void test_fw_cfg_reboot_timeout(void) >> +{ >> + uint32_t reboot_timeout; >> + >> + qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", >> + &reboot_timeout, sizeof(reboot_timeout)); >> + g_assert_cmpint(reboot_timeout, <=, 65535); >> +} >> + >> int main(int argc, char **argv) >> { >> QTestState *s; >> @@ -106,7 +115,8 @@ int main(int argc, char **argv) >> g_test_init(&argc, &argv, NULL); >> - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); >> + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8" >> + " -boot reboot-timeout=4294967295"); > > I'd rather change this test to use qtest_add_data_func() ...: > > qtest_add_data_func("fw_cfg/reboot_timeout", "-boot > reboot-timeout=4294967295 ", test_fw_cfg_reboot_timeout); > > ... to avoid adding this command line option to all the tests, because > all tests are now failing: > > $ make check-qtest-i386 > [...] > ERROR:qemu/tests/fw_cfg-test.c:33:test_fw_cfg_signature: assertion > failed (buf == "QEMU"): ("\377\377\377\377" == "QEMU") > ERROR:qemu/tests/fw_cfg-test.c:40:test_fw_cfg_id: assertion failed: > ((id == 1) || (id == 3)) > ERROR:qemu/tests/fw_cfg-test.c:52:test_fw_cfg_uuid: assertion failed: > (memcmp(buf, uuid, sizeof(buf)) == 0) > ERROR:qemu/tests/fw_cfg-test.c:57:test_fw_cfg_ram_size: assertion > failed (qfw_cfg_get_u64(fw_cfg, FW_CFG_RAM_SIZE) == ram_size): (-1 == > 134217728) > ERROR:qemu/tests/fw_cfg-test.c:62:test_fw_cfg_nographic: assertion > failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_NOGRAPHIC) == 0): (65535 == 0) > ERROR:qemu/tests/fw_cfg-test.c:67:test_fw_cfg_nb_cpus: assertion > failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_NB_CPUS) == nb_cpus): (65535 == 1) > ERROR:qemu/tests/fw_cfg-test.c:72:test_fw_cfg_max_cpus: assertion > failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_MAX_CPUS) == max_cpus): (65535 > == 1) > ERROR:qemu/tests/fw_cfg-test.c:80:test_fw_cfg_numa: assertion failed > (qfw_cfg_get_u64(fw_cfg, FW_CFG_NUMA) == nb_nodes): (-1 == 0) > ERROR:qemu/tests/fw_cfg-test.c:99:test_fw_cfg_boot_menu: assertion > failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU) == boot_menu): > (65535 == 0) > > > (did you test your patch?) > Of course I test it, but only in x86_64. Here is the result without the fix patch. xxxqemu# QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 tests/fw_cfg-test /x86_64/fw_cfg/signature: OK /x86_64/fw_cfg/id: OK /x86_64/fw_cfg/uuid: OK /x86_64/fw_cfg/ram_size: OK /x86_64/fw_cfg/nographic: OK /x86_64/fw_cfg/nb_cpus: OK /x86_64/fw_cfg/max_cpus: OK /x86_64/fw_cfg/numa: OK /x86_64/fw_cfg/boot_menu: OK /x86_64/fw_cfg/reboot_timeout: ** ERROR:tests/fw_cfg-test.c:108:test_fw_cfg_reboot_timeout: assertion failed (reboot_timeout <= 65535): (4294967295 <= 65535) Aborted xxxqemu# make check-qtest-x86_64 GTESTER check-qtest-x86_64 ** ERROR:tests/fw_cfg-test.c:108:test_fw_cfg_reboot_timeout: assertion failed (reboot_timeout <= 65535): (4294967295 <= 65535) GTester: last random seed: R02Sfed7191ede4ed60d4f3069f9ec808e73 xxxqemu/tests/Makefile.include:805: recipe for target 'check-qtest-x86_64' failed make: *** [check-qtest-x86_64] Error 1 I did it in i386 right now. Following is the results: xxxqemu# QTEST_QEMU_BINARY=i386-softmmu/qemu-system-i386 tests/fw_cfg-test /i386/fw_cfg/signature: OK /i386/fw_cfg/id: OK /i386/fw_cfg/uuid: OK /i386/fw_cfg/ram_size: OK /i386/fw_cfg/nographic: OK /i386/fw_cfg/nb_cpus: OK /i386/fw_cfg/max_cpus: OK /i386/fw_cfg/numa: OK /i386/fw_cfg/boot_menu: OK /i386/fw_cfg/reboot_timeout: ** ERROR:tests/fw_cfg-test.c:108:test_fw_cfg_reboot_timeout: assertion failed (reboot_timeout <= 65535): (4294967295 <= 65535) Aborted xxxqemu# make chek-qtest-i386 make: *** No rule to make target 'chek-qtest-i386'. Stop. xxxqemu# make check-qtest-i386 GTESTER check-qtest-i386 ** ERROR:tests/fw_cfg-test.c:108:test_fw_cfg_reboot_timeout: assertion failed (reboot_timeout <= 65535): (4294967295 <= 65535) GTester: last random seed: R02S7659b379e665961e0060afeb449948b2 xxxqemu/tests/Makefile.include:805: recipe for target 'check-qtest-i386' failed make: *** [check-qtest-i386] Error 1 Thanks, Li Qiang >> fw_cfg = pc_fw_cfg_init(s); >> @@ -125,6 +135,7 @@ int main(int argc, char **argv) >> qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); >> qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); >> qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); >> + qtest_add_func("fw_cfg/reboot_timeout", >> test_fw_cfg_reboot_timeout); >> ret = g_test_run(); >> > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case 2018-10-30 0:08 ` Philippe Mathieu-Daudé 2018-10-30 1:20 ` li qiang @ 2018-10-30 4:33 ` 李强 1 sibling, 0 replies; 18+ messages in thread From: 李强 @ 2018-10-30 4:33 UTC (permalink / raw) To: Philippe Mathieu-Daudé; +Cc: pbonzini, thuth, lvivier, qemu-devel At 2018-10-30 08:08:55, "Philippe Mathieu-Daudé" <philmd@redhat.com> wrote: >On 28/10/18 13:40, Li Qiang wrote: >> Signed-off-by: Li Qiang <liq3ea@163.com> >> --- >> tests/fw_cfg-test.c | 13 ++++++++++++- >> 1 file changed, 12 insertions(+), 1 deletion(-) >> >> diff --git a/tests/fw_cfg-test.c b/tests/fw_cfg-test.c >> index 1c5103fe1c..37765f15f8 100644 >> --- a/tests/fw_cfg-test.c >> +++ b/tests/fw_cfg-test.c >> @@ -99,6 +99,15 @@ static void test_fw_cfg_boot_menu(void) >> g_assert_cmpint(qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU), ==, boot_menu); >> } >> >> +static void test_fw_cfg_reboot_timeout(void) >> +{ >> + uint32_t reboot_timeout; >> + >> + qfw_cfg_get_file(fw_cfg, "etc/boot-fail-wait", >> + &reboot_timeout, sizeof(reboot_timeout)); >> + g_assert_cmpint(reboot_timeout, <=, 65535); >> +} >> + >> int main(int argc, char **argv) >> { >> QTestState *s; >> @@ -106,7 +115,8 @@ int main(int argc, char **argv) >> >> g_test_init(&argc, &argv, NULL); >> >> - s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8"); >> + s = qtest_init("-uuid 4600cb32-38ec-4b2f-8acb-81c6ea54f2d8" >> + " -boot reboot-timeout=4294967295"); > >I'd rather change this test to use qtest_add_data_func() ...: > > qtest_add_data_func("fw_cfg/reboot_timeout", "-boot >reboot-timeout=4294967295 ", test_fw_cfg_reboot_timeout); > Hi here I think use qtest_add_func is ok because there is no need to make such an exception as all of them uses qtest_add_func. Second, the uuid is also uses by all the cases though some of them are not needed. Third, the -boot option will not affect the other cases. Thanks, Li Qiang >... to avoid adding this command line option to all the tests, because >all tests are now failing: > >$ make check-qtest-i386 >[...] >ERROR:qemu/tests/fw_cfg-test.c:33:test_fw_cfg_signature: assertion >failed (buf == "QEMU"): ("\377\377\377\377" == "QEMU") >ERROR:qemu/tests/fw_cfg-test.c:40:test_fw_cfg_id: assertion failed: ((id >== 1) || (id == 3)) >ERROR:qemu/tests/fw_cfg-test.c:52:test_fw_cfg_uuid: assertion failed: >(memcmp(buf, uuid, sizeof(buf)) == 0) >ERROR:qemu/tests/fw_cfg-test.c:57:test_fw_cfg_ram_size: assertion failed >(qfw_cfg_get_u64(fw_cfg, FW_CFG_RAM_SIZE) == ram_size): (-1 == 134217728) >ERROR:qemu/tests/fw_cfg-test.c:62:test_fw_cfg_nographic: assertion >failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_NOGRAPHIC) == 0): (65535 == 0) >ERROR:qemu/tests/fw_cfg-test.c:67:test_fw_cfg_nb_cpus: assertion failed >(qfw_cfg_get_u16(fw_cfg, FW_CFG_NB_CPUS) == nb_cpus): (65535 == 1) >ERROR:qemu/tests/fw_cfg-test.c:72:test_fw_cfg_max_cpus: assertion failed >(qfw_cfg_get_u16(fw_cfg, FW_CFG_MAX_CPUS) == max_cpus): (65535 == 1) >ERROR:qemu/tests/fw_cfg-test.c:80:test_fw_cfg_numa: assertion failed >(qfw_cfg_get_u64(fw_cfg, FW_CFG_NUMA) == nb_nodes): (-1 == 0) >ERROR:qemu/tests/fw_cfg-test.c:99:test_fw_cfg_boot_menu: assertion >failed (qfw_cfg_get_u16(fw_cfg, FW_CFG_BOOT_MENU) == boot_menu): (65535 >== 0) > > >(did you test your patch?) > >> >> fw_cfg = pc_fw_cfg_init(s); >> >> @@ -125,6 +135,7 @@ int main(int argc, char **argv) >> qtest_add_func("fw_cfg/max_cpus", test_fw_cfg_max_cpus); >> qtest_add_func("fw_cfg/numa", test_fw_cfg_numa); >> qtest_add_func("fw_cfg/boot_menu", test_fw_cfg_boot_menu); >> + qtest_add_func("fw_cfg/reboot_timeout", test_fw_cfg_reboot_timeout); >> >> ret = g_test_run(); >> >> ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2019-04-20 10:09 UTC | newest] Thread overview: 18+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-01-20 7:13 [Qemu-devel] [PATCH 0/2] tests: fw_cfg: add reboot-timeout test case Li Qiang 2019-01-20 7:13 ` [Qemu-devel] [PATCH 1/2] tests: fw_cfg: add a function to get the fw_cfg file entry Li Qiang 2019-01-21 21:32 ` Laszlo Ersek 2019-01-22 1:21 ` Li Qiang 2019-01-20 7:13 ` [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout test case Li Qiang 2019-01-21 21:38 ` Laszlo Ersek 2019-01-22 1:28 ` Li Qiang 2019-01-22 12:10 ` Laszlo Ersek [not found] <20190319023030.947-1-liq3ea@163.com> [not found] ` <20190319023030.947-3-liq3ea@163.com> 2019-04-18 21:01 ` Philippe Mathieu-Daudé 2019-04-18 21:01 ` Philippe Mathieu-Daudé 2019-04-19 2:23 ` Li Qiang 2019-04-19 2:23 ` Li Qiang 2019-04-20 10:07 ` Li Qiang 2019-04-20 10:07 ` Li Qiang -- strict thread matches above, loose matches on Subject: below -- 2018-10-28 12:40 [Qemu-devel] [PATCH 0/2] test: fw_cfg: add reboot-timeout " Li Qiang 2018-10-28 12:40 ` [Qemu-devel] [PATCH 2/2] tests: fw_cfg: add reboot_timeout " Li Qiang 2018-10-30 0:08 ` Philippe Mathieu-Daudé 2018-10-30 1:20 ` li qiang 2018-10-30 4:33 ` 李强
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).