From fc459f88b2dba627d317a38014f965ecea87d982 Mon Sep 17 00:00:00 2001 From: Aron Roberts Date: Thu, 10 Dec 2009 03:07:11 +0000 Subject: [PATCH] CSPACE-489: Clean up extra entity resources created during tests. Now cleans up all extra resources created even if tests fail. Added clean up to vocabulary service. (Previous commit r1058 inadvertently committed only one changed file; this is a follow-up to commit the additional four files.) --- .../client/test/AcquisitionServiceTest.java | 27 ++++--- .../client/test/IntakeServiceTest.java | 23 +++--- .../client/test/RelationServiceTest.java | 23 +++--- .../client/test/VocabularyServiceTest.java | 77 ++++++++++++++++++- 4 files changed, 119 insertions(+), 31 deletions(-) diff --git a/services/acquisition/client/src/test/java/org/collectionspace/services/client/test/AcquisitionServiceTest.java b/services/acquisition/client/src/test/java/org/collectionspace/services/client/test/AcquisitionServiceTest.java index 9f7f012e3..f6b79f8d6 100644 --- a/services/acquisition/client/src/test/java/org/collectionspace/services/client/test/AcquisitionServiceTest.java +++ b/services/acquisition/client/src/test/java/org/collectionspace/services/client/test/AcquisitionServiceTest.java @@ -58,7 +58,7 @@ public class AcquisitionServiceTest extends AbstractServiceTest { // Instance variables specific to this test. private AcquisitionClient client = new AcquisitionClient(); private String knownResourceId = null; - private List additionalResourceIds = new ArrayList(); + private List allResourceIdsCreated = new ArrayList(); // --------------------------------------------------------------- // CRUD tests : CREATE tests @@ -101,11 +101,11 @@ public class AcquisitionServiceTest extends AbstractServiceTest { if (logger.isDebugEnabled()) { logger.debug(testName + ": knownResourceId=" + knownResourceId); } - // Store the IDs from any additional resources created by tests, - // so they can be deleted after all tests have been run. - } else { - additionalResourceIds.add(extractId(res)); } + + // Store the IDs from every resource created by tests, + // so they can be deleted after tests have been run. + allResourceIdsCreated.add(extractId(res)); } @Override @@ -573,16 +573,25 @@ public class AcquisitionServiceTest extends AbstractServiceTest { // Cleanup of resources created during testing // --------------------------------------------------------------- + // --------------------------------------------------------------- + // Cleanup of resources created during testing + // --------------------------------------------------------------- + /** - * Deletes any additional resources created by tests, - * after all tests have been run. + * Deletes all resources created by tests, after all tests have been run. + * + * This cleanup method will always be run, even if one or more tests fail. + * For this reason, it attempts to remove all resources created + * at any point during testing, even if some of those resources + * may be expected to be deleted by certain tests. */ - @AfterClass + @AfterClass(alwaysRun=true) public void cleanUp() { if (logger.isDebugEnabled()) { logger.debug("Cleaning up temporary resources created for testing ..."); } - for (String resourceId : additionalResourceIds) { + for (String resourceId : allResourceIdsCreated) { + // Note: Any non-success responses are ignored and not reported. ClientResponse res = client.delete(resourceId); } } diff --git a/services/intake/client/src/test/java/org/collectionspace/services/client/test/IntakeServiceTest.java b/services/intake/client/src/test/java/org/collectionspace/services/client/test/IntakeServiceTest.java index 0a8b3990a..c9fd9b057 100644 --- a/services/intake/client/src/test/java/org/collectionspace/services/client/test/IntakeServiceTest.java +++ b/services/intake/client/src/test/java/org/collectionspace/services/client/test/IntakeServiceTest.java @@ -59,7 +59,7 @@ public class IntakeServiceTest extends AbstractServiceTest { private IntakeClient client = new IntakeClient(); final String SERVICE_PATH_COMPONENT = "intakes"; private String knownResourceId = null; - private List additionalResourceIds = new ArrayList(); + private List allResourceIdsCreated = new ArrayList(); // --------------------------------------------------------------- // CRUD tests : CREATE tests @@ -102,11 +102,11 @@ public class IntakeServiceTest extends AbstractServiceTest { if (logger.isDebugEnabled()) { logger.debug(testName + ": knownResourceId=" + knownResourceId); } - // Store the IDs from any additional resources created by tests, - // so they can be deleted after all tests have been run. - } else { - additionalResourceIds.add(extractId(res)); } + + // Store the IDs from every resource created by tests, + // so they can be deleted after tests have been run. + allResourceIdsCreated.add(extractId(res)); } @Override @@ -580,15 +580,20 @@ public class IntakeServiceTest extends AbstractServiceTest { // --------------------------------------------------------------- /** - * Deletes any additional resources created by tests, - * after all tests have been run. + * Deletes all resources created by tests, after all tests have been run. + * + * This cleanup method will always be run, even if one or more tests fail. + * For this reason, it attempts to remove all resources created + * at any point during testing, even if some of those resources + * may be expected to be deleted by certain tests. */ - @AfterClass + @AfterClass(alwaysRun=true) public void cleanUp() { if (logger.isDebugEnabled()) { logger.debug("Cleaning up temporary resources created for testing ..."); } - for (String resourceId : additionalResourceIds) { + for (String resourceId : allResourceIdsCreated) { + // Note: Any non-success responses are ignored and not reported. ClientResponse res = client.delete(resourceId); } } diff --git a/services/relation/client/src/test/java/org/collectionspace/services/client/test/RelationServiceTest.java b/services/relation/client/src/test/java/org/collectionspace/services/client/test/RelationServiceTest.java index 80941fe46..caf99f6b6 100644 --- a/services/relation/client/src/test/java/org/collectionspace/services/client/test/RelationServiceTest.java +++ b/services/relation/client/src/test/java/org/collectionspace/services/client/test/RelationServiceTest.java @@ -59,7 +59,7 @@ public class RelationServiceTest extends AbstractServiceTest { private RelationClient client = new RelationClient(); final String SERVICE_PATH_COMPONENT = "relations"; private String knownResourceId = null; - private List additionalResourceIds = new ArrayList(); + private List allResourceIdsCreated = new ArrayList(); // --------------------------------------------------------------- // CRUD tests : CREATE tests @@ -99,11 +99,11 @@ public class RelationServiceTest extends AbstractServiceTest { if (logger.isDebugEnabled()) { logger.debug(testName + ": knownResourceId=" + knownResourceId); } - // Store the IDs from any additional resources created by tests, - // so they can be deleted after all tests have been run. - } else { - additionalResourceIds.add(extractId(res)); } + + // Store the IDs from every resource created by tests, + // so they can be deleted after tests have been run. + allResourceIdsCreated.add(extractId(res)); } @Override @@ -588,15 +588,20 @@ public class RelationServiceTest extends AbstractServiceTest { // --------------------------------------------------------------- /** - * Deletes any additional resources created by tests, - * after all tests have been run. + * Deletes all resources created by tests, after all tests have been run. + * + * This cleanup method will always be run, even if one or more tests fail. + * For this reason, it attempts to remove all resources created + * at any point during testing, even if some of those resources + * may be expected to be deleted by certain tests. */ - @AfterClass + @AfterClass(alwaysRun=true) public void cleanUp() { if (logger.isDebugEnabled()) { logger.debug("Cleaning up temporary resources created for testing ..."); } - for (String resourceId : additionalResourceIds) { + for (String resourceId : allResourceIdsCreated) { + // Note: Any non-success responses are ignored and not reported. ClientResponse res = client.delete(resourceId); } } diff --git a/services/vocabulary/client/src/test/java/org/collectionspace/services/client/test/VocabularyServiceTest.java b/services/vocabulary/client/src/test/java/org/collectionspace/services/client/test/VocabularyServiceTest.java index af40300a4..a32dacd2b 100644 --- a/services/vocabulary/client/src/test/java/org/collectionspace/services/client/test/VocabularyServiceTest.java +++ b/services/vocabulary/client/src/test/java/org/collectionspace/services/client/test/VocabularyServiceTest.java @@ -22,7 +22,10 @@ */ package org.collectionspace.services.client.test; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @@ -39,6 +42,7 @@ import org.jboss.resteasy.plugins.providers.multipart.OutputPart; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.Assert; +import org.testng.annotations.AfterClass; import org.testng.annotations.Test; /** @@ -60,6 +64,9 @@ public class VocabularyServiceTest extends AbstractServiceTest { private String knownResourceId = null; private String knownResourceRefName = null; private String knownItemResourceId = null; + private List allResourceIdsCreated = new ArrayList(); + private Map allResourceItemIdsCreated = + new HashMap(); protected String createRefName(String displayName) { return displayName.replaceAll("\\W", ""); @@ -101,13 +108,22 @@ public class VocabularyServiceTest extends AbstractServiceTest { invalidStatusCodeMessage(REQUEST_TYPE, statusCode)); Assert.assertEquals(statusCode, EXPECTED_STATUS_CODE); - // Store the ID returned from this create operation + // Store the refname from the first resource created // for additional tests below. - knownResourceId = extractId(res); knownResourceRefName = refName; - if(logger.isDebugEnabled()){ - logger.debug("create: knownResourceId=" + knownResourceId); + + // Store the ID returned from the first resource created + // for additional tests below. + if (knownResourceId == null){ + knownResourceId = extractId(res); + if (logger.isDebugEnabled()) { + logger.debug(testName + ": knownResourceId=" + knownResourceId); + } } + // Store the IDs from every resource created by tests, + // so they can be deleted after tests have been run. + allResourceIdsCreated.add(extractId(res)); + } @Test(dataProvider="testName", dataProviderClass=AbstractServiceTest.class, @@ -144,6 +160,23 @@ public class VocabularyServiceTest extends AbstractServiceTest { invalidStatusCodeMessage(REQUEST_TYPE, statusCode)); Assert.assertEquals(statusCode, EXPECTED_STATUS_CODE); + // Store the ID returned from the first item resource created + // for additional tests below. + if (knownItemResourceId == null){ + knownItemResourceId = extractId(res); + if (logger.isDebugEnabled()) { + logger.debug(testName + ": knownItemResourceId=" + knownItemResourceId); + } + } + + // Store the IDs from any item resources created + // by tests, along with the IDs of their parents, so these items + // can be deleted after all tests have been run. + // + // Item resource IDs are unique, so these are used as keys; + // the non-unique IDs of their parents are stored as associated values. + allResourceItemIdsCreated.put(extractId(res), vcsid); + return extractId(res); } @@ -904,6 +937,42 @@ public class VocabularyServiceTest extends AbstractServiceTest { } + // --------------------------------------------------------------- + // Cleanup of resources created during testing + // --------------------------------------------------------------- + + /** + * Deletes all resources created by tests, after all tests have been run. + * + * This cleanup method will always be run, even if one or more tests fail. + * For this reason, it attempts to remove all resources created + * at any point during testing, even if some of those resources + * may be expected to be deleted by certain tests. + */ + @AfterClass(alwaysRun=true) + public void cleanUp() { + + if (logger.isDebugEnabled()) { + logger.debug("Cleaning up temporary resources created for testing ..."); + } + // Clean up vocabulary item resources. + String vocabularyResourceId; + String vocabularyItemResourceId; + for (Map.Entry entry : allResourceItemIdsCreated.entrySet()) { + vocabularyItemResourceId = entry.getKey(); + vocabularyResourceId = entry.getValue(); + // Note: Any non-success responses are ignored and not reported. + ClientResponse res = + client.deleteItem(vocabularyResourceId, vocabularyItemResourceId); + } + // Clean up vocabulary resources. + for (String resourceId : allResourceIdsCreated) { + // Note: Any non-success responses are ignored and not reported. + ClientResponse res = client.delete(resourceId); + } + + } + // --------------------------------------------------------------- // Utility methods used by tests above // --------------------------------------------------------------- -- 2.47.3