Ejemplo n.º 1
0
        public virtual void TestAcquireLessJobsOnRejection()
        {
            // given a job acquisition strategy and a job acquisition context
            // with acquired jobs, some of which have been rejected for execution
            var context = new JobAcquisitionContext();

            var acquiredJobs = BuildAcquiredJobs(NumJobsToAcquire, NumJobsToAcquire, 0);

            context.SubmitAcquiredJobs(EngineName, acquiredJobs);

            // when half of the jobs are rejected
            var numJobsRejected = 5;

            for (var i = 0; i < numJobsRejected; i++)
            {
                context.SubmitRejectedBatch(EngineName, acquiredJobs.JobIdBatches[i]);
            }

            // then the strategy only attempts to acquire the number of jobs that were successfully submitted
            Strategy.Reconfigure(context);

            Assert.AreEqual(NumJobsToAcquire - numJobsRejected, Strategy.GetNumJobsToAcquire(EngineName));

            // without a timeout
            Assert.AreEqual(0, Strategy.WaitTime);
        }
Ejemplo n.º 2
0
        public virtual void TestIdleWaitTime()
        {
            // given a job acquisition strategy and a job acquisition context
            // with no acquired jobs
            var context = new JobAcquisitionContext();

            context.SubmitAcquiredJobs(EngineName, BuildAcquiredJobs(NumJobsToAcquire, 0, 0));

            // when reconfiguring the strategy
            Strategy.Reconfigure(context);

            // then the job acquisition strategy returns the level 1 idle time
            Assert.AreEqual(BaseIdleWaitTime, Strategy.WaitTime);

            // when resubmitting the same acquisition result
            for (var idleLevel = 1; idleLevel < 6; idleLevel++)
            {
                context.Reset();
                context.SubmitAcquiredJobs(EngineName, BuildAcquiredJobs(NumJobsToAcquire, 0, 0));

                Strategy.Reconfigure(context);
                Assert.AreEqual((long)(BaseIdleWaitTime * Math.Pow(IdleIncreaseFactor, idleLevel)), Strategy.WaitTime);
            }

            // and the maximum idle level is finally reached
            context.Reset();
            context.SubmitAcquiredJobs(EngineName, BuildAcquiredJobs(NumJobsToAcquire, 0, 0));

            Strategy.Reconfigure(context);
            Assert.AreEqual(MaxIdleTime, Strategy.WaitTime);
        }
Ejemplo n.º 3
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testIdleWaitTime()
        public virtual void testIdleWaitTime()
        {
            // given a job acquisition strategy and a job acquisition context
            // with no acquired jobs
            JobAcquisitionContext context = new JobAcquisitionContext();

            context.submitAcquiredJobs(ENGINE_NAME, buildAcquiredJobs(NUM_JOBS_TO_ACQUIRE, 0, 0));

            // when reconfiguring the strategy
            strategy.reconfigure(context);

            // then the job acquisition strategy returns the level 1 idle time
            Assert.assertEquals(BASE_IDLE_WAIT_TIME, strategy.WaitTime);

            // when resubmitting the same acquisition result
            for (int idleLevel = 1; idleLevel < 6; idleLevel++)
            {
                context.reset();
                context.submitAcquiredJobs(ENGINE_NAME, buildAcquiredJobs(NUM_JOBS_TO_ACQUIRE, 0, 0));

                strategy.reconfigure(context);
                Assert.assertEquals((long)(BASE_IDLE_WAIT_TIME * Math.Pow(IDLE_INCREASE_FACTOR, idleLevel)), strategy.WaitTime);
            }

            // and the maximum idle level is finally reached
            context.reset();
            context.submitAcquiredJobs(ENGINE_NAME, buildAcquiredJobs(NUM_JOBS_TO_ACQUIRE, 0, 0));

            strategy.reconfigure(context);
            Assert.assertEquals(MAX_IDLE_TIME, strategy.WaitTime);
        }
Ejemplo n.º 4
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testAcquireLessJobsOnRejection()
        public virtual void testAcquireLessJobsOnRejection()
        {
            // given a job acquisition strategy and a job acquisition context
            // with acquired jobs, some of which have been rejected for execution
            JobAcquisitionContext context = new JobAcquisitionContext();

            AcquiredJobs acquiredJobs = buildAcquiredJobs(NUM_JOBS_TO_ACQUIRE, NUM_JOBS_TO_ACQUIRE, 0);

            context.submitAcquiredJobs(ENGINE_NAME, acquiredJobs);

            // when half of the jobs are rejected
            int numJobsRejected = 5;

            for (int i = 0; i < numJobsRejected; i++)
            {
                context.submitRejectedBatch(ENGINE_NAME, acquiredJobs.JobIdBatches[i]);
            }

            // then the strategy only attempts to acquire the number of jobs that were successfully submitted
            strategy.reconfigure(context);

            Assert.assertEquals(NUM_JOBS_TO_ACQUIRE - numJobsRejected, strategy.getNumJobsToAcquire(ENGINE_NAME));

            // without a timeout
            Assert.assertEquals(0, strategy.WaitTime);
        }
        protected override void ConfigureNextAcquisitionCycle(JobAcquisitionContext context, IJobAcquisitionStrategy acquisitionStrategy)
        {
            base.ConfigureNextAcquisitionCycle(context, acquisitionStrategy);

            var timeBetweenCurrentAndNextAcquisition = acquisitionStrategy.WaitTime;

            WaitEvents.Add(new RecordedWaitEvent(DateTime.Now.Ticks, timeBetweenCurrentAndNextAcquisition));
        }
