package org.infinispan.xsite; import static org.testng.AssertJUnit.assertEquals; import java.util.Arrays; import java.util.HashSet; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.configuration.cache.TakeOfflineConfigurationBuilder; import org.testng.annotations.Test; /** * @author Mircea Markus * @since 5.2 */ @Test(groups = "xsite", testName = "xsite.XSiteAdminOperationsTest") public class XSiteAdminOperationsTest extends AbstractTwoSitesTest { @Override protected ConfigurationBuilder getNycActiveConfig() { return getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC, true); } @Override protected ConfigurationBuilder getLonActiveConfig() { return getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC, true); } public void testSiteStatus() { assertEquals(admin("LON", 0).siteStatus("NYC"), XSiteAdminOperations.ONLINE); assertEquals(admin("LON", 1).siteStatus("NYC"), XSiteAdminOperations.ONLINE); assertEquals(XSiteAdminOperations.SUCCESS, admin("LON", 1).takeSiteOffline("NYC")); assertEquals(admin("LON", 0).siteStatus("NYC"), XSiteAdminOperations.OFFLINE); assertEquals(admin("LON", 1).siteStatus("NYC"), XSiteAdminOperations.OFFLINE); assertEquals(XSiteAdminOperations.SUCCESS, admin("LON", 1).bringSiteOnline("NYC")); assertEquals(admin("LON", 0).siteStatus("NYC"), XSiteAdminOperations.ONLINE); assertEquals(admin("LON", 1).siteStatus("NYC"), XSiteAdminOperations.ONLINE); } public void amendTakeOffline() { assertEquals(admin("LON", 0).siteStatus("NYC"), XSiteAdminOperations.ONLINE); assertEquals(admin("LON", 1).siteStatus("NYC"), XSiteAdminOperations.ONLINE); BackupSenderImpl bs = backupSender("LON", 0); OfflineStatus offlineStatus = bs.getOfflineStatus("NYC"); assertEquals(offlineStatus.getTakeOffline(), new TakeOfflineConfigurationBuilder(null, null).afterFailures(0).minTimeToWait(0).create()); assertEquals(XSiteAdminOperations.SUCCESS, admin("LON", 1).amendTakeOffline("NYC", 7, 12)); assertEquals(offlineStatus.getTakeOffline(), new TakeOfflineConfigurationBuilder(null, null).afterFailures(7).minTimeToWait(12).create()); assertEquals(XSiteAdminOperations.SUCCESS, admin("LON", 1).setTakeOfflineAfterFailures("NYC", 8)); assertEquals(offlineStatus.getTakeOffline(), new TakeOfflineConfigurationBuilder(null, null).afterFailures(8).minTimeToWait(12).create()); assertEquals(XSiteAdminOperations.SUCCESS, admin("LON", 1).setTakeOfflineMinTimeToWait("NYC", 13)); assertEquals(offlineStatus.getTakeOffline(), new TakeOfflineConfigurationBuilder(null, null).afterFailures(8).minTimeToWait(13).create()); assertEquals(admin("LON", 0).getTakeOfflineAfterFailures("NYC"), "8"); assertEquals(admin("LON", 0).getTakeOfflineMinTimeToWait("NYC"), "13"); assertEquals(admin("LON", 1).getTakeOfflineAfterFailures("NYC"), "8"); assertEquals(admin("LON", 1).getTakeOfflineMinTimeToWait("NYC"), "13"); } public void testStatus() { assertEquals(admin("LON", 0).status(), "NYC[ONLINE]"); assertEquals(admin("LON", 1).status(), "NYC[ONLINE]"); assertEquals(XSiteAdminOperations.SUCCESS, admin("LON", 1).takeSiteOffline("NYC")); assertEquals(admin("LON", 0).status(), "NYC[OFFLINE]"); assertEquals(admin("LON", 1).status(), "NYC[OFFLINE]"); assertEquals(XSiteAdminOperations.SUCCESS, admin("LON", 1).bringSiteOnline("NYC")); assertEquals(admin("LON", 0).status(), "NYC[ONLINE]"); assertEquals(admin("LON", 1).status(), "NYC[ONLINE]"); } public void testSitesView() { assertEquals(new HashSet<>(Arrays.asList("LON", "NYC")), site("LON").cacheManagers().get(0).getTransport().getSitesView()); assertEquals(new HashSet<>(Arrays.asList("LON", "NYC")), site("NYC").cacheManagers().get(0).getTransport().getSitesView()); } private BackupSenderImpl backupSender(String site, int cache) { return (BackupSenderImpl) cache(site, cache).getAdvancedCache().getComponentRegistry().getComponent(BackupSender.class); } private XSiteAdminOperations admin(String site, int cache) { return cache(site, cache).getAdvancedCache().getComponentRegistry().getComponent(XSiteAdminOperations.class); } }