private void compareLoop(JobIdFactory factory, boolean overflow) { Set<Boolean> overflowed = new HashSet<>(Collections.singleton(false)); JobId prevMax = null; for (int i = 0; i < 1000; i++) { final JobId jobId = factory.create(); Assert.assertTrue("max == last", factory.maxJobId().compareTo(jobId) == 0); if (i > 0) { Assert.assertTrue("last > previous max", prevMax.compareTo(jobId) < 0 || overflowed.add(overflow)); } prevMax = factory.maxJobId(); } }
private void testOverflow(int id) throws IllegalAccessException { CcId ccId = CcId.valueOf(id); long expected = (long) id << 48; JobIdFactory factory = new JobIdFactory(ccId); AtomicLong theId = (AtomicLong) idField.get(factory); Assert.assertEquals(expected, theId.get()); theId.set((((long) 1 << 48) - 1) | expected); JobId jobId = factory.create(); Assert.assertEquals(ccId, jobId.getCcId()); Assert.assertEquals(CcIdPartitionedLongFactory.MAX_ID, jobId.getIdOnly()); jobId = factory.create(); Assert.assertEquals(ccId, jobId.getCcId()); Assert.assertEquals(0, jobId.getIdOnly()); }
@Override protected void doRun() throws Exception { IJobManager jobManager = ccs.getJobManager(); try { final CCServiceContext ccServiceCtx = ccs.getContext(); JobId jobId; JobRun run; jobId = jobIdFactory.create(); if (deployedJobSpecId == null) { //Need to create the ActivityClusterGraph IActivityClusterGraphGeneratorFactory acggf = (IActivityClusterGraphGeneratorFactory) DeploymentUtils .deserialize(acggfBytes, deploymentId, ccServiceCtx); IActivityClusterGraphGenerator acgg = acggf.createActivityClusterGraphGenerator(ccServiceCtx, jobFlags); run = new JobRun(ccs, deploymentId, jobId, acggf, acgg, jobFlags); } else { //ActivityClusterGraph has already been distributed run = new JobRun(ccs, deploymentId, jobId, jobFlags, ccs.getDeployedJobSpecStore().getDeployedJobSpecDescriptor(deployedJobSpecId), jobParameters, deployedJobSpecId); } jobManager.add(run); callback.setValue(jobId); } catch (Exception e) { callback.setException(e); } } }
@Test public void testParse() throws HyracksDataException { for (int ccId : Arrays.asList(0xFFFF, 0, (int) Short.MAX_VALUE)) { JobIdFactory factory = new JobIdFactory(CcId.valueOf(ccId)); for (int i = 0; i < 1000; i++) { final JobId jobId = factory.create(); Assert.assertEquals(jobId.getId(), JobId.parse(jobId.toString()).getId()); Assert.assertEquals(jobId, JobId.parse(jobId.toString())); Assert.assertFalse(jobId.toString(), jobId.toString().contains("-")); System.err.println(jobId.toString()); } } } }
@Test public void testCcIds() { JobIdFactory factory = new JobIdFactory(CcId.valueOf(0)); for (int i = 0; i < 1000; i++) { final JobId jobId = factory.create(); Assert.assertEquals(0, jobId.getCcId().shortValue()); Assert.assertEquals(i, jobId.getIdOnly()); } }
JobId jobId = jobIdFactory.create(); Action startJob = clusterController.startActiveJob(jobId, entityId); try {
@Test public void testNegativeCcId() { JobIdFactory factory = new JobIdFactory(CcId.valueOf(0xFFFF)); for (int i = 0; i < 1000; i++) { final JobId jobId = factory.create(); Assert.assertEquals((short) 0xFFFF, jobId.getCcId().shortValue()); Assert.assertEquals(i, jobId.getIdOnly()); Assert.assertTrue("JID not negative", jobId.getId() < 0); Assert.assertEquals(0xFFFF000000000000L + i, jobId.getId()); } }