Ejemplo n.º 6
0
        protected internal override void configureNextAcquisitionCycle(JobAcquisitionContext acquisitionContext, JobAcquisitionStrategy acquisitionStrategy)
        {
            base.configureNextAcquisitionCycle(acquisitionContext, acquisitionStrategy);

            long timeBetweenCurrentAndNextAcquisition = acquisitionStrategy.WaitTime;

            waitEvents.Add(new RecordedWaitEvent(DateTimeHelper.CurrentUnixTimeMillis(), timeBetweenCurrentAndNextAcquisition));
        }
Ejemplo n.º 7
0
        public virtual void TestAcquisitionAfterIdleWait()
        {
            // given a job acquisition strategy and a job acquisition context
            // with no acquired jobs
            var context = new JobAcquisitionContext();

            context.SubmitAcquiredJobs(EngineName, BuildAcquiredJobs(NumJobsToAcquire, 0, 0));
            Strategy.Reconfigure(context);
            Assert.AreEqual(BaseIdleWaitTime, Strategy.WaitTime);

            // when receiving a successful acquisition result
            context.Reset();
            context.SubmitAcquiredJobs(EngineName, BuildAcquiredJobs(NumJobsToAcquire, NumJobsToAcquire, 0));

            Strategy.Reconfigure(context);

            // then the idle Wait time has been reset
            Assert.AreEqual(0L, Strategy.WaitTime);
        }
Ejemplo n.º 8
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testAcquisitionAfterIdleWait()
        public virtual void testAcquisitionAfterIdleWait()
        {
            // given a job acquisition strategy and a job acquisition context
            // with no acquired jobs
            JobAcquisitionContext context = new JobAcquisitionContext();

            context.submitAcquiredJobs(ENGINE_NAME, buildAcquiredJobs(NUM_JOBS_TO_ACQUIRE, 0, 0));
            strategy.reconfigure(context);
            Assert.assertEquals(BASE_IDLE_WAIT_TIME, strategy.WaitTime);

            // when receiving a successful acquisition result
            context.reset();
            context.submitAcquiredJobs(ENGINE_NAME, buildAcquiredJobs(NUM_JOBS_TO_ACQUIRE, NUM_JOBS_TO_ACQUIRE, 0));

            strategy.reconfigure(context);

            // then the idle wait time has been reset
            Assert.assertEquals(0L, strategy.WaitTime);
        }
Ejemplo n.º 9
0
        public virtual void TestWaitTimeOnFullRejection()
        {
            // given a job acquisition strategy and a job acquisition context
            // with acquired jobs all of which have been rejected for execution
            var context = new JobAcquisitionContext();

            var acquiredJobs = BuildAcquiredJobs(NumJobsToAcquire, NumJobsToAcquire, 0);

            context.SubmitAcquiredJobs(EngineName, acquiredJobs);

            for (var i = 0; i < NumJobsToAcquire; i++)
            {
                context.SubmitRejectedBatch(EngineName, acquiredJobs.JobIdBatches[i]);
            }

            // when reconfiguring the strategy
            Strategy.Reconfigure(context);

            // then there is a slight Wait time to avoid constant spinning while
            // no execution resources are available
            Assert.AreEqual(BackoffJobAcquisitionStrategy.DefaultExecutionSaturationWaitTime, Strategy.WaitTime);
        }
Ejemplo n.º 10
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testWaitTimeOnFullRejection()
        public virtual void testWaitTimeOnFullRejection()
        {
            // given a job acquisition strategy and a job acquisition context
            // with acquired jobs all of which have been rejected for execution
            JobAcquisitionContext context = new JobAcquisitionContext();

            AcquiredJobs acquiredJobs = buildAcquiredJobs(NUM_JOBS_TO_ACQUIRE, NUM_JOBS_TO_ACQUIRE, 0);

            context.submitAcquiredJobs(ENGINE_NAME, acquiredJobs);

            for (int i = 0; i < NUM_JOBS_TO_ACQUIRE; i++)
            {
                context.submitRejectedBatch(ENGINE_NAME, acquiredJobs.JobIdBatches[i]);
            }

            // when reconfiguring the strategy
            strategy.reconfigure(context);

            // then there is a slight wait time to avoid constant spinning while
            // no execution resources are available
            Assert.assertEquals(BackoffJobAcquisitionStrategy.DEFAULT_EXECUTION_SATURATION_WAIT_TIME, strategy.WaitTime);
        }
 protected override AcquiredJobs AcquireJobs(JobAcquisitionContext context, IJobAcquisitionStrategy configuration, ProcessEngineImpl currentProcessEngine)
 {
     AcquisitionEvents.Add(new RecordedAcquisitionEvent(DateTime.Now.Ticks, configuration.GetNumJobsToAcquire(currentProcessEngine.Name)));
     return(base.AcquireJobs(context, configuration, currentProcessEngine));
 }
Ejemplo n.º 12
0
 protected internal override AcquiredJobs acquireJobs(JobAcquisitionContext context, JobAcquisitionStrategy configuration, ProcessEngineImpl currentProcessEngine)
 {
     acquisitionEvents.Add(new RecordedAcquisitionEvent(DateTimeHelper.CurrentUnixTimeMillis(), configuration.getNumJobsToAcquire(currentProcessEngine.Name)));
     return(base.acquireJobs(context, configuration, currentProcessEngine));
 }