package com.splout.db.hazelcast;
/*
* #%L
* Splout SQL Server
* %%
* Copyright (C) 2012 Datasalt Systems S.L.
* %%
* 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 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/>.
* #L%
*/
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.splout.db.common.SploutConfiguration;
import com.splout.db.hazelcast.HazelcastConfigBuilder.HazelcastConfigBuilderException;
public class TestHazelcastPersistence {
public final static String PERSISTENCE_FOLDER = "test-" + TestHazelcastPersistence.class.getName();
@AfterClass
@BeforeClass
public static void cleanUp() throws IOException {
FileUtils.deleteDirectory(new File(PERSISTENCE_FOLDER));
}
@Test
@Ignore // Persistence now being handled outside Hazelcast, this test may be removed
public void test() throws HazelcastConfigBuilderException, InterruptedException {
try {
assertFalse(new File(PERSISTENCE_FOLDER).exists());
SploutConfiguration config = SploutConfiguration.getTestConfig();
config.setProperty(HazelcastProperties.HZ_PERSISTENCE_FOLDER, PERSISTENCE_FOLDER);
HazelcastInstance hz = Hazelcast.newHazelcastInstance(HazelcastConfigBuilder.build(config));
CoordinationStructures str = new CoordinationStructures(hz);
str.getVersionsBeingServed().put("foo1", new HashMap<String, Long>());
str.getVersionsBeingServed().put("foo2", new HashMap<String, Long>());
Map<String, Long> map1 = str.getVersionsBeingServed().get("foo1");
map1.put("foo1", 10l);
Map<String, Long> map2 = str.getVersionsBeingServed().get("foo2");
map2.put("foo2", 20l);
str.getVersionsBeingServed().put("foo1", map1);
str.getVersionsBeingServed().put("foo2", map2);
assertTrue(new File(PERSISTENCE_FOLDER).exists());
hz = Hazelcast.newHazelcastInstance(HazelcastConfigBuilder.build(config));
str = new CoordinationStructures(hz);
assertEquals(10l, (long) str.getVersionsBeingServed().get("foo1").get("foo1"));
assertEquals(20l, (long) str.getVersionsBeingServed().get("foo2").get("foo2"));
} finally {
Hazelcast.shutdownAll();
}
}
}