public void insert(long[] procIds) { for (int i = 0; i < procIds.length; ++i) { insert(procIds[i]); } }
public void insert(long procId) { insert(null, procId); }
public void insert(long procId, long[] subProcIds) { BitSetNode node = update(null, procId); for (int i = 0; i < subProcIds.length; ++i) { node = insert(node, subProcIds[i]); } }
private void insertIfPartial(ProcedureStoreTracker tracker, ProcedureProtos.Procedure proc) { if (tracker.isPartial()) { tracker.insert(proc.getProcId()); } }
private void updateStoreTracker(final PushType type, final long procId, final long[] subProcIds) { switch (type) { case INSERT: if (subProcIds == null) { storeTracker.insert(procId); } else if (procId == Procedure.NO_PROC_ID) { storeTracker.insert(subProcIds); } else { storeTracker.insert(procId, subProcIds); holdingCleanupTracker.setDeletedIfModified(procId); } break; case UPDATE: storeTracker.update(procId); holdingCleanupTracker.setDeletedIfModified(procId); break; case DELETE: if (subProcIds != null && subProcIds.length > 0) { storeTracker.delete(subProcIds); holdingCleanupTracker.setDeletedIfModified(subProcIds); } else { storeTracker.delete(procId); holdingCleanupTracker.setDeletedIfModified(procId); } break; default: throw new RuntimeException("invalid push type " + type); } }
@Test public void testGetActiveProcIds() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); for (int i = 0; i < 10000; i++) { tracker.insert(i * 10); } for (int i = 0; i < 10000; i += 2) { tracker.delete(i * 10); } long[] activeProcIds = tracker.getAllActiveProcIds(); assertEquals(5000, activeProcIds.length); for (int i = 0; i < 5000; i++) { assertEquals((2 * i + 1) * 10, activeProcIds[i]); } }
@Test public void testDelete() { final ProcedureStoreTracker tracker = new ProcedureStoreTracker(); long[] procIds = new long[] { 65, 1, 193 }; for (int i = 0; i < procIds.length; ++i) { tracker.insert(procIds[i]); tracker.dump(); } for (int i = 0; i < (64 * 4); ++i) { boolean hasProc = false; for (int j = 0; j < procIds.length; ++j) { if (procIds[j] == i) { hasProc = true; break; } } if (hasProc) { assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(i)); } else { assertEquals("procId=" + i, ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(i)); } } }
@Test public void testGetActiveMinProcId() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); assertEquals(Procedure.NO_PROC_ID, tracker.getActiveMinProcId()); for (int i = 100; i < 1000; i = 2 * i + 1) { tracker.insert(i); } for (int i = 100; i < 1000; i = 2 * i + 1) { assertEquals(i, tracker.getActiveMinProcId()); tracker.delete(i); } assertEquals(Procedure.NO_PROC_ID, tracker.getActiveMinProcId()); } }
@Test public void testSetDeletedIfModified() { final ProcedureStoreTracker tracker = new ProcedureStoreTracker(); final long[] procIds = new long[] { 1, 3, 7, 152, 512, 1024, 1025 }; // test single proc for (int i = 0; i < procIds.length; ++i) { tracker.insert(procIds[i]); } assertEquals(false, tracker.isEmpty()); for (int i = 0; i < procIds.length; ++i) { tracker.setDeletedIfModified(procIds[i] - 1); tracker.setDeletedIfModified(procIds[i]); tracker.setDeletedIfModified(procIds[i] + 1); } assertEquals(true, tracker.isEmpty()); // test batch tracker.reset(); for (int i = 0; i < procIds.length; ++i) { tracker.insert(procIds[i]); } assertEquals(false, tracker.isEmpty()); tracker.setDeletedIfModified(procIds); assertEquals(true, tracker.isEmpty()); }
tracker.insert(i);
@Test public void testBasicCRUD() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); assertTrue(tracker.isEmpty()); long[] procs = new long[] { 1, 2, 3, 4, 5, 6 }; tracker.insert(procs[0]); tracker.insert(procs[1], new long[] { procs[2], procs[3], procs[4] }); assertFalse(tracker.isEmpty()); assertTrue(tracker.isAllModified()); tracker.resetModified(); assertFalse(tracker.isAllModified()); for (int i = 0; i < 4; ++i) { tracker.update(procs[i]); assertFalse(tracker.isEmpty()); assertFalse(tracker.isAllModified()); } tracker.update(procs[4]); assertFalse(tracker.isEmpty()); assertTrue(tracker.isAllModified()); tracker.update(procs[5]); assertFalse(tracker.isEmpty()); assertTrue(tracker.isAllModified()); for (int i = 0; i < 5; ++i) { tracker.delete(procs[i]); assertFalse(tracker.isEmpty()); assertTrue(tracker.isAllModified()); } tracker.delete(procs[5]); assertTrue(tracker.isEmpty()); }
public void insert(final long[] procIds) { for (int i = 0; i < procIds.length; ++i) { insert(procIds[i]); } }
public void insert(long[] procIds) { for (int i = 0; i < procIds.length; ++i) { insert(procIds[i]); } }
public void insert(long procId) { insert(null, procId); }
public void insert(long procId) { insert(null, procId); }
public void insert(long procId, long[] subProcIds) { BitSetNode node = update(null, procId); for (int i = 0; i < subProcIds.length; ++i) { node = insert(node, subProcIds[i]); } }
public void insert(final long procId, final long[] subProcIds) { BitSetNode node = null; node = update(node, procId); for (int i = 0; i < subProcIds.length; ++i) { node = insert(node, subProcIds[i]); } }
public void insert(final long procId, final long[] subProcIds) { update(procId); for (int i = 0; i < subProcIds.length; ++i) { insert(subProcIds[i]); } }
private void insertIfPartial(ProcedureStoreTracker tracker, ProcedureProtos.Procedure proc) { if (tracker.isPartial()) { tracker.insert(proc.getProcId()); } }
@Test public void testGetActiveMinProcId() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); assertEquals(Procedure.NO_PROC_ID, tracker.getActiveMinProcId()); for (int i = 100; i < 1000; i = 2 * i + 1) { tracker.insert(i); } for (int i = 100; i < 1000; i = 2 * i + 1) { assertEquals(i, tracker.getActiveMinProcId()); tracker.delete(i); } assertEquals(Procedure.NO_PROC_ID, tracker.getActiveMinProcId()); } }