/** * Returns object security expansion rate based on the property set and given buffer size. * * @param bufferSize * Buffer's size that expansion rate has to be calculated for. * @return Expansion rate in percentages. */ public float getObjectSecurityExpansionRate(long bufferSize) { return (getObjectSecurityExpansionRateBufferSize(bufferSize) + getObjectSecurityExpansionRateBufferOccupancy(bufferSize, getOldGenMax())) / 2; }
/** * Single expansion rate test for buffer occupancy. */ @Test public void singleExpansionRateTestBufferOccupancy() { long oldGenMax = 100; long bufferSize = (long) (oldGenMax * (bufferProperties.maxObjectExpansionRateActiveFromOccupancy - ((bufferProperties.getMaxObjectExpansionRateActiveFromOccupancy() - bufferProperties.getMinObjectExpansionRateActiveTillOccupancy()) / 2))); float expansionRate = bufferProperties.getObjectSecurityExpansionRateBufferOccupancy(bufferSize, oldGenMax); float expectedRate = bufferProperties.getMinObjectExpansionRate() + ((bufferProperties.getMaxObjectExpansionRate() - bufferProperties.getMinObjectExpansionRate()) / 2); assertThat(expansionRate, is(equalTo(expectedRate))); }
/** * General Parameterized test to assure that no matter how big buffer size is, expansion rate * will be between min and max related. * * @param bufferSize * Buffer size. */ @Test(dataProvider = "Buffer-Size-Provider") public void parametrizedExpansionRateTest(long bufferSize) { float expansionRate = bufferProperties.getObjectSecurityExpansionRate(bufferSize); assertThat(expansionRate, is(lessThanOrEqualTo(bufferProperties.getMaxObjectExpansionRate()))); assertThat(expansionRate, is(greaterThanOrEqualTo(bufferProperties.getMinObjectExpansionRate()))); float relatedToSize = bufferProperties.getObjectSecurityExpansionRateBufferSize(bufferSize); float relatedToOccupancy = bufferProperties.getObjectSecurityExpansionRateBufferOccupancy(bufferSize, bufferProperties.getOldGenMax()); assertThat(expansionRate, is(equalTo((relatedToSize + relatedToOccupancy) / 2))); }
/** * Parameterized test to assure that no matter how big buffer size is, expansion rate will be * between min and max related to buffer occupancy. * * @param bufferSize * Buffer size. */ @Test(dataProvider = "Buffer-Size-Provider") public void parametrizedExpansionRateTestBufferOccupancy(long bufferSize) { float expansionRate = bufferProperties.getObjectSecurityExpansionRateBufferOccupancy(bufferSize, bufferProperties.getOldGenMax()); assertThat(expansionRate, is(lessThanOrEqualTo(bufferProperties.getMaxObjectExpansionRate()))); assertThat(expansionRate, is(greaterThanOrEqualTo(bufferProperties.getMinObjectExpansionRate()))); long maxOldGen = bufferProperties.getOldGenMax(); float occupancy = bufferSize / maxOldGen; if ((occupancy > bufferProperties.getMinObjectExpansionRateActiveTillOccupancy()) && (occupancy < bufferProperties.getMaxObjectExpansionRateActiveFromOccupancy())) { assertThat(expansionRate, is(lessThan(bufferProperties.getMaxObjectExpansionRate()))); assertThat(expansionRate, is(greaterThan(bufferProperties.getMinObjectExpansionRate()))); } }