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.api.ResultCursor; 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.DocumentManagementTest; import com.bagri.server.hazelcast.impl.SchemaRepositoryImpl; import com.bagri.support.util.JMXUtils; public class DocumentManagementImplTest extends DocumentManagementTest { private static ClassPathXmlApplicationContext context; @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); xdmRepo.setSchema(schema); xdmRepo.setDataFormats(getBasicDataFormats()); xdmRepo.setLibraries(new ArrayList<Library>()); xdmRepo.setModules(new ArrayList<Module>()); } } @After public void tearDown() throws Exception { // remove documents here! removeDocumentsTest(); } @Test public void queryDocumentsTest() throws Exception { Schema schema = ((SchemaRepositoryImpl) xRepo).getSchema(); Collection collection = new Collection(1, new Date(), JMXUtils.getCurrentUser(), 1, "products", "", "all products", true); schema.addCollection(collection); collection = new Collection(1, new Date(), JMXUtils.getCurrentUser(), 2, "orders", "", "all orders", true); schema.addCollection(collection); String doc1 = "<product id=\"product-1\"><type>product</type><name>Pokemon Red</name><price>29.99</price></product>"; String doc2 = "<order id=\"order-1\"><type>order</type><products><product product_id=\"product-1\"><quantity>2</quantity></product></products></order>"; long txId = getTxManagement().beginTransaction(); Properties props = new Properties(); //getDocumentProperties(); props.setProperty(pn_document_collections, "products"); uris.add(getDocManagement().storeDocumentFromString("product.xml", doc1, props).getUri()); props.setProperty(pn_document_collections, "orders"); uris.add(getDocManagement().storeDocumentFromString("order.xml", doc2, props).getUri()); getTxManagement().commitTransaction(txId); String query = "for $ord in fn:collection(\"orders\")/order\n" + "for $pro in fn:collection(\"products\")/product[@id=$ord/products/product/@product_id]\n" + "return <order id=\"{$ord/@id}\">\n" + " {$ord/type}\n" + " {$pro}\n" + " {$ord/products/product/quantity}\n" + "</order>"; ResultCursor docs = query(query, null, null); assertNotNull(docs); assertTrue(docs.next()); docs.close(); } @Test public void queryDocumentUrisTest() throws Exception { storeSecurityTest(); storeOrderTest(); DocumentManagementImpl dMgr = (DocumentManagementImpl) this.getDocManagement(); java.util.Collection<String> uris = dMgr.getDocumentUris("uri like security%", null); assertEquals(4, uris.size()); uris = dMgr.getDocumentUris("uri like order%", null); assertEquals(2, uris.size()); uris = dMgr.getDocumentUris("createdBy = unknown", null); assertEquals(6, uris.size()); } }