/* * Copyright (C) 2003-2011 eXo Platform SAS. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.exoplatform.social.core.storage.cache; import org.exoplatform.social.core.identity.model.Identity; import org.exoplatform.social.core.identity.model.Profile; import org.exoplatform.social.core.profile.ProfileFilter; import org.exoplatform.social.core.storage.api.IdentityStorage; import org.exoplatform.social.core.test.AbstractCoreTest; import java.util.ArrayList; import java.util.List; /** * @author <a href="mailto:alain.defrance@exoplatform.com">Alain Defrance</a> * @version $Revision$ */ public class CachedIdentityStorageTestCase extends AbstractCoreTest { private CachedIdentityStorage identityStorage; private SocialStorageCacheService cacheService; private List<String> tearDownIdentityList; @Override public void setUp() throws Exception { super.setUp(); identityStorage = (CachedIdentityStorage) getContainer().getComponentInstanceOfType(IdentityStorage.class); cacheService = (SocialStorageCacheService) getContainer().getComponentInstanceOfType(SocialStorageCacheService.class); cacheService.getIdentityCache().clearCache(); cacheService.getIdentitiesCache().clearCache(); cacheService.getCountIdentitiesCache().clearCache(); cacheService.getIdentityIndexCache().clearCache(); cacheService.getProfileCache().clearCache(); tearDownIdentityList = new ArrayList<String>(); } @Override public void tearDown() throws Exception { for (String id : tearDownIdentityList) { identityStorage.deleteIdentity(new Identity(id)); } super.tearDown(); } public void testSaveIdentity() throws Exception { assertEquals(0, cacheService.getIdentityCache().getCacheSize()); Identity i = new Identity("p", "id"); identityStorage.saveIdentity(i); tearDownIdentityList.add(i.getId()); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getIdentitiesCache().getCacheSize()); assertEquals(0, cacheService.getCountIdentitiesCache().getCacheSize()); } public void testFindIdentityById() throws Exception { assertEquals(0, cacheService.getIdentityCache().getCacheSize()); Identity i = new Identity("p", "id"); identityStorage.saveIdentity(i); tearDownIdentityList.add(i.getId()); String id = i.getId(); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); cacheService.getIdentityCache().clearCache(); assertEquals(0, cacheService.getIdentityCache().getCacheSize()); identityStorage.findIdentityById(id); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); } public void testFindIdentity() throws Exception { assertEquals(0, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getIdentityIndexCache().getCacheSize()); Identity i = new Identity("p", "id"); identityStorage.saveIdentity(i); tearDownIdentityList.add(i.getId()); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getIdentityIndexCache().getCacheSize()); cacheService.getIdentityCache().clearCache(); assertEquals(0, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getIdentityIndexCache().getCacheSize()); identityStorage.findIdentity("p", "id"); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(1, cacheService.getIdentityIndexCache().getCacheSize()); } public void testRemoveIdentity() throws Exception { assertEquals(0, cacheService.getIdentityCache().getCacheSize()); Identity i = new Identity("p", "id"); identityStorage.saveIdentity(i); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getIdentitiesCache().getCacheSize()); ProfileFilter filter = new ProfileFilter(); identityStorage.getIdentitiesByProfileFilter("p", filter, 0, 10, false); assertEquals(1, cacheService.getIdentitiesCache().getCacheSize()); identityStorage.deleteIdentity(i); assertEquals(0, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getIdentitiesCache().getCacheSize()); } public void testUpdateIdentity() throws Exception { assertEquals(0, cacheService.getIdentityCache().getCacheSize()); Identity i = new Identity("p", "id"); identityStorage.saveIdentity(i); tearDownIdentityList.add(i.getId()); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); identityStorage.updateIdentity(i); assertEquals(0, cacheService.getIdentityCache().getCacheSize()); } public void testLoadProfile() throws Exception { assertEquals(0, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getProfileCache().getCacheSize()); Identity i = new Identity("p", "id"); identityStorage.saveIdentity(i); tearDownIdentityList.add(i.getId()); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getProfileCache().getCacheSize()); identityStorage.loadProfile(new Profile(i)); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(1, cacheService.getProfileCache().getCacheSize()); } public void testSaveProfile() throws Exception { assertEquals(0, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getProfileCache().getCacheSize()); Identity i = new Identity("p", "id"); identityStorage.saveIdentity(i); tearDownIdentityList.add(i.getId()); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getProfileCache().getCacheSize()); identityStorage.saveProfile(new Profile(i)); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getProfileCache().getCacheSize()); } public void testUpdateProfile() throws Exception { assertEquals(0, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getProfileCache().getCacheSize()); Identity i = new Identity("p", "id"); identityStorage.saveIdentity(i); tearDownIdentityList.add(i.getId()); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getProfileCache().getCacheSize()); identityStorage.updateProfile(new Profile(i)); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getProfileCache().getCacheSize()); } public void testGetIdentitiesByFilterCount() throws Exception { assertEquals(0, cacheService.getIdentityCache().getCacheSize()); Identity i = new Identity("p", "id"); identityStorage.saveIdentity(i); tearDownIdentityList.add(i.getId()); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getCountIdentitiesCache().getCacheSize()); identityStorage.getIdentitiesByProfileFilterCount("p", new ProfileFilter()); assertEquals(1, cacheService.getCountIdentitiesCache().getCacheSize()); Identity i2 = new Identity("p", "id2"); identityStorage.saveIdentity(i2); tearDownIdentityList.add(i2.getId()); assertEquals(0, cacheService.getCountIdentitiesCache().getCacheSize()); identityStorage.getIdentitiesByProfileFilterCount("p", new ProfileFilter()); assertEquals(1, cacheService.getCountIdentitiesCache().getCacheSize()); i2.setRemoteId("id3"); identityStorage.updateIdentity(i2); assertEquals(0, cacheService.getCountIdentitiesCache().getCacheSize()); } public void testGetIdentitiesByFilter() throws Exception { assertEquals(0, cacheService.getIdentityCache().getCacheSize()); Identity i = new Identity("p", "id"); identityStorage.saveIdentity(i); tearDownIdentityList.add(i.getId()); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getIdentitiesCache().getCacheSize()); identityStorage.getIdentitiesByProfileFilter("p", new ProfileFilter(), 0, 10, false); assertEquals(1, cacheService.getIdentitiesCache().getCacheSize()); Identity i2 = new Identity("p", "id2"); identityStorage.saveIdentity(i2); tearDownIdentityList.add(i2.getId()); assertEquals(0, cacheService.getIdentitiesCache().getCacheSize()); } public void testGetIdentitiesByFirstCharacterOfNameCount() throws Exception { assertEquals(0, cacheService.getIdentityCache().getCacheSize()); Identity i = new Identity("p", "id"); identityStorage.saveIdentity(i); tearDownIdentityList.add(i.getId()); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getCountIdentitiesCache().getCacheSize()); identityStorage.getIdentitiesByFirstCharacterOfNameCount("p", new ProfileFilter()); assertEquals(1, cacheService.getCountIdentitiesCache().getCacheSize()); } public void testGetIdentitiesByFirstCharacterOfName() throws Exception { assertEquals(0, cacheService.getIdentityCache().getCacheSize()); Identity i = new Identity("p", "id"); identityStorage.saveIdentity(i); tearDownIdentityList.add(i.getId()); assertEquals(1, cacheService.getIdentityCache().getCacheSize()); assertEquals(0, cacheService.getIdentitiesCache().getCacheSize()); identityStorage.getIdentitiesByFirstCharacterOfName("p", new ProfileFilter(), 0, 10, false); assertEquals(1, cacheService.getIdentitiesCache().getCacheSize()); } }