/* * $Id$ * * Copyright 2008 Glencoe Software, Inc. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.server.itests.search; import ome.model.meta.EventLog; import ome.server.itests.AbstractManagedContextTest; import ome.services.fulltext.PersistentEventLogLoader; import ome.services.sessions.SessionManager; import ome.services.util.Executor; import ome.system.Principal; import ome.system.ServiceFactory; import org.hibernate.Session; import org.springframework.transaction.annotation.Transactional; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @Test(groups = { "query", "fulltext" }) public class PersistentEventLogLoaderTest extends AbstractManagedContextTest { Executor ex; SessionManager sm; PersistentEventLogLoader ll; @BeforeMethod public void setup() { ex = (Executor) this.applicationContext.getBean("executor"); sm = (SessionManager) this.applicationContext.getBean("sessionManager"); ll = (PersistentEventLogLoader) this.applicationContext .getBean("eventLogLoader"); } public void testInitialUseWithNoDbEntry() throws Exception { ome.model.meta.Session s = sm.createWithAgent(new Principal("root", "system", "FullText"), "Test", "127.0.0.1"); final boolean[] result = new boolean[1]; ex.execute(new Principal(s.getUuid(), "system", "FullText"), new Executor.SimpleWork(this, "with no db entry") { @Transactional(readOnly = false) public Object doWork(Session session, ServiceFactory sf) { ll.deleteCurrentId(); EventLog log = ll.next(); assertTrue(log.getId() == null); assertTrue(-1 == ll.getCurrentId()); for (EventLog log2 : ll) { if (log2.getId() != null) { break; } } result[0] = ll.getCurrentId() > 0; return null; } }); assertTrue(result[0]); } public void testTestExcludes() throws Exception { ome.model.meta.Session s = sm.createWithAgent(new Principal("root", "system", "FullText"), "Test", "127.0.0.1"); ex.execute(new Principal(s.getUuid(), "system", "FullText"), new Executor.SimpleWork(this, "test excludes") { @Transactional(readOnly = true) public Object doWork(Session session, ServiceFactory sf) { ll.nextEventLog(0); return null; } }); } }