Java tutorial
/** * SAHARA Scheduling Server * * Schedules and assigns local laboratory rigs. * * @license See LICENSE in the top level directory for complete license terms. * * Copyright (c) 2010, University of Technology, Sydney * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University of Technology, Sydney nor the names * of its contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @author Michael Diponio (mdiponio) * @date 28th March 2010 */ package au.edu.uts.eng.remotelabs.schedserver.queuer.intf.tests; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import junit.framework.TestCase; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.hibernate.StatelessSession; import org.junit.Before; import org.junit.Test; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.DataAccessActivator; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.dao.RequestCapabilitiesDao; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.dao.RigCapabilitiesDao; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.dao.SessionDao; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.entities.Bookings; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.entities.RequestCapabilities; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.entities.ResourcePermission; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.entities.Rig; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.entities.RigCapabilities; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.entities.RigType; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.entities.Session; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.entities.User; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.entities.UserAssociation; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.entities.UserAssociationId; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.entities.UserClass; import au.edu.uts.eng.remotelabs.schedserver.dataaccess.testsetup.DataAccessTestSetup; import au.edu.uts.eng.remotelabs.schedserver.queuer.impl.InnerQueue; import au.edu.uts.eng.remotelabs.schedserver.queuer.impl.Queue; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.AddUserToQueue; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.AddUserToQueueResponse; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailabilityResponse; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckResourceAvailability; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckResourceAvailabilityResponse; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.GetUserQueuePosition; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.GetUserQueuePositionResponse; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.InQueueType; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.IsUserInQueue; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.IsUserInQueueResponse; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.PermissionIDType; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.QueueRequestType; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.QueueTargetType; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.QueueType; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.RemoveUserFromQueue; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.RemoveUserFromQueueResponse; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.ResourceIDType; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.UserIDType; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.UserNSNameSequence; import au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.UserQueueType; import au.edu.uts.eng.remotelabs.schedserver.queuer.pojo.impl.QueuerServiceImpl; /** * Tests the {@link QueuerSOAPImpl} class. */ public class QueuerSOAPImplTester extends TestCase { /** Object of class under test. */ private QueuerSOAPImpl queuer; @Override @Before protected void setUp() throws Exception { super.setUp(); DataAccessTestSetup.setup(); this.queuer = new QueuerSOAPImpl(); Queue q = Queue.getInstance(); Field f = Queue.class.getDeclaredField("rigQueues"); f.setAccessible(true); f.set(q, new HashMap<Long, InnerQueue>()); f = Queue.class.getDeclaredField("typeQueues"); f.setAccessible(true); f.set(q, new HashMap<Long, InnerQueue>()); f = Queue.class.getDeclaredField("capabilityQueues"); f.setAccessible(true); f.set(q, new HashMap<Long, InnerQueue>()); f = Queue.class.getDeclaredField("notTest"); f.setAccessible(true); f.set(q, Boolean.FALSE); f = QueuerServiceImpl.class.getDeclaredField("notTest"); f.setAccessible(true); f.set(this.queuer, Boolean.FALSE); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#addUserToQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.AddUserToQueue)}. */ public void testAddUserToQueueHasBooking() { org.hibernate.Session db = DataAccessActivator.getNewSession(); Date before = new Date(System.currentTimeMillis() - 1000000); Date after = new Date(System.currentTimeMillis() + 1000000); Date now = new Date(); db.beginTransaction(); User user = new User("qperm1", "testns", "USER"); db.persist(user); UserClass uc1 = new UserClass(); uc1.setName("uc1"); uc1.setActive(true); uc1.setQueuable(true); uc1.setPriority((short) 4); db.persist(uc1); UserAssociation ass = new UserAssociation(new UserAssociationId(user.getId(), uc1.getId()), uc1, user); db.persist(ass); RigType rt = new RigType(); rt.setName("Perm_Test_Rig_Type"); db.persist(rt); RigCapabilities caps = new RigCapabilities("perm,test,rig,type"); db.persist(caps); Rig r = new Rig(); r.setName("Perm_Rig_Test_Rig1"); r.setRigType(rt); r.setRigCapabilities(caps); r.setLastUpdateTimestamp(before); r.setActive(true); r.setOnline(true); r.setInSession(true); db.persist(r); ResourcePermission p1 = new ResourcePermission(); p1.setType("RIG"); p1.setUserClass(uc1); p1.setStartTime(before); p1.setExpiryTime(after); p1.setRig(r); p1.setAllowedExtensions((short) 10); p1.setSessionDuration(1800); db.persist(p1); Session ses = new Session(); ses.setActive(false); ses.setReady(true); ses.setActivityLastUpdated(now); ses.setExtensions((short) 5); ses.setPriority((short) 5); ses.setRequestTime(now); ses.setRequestedResourceId(r.getId()); ses.setRequestedResourceName(r.getName()); ses.setResourceType("RIG"); ses.setResourcePermission(p1); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); db.persist(ses); Bookings bk = new Bookings(); bk.setActive(true); bk.setUser(user); bk.setUserName(user.getName()); bk.setUserNamespace(user.getNamespace()); bk.setDuration(3600); Calendar st = Calendar.getInstance(); st.add(Calendar.SECOND, 900); bk.setStartTime(st.getTime()); st.add(Calendar.SECOND, 3600); bk.setEndTime(st.getTime()); bk.setResourcePermission(p1); bk.setResourceType("TYPE"); bk.setRigType(rt); db.persist(bk); db.getTransaction().commit(); db.refresh(uc1); db.refresh(user); db.refresh(p1); db.refresh(r); db.refresh(rt); db.refresh(ses); /* Request parameters. */ AddUserToQueue request = new AddUserToQueue(); QueueRequestType qu = new QueueRequestType(); request.setAddUserToQueue(qu); UserIDType uid = new UserIDType(); uid.setUserQName(user.getNamespace() + ':' + user.getName()); qu.setUserID(uid); PermissionIDType pid = new PermissionIDType(); pid.setPermissionID(p1.getId().intValue()); qu.setPermissionID(pid); AddUserToQueueResponse resp = this.queuer.addUserToQueue(request); SessionDao dao = new SessionDao(); Session ent = dao.findActiveSession(user); if (ent != null) dao.delete(ent); db.beginTransaction(); db.delete(bk); db.delete(ses); db.delete(p1); db.delete(r); db.delete(rt); db.delete(caps); db.delete(ass); db.delete(uc1); db.delete(user); db.getTransaction().commit(); db.close(); assertNotNull(resp); InQueueType in = resp.getAddUserToQueueResponse(); assertNotNull(in); assertFalse(in.getQueueSuccessful()); assertFalse(in.getInQueue()); assertFalse(in.getInSession()); assertNull(in.getAssignedResource()); assertNull(in.getQueuedResouce()); assertTrue(in.getInBooking()); assertEquals(in.getBookingID(), bk.getId().intValue()); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#addUserToQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.AddUserToQueue)}. */ public void testAddUserToQueueHasBookingInactive() { org.hibernate.Session db = DataAccessActivator.getNewSession(); Date before = new Date(System.currentTimeMillis() - 1000000); Date after = new Date(System.currentTimeMillis() + 1000000); Date now = new Date(); db.beginTransaction(); User user = new User("qperm1", "testns", "USER"); db.persist(user); UserClass uc1 = new UserClass(); uc1.setName("uc1"); uc1.setActive(true); uc1.setQueuable(true); uc1.setPriority((short) 4); db.persist(uc1); UserAssociation ass = new UserAssociation(new UserAssociationId(user.getId(), uc1.getId()), uc1, user); db.persist(ass); RigType rt = new RigType(); rt.setName("Perm_Test_Rig_Type"); db.persist(rt); RigCapabilities caps = new RigCapabilities("perm,test,rig,type"); db.persist(caps); Rig r = new Rig(); r.setName("Perm_Rig_Test_Rig1"); r.setRigType(rt); r.setRigCapabilities(caps); r.setLastUpdateTimestamp(before); r.setActive(true); r.setOnline(true); r.setInSession(true); db.persist(r); ResourcePermission p1 = new ResourcePermission(); p1.setType("RIG"); p1.setUserClass(uc1); p1.setStartTime(before); p1.setExpiryTime(after); p1.setRig(r); p1.setAllowedExtensions((short) 10); p1.setSessionDuration(1800); db.persist(p1); Session ses = new Session(); ses.setActive(false); ses.setReady(true); ses.setActivityLastUpdated(now); ses.setExtensions((short) 5); ses.setPriority((short) 5); ses.setRequestTime(now); ses.setRequestedResourceId(r.getId()); ses.setRequestedResourceName(r.getName()); ses.setResourceType("RIG"); ses.setResourcePermission(p1); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); db.persist(ses); Bookings bk = new Bookings(); bk.setActive(false); bk.setUser(user); bk.setUserName(user.getName()); bk.setUserNamespace(user.getNamespace()); bk.setDuration(3600); Calendar st = Calendar.getInstance(); st.add(Calendar.SECOND, 900); bk.setStartTime(st.getTime()); st.add(Calendar.SECOND, 3600); bk.setEndTime(st.getTime()); bk.setResourcePermission(p1); bk.setResourceType("TYPE"); bk.setRigType(rt); db.persist(bk); db.getTransaction().commit(); db.refresh(uc1); db.refresh(user); db.refresh(p1); db.refresh(r); db.refresh(rt); db.refresh(ses); /* Request parameters. */ AddUserToQueue request = new AddUserToQueue(); QueueRequestType qu = new QueueRequestType(); request.setAddUserToQueue(qu); UserIDType uid = new UserIDType(); uid.setUserQName(user.getNamespace() + ':' + user.getName()); qu.setUserID(uid); PermissionIDType pid = new PermissionIDType(); pid.setPermissionID(p1.getId().intValue()); qu.setPermissionID(pid); AddUserToQueueResponse resp = this.queuer.addUserToQueue(request); SessionDao dao = new SessionDao(); Session ent = dao.findActiveSession(user); if (ent != null) dao.delete(ent); db.beginTransaction(); db.delete(bk); db.delete(ses); db.delete(p1); db.delete(r); db.delete(rt); db.delete(caps); db.delete(ass); db.delete(uc1); db.delete(user); db.getTransaction().commit(); db.close(); assertNotNull(ent); assertTrue(ent.isActive()); assertFalse(ent.isReady()); assertEquals(uc1.getPriority(), ent.getPriority()); assertEquals(p1.getAllowedExtensions(), ent.getExtensions()); assertNull(ent.getCodeReference()); assertEquals("RIG", ent.getResourceType()); assertEquals(r.getId(), ent.getRequestedResourceId()); assertEquals(r.getName(), ent.getRequestedResourceName()); assertEquals(p1.getId(), ent.getResourcePermission().getId()); assertEquals(user.getId(), ent.getUser().getId()); assertEquals(user.getName(), ent.getUserName()); assertEquals(user.getNamespace(), ent.getUserNamespace()); assertNotNull(resp); InQueueType in = resp.getAddUserToQueueResponse(); assertNotNull(in); assertTrue(in.getQueueSuccessful()); assertTrue(in.getInQueue()); assertFalse(in.getInSession()); assertNull(in.getAssignedResource()); ResourceIDType queud = in.getQueuedResouce(); assertNotNull(queud); assertEquals("RIG", queud.getType()); assertEquals(r.getName(), queud.getResourceName()); assertEquals(r.getId().intValue(), queud.getResourceID()); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#addUserToQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.AddUserToQueue)}. */ public void testAddUserToQueueHasBookingFuture() { org.hibernate.Session db = DataAccessActivator.getNewSession(); Date before = new Date(System.currentTimeMillis() - 1000000); Date after = new Date(System.currentTimeMillis() + 1000000); Date now = new Date(); db.beginTransaction(); User user = new User("qperm1", "testns", "USER"); db.persist(user); UserClass uc1 = new UserClass(); uc1.setName("uc1"); uc1.setActive(true); uc1.setQueuable(true); uc1.setPriority((short) 4); db.persist(uc1); UserAssociation ass = new UserAssociation(new UserAssociationId(user.getId(), uc1.getId()), uc1, user); db.persist(ass); RigType rt = new RigType(); rt.setName("Perm_Test_Rig_Type"); db.persist(rt); RigCapabilities caps = new RigCapabilities("perm,test,rig,type"); db.persist(caps); Rig r = new Rig(); r.setName("Perm_Rig_Test_Rig1"); r.setRigType(rt); r.setRigCapabilities(caps); r.setLastUpdateTimestamp(before); r.setActive(true); r.setOnline(true); r.setInSession(true); db.persist(r); ResourcePermission p1 = new ResourcePermission(); p1.setType("RIG"); p1.setUserClass(uc1); p1.setStartTime(before); p1.setExpiryTime(after); p1.setRig(r); p1.setAllowedExtensions((short) 10); p1.setSessionDuration(1800); db.persist(p1); Session ses = new Session(); ses.setActive(false); ses.setReady(true); ses.setActivityLastUpdated(now); ses.setExtensions((short) 5); ses.setPriority((short) 5); ses.setRequestTime(now); ses.setRequestedResourceId(r.getId()); ses.setRequestedResourceName(r.getName()); ses.setResourceType("RIG"); ses.setResourcePermission(p1); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); db.persist(ses); Bookings bk = new Bookings(); bk.setActive(true); bk.setUser(user); bk.setUserName(user.getName()); bk.setUserNamespace(user.getNamespace()); bk.setDuration(3600); Calendar st = Calendar.getInstance(); st.add(Calendar.SECOND, 1900); bk.setStartTime(st.getTime()); st.add(Calendar.SECOND, 3600); bk.setEndTime(st.getTime()); bk.setResourcePermission(p1); bk.setResourceType("TYPE"); bk.setRigType(rt); db.persist(bk); db.getTransaction().commit(); db.refresh(uc1); db.refresh(user); db.refresh(p1); db.refresh(r); db.refresh(rt); db.refresh(ses); /* Request parameters. */ AddUserToQueue request = new AddUserToQueue(); QueueRequestType qu = new QueueRequestType(); request.setAddUserToQueue(qu); UserIDType uid = new UserIDType(); uid.setUserQName(user.getNamespace() + ':' + user.getName()); qu.setUserID(uid); PermissionIDType pid = new PermissionIDType(); pid.setPermissionID(p1.getId().intValue()); qu.setPermissionID(pid); AddUserToQueueResponse resp = this.queuer.addUserToQueue(request); SessionDao dao = new SessionDao(); Session ent = dao.findActiveSession(user); if (ent != null) dao.delete(ent); db.beginTransaction(); db.delete(bk); db.delete(ses); db.delete(p1); db.delete(r); db.delete(rt); db.delete(caps); db.delete(ass); db.delete(uc1); db.delete(user); db.getTransaction().commit(); db.close(); assertNotNull(ent); assertTrue(ent.isActive()); assertFalse(ent.isReady()); assertEquals(uc1.getPriority(), ent.getPriority()); assertEquals(p1.getAllowedExtensions(), ent.getExtensions()); assertNull(ent.getCodeReference()); assertEquals("RIG", ent.getResourceType()); assertEquals(r.getId(), ent.getRequestedResourceId()); assertEquals(r.getName(), ent.getRequestedResourceName()); assertEquals(p1.getId(), ent.getResourcePermission().getId()); assertEquals(user.getId(), ent.getUser().getId()); assertEquals(user.getName(), ent.getUserName()); assertEquals(user.getNamespace(), ent.getUserNamespace()); assertNotNull(resp); InQueueType in = resp.getAddUserToQueueResponse(); assertNotNull(in); assertTrue(in.getQueueSuccessful()); assertTrue(in.getInQueue()); assertFalse(in.getInSession()); assertNull(in.getAssignedResource()); ResourceIDType queud = in.getQueuedResouce(); assertNotNull(queud); assertEquals("RIG", queud.getType()); assertEquals(r.getName(), queud.getResourceName()); assertEquals(r.getId().intValue(), queud.getResourceID()); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#addUserToQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.AddUserToQueue)}. */ public void testAddUserToQueue() { org.hibernate.Session db = DataAccessActivator.getNewSession(); Date before = new Date(System.currentTimeMillis() - 1000000); Date after = new Date(System.currentTimeMillis() + 1000000); Date now = new Date(); db.beginTransaction(); User user = new User("qperm1", "testns", "USER"); db.persist(user); UserClass uc1 = new UserClass(); uc1.setName("uc1"); uc1.setActive(true); uc1.setQueuable(true); uc1.setPriority((short) 4); db.persist(uc1); UserAssociation ass = new UserAssociation(new UserAssociationId(user.getId(), uc1.getId()), uc1, user); db.persist(ass); RigType rt = new RigType(); rt.setName("Perm_Test_Rig_Type"); db.persist(rt); RigCapabilities caps = new RigCapabilities("perm,test,rig,type"); db.persist(caps); Rig r = new Rig(); r.setName("Perm_Rig_Test_Rig1"); r.setRigType(rt); r.setRigCapabilities(caps); r.setLastUpdateTimestamp(before); r.setActive(true); r.setOnline(true); r.setInSession(true); db.persist(r); ResourcePermission p1 = new ResourcePermission(); p1.setType("RIG"); p1.setUserClass(uc1); p1.setStartTime(before); p1.setExpiryTime(after); p1.setRig(r); p1.setAllowedExtensions((short) 10); p1.setSessionDuration(1800); db.persist(p1); Session ses = new Session(); ses.setActive(false); ses.setReady(true); ses.setActivityLastUpdated(now); ses.setExtensions((short) 5); ses.setPriority((short) 5); ses.setRequestTime(now); ses.setRequestedResourceId(r.getId()); ses.setRequestedResourceName(r.getName()); ses.setResourceType("RIG"); ses.setResourcePermission(p1); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); db.persist(ses); db.getTransaction().commit(); db.refresh(uc1); db.refresh(user); db.refresh(p1); db.refresh(r); db.refresh(rt); db.refresh(ses); /* Request parameters. */ AddUserToQueue request = new AddUserToQueue(); QueueRequestType qu = new QueueRequestType(); request.setAddUserToQueue(qu); UserIDType uid = new UserIDType(); uid.setUserQName(user.getNamespace() + ':' + user.getName()); qu.setUserID(uid); PermissionIDType pid = new PermissionIDType(); pid.setPermissionID(p1.getId().intValue()); qu.setPermissionID(pid); AddUserToQueueResponse resp = this.queuer.addUserToQueue(request); SessionDao dao = new SessionDao(); Session ent = dao.findActiveSession(user); dao.delete(ent); db.beginTransaction(); db.delete(ses); db.delete(p1); db.delete(r); db.delete(rt); db.delete(caps); db.delete(ass); db.delete(uc1); db.delete(user); db.getTransaction().commit(); db.close(); assertNotNull(ent); assertTrue(ent.isActive()); assertFalse(ent.isReady()); assertEquals(uc1.getPriority(), ent.getPriority()); assertEquals(p1.getAllowedExtensions(), ent.getExtensions()); assertNull(ent.getCodeReference()); assertEquals("RIG", ent.getResourceType()); assertEquals(r.getId(), ent.getRequestedResourceId()); assertEquals(r.getName(), ent.getRequestedResourceName()); assertEquals(p1.getId(), ent.getResourcePermission().getId()); assertEquals(user.getId(), ent.getUser().getId()); assertEquals(user.getName(), ent.getUserName()); assertEquals(user.getNamespace(), ent.getUserNamespace()); assertNotNull(resp); InQueueType in = resp.getAddUserToQueueResponse(); assertNotNull(in); assertTrue(in.getQueueSuccessful()); assertTrue(in.getInQueue()); assertFalse(in.getInSession()); assertNull(in.getAssignedResource()); ResourceIDType queud = in.getQueuedResouce(); assertNotNull(queud); assertEquals("RIG", queud.getType()); assertEquals(r.getName(), queud.getResourceName()); assertEquals(r.getId().intValue(), queud.getResourceID()); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#addUserToQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.AddUserToQueue)}. */ public void testAddUserToQueueRes() { org.hibernate.Session db = DataAccessActivator.getNewSession(); Date before = new Date(System.currentTimeMillis() - 1000000); Date after = new Date(System.currentTimeMillis() + 1000000); Date now = new Date(); db.beginTransaction(); User user = new User("qperm1", "testns", "USER"); db.persist(user); UserClass uc1 = new UserClass(); uc1.setName("uc1"); uc1.setActive(true); uc1.setQueuable(true); uc1.setPriority((short) 4); db.persist(uc1); UserAssociation ass = new UserAssociation(new UserAssociationId(user.getId(), uc1.getId()), uc1, user); db.persist(ass); RigType rt = new RigType(); rt.setName("Perm_Test_Rig_Type"); db.persist(rt); RigCapabilities caps = new RigCapabilities("perm,test,rig,type"); db.persist(caps); Rig r = new Rig(); r.setName("Perm_Rig_Test_Rig1"); r.setRigType(rt); r.setRigCapabilities(caps); r.setLastUpdateTimestamp(before); r.setActive(true); r.setOnline(true); r.setInSession(true); db.persist(r); ResourcePermission p1 = new ResourcePermission(); p1.setType("RIG"); p1.setUserClass(uc1); p1.setStartTime(before); p1.setExpiryTime(after); p1.setRig(r); p1.setAllowedExtensions((short) 10); db.persist(p1); Session ses = new Session(); ses.setActive(false); ses.setReady(true); ses.setActivityLastUpdated(now); ses.setExtensions((short) 5); ses.setPriority((short) 5); ses.setRequestTime(now); ses.setRequestedResourceId(r.getId()); ses.setRequestedResourceName(r.getName()); ses.setResourceType("RIG"); ses.setResourcePermission(p1); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); db.persist(ses); db.getTransaction().commit(); db.refresh(uc1); db.refresh(user); db.refresh(p1); db.refresh(r); db.refresh(rt); db.refresh(ses); /* Request parameters. */ AddUserToQueue request = new AddUserToQueue(); QueueRequestType qu = new QueueRequestType(); request.setAddUserToQueue(qu); UserIDType uid = new UserIDType(); uid.setUserQName(user.getNamespace() + ':' + user.getName()); qu.setUserID(uid); ResourceIDType res = new ResourceIDType(); res.setType("RIG"); res.setResourceID(r.getId().intValue()); qu.setResourceID(res); AddUserToQueueResponse resp = this.queuer.addUserToQueue(request); SessionDao dao = new SessionDao(); Session ent = dao.findActiveSession(user); dao.delete(ent); db.beginTransaction(); db.delete(ses); db.delete(p1); db.delete(r); db.delete(rt); db.delete(caps); db.delete(ass); db.delete(uc1); db.delete(user); db.getTransaction().commit(); db.close(); assertNotNull(ent); assertTrue(ent.isActive()); assertFalse(ent.isReady()); assertEquals(uc1.getPriority(), ent.getPriority()); assertEquals(p1.getAllowedExtensions(), ent.getExtensions()); assertEquals(Math.floor(now.getTime() / 10000), Math.floor(ent.getActivityLastUpdated().getTime() / 10000)); assertNull(ent.getCodeReference()); assertEquals(Math.floor(now.getTime() / 10000), Math.floor(ent.getRequestTime().getTime() / 10000)); assertEquals("RIG", ent.getResourceType()); assertEquals(r.getId(), ent.getRequestedResourceId()); assertEquals(r.getName(), ent.getRequestedResourceName()); assertEquals(p1.getId(), ent.getResourcePermission().getId()); assertEquals(user.getId(), ent.getUser().getId()); assertEquals(user.getName(), ent.getUserName()); assertEquals(user.getNamespace(), ent.getUserNamespace()); assertNotNull(resp); InQueueType in = resp.getAddUserToQueueResponse(); assertNotNull(in); assertTrue(in.getQueueSuccessful()); assertTrue(in.getInQueue()); assertFalse(in.getInSession()); assertNull(in.getAssignedResource()); ResourceIDType queud = in.getQueuedResouce(); assertNotNull(queud); assertEquals("RIG", queud.getType()); assertEquals(r.getName(), queud.getResourceName()); assertEquals(r.getId().intValue(), queud.getResourceID()); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#addUserToQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.AddUserToQueue)}. */ public void testAddUserToQueueResName() { org.hibernate.Session db = DataAccessActivator.getNewSession(); Date before = new Date(System.currentTimeMillis() - 1000000); Date after = new Date(System.currentTimeMillis() + 1000000); Date now = new Date(); db.beginTransaction(); User user = new User("qperm1", "testns", "USER"); db.persist(user); UserClass uc1 = new UserClass(); uc1.setName("uc1"); uc1.setActive(true); uc1.setQueuable(true); uc1.setPriority((short) 4); db.persist(uc1); UserAssociation ass = new UserAssociation(new UserAssociationId(user.getId(), uc1.getId()), uc1, user); db.persist(ass); RigType rt = new RigType(); rt.setName("Perm_Test_Rig_Type"); db.persist(rt); RigCapabilities caps = new RigCapabilities("perm,test,rig,type"); db.persist(caps); Rig r = new Rig(); r.setName("Perm_Rig_Test_Rig1"); r.setRigType(rt); r.setRigCapabilities(caps); r.setLastUpdateTimestamp(before); r.setActive(true); r.setOnline(true); r.setInSession(true); db.persist(r); ResourcePermission p1 = new ResourcePermission(); p1.setType("RIG"); p1.setUserClass(uc1); p1.setStartTime(before); p1.setExpiryTime(after); p1.setRig(r); p1.setAllowedExtensions((short) 10); db.persist(p1); Session ses = new Session(); ses.setActive(false); ses.setReady(true); ses.setActivityLastUpdated(now); ses.setExtensions((short) 5); ses.setPriority((short) 5); ses.setRequestTime(now); ses.setRequestedResourceId(r.getId()); ses.setRequestedResourceName(r.getName()); ses.setResourceType("RIG"); ses.setResourcePermission(p1); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); db.persist(ses); db.getTransaction().commit(); db.refresh(uc1); db.refresh(user); db.refresh(p1); db.refresh(r); db.refresh(rt); db.refresh(ses); /* Request parameters. */ AddUserToQueue request = new AddUserToQueue(); QueueRequestType qu = new QueueRequestType(); request.setAddUserToQueue(qu); UserIDType uid = new UserIDType(); uid.setUserQName(user.getNamespace() + ':' + user.getName()); qu.setUserID(uid); ResourceIDType res = new ResourceIDType(); res.setType("RIG"); res.setResourceName(r.getName()); qu.setResourceID(res); AddUserToQueueResponse resp = this.queuer.addUserToQueue(request); SessionDao dao = new SessionDao(); Session ent = dao.findActiveSession(user); dao.delete(ent); db.beginTransaction(); db.delete(ses); db.delete(p1); db.delete(r); db.delete(rt); db.delete(caps); db.delete(ass); db.delete(uc1); db.delete(user); db.getTransaction().commit(); db.close(); assertNotNull(ent); assertTrue(ent.isActive()); assertFalse(ent.isReady()); assertEquals(uc1.getPriority(), ent.getPriority()); assertEquals(p1.getAllowedExtensions(), ent.getExtensions()); assertEquals(Math.floor(now.getTime() / 10000), Math.floor(ent.getActivityLastUpdated().getTime() / 10000)); assertNull(ent.getCodeReference()); assertEquals(Math.floor(now.getTime() / 10000), Math.floor(ent.getRequestTime().getTime() / 10000)); assertEquals("RIG", ent.getResourceType()); assertEquals(r.getId(), ent.getRequestedResourceId()); assertEquals(r.getName(), ent.getRequestedResourceName()); assertEquals(p1.getId(), ent.getResourcePermission().getId()); assertEquals(user.getId(), ent.getUser().getId()); assertEquals(user.getName(), ent.getUserName()); assertEquals(user.getNamespace(), ent.getUserNamespace()); assertNotNull(resp); InQueueType in = resp.getAddUserToQueueResponse(); assertNotNull(in); assertTrue(in.getQueueSuccessful()); assertTrue(in.getInQueue()); assertFalse(in.getInSession()); assertNull(in.getAssignedResource()); ResourceIDType queud = in.getQueuedResouce(); assertNotNull(queud); assertEquals("RIG", queud.getType()); assertEquals(r.getName(), queud.getResourceName()); assertEquals(r.getId().intValue(), queud.getResourceID()); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#addUserToQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.AddUserToQueue)}. */ public void testAddUserToQueueInQueue() { org.hibernate.Session db = DataAccessActivator.getNewSession(); Date before = new Date(System.currentTimeMillis() - 1000000); Date after = new Date(System.currentTimeMillis() + 1000000); Date now = new Date(); db.beginTransaction(); User user = new User("qperm1", "testns", "USER"); db.persist(user); UserClass uc1 = new UserClass(); uc1.setName("uc1"); uc1.setActive(true); uc1.setQueuable(true); uc1.setPriority((short) 4); db.persist(uc1); UserAssociation ass = new UserAssociation(new UserAssociationId(user.getId(), uc1.getId()), uc1, user); db.persist(ass); RigType rt = new RigType(); rt.setName("Perm_Test_Rig_Type"); db.persist(rt); RigCapabilities caps = new RigCapabilities("perm,test,rig,type"); db.persist(caps); Rig r = new Rig(); r.setName("Perm_Rig_Test_Rig1"); r.setRigType(rt); r.setRigCapabilities(caps); r.setLastUpdateTimestamp(before); r.setActive(true); r.setOnline(true); r.setInSession(true); db.persist(r); ResourcePermission p1 = new ResourcePermission(); p1.setType("RIG"); p1.setUserClass(uc1); p1.setStartTime(before); p1.setExpiryTime(after); p1.setRig(r); p1.setAllowedExtensions((short) 10); db.persist(p1); Session ses = new Session(); ses.setActive(true); ses.setReady(true); ses.setActivityLastUpdated(now); ses.setExtensions((short) 5); ses.setPriority((short) 5); ses.setRequestTime(now); ses.setRequestedResourceId(r.getId()); ses.setRequestedResourceName(r.getName()); ses.setResourceType("RIG"); ses.setResourcePermission(p1); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); db.persist(ses); db.getTransaction().commit(); db.refresh(uc1); db.refresh(user); db.refresh(p1); db.refresh(r); db.refresh(rt); db.refresh(ses); /* Request parameters. */ AddUserToQueue request = new AddUserToQueue(); QueueRequestType qu = new QueueRequestType(); request.setAddUserToQueue(qu); UserIDType uid = new UserIDType(); uid.setUserQName(user.getNamespace() + ':' + user.getName()); qu.setUserID(uid); PermissionIDType pid = new PermissionIDType(); pid.setPermissionID(p1.getId().intValue()); qu.setPermissionID(pid); AddUserToQueueResponse resp = this.queuer.addUserToQueue(request); db.beginTransaction(); db.delete(ses); db.delete(p1); db.delete(r); db.delete(rt); db.delete(caps); db.delete(ass); db.delete(uc1); db.delete(user); db.getTransaction().commit(); db.close(); assertNotNull(resp); InQueueType in = resp.getAddUserToQueueResponse(); assertNotNull(in); assertFalse(in.getQueueSuccessful()); assertTrue(in.getInQueue()); assertFalse(in.getInSession()); assertNull(in.getAssignedResource()); ResourceIDType queud = in.getQueuedResouce(); assertNotNull(queud); assertEquals("RIG", queud.getType()); assertEquals(r.getName(), queud.getResourceName()); assertEquals(r.getId().intValue(), queud.getResourceID()); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#addUserToQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.AddUserToQueue)}. */ public void testAddUserToQueueCantQueue() { org.hibernate.Session db = DataAccessActivator.getNewSession(); Date before = new Date(System.currentTimeMillis() - 1000000); Date after = new Date(System.currentTimeMillis() + 1000000); db.beginTransaction(); User user = new User("qperm1", "testns2", "USER"); db.persist(user); UserClass uc1 = new UserClass(); uc1.setName("uc1"); uc1.setActive(true); uc1.setQueuable(false); uc1.setPriority((short) 4); db.persist(uc1); UserAssociation ass = new UserAssociation(new UserAssociationId(user.getId(), uc1.getId()), uc1, user); db.persist(ass); RigType rt = new RigType(); rt.setName("Perm_Test_Rig_Type"); db.persist(rt); RigCapabilities caps = new RigCapabilities("perm,test,rig,type"); db.persist(caps); Rig r = new Rig(); r.setName("Perm_Rig_Test_Rig1"); r.setRigType(rt); r.setRigCapabilities(caps); r.setLastUpdateTimestamp(before); r.setActive(true); r.setOnline(true); r.setInSession(true); db.persist(r); ResourcePermission p1 = new ResourcePermission(); p1.setType("RIG"); p1.setUserClass(uc1); p1.setStartTime(before); p1.setExpiryTime(after); p1.setRig(r); p1.setAllowedExtensions((short) 10); db.persist(p1); db.getTransaction().commit(); db.flush(); db.close(); /* Request parameters. */ AddUserToQueue request = new AddUserToQueue(); QueueRequestType qu = new QueueRequestType(); request.setAddUserToQueue(qu); UserIDType uid = new UserIDType(); uid.setUserQName(user.getNamespace() + ':' + user.getName()); qu.setUserID(uid); PermissionIDType pid = new PermissionIDType(); pid.setPermissionID(p1.getId().intValue()); qu.setPermissionID(pid); AddUserToQueueResponse resp = this.queuer.addUserToQueue(request); db = DataAccessActivator.getNewSession(); db.beginTransaction(); db.delete(p1); db.delete(r); db.delete(rt); db.delete(caps); db.delete(ass); db.delete(uc1); db.delete(user); db.getTransaction().commit(); db.close(); assertNotNull(resp); InQueueType in = resp.getAddUserToQueueResponse(); assertNotNull(in); assertFalse(in.getQueueSuccessful()); assertFalse(in.getInQueue()); assertFalse(in.getInSession()); assertNull(in.getAssignedResource()); assertNull(in.getQueuedResouce()); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#removeUserFromQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.RemoveUserFromQueue)}. */ public void testRemoveUserFromQueue() { org.hibernate.Session db = DataAccessActivator.getNewSession(); Date before = new Date(System.currentTimeMillis() - 1000000); Date after = new Date(System.currentTimeMillis() + 1000000); Date now = new Date(); db.beginTransaction(); User user = new User("qperm1", "testns", "USER"); db.persist(user); UserClass uc1 = new UserClass(); uc1.setName("uc1"); uc1.setActive(true); uc1.setQueuable(true); uc1.setPriority((short) 4); db.persist(uc1); UserAssociation ass = new UserAssociation(new UserAssociationId(user.getId(), uc1.getId()), uc1, user); db.persist(ass); RigType rt = new RigType(); rt.setName("Perm_Test_Rig_Type"); db.persist(rt); RigCapabilities caps = new RigCapabilities("perm,test,rig,type"); db.persist(caps); Rig r = new Rig(); r.setName("Perm_Rig_Test_Rig1"); r.setRigType(rt); r.setRigCapabilities(caps); r.setLastUpdateTimestamp(before); r.setActive(true); r.setOnline(true); r.setInSession(true); db.persist(r); ResourcePermission p1 = new ResourcePermission(); p1.setType("RIG"); p1.setUserClass(uc1); p1.setStartTime(before); p1.setExpiryTime(after); p1.setRig(r); p1.setAllowedExtensions((short) 10); db.persist(p1); Session ses = new Session(); ses.setActive(true); ses.setReady(true); ses.setActivityLastUpdated(now); ses.setExtensions((short) 5); ses.setPriority((short) 5); ses.setRequestTime(now); ses.setRequestedResourceId(r.getId()); ses.setRequestedResourceName(r.getName()); ses.setResourceType("RIG"); ses.setResourcePermission(p1); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); ses.setAssignedRigName(r.getName()); ses.setRig(r); db.persist(ses); db.getTransaction().commit(); /* Request parameters. */ RemoveUserFromQueue request = new RemoveUserFromQueue(); UserIDType uId = new UserIDType(); request.setRemoveUserFromQueue(uId); uId.setUserQName(user.getNamespace() + ":" + user.getName()); RemoveUserFromQueueResponse resp = this.queuer.removeUserFromQueue(request); StatelessSession ssdb = DataAccessActivator.getNewStatelessSession(); Session sses = (Session) ssdb.get(Session.class, ses.getId()); db.beginTransaction(); db.delete(ses); db.delete(p1); db.delete(r); db.delete(rt); db.delete(caps); db.delete(ass); db.delete(uc1); db.delete(user); db.getTransaction().commit(); db.close(); assertNotNull(resp); InQueueType in = resp.getRemoveUserFromQueueResponse(); assertNotNull(in); assertFalse(sses.isActive()); assertNotNull(sses.getRemovalReason()); assertNotNull(sses.getRemovalTime()); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#removeUserFromQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.RemoveUserFromQueue)}. */ public void testRemoveUserFromQueueID() { org.hibernate.Session db = DataAccessActivator.getNewSession(); Date before = new Date(System.currentTimeMillis() - 1000000); Date after = new Date(System.currentTimeMillis() + 1000000); Date now = new Date(); db.beginTransaction(); User user = new User("qperm1", "testns", "USER"); db.persist(user); UserClass uc1 = new UserClass(); uc1.setName("uc1"); uc1.setActive(true); uc1.setQueuable(true); uc1.setPriority((short) 4); db.persist(uc1); UserAssociation ass = new UserAssociation(new UserAssociationId(user.getId(), uc1.getId()), uc1, user); db.persist(ass); RigType rt = new RigType(); rt.setName("Perm_Test_Rig_Type"); db.persist(rt); RigCapabilities caps = new RigCapabilities("perm,test,rig,type"); db.persist(caps); Rig r = new Rig(); r.setName("Perm_Rig_Test_Rig1"); r.setRigType(rt); r.setRigCapabilities(caps); r.setLastUpdateTimestamp(before); r.setActive(true); r.setOnline(true); r.setInSession(true); db.persist(r); ResourcePermission p1 = new ResourcePermission(); p1.setType("RIG"); p1.setUserClass(uc1); p1.setStartTime(before); p1.setExpiryTime(after); p1.setRig(r); p1.setAllowedExtensions((short) 10); db.persist(p1); Session ses = new Session(); ses.setActive(true); ses.setReady(true); ses.setActivityLastUpdated(now); ses.setExtensions((short) 5); ses.setPriority((short) 5); ses.setRequestTime(now); ses.setRequestedResourceId(r.getId()); ses.setRequestedResourceName(r.getName()); ses.setResourceType("RIG"); ses.setResourcePermission(p1); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); ses.setAssignedRigName(r.getName()); ses.setRig(r); db.persist(ses); db.getTransaction().commit(); /* Request parameters. */ RemoveUserFromQueue request = new RemoveUserFromQueue(); UserIDType uId = new UserIDType(); request.setRemoveUserFromQueue(uId); uId.setUserID(String.valueOf(user.getId())); RemoveUserFromQueueResponse resp = this.queuer.removeUserFromQueue(request); StatelessSession sldb = DataAccessActivator.getNewStatelessSession(); Session sses = (Session) sldb.get(Session.class, ses.getId()); db.beginTransaction(); db.delete(ses); db.delete(p1); db.delete(r); db.delete(rt); db.delete(caps); db.delete(ass); db.delete(uc1); db.delete(user); db.getTransaction().commit(); db.close(); assertNotNull(resp); InQueueType in = resp.getRemoveUserFromQueueResponse(); assertNotNull(in); assertFalse(sses.isActive()); assertNotNull(sses.getRemovalReason()); assertNotNull(sses.getRemovalTime()); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckPermissionAvailability() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test_perm_avail1"); db.persist(type); RigCapabilities caps = new RigCapabilities("a,b,c,d,e,f"); db.persist(caps); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(true); rig1.setInSession(false); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(caps); db.persist(rig1); Rig rig2 = new Rig(); rig2.setName("rig2"); rig2.setActive(true); rig2.setOnline(true); rig2.setInSession(false); rig2.setContactUrl("foo://bar"); rig2.setLastUpdateTimestamp(now); rig2.setRigType(type); rig2.setRigCapabilities(caps); db.persist(rig2); Rig rig3 = new Rig(); rig3.setName("rig3"); rig3.setActive(true); rig3.setOnline(true); rig3.setInSession(true); rig3.setContactUrl("foo://bar"); rig3.setLastUpdateTimestamp(now); rig3.setRigType(type); rig3.setRigCapabilities(caps); db.persist(rig3); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("TYPE"); perm.setRigType(type); db.persist(perm); db.getTransaction().commit(); /* Request parameters. */ CheckPermissionAvailability request = new CheckPermissionAvailability(); PermissionIDType pId = new PermissionIDType(); request.setCheckPermissionAvailability(pId); pId.setPermissionID(perm.getId().intValue()); CheckPermissionAvailabilityResponse resp = this.queuer.checkPermissionAvailability(request); db.beginTransaction(); db.delete(perm); db.delete(rig1); db.delete(rig2); db.delete(rig3); db.delete(caps); db.delete(type); db.delete(userClass); db.getTransaction().commit(); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckPermissionAvailabilityResponse(); assertNotNull(queue); assertTrue(queue.getViable()); assertTrue(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("TYPE", res.getType()); assertEquals(type.getId().intValue(), res.getResourceID()); assertEquals(type.getName(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(3, targets.length); QueueTargetType targ = targets[0]; assertNotNull(targ); assertTrue(targ.getIsFree()); assertTrue(targ.getViable()); ResourceIDType tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig1.getId().intValue(), tres.getResourceID()); assertEquals(rig1.getName(), tres.getResourceName()); targ = targets[1]; assertNotNull(targ); assertTrue(targ.getIsFree()); assertTrue(targ.getViable()); tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig2.getId().intValue(), tres.getResourceID()); assertEquals(rig2.getName(), tres.getResourceName()); targ = targets[2]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertTrue(targ.getViable()); tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig3.getId().intValue(), tres.getResourceID()); assertEquals(rig3.getName(), tres.getResourceName()); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); try { String xml = ele.toStringWithConsume(); assertNotNull(xml); } catch (Throwable e) { e.printStackTrace(); } } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckPermissionAvailabilityAllOffline() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); RigCapabilities caps = new RigCapabilities("a,b,c,d,e,f"); db.persist(caps); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(false); rig1.setInSession(false); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(caps); db.persist(rig1); Rig rig2 = new Rig(); rig2.setName("rig2"); rig2.setActive(true); rig2.setOnline(false); rig2.setInSession(false); rig2.setContactUrl("foo://bar"); rig2.setLastUpdateTimestamp(now); rig2.setRigType(type); rig2.setRigCapabilities(caps); db.persist(rig2); Rig rig3 = new Rig(); rig3.setName("rig3"); rig3.setActive(true); rig3.setOnline(false); rig3.setInSession(true); rig3.setContactUrl("foo://bar"); rig3.setLastUpdateTimestamp(now); rig3.setRigType(type); rig3.setRigCapabilities(caps); db.persist(rig3); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("TYPE"); perm.setRigType(type); db.persist(perm); db.getTransaction().commit(); /* Request parameters. */ CheckPermissionAvailability request = new CheckPermissionAvailability(); PermissionIDType pId = new PermissionIDType(); request.setCheckPermissionAvailability(pId); pId.setPermissionID(perm.getId().intValue()); CheckPermissionAvailabilityResponse resp = this.queuer.checkPermissionAvailability(request); db.beginTransaction(); db.delete(perm); db.delete(rig1); db.delete(rig2); db.delete(rig3); db.delete(caps); db.delete(type); db.delete(userClass); db.getTransaction().commit(); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckPermissionAvailabilityResponse(); assertNotNull(queue); assertFalse(queue.getViable()); assertFalse(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("TYPE", res.getType()); assertEquals(type.getId().intValue(), res.getResourceID()); assertEquals(type.getName(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(3, targets.length); QueueTargetType targ = targets[0]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertFalse(targ.getViable()); ResourceIDType tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig1.getId().intValue(), tres.getResourceID()); assertEquals(rig1.getName(), tres.getResourceName()); targ = targets[1]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertFalse(targ.getViable()); tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig2.getId().intValue(), tres.getResourceID()); assertEquals(rig2.getName(), tres.getResourceName()); targ = targets[2]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertFalse(targ.getViable()); tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig3.getId().intValue(), tres.getResourceID()); assertEquals(rig3.getName(), tres.getResourceName()); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckPermissionAvailabilityAllInSession() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(false); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); type.setCodeAssignable(true); db.persist(type); RigCapabilities caps = new RigCapabilities("a,b,c,d,e,f"); db.persist(caps); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(true); rig1.setInSession(true); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(caps); db.persist(rig1); Rig rig2 = new Rig(); rig2.setName("rig2"); rig2.setActive(true); rig2.setOnline(true); rig2.setInSession(true); rig2.setContactUrl("foo://bar"); rig2.setLastUpdateTimestamp(now); rig2.setRigType(type); rig2.setRigCapabilities(caps); db.persist(rig2); Rig rig3 = new Rig(); rig3.setName("rig3"); rig3.setActive(true); rig3.setOnline(true); rig3.setInSession(true); rig3.setContactUrl("foo://bar"); rig3.setLastUpdateTimestamp(now); rig3.setRigType(type); rig3.setRigCapabilities(caps); db.persist(rig3); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("TYPE"); perm.setRigType(type); db.persist(perm); db.getTransaction().commit(); /* Request parameters. */ CheckPermissionAvailability request = new CheckPermissionAvailability(); PermissionIDType pId = new PermissionIDType(); request.setCheckPermissionAvailability(pId); pId.setPermissionID(perm.getId().intValue()); CheckPermissionAvailabilityResponse resp = this.queuer.checkPermissionAvailability(request); db.beginTransaction(); db.delete(perm); db.delete(rig1); db.delete(rig2); db.delete(rig3); db.delete(caps); db.delete(type); db.delete(userClass); db.getTransaction().commit(); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckPermissionAvailabilityResponse(); assertNotNull(queue); assertTrue(queue.getViable()); assertFalse(queue.getHasFree()); assertFalse(queue.getIsQueueable()); assertTrue(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("TYPE", res.getType()); assertEquals(type.getId().intValue(), res.getResourceID()); assertEquals(type.getName(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(3, targets.length); QueueTargetType targ = targets[0]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertTrue(targ.getViable()); ResourceIDType tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig1.getId().intValue(), tres.getResourceID()); assertEquals(rig1.getName(), tres.getResourceName()); targ = targets[1]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertTrue(targ.getViable()); tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig2.getId().intValue(), tres.getResourceID()); assertEquals(rig2.getName(), tres.getResourceName()); targ = targets[2]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertTrue(targ.getViable()); tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig3.getId().intValue(), tres.getResourceID()); assertEquals(rig3.getName(), tres.getResourceName()); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckPermissionAvailabilityNoRigs() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("TYPE"); perm.setRigType(type); db.persist(perm); db.getTransaction().commit(); /* Request parameters. */ CheckPermissionAvailability request = new CheckPermissionAvailability(); PermissionIDType pId = new PermissionIDType(); request.setCheckPermissionAvailability(pId); pId.setPermissionID(perm.getId().intValue()); CheckPermissionAvailabilityResponse resp = this.queuer.checkPermissionAvailability(request); db.beginTransaction(); db.delete(perm); db.delete(type); db.delete(userClass); db.getTransaction().commit(); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckPermissionAvailabilityResponse(); assertNotNull(queue); assertFalse(queue.getViable()); assertFalse(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("TYPE", res.getType()); assertEquals(type.getId().intValue(), res.getResourceID()); assertEquals(type.getName(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNull(targets); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckPermissionAvailabilityRig() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test_perm_test"); db.persist(type); RigCapabilities caps = new RigCapabilities("a,b,c,d,e,f"); db.persist(caps); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(true); rig1.setInSession(false); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(caps); db.persist(rig1); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("RIG"); perm.setRig(rig1); db.persist(perm); db.getTransaction().commit(); /* Request parameters. */ CheckPermissionAvailability request = new CheckPermissionAvailability(); PermissionIDType pId = new PermissionIDType(); request.setCheckPermissionAvailability(pId); pId.setPermissionID(perm.getId().intValue()); CheckPermissionAvailabilityResponse resp = this.queuer.checkPermissionAvailability(request); db.beginTransaction(); db.delete(perm); db.delete(rig1); db.delete(caps); db.delete(type); db.delete(userClass); db.getTransaction().commit(); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckPermissionAvailabilityResponse(); assertNotNull(queue); assertTrue(queue.getViable()); assertTrue(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("RIG", res.getType()); assertEquals(rig1.getId().intValue(), res.getResourceID()); assertEquals(rig1.getName(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(1, targets.length); QueueTargetType targ = targets[0]; assertNotNull(targ); assertTrue(targ.getIsFree()); assertTrue(targ.getViable()); ResourceIDType tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig1.getId().intValue(), tres.getResourceID()); assertEquals(rig1.getName(), tres.getResourceName()); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckPermissionAvailabilityRigOffline() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); RigCapabilities caps = new RigCapabilities("a,b,c,d,e,f"); db.persist(caps); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(false); rig1.setInSession(false); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(caps); db.persist(rig1); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("RIG"); perm.setRig(rig1); db.persist(perm); db.getTransaction().commit(); /* Request parameters. */ CheckPermissionAvailability request = new CheckPermissionAvailability(); PermissionIDType pId = new PermissionIDType(); request.setCheckPermissionAvailability(pId); pId.setPermissionID(perm.getId().intValue()); CheckPermissionAvailabilityResponse resp = this.queuer.checkPermissionAvailability(request); db.beginTransaction(); db.delete(perm); db.delete(rig1); db.delete(caps); db.delete(type); db.delete(userClass); db.getTransaction().commit(); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckPermissionAvailabilityResponse(); assertNotNull(queue); assertFalse(queue.getViable()); assertFalse(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("RIG", res.getType()); assertEquals(rig1.getId().intValue(), res.getResourceID()); assertEquals(rig1.getName(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(1, targets.length); QueueTargetType targ = targets[0]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertFalse(targ.getViable()); ResourceIDType tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig1.getId().intValue(), tres.getResourceID()); assertEquals(rig1.getName(), tres.getResourceName()); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckPermissionAvailabilityRigInSession() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); type.setCodeAssignable(true); db.persist(type); RigCapabilities caps = new RigCapabilities("a,b,c,d,e,f"); db.persist(caps); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(true); rig1.setInSession(true); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(caps); db.persist(rig1); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("RIG"); perm.setRig(rig1); db.persist(perm); db.getTransaction().commit(); /* Request parameters. */ CheckPermissionAvailability request = new CheckPermissionAvailability(); PermissionIDType pId = new PermissionIDType(); request.setCheckPermissionAvailability(pId); pId.setPermissionID(perm.getId().intValue()); CheckPermissionAvailabilityResponse resp = this.queuer.checkPermissionAvailability(request); db.beginTransaction(); db.delete(perm); db.delete(rig1); db.delete(caps); db.delete(type); db.delete(userClass); db.getTransaction().commit(); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckPermissionAvailabilityResponse(); assertNotNull(queue); assertTrue(queue.getViable()); assertFalse(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertTrue(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("RIG", res.getType()); assertEquals(rig1.getId().intValue(), res.getResourceID()); assertEquals(rig1.getName(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(1, targets.length); QueueTargetType targ = targets[0]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertTrue(targ.getViable()); ResourceIDType tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig1.getId().intValue(), tres.getResourceID()); assertEquals(rig1.getName(), tres.getResourceName()); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckPermissionAvailabilityCaps() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); RigCapabilitiesDao dao = new RigCapabilitiesDao(db); RigCapabilities a = dao.addCapabilities("a"); RigCapabilities ab = dao.addCapabilities("a,b"); RigCapabilities abc = dao.addCapabilities("a,b,c"); RequestCapabilitiesDao reqCapsDao = new RequestCapabilitiesDao(db); RequestCapabilities ra = reqCapsDao.addCapabilities("a"); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(true); rig1.setInSession(false); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(a); db.persist(rig1); Rig rig2 = new Rig(); rig2.setName("rig2"); rig2.setActive(true); rig2.setOnline(true); rig2.setInSession(false); rig2.setContactUrl("foo://bar"); rig2.setLastUpdateTimestamp(now); rig2.setRigType(type); rig2.setRigCapabilities(ab); db.persist(rig2); Rig rig3 = new Rig(); rig3.setName("rig3"); rig3.setActive(true); rig3.setOnline(true); rig3.setInSession(false); rig3.setContactUrl("foo://bar"); rig3.setLastUpdateTimestamp(now); rig3.setRigType(type); rig3.setRigCapabilities(abc); db.persist(rig3); Rig rig4 = new Rig(); rig4.setName("rig4"); rig4.setActive(true); rig4.setOnline(true); rig4.setInSession(false); rig4.setContactUrl("foo://bar"); rig4.setLastUpdateTimestamp(now); rig4.setRigType(type); rig4.setRigCapabilities(abc); db.persist(rig4); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("CAPABILITY"); perm.setRequestCapabilities(ra); db.persist(perm); db.getTransaction().commit(); /* Request parameters. */ CheckPermissionAvailability request = new CheckPermissionAvailability(); PermissionIDType pId = new PermissionIDType(); request.setCheckPermissionAvailability(pId); pId.setPermissionID(perm.getId().intValue()); CheckPermissionAvailabilityResponse resp = this.queuer.checkPermissionAvailability(request); db.beginTransaction(); db.delete(perm); db.delete(rig1); db.delete(rig2); db.delete(rig3); db.delete(rig4); db.delete(type); db.delete(userClass); db.getTransaction().commit(); dao.delete(a); dao.delete(ab); dao.delete(abc); reqCapsDao.delete(ra); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckPermissionAvailabilityResponse(); assertNotNull(queue); assertTrue(queue.getViable()); assertTrue(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("CAPABILITY", res.getType()); assertEquals(ra.getId().intValue(), res.getResourceID()); assertEquals(ra.getCapabilities(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(4, targets.length); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckPermissionAvailabilityCapsFree() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); RigCapabilitiesDao dao = new RigCapabilitiesDao(db); RigCapabilities a = dao.addCapabilities("a"); RigCapabilities ab = dao.addCapabilities("a,b"); RigCapabilities abc = dao.addCapabilities("a,b,c"); RigCapabilities df = dao.addCapabilities("d,f"); RequestCapabilitiesDao reqCapsDao = new RequestCapabilitiesDao(db); RequestCapabilities ra = reqCapsDao.addCapabilities("a"); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(true); rig1.setInSession(true); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(a); db.persist(rig1); Rig rig2 = new Rig(); rig2.setName("rig2"); rig2.setActive(true); rig2.setOnline(true); rig2.setInSession(true); rig2.setContactUrl("foo://bar"); rig2.setLastUpdateTimestamp(now); rig2.setRigType(type); rig2.setRigCapabilities(ab); db.persist(rig2); Rig rig3 = new Rig(); rig3.setName("rig3"); rig3.setActive(true); rig3.setOnline(true); rig3.setInSession(true); rig3.setContactUrl("foo://bar"); rig3.setLastUpdateTimestamp(now); rig3.setRigType(type); rig3.setRigCapabilities(abc); db.persist(rig3); Rig rig4 = new Rig(); rig4.setName("rig4"); rig4.setActive(true); rig4.setOnline(true); rig4.setInSession(false); rig4.setContactUrl("foo://bar"); rig4.setLastUpdateTimestamp(now); rig4.setRigType(type); rig4.setRigCapabilities(df); db.persist(rig4); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("CAPABILITY"); perm.setRequestCapabilities(ra); db.persist(perm); db.getTransaction().commit(); /* Request parameters. */ CheckPermissionAvailability request = new CheckPermissionAvailability(); PermissionIDType pId = new PermissionIDType(); request.setCheckPermissionAvailability(pId); pId.setPermissionID(perm.getId().intValue()); CheckPermissionAvailabilityResponse resp = this.queuer.checkPermissionAvailability(request); db.beginTransaction(); db.delete(perm); db.delete(rig1); db.delete(rig2); db.delete(rig3); db.delete(rig4); db.delete(type); db.delete(userClass); db.getTransaction().commit(); dao.delete(a); dao.delete(ab); dao.delete(abc); dao.delete(df); reqCapsDao.delete(ra); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckPermissionAvailabilityResponse(); assertNotNull(queue); assertTrue(queue.getViable()); assertFalse(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("CAPABILITY", res.getType()); assertEquals(ra.getId().intValue(), res.getResourceID()); assertEquals(ra.getCapabilities(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(3, targets.length); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckResourceAvailability() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); RigType type2 = new RigType(); type2.setName("rig_type_res_test1"); db.persist(type2); RigCapabilities caps = new RigCapabilities("ad,de,df"); db.persist(caps); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(true); rig1.setInSession(true); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(caps); db.persist(rig1); Rig rig2 = new Rig(); rig2.setName("rig2"); rig2.setActive(true); rig2.setOnline(false); rig2.setInSession(false); rig2.setContactUrl("foo://bar"); rig2.setLastUpdateTimestamp(now); rig2.setRigType(type); rig2.setRigCapabilities(caps); db.persist(rig2); Rig rig3 = new Rig(); rig3.setName("rig3"); rig3.setActive(true); rig3.setOnline(true); rig3.setInSession(false); rig3.setContactUrl("foo://bar"); rig3.setLastUpdateTimestamp(now); rig3.setRigType(type); rig3.setRigCapabilities(caps); db.persist(rig3); Rig rig4 = new Rig(); rig4.setName("rig4"); rig4.setActive(true); rig4.setOnline(true); rig4.setInSession(false); rig4.setContactUrl("foo://bar"); rig4.setLastUpdateTimestamp(now); rig4.setRigType(type2); rig4.setRigCapabilities(caps); db.persist(rig4); db.getTransaction().commit(); /* Request parameters. */ CheckResourceAvailability request = new CheckResourceAvailability(); ResourceIDType resReq = new ResourceIDType(); request.setCheckResourceAvailability(resReq); resReq.setType("TYPE"); resReq.setResourceID(type.getId().intValue()); CheckResourceAvailabilityResponse resp = this.queuer.checkResourceAvailability(request); db.beginTransaction(); db.delete(rig1); db.delete(rig2); db.delete(rig3); db.delete(rig4); db.delete(caps); db.delete(type); db.delete(type2); db.delete(userClass); db.getTransaction().commit(); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckResourceAvailabilityResponse(); assertNotNull(queue); assertTrue(queue.getViable()); assertTrue(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("TYPE", res.getType()); assertEquals(type.getId().intValue(), res.getResourceID()); assertEquals(type.getName(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(3, targets.length); QueueTargetType targ = targets[0]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertTrue(targ.getViable()); ResourceIDType tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig1.getId().intValue(), tres.getResourceID()); assertEquals(rig1.getName(), tres.getResourceName()); targ = targets[1]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertFalse(targ.getViable()); tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig2.getId().intValue(), tres.getResourceID()); assertEquals(rig2.getName(), tres.getResourceName()); targ = targets[2]; assertNotNull(targ); assertTrue(targ.getIsFree()); assertTrue(targ.getViable()); tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig3.getId().intValue(), tres.getResourceID()); assertEquals(rig3.getName(), tres.getResourceName()); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckResourceAvailabilityName() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); RigType type2 = new RigType(); type2.setName("rig_type_res_test1"); db.persist(type2); RigCapabilities caps = new RigCapabilities("ad,de,df"); db.persist(caps); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(true); rig1.setInSession(true); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(caps); db.persist(rig1); Rig rig2 = new Rig(); rig2.setName("rig2"); rig2.setActive(true); rig2.setOnline(false); rig2.setInSession(false); rig2.setContactUrl("foo://bar"); rig2.setLastUpdateTimestamp(now); rig2.setRigType(type); rig2.setRigCapabilities(caps); db.persist(rig2); Rig rig3 = new Rig(); rig3.setName("rig3"); rig3.setActive(true); rig3.setOnline(true); rig3.setInSession(false); rig3.setContactUrl("foo://bar"); rig3.setLastUpdateTimestamp(now); rig3.setRigType(type); rig3.setRigCapabilities(caps); db.persist(rig3); Rig rig4 = new Rig(); rig4.setName("rig4"); rig4.setActive(true); rig4.setOnline(true); rig4.setInSession(false); rig4.setContactUrl("foo://bar"); rig4.setLastUpdateTimestamp(now); rig4.setRigType(type2); rig4.setRigCapabilities(caps); db.persist(rig4); db.getTransaction().commit(); /* Request parameters. */ CheckResourceAvailability request = new CheckResourceAvailability(); ResourceIDType resReq = new ResourceIDType(); request.setCheckResourceAvailability(resReq); resReq.setType("TYPE"); resReq.setResourceName(type.getName()); CheckResourceAvailabilityResponse resp = this.queuer.checkResourceAvailability(request); db.beginTransaction(); db.delete(rig1); db.delete(rig2); db.delete(rig3); db.delete(rig4); db.delete(caps); db.delete(type); db.delete(type2); db.delete(userClass); db.getTransaction().commit(); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckResourceAvailabilityResponse(); assertNotNull(queue); assertTrue(queue.getViable()); assertTrue(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("TYPE", res.getType()); assertEquals(type.getId().intValue(), res.getResourceID()); assertEquals(type.getName(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(3, targets.length); QueueTargetType targ = targets[0]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertTrue(targ.getViable()); ResourceIDType tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig1.getId().intValue(), tres.getResourceID()); assertEquals(rig1.getName(), tres.getResourceName()); targ = targets[1]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertFalse(targ.getViable()); tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig2.getId().intValue(), tres.getResourceID()); assertEquals(rig2.getName(), tres.getResourceName()); targ = targets[2]; assertNotNull(targ); assertTrue(targ.getIsFree()); assertTrue(targ.getViable()); tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig3.getId().intValue(), tres.getResourceID()); assertEquals(rig3.getName(), tres.getResourceName()); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckResourceAvailabilityRig() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); RigCapabilities caps = new RigCapabilities("ad,de,df"); db.persist(caps); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(true); rig1.setInSession(true); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(caps); db.persist(rig1); db.getTransaction().commit(); /* Request parameters. */ CheckResourceAvailability request = new CheckResourceAvailability(); ResourceIDType resReq = new ResourceIDType(); request.setCheckResourceAvailability(resReq); resReq.setType("RIG"); resReq.setResourceID(rig1.getId().intValue()); CheckResourceAvailabilityResponse resp = this.queuer.checkResourceAvailability(request); db.beginTransaction(); db.delete(rig1); db.delete(caps); db.delete(type); db.delete(userClass); db.getTransaction().commit(); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckResourceAvailabilityResponse(); assertNotNull(queue); assertTrue(queue.getViable()); assertFalse(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("RIG", res.getType()); assertEquals(rig1.getId().intValue(), res.getResourceID()); assertEquals(rig1.getName(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(1, targets.length); QueueTargetType targ = targets[0]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertTrue(targ.getViable()); ResourceIDType tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig1.getId().intValue(), tres.getResourceID()); assertEquals(rig1.getName(), tres.getResourceName()); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckResourceAvailabilityRigName() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); RigCapabilities caps = new RigCapabilities("ad,de,df"); db.persist(caps); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(false); rig1.setInSession(false); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(caps); db.persist(rig1); db.getTransaction().commit(); /* Request parameters. */ CheckResourceAvailability request = new CheckResourceAvailability(); ResourceIDType resReq = new ResourceIDType(); request.setCheckResourceAvailability(resReq); resReq.setType("RIG"); resReq.setResourceName(rig1.getName()); CheckResourceAvailabilityResponse resp = this.queuer.checkResourceAvailability(request); db.beginTransaction(); db.delete(rig1); db.delete(caps); db.delete(type); db.delete(userClass); db.getTransaction().commit(); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckResourceAvailabilityResponse(); assertNotNull(queue); assertFalse(queue.getViable()); assertFalse(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("RIG", res.getType()); assertEquals(rig1.getId().intValue(), res.getResourceID()); assertEquals(rig1.getName(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(1, targets.length); QueueTargetType targ = targets[0]; assertNotNull(targ); assertFalse(targ.getIsFree()); assertFalse(targ.getViable()); ResourceIDType tres = targ.getResource(); assertNotNull(targ); assertEquals("RIG", tres.getType()); assertEquals(rig1.getId().intValue(), tres.getResourceID()); assertEquals(rig1.getName(), tres.getResourceName()); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckResourceAvailabilityCaps() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); RigCapabilitiesDao dao = new RigCapabilitiesDao(db); RigCapabilities a = dao.addCapabilities("a"); RigCapabilities ab = dao.addCapabilities("a,b"); RigCapabilities abc = dao.addCapabilities("a,b,c"); RigCapabilities df = dao.addCapabilities("d,f"); RequestCapabilitiesDao reqCapsDao = new RequestCapabilitiesDao(db); RequestCapabilities ra = reqCapsDao.addCapabilities("a"); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(true); rig1.setInSession(true); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(a); db.persist(rig1); Rig rig2 = new Rig(); rig2.setName("rig2"); rig2.setActive(true); rig2.setOnline(true); rig2.setInSession(true); rig2.setContactUrl("foo://bar"); rig2.setLastUpdateTimestamp(now); rig2.setRigType(type); rig2.setRigCapabilities(ab); db.persist(rig2); Rig rig3 = new Rig(); rig3.setName("rig3"); rig3.setActive(true); rig3.setOnline(true); rig3.setInSession(true); rig3.setContactUrl("foo://bar"); rig3.setLastUpdateTimestamp(now); rig3.setRigType(type); rig3.setRigCapabilities(abc); db.persist(rig3); Rig rig4 = new Rig(); rig4.setName("rig4"); rig4.setActive(true); rig4.setOnline(true); rig4.setInSession(false); rig4.setContactUrl("foo://bar"); rig4.setLastUpdateTimestamp(now); rig4.setRigType(type); rig4.setRigCapabilities(df); db.persist(rig4); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("CAPABILITY"); perm.setRequestCapabilities(ra); db.persist(perm); db.getTransaction().commit(); /* Request parameters. */ CheckResourceAvailability request = new CheckResourceAvailability(); ResourceIDType resReq = new ResourceIDType(); request.setCheckResourceAvailability(resReq); resReq.setType("CAPABILITY"); resReq.setResourceID(ra.getId().intValue()); CheckResourceAvailabilityResponse resp = this.queuer.checkResourceAvailability(request); db.beginTransaction(); db.delete(perm); db.delete(rig1); db.delete(rig2); db.delete(rig3); db.delete(rig4); db.delete(type); db.delete(userClass); db.getTransaction().commit(); dao.delete(a); dao.delete(ab); dao.delete(abc); dao.delete(df); reqCapsDao.delete(ra); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckResourceAvailabilityResponse(); assertNotNull(queue); assertTrue(queue.getViable()); assertFalse(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("CAPABILITY", res.getType()); assertEquals(ra.getId().intValue(), res.getResourceID()); assertEquals(ra.getCapabilities(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(3, targets.length); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#checkPermissionAvailability(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.CheckPermissionAvailability)}. */ public void testCheckPermissionAvailabilityCapsName() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); RigCapabilitiesDao dao = new RigCapabilitiesDao(db); RigCapabilities a = dao.addCapabilities("a"); RigCapabilities ab = dao.addCapabilities("a,b"); RigCapabilities abc = dao.addCapabilities("a,b,c"); RigCapabilities df = dao.addCapabilities("d,f"); RequestCapabilitiesDao reqCapsDao = new RequestCapabilitiesDao(db); RequestCapabilities ra = reqCapsDao.addCapabilities("a"); db.beginTransaction(); UserClass userClass = new UserClass(); userClass.setName("uc"); userClass.setQueuable(true); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); Rig rig1 = new Rig(); rig1.setName("rig1"); rig1.setActive(true); rig1.setOnline(true); rig1.setInSession(true); rig1.setContactUrl("foo://bar"); rig1.setLastUpdateTimestamp(now); rig1.setRigType(type); rig1.setRigCapabilities(a); db.persist(rig1); Rig rig2 = new Rig(); rig2.setName("rig2"); rig2.setActive(true); rig2.setOnline(true); rig2.setInSession(true); rig2.setContactUrl("foo://bar"); rig2.setLastUpdateTimestamp(now); rig2.setRigType(type); rig2.setRigCapabilities(ab); db.persist(rig2); Rig rig3 = new Rig(); rig3.setName("rig3"); rig3.setActive(true); rig3.setOnline(true); rig3.setInSession(true); rig3.setContactUrl("foo://bar"); rig3.setLastUpdateTimestamp(now); rig3.setRigType(type); rig3.setRigCapabilities(abc); db.persist(rig3); Rig rig4 = new Rig(); rig4.setName("rig4"); rig4.setActive(true); rig4.setOnline(true); rig4.setInSession(false); rig4.setContactUrl("foo://bar"); rig4.setLastUpdateTimestamp(now); rig4.setRigType(type); rig4.setRigCapabilities(df); db.persist(rig4); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("CAPABILITY"); perm.setRequestCapabilities(ra); db.persist(perm); db.getTransaction().commit(); /* Request parameters. */ CheckResourceAvailability request = new CheckResourceAvailability(); ResourceIDType resReq = new ResourceIDType(); request.setCheckResourceAvailability(resReq); resReq.setType("CAPABILITY"); resReq.setResourceName(ra.getCapabilities()); CheckResourceAvailabilityResponse resp = this.queuer.checkResourceAvailability(request); db.beginTransaction(); db.delete(perm); db.delete(rig1); db.delete(rig2); db.delete(rig3); db.delete(rig4); db.delete(type); db.delete(userClass); db.getTransaction().commit(); dao.delete(a); dao.delete(ab); dao.delete(abc); dao.delete(df); reqCapsDao.delete(ra); db.close(); assertNotNull(resp); QueueType queue = resp.getCheckResourceAvailabilityResponse(); assertNotNull(queue); assertTrue(queue.getViable()); assertFalse(queue.getHasFree()); assertTrue(queue.getIsQueueable()); assertFalse(queue.getIsCodeAssignable()); ResourceIDType res = queue.getQueuedResource(); assertNotNull(res); assertEquals("CAPABILITY", res.getType()); assertEquals(ra.getId().intValue(), res.getResourceID()); assertEquals(ra.getCapabilities(), res.getResourceName()); QueueTargetType targets[] = queue.getQueueTarget(); assertNotNull(targets); assertEquals(3, targets.length); OMElement ele = resp.getOMElement(CheckPermissionAvailabilityResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#getUserQueuePosition(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.GetUserQueuePosition)}. */ public void testGetUserQueuePositionAssigned() throws Exception { org.hibernate.Session db = DataAccessActivator.getNewSession(); Date before = new Date(System.currentTimeMillis() - 10000); Date after = new Date(System.currentTimeMillis() + 10000); Date now = new Date(); db.beginTransaction(); User user1 = new User("qperm12", "testns", "USER"); db.persist(user1); UserClass uc1 = new UserClass(); uc1.setName("uc1"); uc1.setActive(true); uc1.setQueuable(true); db.persist(uc1); UserAssociation ass1 = new UserAssociation(new UserAssociationId(user1.getId(), uc1.getId()), uc1, user1); db.persist(ass1); RigType rt = new RigType(); rt.setName("Perm_Test_Rig_Type"); rt.setCodeAssignable(false); db.persist(rt); RigCapabilities caps = new RigCapabilities("foo,bar,baz"); db.persist(caps); Rig r = new Rig(); r.setName("Perm_Rig_Test_Rig1"); r.setRigType(rt); r.setRigCapabilities(caps); r.setLastUpdateTimestamp(before); r.setActive(true); r.setOnline(true); r.setInSession(true); db.persist(r); ResourcePermission p1 = new ResourcePermission(); p1.setType("RIG"); p1.setUserClass(uc1); p1.setStartTime(before); p1.setExpiryTime(after); p1.setRig(r); db.persist(p1); Session ses1 = new Session(); ses1.setActive(true); ses1.setReady(true); ses1.setActivityLastUpdated(now); ses1.setExtensions((short) 5); ses1.setPriority((short) 5); ses1.setRequestTime(now); ses1.setRequestedResourceId(r.getId()); ses1.setRequestedResourceName(r.getName()); ses1.setResourceType("RIG"); ses1.setResourcePermission(p1); ses1.setUser(user1); ses1.setUserName(user1.getName()); ses1.setUserNamespace(user1.getNamespace()); db.persist(ses1); db.getTransaction().commit(); db.refresh(r); db.refresh(rt); db.refresh(caps); Queue.getInstance().addEntry(ses1, db); /* Request parameters. */ GetUserQueuePosition request = new GetUserQueuePosition(); UserIDType uid = new UserIDType(); request.setGetUserQueuePosition(uid); uid.setUserQName(user1.getNamespace() + ':' + user1.getName()); GetUserQueuePositionResponse resp = this.queuer.getUserQueuePosition(request); UserQueueType q = resp.getGetUserQueuePositionResponse(); assertNotNull(q); assertTrue(q.getInQueue()); assertFalse(q.getInSession()); assertFalse(q.getQueueSuccessful()); assertNull(q.getAssignedResource()); assertEquals(1, q.getPosition()); ResourceIDType res = q.getQueuedResouce(); assertNotNull(res); assertEquals(r.getId().intValue(), res.getResourceID()); assertEquals(r.getName(), res.getResourceName()); assertEquals("RIG", res.getType()); QueueType qt = q.getQueue(); assertNotNull(qt); assertTrue(qt.getIsQueueable()); assertTrue(qt.getViable()); assertFalse(qt.getHasFree()); assertFalse(qt.getIsCodeAssignable()); res = qt.getQueuedResource(); assertNotNull(res); assertEquals(r.getId().intValue(), res.getResourceID()); assertEquals(r.getName(), res.getResourceName()); assertEquals("RIG", res.getType()); QueueTargetType targets[] = qt.getQueueTarget(); assertNotNull(targets); assertEquals(1, targets.length); assertTrue(targets[0].getViable()); assertFalse(targets[0].getIsFree()); res = targets[0].getResource(); assertNotNull(res); assertEquals(r.getId().intValue(), res.getResourceID()); assertEquals(r.getName(), res.getResourceName()); assertEquals("RIG", res.getType()); r.setInSession(false); db.beginTransaction(); db.flush(); db.getTransaction().commit(); Queue.getInstance().runRigAssignment(r.getId(), db); resp = this.queuer.getUserQueuePosition(request); db.beginTransaction(); db.delete(ses1); db.delete(p1); db.delete(r); db.delete(rt); db.delete(caps); db.delete(ass1); db.delete(uc1); db.delete(user1); db.getTransaction().commit(); db.close(); q = resp.getGetUserQueuePositionResponse(); assertNotNull(q); assertFalse(q.getInQueue()); assertTrue(q.getInSession()); assertFalse(q.getQueueSuccessful()); assertNull(q.getQueuedResouce()); assertEquals(0, q.getPosition()); int time = Math.round((System.currentTimeMillis() - ses1.getRequestTime().getTime()) / 1000); assertEquals(time, q.getTime()); time = Math.round((System.currentTimeMillis() - ses1.getAssignmentTime().getTime()) / 60000); assertEquals(time, q.getTime()); res = q.getAssignedResource(); assertNotNull(res); assertEquals(r.getId().intValue(), res.getResourceID()); assertEquals(r.getName(), res.getResourceName()); assertEquals("RIG", res.getType()); qt = q.getQueue(); assertNull(qt); OMElement ele = resp.getOMElement(GetUserQueuePositionResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#getUserQueuePosition(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.GetUserQueuePosition)}. */ public void testGetUserQueuePositionNotInQueue() throws Exception { org.hibernate.Session db = DataAccessActivator.getNewSession(); Date before = new Date(System.currentTimeMillis() - 10000); Date after = new Date(System.currentTimeMillis() + 10000); db.beginTransaction(); User user1 = new User("qperm1", "testns", "USER"); db.persist(user1); UserClass uc1 = new UserClass(); uc1.setName("uc1"); uc1.setActive(true); uc1.setQueuable(true); db.persist(uc1); UserAssociation ass1 = new UserAssociation(new UserAssociationId(user1.getId(), uc1.getId()), uc1, user1); db.persist(ass1); RigType rt = new RigType(); rt.setName("Perm_Test_Rig_Type"); rt.setCodeAssignable(false); db.persist(rt); RigCapabilities caps = new RigCapabilities("foo,bar,baz"); db.persist(caps); Rig r = new Rig(); r.setName("Perm_Rig_Test_Rig1"); r.setRigType(rt); r.setRigCapabilities(caps); r.setLastUpdateTimestamp(before); r.setActive(true); r.setOnline(true); r.setInSession(true); db.persist(r); ResourcePermission p1 = new ResourcePermission(); p1.setType("RIG"); p1.setUserClass(uc1); p1.setStartTime(before); p1.setExpiryTime(after); p1.setRig(r); db.persist(p1); Session ses1 = new Session(); ses1.setActive(false); ses1.setReady(true); ses1.setActivityLastUpdated(before); ses1.setExtensions((short) 5); ses1.setPriority((short) 5); ses1.setRequestTime(before); ses1.setRequestedResourceId(r.getId()); ses1.setRequestedResourceName(r.getName()); ses1.setResourceType("RIG"); ses1.setResourcePermission(p1); ses1.setUser(user1); ses1.setUserName(user1.getName()); ses1.setUserNamespace(user1.getNamespace()); db.persist(ses1); db.getTransaction().commit(); /* Request parameters. */ GetUserQueuePosition request = new GetUserQueuePosition(); UserIDType uid = new UserIDType(); request.setGetUserQueuePosition(uid); uid.setUserQName(user1.getNamespace() + ':' + user1.getName()); GetUserQueuePositionResponse resp = this.queuer.getUserQueuePosition(request); db.beginTransaction(); db.delete(ses1); db.delete(p1); db.delete(r); db.delete(rt); db.delete(caps); db.delete(ass1); db.delete(uc1); db.delete(user1); db.getTransaction().commit(); db.close(); UserQueueType q = resp.getGetUserQueuePositionResponse(); assertNotNull(q); assertFalse(q.getInQueue()); assertFalse(q.getInSession()); assertFalse(q.getQueueSuccessful()); assertNull(q.getQueuedResouce()); assertNull(q.getAssignedResource()); assertNull(q.getQueue()); assertEquals(-1, q.getPosition()); assertEquals(0, q.getTime()); OMElement ele = resp.getOMElement(GetUserQueuePositionResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#isUserInQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.IsUserInQueue)}. */ @Test public void testIsUserInQueue() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); User user = new User("locktest", "ns", "USER"); db.persist(user); UserClass userClass = new UserClass(); userClass.setName("uc"); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("TYPE"); perm.setRigType(type); db.persist(perm); Session ses = new Session(); ses.setActive(true); ses.setActivityLastUpdated(now); ses.setPriority((short) 1); ses.setRequestTime(now); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); ses.setRequestedResourceId(type.getId()); ses.setRequestedResourceName(type.getName()); ses.setResourcePermission(perm); ses.setResourceType("TYPE"); db.persist(ses); db.getTransaction().commit(); /* Request parameters. */ IsUserInQueue request = new IsUserInQueue(); UserIDType uid = new UserIDType(); request.setIsUserInQueue(uid); uid.setUserID(String.valueOf(user.getId())); IsUserInQueueResponse resp = this.queuer.isUserInQueue(request); db.beginTransaction(); db.delete(ses); db.delete(perm); db.delete(type); db.delete(userClass); db.delete(user); db.getTransaction().commit(); assertNotNull(resp); InQueueType queue = resp.getIsUserInQueueResponse(); assertNotNull(queue); assertTrue(queue.getInQueue()); assertFalse(queue.getInSession()); assertNull(queue.getAssignedResource()); ResourceIDType reqRes = queue.getQueuedResouce(); assertNotNull(reqRes); assertEquals("TYPE", reqRes.getType()); assertEquals(type.getId().intValue(), reqRes.getResourceID()); assertEquals(type.getName(), reqRes.getResourceName()); OMElement ele = resp.getOMElement(IsUserInQueueResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); assertTrue(xml.contains(type.getName())); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#isUserInQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.IsUserInQueue)}. */ @Test public void testIsUserInQueueNSName() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); User user = new User("locktest", "ns", "USER"); db.persist(user); UserClass userClass = new UserClass(); userClass.setName("uc"); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("TYPE"); perm.setRigType(type); db.persist(perm); Session ses = new Session(); ses.setActive(true); ses.setActivityLastUpdated(now); ses.setPriority((short) 1); ses.setRequestTime(now); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); ses.setRequestedResourceId(type.getId()); ses.setRequestedResourceName(type.getName()); ses.setResourcePermission(perm); ses.setResourceType("TYPE"); db.persist(ses); db.getTransaction().commit(); /* Request parameters. */ IsUserInQueue request = new IsUserInQueue(); UserIDType uid = new UserIDType(); request.setIsUserInQueue(uid); uid.setUserQName(user.qName()); IsUserInQueueResponse resp = this.queuer.isUserInQueue(request); db.beginTransaction(); db.delete(ses); db.delete(perm); db.delete(type); db.delete(userClass); db.delete(user); db.getTransaction().commit(); assertNotNull(resp); InQueueType queue = resp.getIsUserInQueueResponse(); assertNotNull(queue); assertTrue(queue.getInQueue()); assertFalse(queue.getInSession()); assertNull(queue.getAssignedResource()); ResourceIDType reqRes = queue.getQueuedResouce(); assertNotNull(reqRes); assertEquals("TYPE", reqRes.getType()); assertEquals(type.getId().intValue(), reqRes.getResourceID()); assertEquals(type.getName(), reqRes.getResourceName()); OMElement ele = resp.getOMElement(IsUserInQueueResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); assertTrue(xml.contains(type.getName())); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#isUserInQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.IsUserInQueue)}. */ @Test public void testIsUserInQueueBooking() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); User user = new User("booktest", "ns", "USER"); db.persist(user); UserClass userClass = new UserClass(); userClass.setName("bkcls"); db.persist(userClass); RigType type = new RigType(); type.setName("bk_test_type"); db.persist(type); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("TYPE"); perm.setRigType(type); db.persist(perm); Bookings bk = new Bookings(); bk.setActive(true); bk.setUser(user); bk.setUserName(user.getName()); bk.setUserNamespace(user.getNamespace()); bk.setDuration(3600); Calendar st = Calendar.getInstance(); st.add(Calendar.SECOND, 10); bk.setStartTime(st.getTime()); st.add(Calendar.SECOND, 3600); bk.setEndTime(st.getTime()); bk.setResourcePermission(perm); bk.setResourceType("TYPE"); bk.setRigType(type); db.persist(bk); db.getTransaction().commit(); /* Request parameters. */ IsUserInQueue request = new IsUserInQueue(); UserIDType uid = new UserIDType(); request.setIsUserInQueue(uid); uid.setUserQName(user.qName()); IsUserInQueueResponse resp = this.queuer.isUserInQueue(request); db.beginTransaction(); db.delete(bk); db.delete(perm); db.delete(type); db.delete(userClass); db.delete(user); db.getTransaction().commit(); assertNotNull(resp); InQueueType queue = resp.getIsUserInQueueResponse(); assertNotNull(queue); assertFalse(queue.getInQueue()); assertTrue(queue.getInBooking()); assertFalse(queue.getInSession()); assertNull(queue.getAssignedResource()); assertEquals(bk.getId().intValue(), queue.getBookingID()); ResourceIDType reqRes = queue.getQueuedResouce(); assertNull(reqRes); OMElement ele = resp.getOMElement(IsUserInQueueResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#isUserInQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.IsUserInQueue)}. */ @Test public void testIsUserInQueueTwoBooking() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); User user = new User("booktest", "ns", "USER"); db.persist(user); UserClass userClass = new UserClass(); userClass.setName("bkcls"); db.persist(userClass); RigType type = new RigType(); type.setName("bk_test_type"); db.persist(type); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("TYPE"); perm.setRigType(type); db.persist(perm); Bookings bk = new Bookings(); bk.setActive(true); bk.setUser(user); bk.setUserName(user.getName()); bk.setUserNamespace(user.getNamespace()); bk.setDuration(900); Calendar st = Calendar.getInstance(); bk.setStartTime(st.getTime()); st.add(Calendar.SECOND, 900); bk.setEndTime(st.getTime()); bk.setResourcePermission(perm); bk.setResourceType("TYPE"); bk.setRigType(type); db.persist(bk); Bookings bk1 = new Bookings(); bk1.setActive(true); bk1.setUser(user); bk1.setUserName(user.getName()); bk1.setUserNamespace(user.getNamespace()); bk1.setDuration(900); st = Calendar.getInstance(); bk1.setStartTime(st.getTime()); st.add(Calendar.SECOND, 900); bk1.setEndTime(st.getTime()); bk1.setResourcePermission(perm); bk1.setResourceType("TYPE"); bk1.setRigType(type); db.persist(bk); db.getTransaction().commit(); /* Request parameters. */ IsUserInQueue request = new IsUserInQueue(); UserIDType uid = new UserIDType(); request.setIsUserInQueue(uid); uid.setUserQName(user.qName()); IsUserInQueueResponse resp = this.queuer.isUserInQueue(request); db.beginTransaction(); db.delete(bk1); db.delete(bk); db.delete(perm); db.delete(type); db.delete(userClass); db.delete(user); db.getTransaction().commit(); assertNotNull(resp); InQueueType queue = resp.getIsUserInQueueResponse(); assertNotNull(queue); assertFalse(queue.getInQueue()); assertTrue(queue.getInBooking()); assertFalse(queue.getInSession()); assertNull(queue.getAssignedResource()); assertEquals(bk.getId().intValue(), queue.getBookingID()); ResourceIDType reqRes = queue.getQueuedResouce(); assertNull(reqRes); OMElement ele = resp.getOMElement(IsUserInQueueResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#isUserInQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.IsUserInQueue)}. */ @Test public void testIsUserInQueueNoBooking() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); User user = new User("booktest", "ns", "USER"); db.persist(user); UserClass userClass = new UserClass(); userClass.setName("bkcls"); db.persist(userClass); RigType type = new RigType(); type.setName("bk_test_type"); db.persist(type); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("TYPE"); perm.setRigType(type); db.persist(perm); Bookings bk = new Bookings(); bk.setActive(true); bk.setUser(user); bk.setUserName(user.getName()); bk.setUserNamespace(user.getNamespace()); bk.setDuration(900); Calendar st = Calendar.getInstance(); st.add(Calendar.SECOND, 3600); bk.setStartTime(st.getTime()); st.add(Calendar.SECOND, 900); bk.setEndTime(st.getTime()); bk.setResourcePermission(perm); bk.setResourceType("TYPE"); bk.setRigType(type); db.persist(bk); Bookings bk1 = new Bookings(); bk1.setActive(true); bk1.setUser(user); bk1.setUserName(user.getName()); bk1.setUserNamespace(user.getNamespace()); bk1.setDuration(900); st = Calendar.getInstance(); bk1.setStartTime(st.getTime()); st.add(Calendar.SECOND, 900); bk1.setEndTime(st.getTime()); bk1.setResourcePermission(perm); bk1.setResourceType("TYPE"); bk1.setRigType(type); db.persist(bk); db.getTransaction().commit(); /* Request parameters. */ IsUserInQueue request = new IsUserInQueue(); UserIDType uid = new UserIDType(); request.setIsUserInQueue(uid); uid.setUserQName(user.qName()); IsUserInQueueResponse resp = this.queuer.isUserInQueue(request); db.beginTransaction(); db.delete(bk1); db.delete(bk); db.delete(perm); db.delete(type); db.delete(userClass); db.delete(user); db.getTransaction().commit(); assertNotNull(resp); InQueueType queue = resp.getIsUserInQueueResponse(); assertNotNull(queue); assertFalse(queue.getInQueue()); assertFalse(queue.getInBooking()); assertFalse(queue.getInSession()); assertNull(queue.getAssignedResource()); ResourceIDType reqRes = queue.getQueuedResouce(); assertNull(reqRes); OMElement ele = resp.getOMElement(IsUserInQueueResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#isUserInQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.IsUserInQueue)}. */ @Test public void testIsUserInQueueActive() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); User user = new User("locktest", "ns", "USER"); db.persist(user); UserClass userClass = new UserClass(); userClass.setName("uc"); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("TYPE"); perm.setRigType(type); db.persist(perm); RigCapabilities caps = new RigCapabilities("a,b,c,d,e"); db.persist(caps); Rig rig = new Rig(); rig.setName("in_ses_test"); rig.setContactUrl("foo:///"); rig.setInSession(true); rig.setLastUpdateTimestamp(new Date()); rig.setRigCapabilities(caps); rig.setRigType(type); db.persist(rig); Session ses = new Session(); ses.setActive(true); ses.setActivityLastUpdated(now); ses.setPriority((short) 1); ses.setRequestTime(now); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); ses.setRequestedResourceId(type.getId()); ses.setRequestedResourceName(type.getName()); ses.setResourcePermission(perm); ses.setResourceType("TYPE"); ses.setAssignmentTime(now); ses.setRig(rig); ses.setAssignedRigName(rig.getName()); db.persist(ses); db.getTransaction().commit(); /* Request parameters. */ IsUserInQueue request = new IsUserInQueue(); UserIDType uid = new UserIDType(); request.setIsUserInQueue(uid); uid.setUserID(String.valueOf(user.getId())); IsUserInQueueResponse resp = this.queuer.isUserInQueue(request); db.beginTransaction(); db.delete(ses); db.delete(perm); db.delete(rig); db.delete(caps); db.delete(type); db.delete(userClass); db.delete(user); db.getTransaction().commit(); assertNotNull(resp); InQueueType queue = resp.getIsUserInQueueResponse(); assertNotNull(queue); assertFalse(queue.getInQueue()); assertTrue(queue.getInSession()); ResourceIDType reqRes = queue.getQueuedResouce(); assertNotNull(reqRes); assertEquals("TYPE", reqRes.getType()); assertEquals(type.getId().intValue(), reqRes.getResourceID()); assertEquals(type.getName(), reqRes.getResourceName()); ResourceIDType res = queue.getAssignedResource(); assertNotNull(res); assertEquals("RIG", res.getType()); assertEquals(rig.getName(), res.getResourceName()); assertEquals(rig.getId().intValue(), res.getResourceID()); OMElement ele = resp.getOMElement(IsUserInQueueResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); assertTrue(xml.contains(type.getName())); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#isUserInQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.IsUserInQueue)}. */ @Test public void testIsUserInQueueTwoSes() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); User user = new User("locktest", "ns", "USER"); db.persist(user); UserClass userClass = new UserClass(); userClass.setName("uc"); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("TYPE"); perm.setRigType(type); db.persist(perm); Session ses = new Session(); ses.setActive(true); ses.setActivityLastUpdated(now); ses.setPriority((short) 1); ses.setRequestTime(now); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); ses.setRequestedResourceId(type.getId()); ses.setRequestedResourceName(type.getName()); ses.setResourcePermission(perm); ses.setResourceType("TYPE"); Session ses2 = new Session(); ses2.setActive(false); ses2.setActivityLastUpdated(now); ses2.setPriority((short) 1); ses2.setRequestTime(new Date(System.currentTimeMillis() - 1000)); ses2.setUser(user); ses2.setUserName(user.getName()); ses2.setUserNamespace(user.getNamespace()); ses2.setRequestedResourceId(type.getId()); ses2.setRequestedResourceName(type.getName()); ses2.setResourcePermission(perm); ses2.setResourceType("TYPE"); db.persist(ses2); db.persist(ses); db.getTransaction().commit(); /* Request parameters. */ IsUserInQueue request = new IsUserInQueue(); UserIDType uid = new UserIDType(); request.setIsUserInQueue(uid); uid.setUserID(String.valueOf(user.getId())); IsUserInQueueResponse resp = this.queuer.isUserInQueue(request); db.beginTransaction(); db.delete(ses2); db.delete(ses); db.delete(perm); db.delete(type); db.delete(userClass); db.delete(user); db.getTransaction().commit(); assertNotNull(resp); InQueueType queue = resp.getIsUserInQueueResponse(); assertNotNull(queue); assertTrue(queue.getInQueue()); assertFalse(queue.getInSession()); assertNull(queue.getAssignedResource()); ResourceIDType reqRes = queue.getQueuedResouce(); assertNotNull(reqRes); assertEquals("TYPE", reqRes.getType()); assertEquals(type.getId().intValue(), reqRes.getResourceID()); assertEquals(type.getName(), reqRes.getResourceName()); OMElement ele = resp.getOMElement(IsUserInQueueResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); assertTrue(xml.contains(type.getName())); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#isUserInQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.IsUserInQueue)}. */ @Test public void testIsUserInQueueNot() throws Exception { Date now = new Date(); org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); User user = new User("locktest", "ns", "USER"); db.persist(user); UserClass userClass = new UserClass(); userClass.setName("uc"); db.persist(userClass); RigType type = new RigType(); type.setName("rig_type_perm_test"); db.persist(type); ResourcePermission perm = new ResourcePermission(); perm.setStartTime(now); perm.setExpiryTime(now); perm.setUserClass(userClass); perm.setType("TYPE"); perm.setRigType(type); db.persist(perm); Session ses = new Session(); ses.setActive(false); ses.setActivityLastUpdated(now); ses.setPriority((short) 1); ses.setRequestTime(now); ses.setUser(user); ses.setUserName(user.getName()); ses.setUserNamespace(user.getNamespace()); ses.setRequestedResourceId(type.getId()); ses.setRequestedResourceName(type.getName()); ses.setResourcePermission(perm); ses.setResourceType("TYPE"); db.persist(ses); db.getTransaction().commit(); /* Request parameters. */ IsUserInQueue request = new IsUserInQueue(); UserIDType uid = new UserIDType(); request.setIsUserInQueue(uid); uid.setUserID(String.valueOf(user.getId())); IsUserInQueueResponse resp = this.queuer.isUserInQueue(request); db.beginTransaction(); db.delete(ses); db.delete(perm); db.delete(type); db.delete(userClass); db.delete(user); db.getTransaction().commit(); assertNotNull(resp); InQueueType queue = resp.getIsUserInQueueResponse(); assertNotNull(queue); assertFalse(queue.getInQueue()); assertFalse(queue.getInSession()); assertNull(queue.getAssignedResource()); assertNull(queue.getQueuedResouce()); OMElement ele = resp.getOMElement(IsUserInQueueResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); assertTrue(xml.contains("false")); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#isUserInQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.IsUserInQueue)}. */ @Test public void testIsUserInQueueNoSessions() throws Exception { org.hibernate.Session db = DataAccessActivator.getNewSession(); db.beginTransaction(); User user = new User("locktest", "ns", "USER"); db.persist(user); db.getTransaction().commit(); /* Request parameters. */ IsUserInQueue request = new IsUserInQueue(); UserIDType uid = new UserIDType(); request.setIsUserInQueue(uid); uid.setUserID(String.valueOf(user.getId())); IsUserInQueueResponse resp = this.queuer.isUserInQueue(request); db.beginTransaction(); db.delete(user); db.getTransaction().commit(); assertNotNull(resp); InQueueType queue = resp.getIsUserInQueueResponse(); assertNotNull(queue); assertFalse(queue.getInQueue()); assertFalse(queue.getInSession()); assertNull(queue.getAssignedResource()); assertNull(queue.getQueuedResouce()); OMElement ele = resp.getOMElement(IsUserInQueueResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); assertTrue(xml.contains("false")); } /** * Test method for {@link au.edu.uts.eng.remotelabs.schedserver.queuer.intf.QueuerSOAPImpl#isUserInQueue(au.edu.uts.eng.remotelabs.schedserver.queuer.intf.types.IsUserInQueue)}. */ @Test public void testIsUserInQueueNoUser() throws Exception { /* Request parameters. */ IsUserInQueue request = new IsUserInQueue(); UserIDType uid = new UserIDType(); request.setIsUserInQueue(uid); uid.setUserQName("ns:does_not_exist"); IsUserInQueueResponse resp = this.queuer.isUserInQueue(request); assertNotNull(resp); InQueueType queue = resp.getIsUserInQueueResponse(); assertNotNull(queue); assertFalse(queue.getInQueue()); assertFalse(queue.getInSession()); assertNull(queue.getAssignedResource()); assertNull(queue.getQueuedResouce()); OMElement ele = resp.getOMElement(IsUserInQueueResponse.MY_QNAME, OMAbstractFactory.getOMFactory()); assertNotNull(ele); String xml = ele.toStringWithConsume(); assertNotNull(xml); assertTrue(xml.contains("false")); } @Test public void testGetUserFromUserID() throws Exception { org.hibernate.Session ses = DataAccessActivator.getNewSession(); ses.beginTransaction(); User user = new User("UserIdTest", "Queuer", "USER"); ses.persist(user); ses.getTransaction().commit(); UserIDType uid = new UserIDType(); uid.setUserID(String.valueOf(user.getId())); Method meth = QueuerSOAPImpl.class.getDeclaredMethod("getUserFromUserID", UserIDType.class, org.hibernate.Session.class); meth.setAccessible(true); User loaded = (User) meth.invoke(this.queuer, uid, ses); assertNotNull(loaded); ses.beginTransaction(); ses.delete(user); ses.getTransaction().commit(); assertEquals(user.getId().longValue(), loaded.getId().longValue()); assertEquals(user.getName(), loaded.getName()); assertEquals(user.getNamespace(), loaded.getNamespace()); assertEquals(user.getPersona(), loaded.getPersona()); ses.close(); } @Test public void testGetUserFromUserIDNmNsSeq() throws Exception { org.hibernate.Session ses = DataAccessActivator.getNewSession(); ses.beginTransaction(); User user = new User("UserIdTest", "Queuer", "USER"); ses.persist(user); ses.getTransaction().commit(); UserIDType uid = new UserIDType(); UserNSNameSequence seq = new UserNSNameSequence(); seq.setUserNamespace(user.getNamespace()); seq.setUserName(user.getName()); uid.setUserNSNameSequence(seq); Method meth = QueuerSOAPImpl.class.getDeclaredMethod("getUserFromUserID", UserIDType.class, org.hibernate.Session.class); meth.setAccessible(true); User loaded = (User) meth.invoke(this.queuer, uid, ses); assertNotNull(loaded); ses.beginTransaction(); ses.delete(user); ses.getTransaction().commit(); assertEquals(user.getId().longValue(), loaded.getId().longValue()); assertEquals(user.getName(), loaded.getName()); assertEquals(user.getNamespace(), loaded.getNamespace()); assertEquals(user.getPersona(), loaded.getPersona()); ses.close(); } @Test public void testGetUserFromUserIDQName() throws Exception { org.hibernate.Session ses = DataAccessActivator.getNewSession(); ses.beginTransaction(); User user = new User("UserIdTest", "Queuer", "USER"); ses.persist(user); ses.getTransaction().commit(); UserIDType uid = new UserIDType(); uid.setUserQName(user.getNamespace() + ":" + user.getName()); Method meth = QueuerSOAPImpl.class.getDeclaredMethod("getUserFromUserID", UserIDType.class, org.hibernate.Session.class); meth.setAccessible(true); User loaded = (User) meth.invoke(this.queuer, uid, ses); assertNotNull(loaded); ses.beginTransaction(); ses.delete(user); ses.getTransaction().commit(); assertEquals(user.getId().longValue(), loaded.getId().longValue()); assertEquals(user.getName(), loaded.getName()); assertEquals(user.getNamespace(), loaded.getNamespace()); assertEquals(user.getPersona(), loaded.getPersona()); ses.close(); } @Test public void testGetUserFromUserIDNotExist() throws Exception { UserIDType uid = new UserIDType(); uid.setUserQName("QU_TEST:does_not_exist"); org.hibernate.Session ses = DataAccessActivator.getNewSession(); Method meth = QueuerSOAPImpl.class.getDeclaredMethod("getUserFromUserID", UserIDType.class, org.hibernate.Session.class); meth.setAccessible(true); assertNull(meth.invoke(this.queuer, uid, ses)); ses.close(); } }