diff options
Diffstat (limited to 'orktrack/src/net/sf/oreka/orktrack/test/PortTest.java')
-rw-r--r-- | orktrack/src/net/sf/oreka/orktrack/test/PortTest.java | 307 |
1 files changed, 307 insertions, 0 deletions
diff --git a/orktrack/src/net/sf/oreka/orktrack/test/PortTest.java b/orktrack/src/net/sf/oreka/orktrack/test/PortTest.java new file mode 100644 index 0000000..2c16784 --- /dev/null +++ b/orktrack/src/net/sf/oreka/orktrack/test/PortTest.java @@ -0,0 +1,307 @@ +/* + * Oreka -- A media capture and retrieval platform + * + * Copyright (C) 2005, orecx LLC + * + * http://www.orecx.com + * + * This program is free software, distributed under the terms of + * the GNU General Public License. + * Please refer to http://www.gnu.org/copyleft/gpl.html + * + */ + +package net.sf.oreka.orktrack.test; + +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.Iterator; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; +import net.sf.oreka.Direction; +import net.sf.oreka.HibernateManager; +import net.sf.oreka.orktrack.OrkTrack; +import net.sf.oreka.orktrack.PortManager; +import net.sf.oreka.orktrack.ProgramManager; +import net.sf.oreka.orktrack.ServiceManager; +import net.sf.oreka.orktrack.messages.MetadataMessage; +import net.sf.oreka.orktrack.messages.TapeMessage; +import net.sf.oreka.persistent.LoginString; +import net.sf.oreka.persistent.RecProgram; +import net.sf.oreka.persistent.RecSegment; +import net.sf.oreka.persistent.RecTape; +import net.sf.oreka.persistent.Service; +import net.sf.oreka.persistent.User; + +import org.hibernate.Session; +import org.hibernate.Transaction; + +public class PortTest extends TestCase { + + public static void main (String[] args) { + junit.textui.TestRunner.run (suite()); + } + protected void setUp() throws Exception { + OrkTrack.initialize("C:/oreka/log4j.properties", "C:/oreka/hsqldb.hbm.xml", "C:/oreka/orktrack.config.xml"); + } + public static Test suite() { + return new TestSuite(PortTest.class); + } + +// === commented out because touches private elements +// public void testAreTogether() { +// +// Port port = new Port(); +// +// long now = new Date().getTime(); +// RecTape tape = new RecTape(); +// tape.setTimestamp(new Date(now)); +// tape.setDuration(10000); +// +// RecSegment seg = new RecSegment(); +// seg.setTimestamp(new Date(now)); +// seg.setDuration(10000); +// +// assertTrue(port.areTogether(tape, seg)); +// +// tape.setTimestamp(new Date(now-2000)); +// assertTrue(port.areTogether(tape, seg)); +// +// tape.setTimestamp(new Date(now-4000)); +// assertFalse(port.areTogether(tape, seg)); +// +// tape.setTimestamp(new Date(now)); +// seg.setDuration(12000); +// assertTrue(port.areTogether(tape, seg)); +// +// seg.setDuration(14000); +// assertFalse(port.areTogether(tape, seg)); +// +// tape.setTimestamp(new Date(now)); +// tape.setDuration(10000); +// seg.setTimestamp(new Date(now+5000)); +// seg.setDuration(5000); +// assertTrue(port.areTogether(tape, seg)); +// +// seg.setDuration(8000); +// assertFalse(port.areTogether(tape, seg)); +// +// } + +//=== commented out because touches private elements +// public void testFindAndAssociateTape() throws Exception { +// +// Session hbnSession = HibernateManager.getSession(); +// Transaction tx = hbnSession.beginTransaction(); +// +// // case 1, a segment arrives after a tape +// Port port = new Port(); +// RecTape tape1 = new RecTape(); // older tape +// RecTape tape2 = new RecTape(); // newer tape +// RecTape fooTape = new RecTape(); // this is the one +// long now = new Date().getTime(); +// fooTape.setTimestamp(new Date(now)); +// tape1.setTimestamp(new Date(now-10000)); +// tape2.setTimestamp(new Date(now+10000)); +// fooTape.setDuration(10000); +// tape1.setDuration(10000); +// tape2.setDuration(10000); +// +// port.recTapes.addFirst(tape1); +// port.recTapes.addFirst(fooTape); +// port.recTapes.addFirst(tape2); +// +// RecSegment seg = new RecSegment(); +// seg.setTimestamp(new Date(now)); +// seg.setDuration(5000); +// port.findAndAssociateTape(seg, hbnSession); +// +// assertTrue(seg.getRecTape() == fooTape); +// assertTrue(seg.getRecTapeOffset() == 0); +// +// // case 2, a second segment arrives and is part of the same tape +// RecSegment seg2 = new RecSegment(); +// seg2.setTimestamp(new Date(now+4000)); +// seg2.setDuration(5000); +// port.findAndAssociateTape(seg2, hbnSession); +// +// assertTrue(seg2.getRecTape() == fooTape); +// assertTrue(seg2.getRecTapeOffset() == 4000); +// +// hbnSession.close(); +// } + +// public void testTapeMessage() throws Exception { +// +// // Generate start and stop messages +// TapeMessage startMsg = new TapeMessage(); +// startMsg.setCapturePort("port1"); +// startMsg.setService("service1"); +// startMsg.setStage(TapeMessage.CaptureStage.start); +// long startTime = new Date().getTime(); +// int startTimestamp = (int)(startTime/1000); +// startMsg.setTimestamp(startTimestamp); +// +// startMsg.process(); +// +// TapeMessage stopMsg = new TapeMessage(); +// stopMsg.setCapturePort("port1"); +// stopMsg.setDirection(Direction.in); +// stopMsg.setFilename("test.wav"); +// stopMsg.setLocalEntryPoint("dnis1"); +// stopMsg.setLocalParty("9833"); +// stopMsg.setRemoteParty("514-425-5678"); +// stopMsg.setService("service1"); +// stopMsg.setStage(TapeMessage.CaptureStage.stop); +// stopMsg.setTimestamp(startTimestamp + 10); +// +// stopMsg.process(); +// +// // verify database entities. +// Session hbnSession = HibernateManager.getSession(); +// Transaction tx = hbnSession.beginTransaction(); +// long time = ((long)startTimestamp)*1000; +// GregorianCalendar cal = new GregorianCalendar(); +// cal.setTimeInMillis(time); +// +// RecSegment seg = null; +// Iterator segments = hbnSession.createQuery( +// "from RecSegment as seg where seg.timestamp=:date") +// .setCalendar("date", cal) +// .list() +// .iterator(); +// if(segments.hasNext()) { +// seg = (RecSegment)segments.next(); +// assertTrue(seg.getLocalParty().equals("9833")); +// +// RecTape tape = seg.getRecTape(); +// assertTrue(tape.getFilename().equals("test.wav")); +// } +// else { +// fail(); +// } +// tx.commit(); +// hbnSession.close(); +// } + + public void testTapeAndMetadataMessage() throws Exception { + + Session hbnSession = HibernateManager.getSession(); + Transaction tx = hbnSession.beginTransaction(); + Service recService = ServiceManager.retrieveOrCreate("recservice", hbnSession); + Service ctiService = ServiceManager.retrieveOrCreate("ctiservice", hbnSession); + ctiService.setRecordMaster(true); + hbnSession.save(recService); + + User user = new User(); + user.setFirstname("salisse"); + LoginString ls = new LoginString(); + ls.setUser(user); + ls.setLoginString("1973"); + hbnSession.save(user); + hbnSession.save(ls); + + PortManager.instance().addPort("recport", "ctiport", hbnSession); + + // create program that does not filter anything + RecProgram prog1 = new RecProgram(); + hbnSession.save(prog1); + ProgramManager.instance().addProgram(prog1); + + tx.commit(); + hbnSession.close(); + + + + // Generate tape start and stop messages + TapeMessage startMsg = new TapeMessage(); + startMsg.setCapturePort("recport"); + startMsg.setService("recservice"); + startMsg.setStage(TapeMessage.CaptureStage.start); + long startTime = new Date().getTime(); + int startTimestamp = (int)(startTime/1000); + startMsg.setTimestamp(startTimestamp); + + startMsg.process(); + + TapeMessage stopMsg = new TapeMessage(); + stopMsg.setCapturePort("recport"); + stopMsg.setService("recservice"); + stopMsg.setDirection(Direction.IN); + stopMsg.setFilename("test.wav"); + stopMsg.setLocalEntryPoint("dnis1"); + stopMsg.setLocalParty("9833"); + stopMsg.setRemoteParty("514-425-5678"); + stopMsg.setStage(TapeMessage.CaptureStage.stop); + stopMsg.setTimestamp(startTimestamp + 10); + + stopMsg.process(); + + // Generate metadata start and stop messages + MetadataMessage mdStartMsg = new MetadataMessage(); + mdStartMsg.setStage(TapeMessage.CaptureStage.start); + mdStartMsg.setTimestamp(startTimestamp + 3); + mdStartMsg.setCapturePort("ctiport"); + mdStartMsg.setService("ctiservice"); + + mdStartMsg.process(); + + MetadataMessage mdStopMsg = new MetadataMessage(); + mdStopMsg.setStage(TapeMessage.CaptureStage.stop); + mdStopMsg.setLocalParty("1973"); + mdStopMsg.setTimestamp(startTimestamp + 5); + mdStopMsg.setCapturePort("ctiport"); + mdStopMsg.setService("ctiservice"); + + mdStopMsg.process(); + + // verify database entities. + hbnSession = HibernateManager.getSession(); + tx = hbnSession.beginTransaction(); + long time = ((long)(startTimestamp+3))*1000; + GregorianCalendar cal = new GregorianCalendar(); + cal.setTimeInMillis(time); + + RecSegment seg = null; + Iterator segments = hbnSession.createQuery( + "from RecSegment as seg where seg.timestamp=:date") + .setCalendar("date", cal) + .list() + .iterator(); + if(segments.hasNext()) { + seg = (RecSegment)segments.next(); + assertTrue(seg.getLocalParty().equals("1973")); + assertTrue(seg.getRecTapeOffset() == 3000); + + RecTape tape = seg.getRecTape(); + assertTrue(tape.getFilename().equals("test.wav")); + + User user2 = seg.getUser(); + assertTrue(user.getId() == user2.getId()); + } + else { + fail(); + } + tx.commit(); + hbnSession.close(); + } + +// public void testUserManager() throws Exception { +// +// Session hbnSession = HibernateManager.getSession(); +// Transaction tx = hbnSession.beginTransaction(); +// User user = new User(); +// user.setFirstname("salisse"); +// LoginString ls = new LoginString(); +// ls.setUser(user); +// ls.setLoginString("4568"); +// hbnSession.save(user); +// hbnSession.save(ls); +// User user2 = UserManager.getByLoginString("4568", hbnSession); +// assertTrue(user.getFirstname().equals(user2.getFirstname())); +// tx.commit(); +// hbnSession.close(); +// } +} |