[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 03/15] tests/acpi/bios-tables-test: do not write new blobs unless
From: |
Michael S. Tsirkin |
Subject: |
[PULL 03/15] tests/acpi/bios-tables-test: do not write new blobs unless there are changes |
Date: |
Fri, 1 Dec 2023 12:15:16 -0500 |
From: Ani Sinha <anisinha@redhat.com>
When dumping table blobs using rebuild-expected-aml.sh, table blobs from all
test variants are dumped regardless of whether there are any actual changes to
the tables or not. This creates lot of new files for various test variants that
are not part of the git repository. This is because we do not check in all table
blobs for all test variants into the repository. Only those blobs for those
variants that are different from the generic test-variant agnostic blob are
checked in.
This change makes the test smarter by checking if at all there are any changes
in the tables from the checked-in gold master blobs and take actions
accordingly.
When there are no changes:
- No new table blobs would be written.
- Existing table blobs will be refreshed (git diff will show no changes).
When there are changes:
- New table blob files will be dumped.
- Existing table blobs will be refreshed (git diff will show that the files
changed, asl diff will show the actual changes).
When new tables are introduced:
- Zero byte empty file blobs for new tables as instructed in the header of
bios-tables-test.c will be regenerated to actual table blobs.
This would make analyzing changes to tables less confusing and there would
be no need to clean useless untracked files when there are no table changes.
CC: peter.maydell@linaro.org
Signed-off-by: Ani Sinha <anisinha@redhat.com>
Message-Id: <20231107044952.5461-1-anisinha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
tests/qtest/bios-tables-test.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 71af5cf69f..fe6a9a8563 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -112,6 +112,7 @@ static const char *iasl;
#endif
static int verbosity_level;
+static GArray *load_expected_aml(test_data *data);
static bool compare_signature(const AcpiSdtTable *sdt, const char *signature)
{
@@ -244,21 +245,32 @@ static void test_acpi_fadt_table(test_data *data)
static void dump_aml_files(test_data *data, bool rebuild)
{
- AcpiSdtTable *sdt;
+ AcpiSdtTable *sdt, *exp_sdt;
GError *error = NULL;
gchar *aml_file = NULL;
+ test_data exp_data = {};
gint fd;
ssize_t ret;
int i;
+ exp_data.tables = load_expected_aml(data);
for (i = 0; i < data->tables->len; ++i) {
const char *ext = data->variant ? data->variant : "";
sdt = &g_array_index(data->tables, AcpiSdtTable, i);
+ exp_sdt = &g_array_index(exp_data.tables, AcpiSdtTable, i);
g_assert(sdt->aml);
+ g_assert(exp_sdt->aml);
if (rebuild) {
aml_file = g_strdup_printf("%s/%s/%.4s%s", data_dir, data->machine,
sdt->aml, ext);
+ if (!g_file_test(aml_file, G_FILE_TEST_EXISTS) &&
+ sdt->aml_len == exp_sdt->aml_len &&
+ !memcmp(sdt->aml, exp_sdt->aml, sdt->aml_len)) {
+ /* identical tables, no need to write new files */
+ g_free(aml_file);
+ continue;
+ }
fd = g_open(aml_file, O_WRONLY|O_TRUNC|O_CREAT,
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH);
if (fd < 0) {
--
MST
- [PULL 00/15] virtio,pc,pci: fixes, Michael S. Tsirkin, 2023/12/01
- [PULL 04/15] hw/audio/virtio-snd-pci: fix the PCI class code, Michael S. Tsirkin, 2023/12/01
- [PULL 05/15] hw/audio/hda-codec: fix multiplication overflow, Michael S. Tsirkin, 2023/12/01
- [PULL 01/15] osdep: add getloadavg, Michael S. Tsirkin, 2023/12/01
- [PULL 07/15] virtio-snd: check AUD_register_card return value, Michael S. Tsirkin, 2023/12/01
- [PULL 15/15] vhost-user-scsi: free the inflight area when reset, Michael S. Tsirkin, 2023/12/01
- [PULL 02/15] netdev: set timeout depending on loadavg, Michael S. Tsirkin, 2023/12/01
- [PULL 03/15] tests/acpi/bios-tables-test: do not write new blobs unless there are changes,
Michael S. Tsirkin <=
- [PULL 09/15] pcie_sriov: Remove g_new assertion, Michael S. Tsirkin, 2023/12/01
- [PULL 10/15] hw/acpi/erst: Do not ignore Error* in realize handler, Michael S. Tsirkin, 2023/12/01
- [PULL 12/15] virtio-iommu: Remove useless !sdev check in virtio_iommu_probe(), Michael S. Tsirkin, 2023/12/01
- [PULL 08/15] virtio-sound: add realize() error cleanup path, Michael S. Tsirkin, 2023/12/01
- [PULL 14/15] vhost-user: fix the reconnect error, Michael S. Tsirkin, 2023/12/01
- [PULL 13/15] msix: unset PCIDevice::msix_vector_poll_notifier in rollback, Michael S. Tsirkin, 2023/12/01
- [PULL 06/15] hw/audio/hda-codec: reenable the audio mixer, Michael S. Tsirkin, 2023/12/01
- [PULL 11/15] hw/i386: fix short-circuit logic with non-optimizing builds, Michael S. Tsirkin, 2023/12/01