Return-Path: X-Original-To: apmail-ace-commits-archive@www.apache.org Delivered-To: apmail-ace-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B4B5610C78 for ; Fri, 4 Oct 2013 11:14:38 +0000 (UTC) Received: (qmail 67815 invoked by uid 500); 4 Oct 2013 11:14:37 -0000 Delivered-To: apmail-ace-commits-archive@ace.apache.org Received: (qmail 67783 invoked by uid 500); 4 Oct 2013 11:14:32 -0000 Mailing-List: contact commits-help@ace.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ace.apache.org Delivered-To: mailing list commits@ace.apache.org Received: (qmail 67753 invoked by uid 99); 4 Oct 2013 11:14:28 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Oct 2013 11:14:28 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Oct 2013 11:14:21 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 8F83A23888A6; Fri, 4 Oct 2013 11:14:01 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1529131 - /ace/trunk/org.apache.ace.log.server.store.itest/src/org/apache/ace/log/server/store/tests/MongoLogStoreTest.java Date: Fri, 04 Oct 2013 11:14:01 -0000 To: commits@ace.apache.org From: jawi@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20131004111401.8F83A23888A6@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jawi Date: Fri Oct 4 11:14:01 2013 New Revision: 1529131 URL: http://svn.apache.org/r1529131 Log: Rewrote test a little to make it more robust. Modified: ace/trunk/org.apache.ace.log.server.store.itest/src/org/apache/ace/log/server/store/tests/MongoLogStoreTest.java Modified: ace/trunk/org.apache.ace.log.server.store.itest/src/org/apache/ace/log/server/store/tests/MongoLogStoreTest.java URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.log.server.store.itest/src/org/apache/ace/log/server/store/tests/MongoLogStoreTest.java?rev=1529131&r1=1529130&r2=1529131&view=diff ============================================================================== --- ace/trunk/org.apache.ace.log.server.store.itest/src/org/apache/ace/log/server/store/tests/MongoLogStoreTest.java (original) +++ ace/trunk/org.apache.ace.log.server.store.itest/src/org/apache/ace/log/server/store/tests/MongoLogStoreTest.java Fri Oct 4 11:14:01 2013 @@ -23,7 +23,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.TimeUnit; import org.amdatu.mongo.MongoDBService; import org.apache.ace.feedback.Descriptor; @@ -34,167 +33,175 @@ import org.apache.felix.dm.Component; import org.osgi.service.log.LogService; import com.mongodb.BasicDBObject; +import com.mongodb.CommandResult; import com.mongodb.DBCollection; -import com.mongodb.MongoException; public class MongoLogStoreTest extends IntegrationTestBase { - private volatile LogStore m_logStore; - private volatile MongoDBService m_mongodbService; + private volatile LogStore m_logStore; + private volatile MongoDBService m_mongodbService; - @Override - protected void configureProvisionedServices() throws Exception { - configureFactory("org.amdatu.mongo", "dbName", "ace"); - configureFactory("org.apache.ace.log.server.store.factory", "name", "serverlog"); - super.configureProvisionedServices(); - } - - protected org.apache.felix.dm.Component[] getDependencies() { - return new Component[] { createComponent().setImplementation(this) - .add(createServiceDependency().setService(LogStore.class).setRequired(true)) - .add(createServiceDependency().setService(MongoDBService.class).setRequired(true)) }; - } - - public void testPutEvents() throws Exception { - - try { - DBCollection collection = m_mongodbService.getDB().getCollection("serverlog"); - collection.remove(new BasicDBObject()); - TimeUnit.SECONDS.sleep(2); - - storeEvents(); - collection = m_mongodbService.getDB().getCollection("serverlog"); - assertEquals(5, collection.count()); - } catch (MongoException ex) { - System.err.println("Mongodb not available on localhost, skipping test"); - } - } - - public void testGetEvents() throws Exception { - try { - DBCollection collection = m_mongodbService.getDB().getCollection("serverlog"); - collection.remove(new BasicDBObject()); - TimeUnit.SECONDS.sleep(2); - - storeEvents(); - - List events = m_logStore.get(new Descriptor("mytarget1,1,0")); - assertEquals(3, events.size()); - } catch (MongoException ex) { - System.err.println("Mongodb not available on localhost, skipping test"); - } - } - - public void testGetEventsWithRange() throws Exception { - try { - DBCollection collection = m_mongodbService.getDB().getCollection("serverlog"); - collection.remove(new BasicDBObject()); - TimeUnit.SECONDS.sleep(2); - - storeEvents(); - - List events = m_logStore.get(new Descriptor("mytarget1,1,2")); - assertEquals(2, events.size()); - } catch (Exception ex) { - System.err.println("Mongodb not available on localhost, skipping test"); - } - } - - public void testGetDescriptorsSingleLogId() throws Exception { - try { - DBCollection collection = m_mongodbService.getDB().getCollection("serverlog"); - collection.remove(new BasicDBObject()); - TimeUnit.SECONDS.sleep(2); - - storeEvents(); - - List descriptors = m_logStore.getDescriptors(); - assertEquals(2, descriptors.size()); - assertEquals("mytarget1", descriptors.get(0).getTargetID()); - assertEquals(1, descriptors.get(0).getStoreID()); - assertEquals(4, descriptors.get(0).getRangeSet().getHigh()); - assertEquals("mytarget2", descriptors.get(1).getTargetID()); - assertEquals(1, descriptors.get(1).getStoreID()); - assertEquals(5, descriptors.get(1).getRangeSet().getHigh()); - } catch (MongoException ex) { - System.err.println("Mongodb not available on localhost, skipping test"); - } - - } - - public void testGetDescriptorsMultipleLogIds() throws Exception { - try { - DBCollection collection = m_mongodbService.getDB().getCollection("serverlog"); - collection.remove(new BasicDBObject()); - TimeUnit.SECONDS.sleep(2); - - storeEvents(); - - Map props = new HashMap(); - props.put("myProperty", "myvalue"); - - Event event1 = new Event("mytarget1", 2, 1, System.currentTimeMillis(), LogService.LOG_ERROR, props); - Event event2 = new Event("mytarget1", 2, 2, System.currentTimeMillis(), LogService.LOG_ERROR, props); - - m_logStore.put(Arrays.asList(event1, event2)); - - List descriptors = m_logStore.getDescriptors(); - assertEquals(3, descriptors.size()); - assertEquals("mytarget1", descriptors.get(0).getTargetID()); - assertEquals(1, descriptors.get(0).getStoreID()); - assertEquals(4, descriptors.get(0).getRangeSet().getHigh()); - - assertEquals("mytarget1", descriptors.get(1).getTargetID()); - assertEquals(2, descriptors.get(1).getStoreID()); - assertEquals(2, descriptors.get(1).getRangeSet().getHigh()); - - assertEquals("mytarget2", descriptors.get(2).getTargetID()); - assertEquals(1, descriptors.get(2).getStoreID()); - assertEquals(5, descriptors.get(2).getRangeSet().getHigh()); - } catch (MongoException ex) { - System.err.println("Mongodb not available on localhost, skipping test"); - } - } - - public void testGetDescriptorsForTarget() throws Exception { - try { - DBCollection collection = m_mongodbService.getDB().getCollection("serverlog"); - collection.remove(new BasicDBObject()); - TimeUnit.SECONDS.sleep(2); - - storeEvents(); - - Map props = new HashMap(); - props.put("myProperty", "myvalue"); - - Event event1 = new Event("mytarget1", 2, 1, System.currentTimeMillis(), LogService.LOG_ERROR, props); - Event event2 = new Event("mytarget1", 2, 2, System.currentTimeMillis(), LogService.LOG_ERROR, props); - - m_logStore.put(Arrays.asList(event1, event2)); - - List descriptors = m_logStore.getDescriptors("mytarget1"); - assertEquals(2, descriptors.size()); - assertEquals("mytarget1", descriptors.get(0).getTargetID()); - assertEquals(1, descriptors.get(0).getStoreID()); - assertEquals(4, descriptors.get(0).getRangeSet().getHigh()); - - assertEquals("mytarget1", descriptors.get(1).getTargetID()); - assertEquals(2, descriptors.get(1).getStoreID()); - assertEquals(2, descriptors.get(1).getRangeSet().getHigh()); - } catch (MongoException ex) { - System.err.println("Mongodb not available on localhost, skipping test"); - } - } + private DBCollection m_collection; - private void storeEvents() throws IOException { + public void testGetDescriptorsForTarget() throws Exception { + if (!canRunTest()) { + return; + } + + storeEvents(); + + Map props = new HashMap(); + props.put("myProperty", "myvalue"); + + Event event1 = new Event("mytarget1", 2, 1, System.currentTimeMillis(), LogService.LOG_ERROR, props); + Event event2 = new Event("mytarget1", 2, 2, System.currentTimeMillis(), LogService.LOG_ERROR, props); + + m_logStore.put(Arrays.asList(event1, event2)); + + List descriptors = m_logStore.getDescriptors("mytarget1"); + assertEquals(2, descriptors.size()); + assertEquals("mytarget1", descriptors.get(0).getTargetID()); + assertEquals(1, descriptors.get(0).getStoreID()); + assertEquals(4, descriptors.get(0).getRangeSet().getHigh()); + + assertEquals("mytarget1", descriptors.get(1).getTargetID()); + assertEquals(2, descriptors.get(1).getStoreID()); + assertEquals(2, descriptors.get(1).getRangeSet().getHigh()); + } + + public void testGetDescriptorsMultipleLogIds() throws Exception { + if (!canRunTest()) { + return; + } + + storeEvents(); + + Map props = new HashMap(); + props.put("myProperty", "myvalue"); + + Event event1 = new Event("mytarget1", 2, 1, System.currentTimeMillis(), LogService.LOG_ERROR, props); + Event event2 = new Event("mytarget1", 2, 2, System.currentTimeMillis(), LogService.LOG_ERROR, props); + + m_logStore.put(Arrays.asList(event1, event2)); + + List descriptors = m_logStore.getDescriptors(); + assertEquals(3, descriptors.size()); + assertEquals("mytarget1", descriptors.get(0).getTargetID()); + assertEquals(1, descriptors.get(0).getStoreID()); + assertEquals(4, descriptors.get(0).getRangeSet().getHigh()); + + assertEquals("mytarget1", descriptors.get(1).getTargetID()); + assertEquals(2, descriptors.get(1).getStoreID()); + assertEquals(2, descriptors.get(1).getRangeSet().getHigh()); + + assertEquals("mytarget2", descriptors.get(2).getTargetID()); + assertEquals(1, descriptors.get(2).getStoreID()); + assertEquals(5, descriptors.get(2).getRangeSet().getHigh()); + } + + public void testGetDescriptorsSingleLogId() throws Exception { + if (!canRunTest()) { + return; + } + + storeEvents(); + + List descriptors = m_logStore.getDescriptors(); + assertEquals(2, descriptors.size()); + assertEquals("mytarget1", descriptors.get(0).getTargetID()); + assertEquals(1, descriptors.get(0).getStoreID()); + assertEquals(4, descriptors.get(0).getRangeSet().getHigh()); + assertEquals("mytarget2", descriptors.get(1).getTargetID()); + assertEquals(1, descriptors.get(1).getStoreID()); + assertEquals(5, descriptors.get(1).getRangeSet().getHigh()); + } + + public void testGetEvents() throws Exception { + if (!canRunTest()) { + return; + } + + storeEvents(); + + List events = m_logStore.get(new Descriptor("mytarget1,1,0")); + assertEquals(3, events.size()); + } + + public void testGetEventsWithRange() throws Exception { + if (!canRunTest()) { + return; + } + + storeEvents(); + + List events = m_logStore.get(new Descriptor("mytarget1,1,2")); + assertEquals(2, events.size()); + } + + public void testPutEvents() throws Exception { + if (!canRunTest()) { + return; + } + + storeEvents(); + + assertEquals(5, m_collection.count()); + } + + @Override + protected void configureAdditionalServices() throws Exception { + try { + m_collection = m_mongodbService.getDB().getCollection("serverlog"); + // we always get a collection back, regardless if there is an actual MongoDB listening, hence we should do + // some actual calls that cause a connection to MongoDB to be created... + if (m_collection.getCount() > 0L) { + m_collection.remove(new BasicDBObject()); + } + } + catch (Exception exception) { + System.err.println("Mongodb not available on localhost, skipping test..."); + m_collection = null; + } + } + + @Override + protected void configureProvisionedServices() throws Exception { + configureFactory("org.amdatu.mongo", "dbName", "ace"); + configureFactory("org.apache.ace.log.server.store.factory", "name", "serverlog"); + } + + @Override + protected void doTearDown() throws Exception { + if (canRunTest()) { + m_collection.remove(new BasicDBObject()); + + CommandResult lastError = m_mongodbService.getDB().getLastError(); + assertNull(lastError.getException()); + + assertTrue(m_collection.getCount() == 0L); + } + } + + @Override + protected org.apache.felix.dm.Component[] getDependencies() { + return new Component[] { createComponent().setImplementation(this) + .add(createServiceDependency().setService(LogStore.class).setRequired(true)) + .add(createServiceDependency().setService(MongoDBService.class).setRequired(true)) }; + } + + private boolean canRunTest() { + return m_collection != null; + } + + private void storeEvents() throws IOException { Map props = new HashMap(); - props.put("myProperty", "myvalue"); - Event event1 = new Event("mytarget1", 1, 1, System.currentTimeMillis(), LogService.LOG_ERROR, props); - Event event2 = new Event("mytarget1", 1, 2, System.currentTimeMillis(), LogService.LOG_ERROR, props); - Event event3 = new Event("mytarget2", 1, 3, System.currentTimeMillis(), LogService.LOG_ERROR, props); - Event event4 = new Event("mytarget2", 1, 5, System.currentTimeMillis(), LogService.LOG_ERROR, props); - Event event5 = new Event("mytarget1", 1, 4, System.currentTimeMillis(), LogService.LOG_ERROR, props); + props.put("myProperty", "myvalue"); + Event event1 = new Event("mytarget1", 1, 1, System.currentTimeMillis(), LogService.LOG_ERROR, props); + Event event2 = new Event("mytarget1", 1, 2, System.currentTimeMillis(), LogService.LOG_ERROR, props); + Event event3 = new Event("mytarget2", 1, 3, System.currentTimeMillis(), LogService.LOG_ERROR, props); + Event event4 = new Event("mytarget2", 1, 5, System.currentTimeMillis(), LogService.LOG_ERROR, props); + Event event5 = new Event("mytarget1", 1, 4, System.currentTimeMillis(), LogService.LOG_ERROR, props); - m_logStore.put(Arrays.asList(event1, event2, event3, event4, event5)); - } + m_logStore.put(Arrays.asList(event1, event2, event3, event4, event5)); + } }