From 9e04c800d02785389316192c3fe04663712c5deb Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Fri, 9 Aug 2024 11:19:15 +0200 Subject: [PATCH] improve validation after import --- .../hs/migration/ImportHostingAssets.java | 123 +++++++++++++++--- 1 file changed, 103 insertions(+), 20 deletions(-) diff --git a/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java b/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java index 7d59d58e..00f257cc 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java @@ -574,10 +574,82 @@ public class ImportHostingAssets extends ImportOfficeData { @Test @Order(18020) - void validateHostingAssets() { + void validateIpNumberAssets() { validateHostingAssets(ipNumberAssets); } + @Test + @Order(18021) + void validateServerAndWebspaceAssets() { + validateHostingAssets(packetAssets); + } + + @Test + @Order(18022) + void validateUnixUserAssets() { + validateHostingAssets(unixUserAssets); + } + + @Test + @Order(18023) + void validateEmailAliasAssets() { + validateHostingAssets(emailAliasAssets); + } + + @Test + @Order(18030) + void validateDbInstanceAssets() { + validateHostingAssets(dbInstanceAssets); + } + + @Test + @Order(18031) + void validateDbUserAssets() { + validateHostingAssets(dbUserAssets); + } + + @Test + @Order(18032) + void validateDbAssets() { + validateHostingAssets(dbAssets); + } + + @Test + @Order(18040) + void validateDomainSetupAssets() { + validateHostingAssets(domainSetupAssets); + } + + @Test + @Order(18041) + void validateDomainDnsSetupAssets() { + validateHostingAssets(domainDnsSetupAssets); + } + + @Test + @Order(18042) + void validateDomainHttpSetupAssets() { + validateHostingAssets(domainHttpSetupAssets); + } + + @Test + @Order(18043) + void validateDomainSmtpSetupAssets() { + validateHostingAssets(domainSmtpSetupAssets); + } + + @Test + @Order(18044) + void validateDomainMBoxSetupAssets() { + validateHostingAssets(domainMBoxSetupAssets); + } + + @Test + @Order(18050) + void validateEmailAddressAssets() { + validateHostingAssets(emailAddressAssets); + } + void validateHostingAssets(final Map assets) { assets.forEach((id, ha) -> { try { @@ -793,8 +865,15 @@ public class ImportHostingAssets extends ImportOfficeData { .getSingleResult(); assertThat(haCount).isGreaterThan(isImportingControlledTestData() ? 40 : 15000); + verifyActuallyPersistedHostingAssetCount(CLOUD_SERVER, 1, 50); + verifyActuallyPersistedHostingAssetCount(MANAGED_SERVER, 4, 100); + verifyActuallyPersistedHostingAssetCount(MANAGED_WEBSPACE, 4, 100); + verifyActuallyPersistedHostingAssetCount(UNIX_USER, 14, 100); verifyActuallyPersistedHostingAssetCount(EMAIL_ALIAS, 9, 1400); - verifyActuallyPersistedHostingAssetCount(EMAIL_ADDRESS, 70, 30000); + verifyActuallyPersistedHostingAssetCount(PGSQL_DATABASE, 8, 100); + verifyActuallyPersistedHostingAssetCount(MARIADB_DATABASE, 8, 100); + verifyActuallyPersistedHostingAssetCount(DOMAIN_SETUP, 9, 100); + verifyActuallyPersistedHostingAssetCount(EMAIL_ADDRESS, 71, 30000); } // ============================================================================================ @@ -835,35 +914,39 @@ public class ImportHostingAssets extends ImportOfficeData { final var assetsOfType = assets.entrySet().stream() .filter(entry -> type == null || type == entry.getValue().getType()) .toList(); - final var chunkSize = isImportingControlledTestData() ? 10: 500; - ListUtils.partition(assetsOfType, chunkSize).forEach(chunk -> { - chunk.forEach(entry -> { - jpaAttempt.transacted(() -> { + final var chunkSize = isImportingControlledTestData() ? 10 : 500; + ListUtils.partition(assetsOfType, chunkSize).forEach(chunk -> + jpaAttempt.transacted(() -> { context(rbacSuperuser); - logError(() -> - new HostingAssetEntitySaveProcessor(em, entry.getValue()) - .preprocessEntity() - .validateEntityIgnoring("'EMAIL_ALIAS:.*\\.config\\.target' .*") - .prepareForSave() - .saveUsing(entity -> persist(entry.getKey(), entity)) - .validateContext() - ); - }).assertSuccessful(); - }); - } + chunk.forEach(entry -> + logError(() -> + new HostingAssetEntitySaveProcessor(em, entry.getValue()) + .preprocessEntity() + .validateEntityIgnoring("'EMAIL_ALIAS:.*\\.config\\.target' .*") + .prepareForSave() + .saveUsing(entity -> persist(entry.getKey(), entity)) + .validateContext() + )); + } + ).assertSuccessful() ); } private void verifyActuallyPersistedHostingAssetCount( final HsHostingAssetType assetType, - final int minExpectedInTestData, - final int minExpectedInProdData) { + final int expectedCountInTestDataCount, + final int minCountExpectedInProdData) { final var q = em.createNativeQuery( "select count(*) from hs_hosting_asset where type = cast(:type as HsHostingAssetType)", Integer.class); q.setParameter("type", assetType.name()); final var count = (Integer) q.getSingleResult(); - assertThat(count).isGreaterThan(isImportingControlledTestData() ? minExpectedInTestData : minExpectedInProdData); + if (isImportingControlledTestData()) { + assertThat(count).isEqualTo(expectedCountInTestDataCount); + } else { + assertThat(count).isGreaterThanOrEqualTo(minCountExpectedInProdData); + } + } private void importIpNumbers(final String[] header, final List records) {