package com.bagri.server.hazelcast.impl;
import static com.bagri.core.Constants.pn_config_path;
import static com.bagri.core.Constants.pn_config_properties_file;
import static com.bagri.core.Constants.pn_document_collections;
import static com.bagri.core.Constants.pn_log_level;
import static com.bagri.core.Constants.pn_node_instance;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.bagri.core.system.Collection;
import com.bagri.core.system.Library;
import com.bagri.core.system.Module;
import com.bagri.core.system.Schema;
import com.bagri.core.test.BagriManagementTest;
import com.bagri.server.hazelcast.impl.SchemaRepositoryImpl;
import com.bagri.support.util.JMXUtils;
public class CollectionManagementTest extends BagriManagementTest {
private static ClassPathXmlApplicationContext context;
private Properties props = null;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
sampleRoot = "..\\..\\etc\\samples\\tpox\\";
//System.setProperty(pn_log_level, "trace");
System.setProperty(pn_node_instance, "0");
System.setProperty("logback.configurationFile", "hz-logging.xml");
System.setProperty(pn_config_properties_file, "test.properties");
System.setProperty(pn_config_path, "src\\test\\resources");
context = new ClassPathXmlApplicationContext("spring/cache-test-context.xml");
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
context.close();
}
@Before
public void setUp() throws Exception {
xRepo = context.getBean(SchemaRepositoryImpl.class);
SchemaRepositoryImpl xdmRepo = (SchemaRepositoryImpl) xRepo;
Schema schema = xdmRepo.getSchema();
if (schema == null) {
schema = new Schema(1, new java.util.Date(), "test", "test", "test schema", true, null);
Collection collection = new Collection(1, new Date(), JMXUtils.getCurrentUser(),
1, "CLN_Security", "/{http://tpox-benchmark.com/security}Security", "securities", true);
schema.addCollection(collection);
collection = new Collection(1, new Date(), JMXUtils.getCurrentUser(),
2, "CLN_Custom", "", "custom", true);
schema.addCollection(collection);
xdmRepo.setSchema(schema);
xdmRepo.setDataFormats(getBasicDataFormats());
xdmRepo.setLibraries(new ArrayList<Library>());
xdmRepo.setModules(new ArrayList<Module>());
}
}
@After
public void tearDown() throws Exception {
removeDocumentsTest();
}
@Override
protected Properties getDocumentProperties() {
return props;
}
@Test
public void addDefaultCollectionDocumentsTest() throws Exception {
java.util.Collection<String> ids = this.getDocManagement().getCollectionDocumentUris(null);
assertEquals(0, ids.size());
props = new Properties();
//props.setProperty(xdm_document_collections, "CLN_Security");
storeSecurityTest();
ids = this.getDocManagement().getCollectionDocumentUris("CLN_Security");
assertEquals(4, ids.size());
int cnt = 0;
for (String id: ids) {
if (ids.contains(id)) {
cnt++;
}
}
assertEquals(4, cnt);
props = null;
}
@Test
public void addCustomCollectionDocumentsTest() throws Exception {
java.util.Collection<String> ids = this.getDocManagement().getCollectionDocumentUris(null);
assertEquals(0, ids.size());
props = new Properties();
props.setProperty(pn_document_collections, "CLN_Custom");
assertEquals(0, uris.size());
storeSecurityTest();
assertEquals(4, uris.size());
ids = this.getDocManagement().getCollectionDocumentUris("CLN_Security");
assertEquals(0, ids.size());
ids = this.getDocManagement().getCollectionDocumentUris("CLN_Custom");
assertEquals(4, ids.size());
int cnt = 0;
for (String id: ids) {
if (uris.contains(id)) {
cnt++;
}
}
assertEquals(4, cnt);
props = null;
}
@Test
public void getCollectionDocumentsTest() throws Exception {
java.util.Collection<String> ids = this.getDocManagement().getCollectionDocumentUris(null);
assertEquals(0, ids.size());
props = new Properties();
props.setProperty(pn_document_collections, "CLN_Security");
storeSecurityTest();
ids = this.getDocManagement().getCollectionDocumentUris("CLN_Security");
assertEquals(4, ids.size());
int cnt = 0;
for (String id: ids) {
if (uris.contains(id)) {
cnt++;
}
}
assertEquals(4, cnt);
props = null;
}
@Test
public void addDocumentsToCollectionTest() throws Exception {
java.util.Collection<String> ids = this.getDocManagement().getCollectionDocumentUris(null);
assertEquals(0, ids.size());
assertEquals(0, uris.size());
storeSecurityTest();
assertEquals(4, uris.size());
// docs in default collection
ids = this.getDocManagement().getCollectionDocumentUris(null);
assertEquals(4, ids.size());
// the docs are already in CLN_Security collection
ids = this.getDocManagement().getCollectionDocumentUris("CLN_Security");
assertEquals(4, ids.size());
for (String uri: uris) {
this.getDocManagement().addDocumentToCollections(uri, new String[] {"CLN_Custom"});
}
ids = this.getDocManagement().getCollectionDocumentUris("CLN_Custom");
assertEquals(4, ids.size());
int cnt = 0;
for (String id: ids) {
if (uris.contains(id)) {
cnt++;
}
}
assertEquals(4, cnt);
}
@Test
public void removeDocumentsFromCollectionTest() throws Exception {
addDocumentsToCollectionTest();
for (String uri: uris) {
this.getDocManagement().removeDocumentFromCollections(uri, new String[] {"CLN_Custom"});
}
java.util.Collection<String> ids = this.getDocManagement().getCollectionDocumentUris("CLN_Custom");
assertEquals(0, ids.size());
}
@Test
public void removeCollectionDocumentsTest() throws Exception {
addDocumentsToCollectionTest();
assertEquals(4, uris.size());
long txId = xRepo.getTxManagement().beginTransaction();
int cnt = getDocManagement().removeCollectionDocuments("CLN_Security");
xRepo.getTxManagement().commitTransaction(txId);
java.util.Collection<String> ids = this.getDocManagement().getCollectionDocumentUris("CLN_Security");
assertEquals(0, ids.size());
}
}