@Test public void testHasLockAccess() { Map<Long, NoopProcedure<Void>> procMap = new HashMap<>(); for (long i = 1; i <= 10; i++) { NoopProcedure<Void> proc = new NoopProcedure<>(); proc.setProcId(i); if (i > 1) { proc.setParentProcId(i - 1); proc.setRootProcId(1); } procMap.put(i, proc); } LockAndQueue laq = new LockAndQueue(procMap::get); for (long i = 1; i <= 10; i++) { assertFalse(laq.hasLockAccess(procMap.get(i))); } for (long i = 1; i <= 10; i++) { NoopProcedure<Void> procHasLock = procMap.get(i); laq.tryExclusiveLock(procHasLock); for (long j = 1; j < i; j++) { assertFalse(laq.hasLockAccess(procMap.get(j))); } for (long j = i; j <= 10; j++) { assertTrue(laq.hasLockAccess(procMap.get(j))); } laq.releaseExclusiveLock(procHasLock); } } }
long otherProcId = procExecutor.submitProcedure(new NoopProcedure());
manager.registerPeer(peerId2); assertEquals(sn1, manager.acquirePeerWorker(peerId1, new NoopProcedure<>())); assertEquals(sn1, manager.acquirePeerWorker(peerId2, new NoopProcedure<>())); onlineServers.add(sn2); assertEquals(sn2, manager.acquirePeerWorker(peerId1, new NoopProcedure<>())); assertEquals(sn2, manager.acquirePeerWorker(peerId2, new NoopProcedure<>())); NoopProcedure<?> proc = new NoopProcedure<>(); try { manager.acquirePeerWorker(peerId1, proc); assertSame(proc, wokenProcedures.poll()); assertEquals(sn1, manager.acquirePeerWorker(peerId1, new NoopProcedure<>())); NoopProcedure<?> proc1 = new NoopProcedure<>(); NoopProcedure<?> proc2 = new NoopProcedure<>(); try { manager.acquirePeerWorker(peerId1, proc1);
long otherProcId = procExecutor.submitProcedure(new NoopProcedure());
long otherProcId = procExecutor.submitProcedure(new NoopProcedure());
@Test public void testHasLockAccess() { Map<Long, NoopProcedure<Void>> procMap = new HashMap<>(); for (long i = 1; i <= 10; i++) { NoopProcedure<Void> proc = new NoopProcedure<>(); proc.setProcId(i); if (i > 1) { proc.setParentProcId(i - 1); proc.setRootProcId(1); } procMap.put(i, proc); } LockAndQueue laq = new LockAndQueue(procMap::get); for (long i = 1; i <= 10; i++) { assertFalse(laq.hasLockAccess(procMap.get(i))); } for (long i = 1; i <= 10; i++) { NoopProcedure<Void> procHasLock = procMap.get(i); laq.tryExclusiveLock(procHasLock); for (long j = 1; j < i; j++) { assertFalse(laq.hasLockAccess(procMap.get(j))); } for (long j = i; j <= 10; j++) { assertTrue(laq.hasLockAccess(procMap.get(j))); } laq.releaseExclusiveLock(procHasLock); } } }
@Test public void testSubmitBatch() throws Exception { Procedure[] procs = new Procedure[5]; for (int i = 0; i < procs.length; ++i) { procs[i] = new NoopProcedure<TestProcEnv>(); } // submit procedures createNewExecutor(htu.getConfiguration(), 3); procExecutor.submitProcedures(procs); // wait for procs to be completed for (int i = 0; i < procs.length; ++i) { final long procId = procs[i].getProcId(); ProcedureTestingUtility.waitProcedure(procExecutor, procId); ProcedureTestingUtility.assertProcNotFailed(procExecutor, procId); } }
@Test public void testSubmitBatch() throws Exception { Procedure[] procs = new Procedure[5]; for (int i = 0; i < procs.length; ++i) { procs[i] = new NoopProcedure<TestProcEnv>(); } // submit procedures createNewExecutor(htu.getConfiguration(), 3); procExecutor.submitProcedures(procs); // wait for procs to be completed for (int i = 0; i < procs.length; ++i) { final long procId = procs[i].getProcId(); ProcedureTestingUtility.waitProcedure(procExecutor, procId); ProcedureTestingUtility.assertProcNotFailed(procExecutor, procId); } }
@Test public void testArrayIndexOutOfBounds() { ParentProcedure proc = new ParentProcedure(); long procId = procExec.submitProcedure(proc); long noopProcId = -1L; // make sure that the sub procedure will have a new BitSetNode for (int i = 0; i < Long.SIZE - 2; i++) { noopProcId = procExec.submitProcedure(new NoopProcedure<>()); } final long lastNoopProcId = noopProcId; UTIL.waitFor(30000, () -> procExec.isFinished(lastNoopProcId)); proc.latch.countDown(); UTIL.waitFor(10000, () -> procExec.isFinished(procId)); } }
@SuppressWarnings("unchecked") @Override protected Procedure<Void>[] execute(Void env) throws ProcedureYieldException, ProcedureSuspendedException, InterruptedException { return new Procedure[] { new NoopProcedure<>(), new WaitingProcedure() }; } }
@Test public void testSubmitBatch() throws Exception { Procedure[] procs = new Procedure[5]; for (int i = 0; i < procs.length; ++i) { procs[i] = new NoopProcedure<TestProcEnv>(); } // submit procedures createNewExecutor(htu.getConfiguration(), 3); procExecutor.submitProcedures(procs); // wait for procs to be completed for (int i = 0; i < procs.length; ++i) { final long procId = procs[i].getProcId(); ProcedureTestingUtility.waitProcedure(procExecutor, procId); ProcedureTestingUtility.assertProcNotFailed(procExecutor, procId); } }
@Test public void testArrayIndexOutOfBounds() { ParentProcedure proc = new ParentProcedure(); long procId = procExec.submitProcedure(proc); long noopProcId = -1L; // make sure that the sub procedure will have a new BitSetNode for (int i = 0; i < Long.SIZE - 2; i++) { noopProcId = procExec.submitProcedure(new NoopProcedure<>()); } final long lastNoopProcId = noopProcId; UTIL.waitFor(30000, () -> procExec.isFinished(lastNoopProcId)); proc.latch.countDown(); UTIL.waitFor(10000, () -> procExec.isFinished(procId)); } }
@SuppressWarnings("unchecked") @Override protected Procedure<Void>[] execute(Void env) throws ProcedureYieldException, ProcedureSuspendedException, InterruptedException { return new Procedure[] { new NoopProcedure<>(), new WaitingProcedure() }; } }