/* * Copyright (C) 2014 Mark Clarke * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package za.co.jumpingbean.gc.testApp.test; import java.util.logging.Level; import java.util.logging.Logger; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.number.IsCloseTo.closeTo; import org.junit.Test; import org.mockito.Mockito; import za.co.jumpingbean.gc.testApp.jmx.GCGenerator; import za.co.jumpingbean.gc.testApp.jmx.GCGeneratorMBean; import za.co.jumpingbean.gc.testApp.LocalObjectGenerator; import za.co.jumpingbean.gc.testApp.LongLivedObjectGenerator; import za.co.jumpingbean.gc.testApp.GarbageGeneratorApp; /** * * @author mark */ public class GCGeneratorAppTest { @Test public void localVariableGenerationTest() throws InterruptedException { //Analiser analiser = Mockito.mock(Analiser.class); LocalObjectGenerator localGen = new LocalObjectGenerator(); Long start = System.currentTimeMillis(); localGen.generate(10, 10, 50); Long end = System.currentTimeMillis(); assertThat(((double) end - (double) start), closeTo(500d, 200d)); } @Test public void longLivedObjectsCreationTest() throws InterruptedException { //Analiser analiser = Mockito.mock(Analiser.class); Long start = System.currentTimeMillis(); LongLivedObjectGenerator gen = new LongLivedObjectGenerator(); gen.generate(10, 10, 50); Long end = System.currentTimeMillis(); assertThat(((double) end - (double) start), closeTo(500d, 200d)); assertThat(gen.getObjectCount(), equalTo(10)); assertThat(gen.getApproximateMemoryOccupied(), equalTo(100)); } @Test public void longLivedObjectsReleaseTest() throws InterruptedException { //Analiser analiser = Mockito.mock(Analiser.class); LongLivedObjectGenerator gen = new LongLivedObjectGenerator(); gen.generate(10, 10, 50); assertThat(gen.getObjectCount(), equalTo(10)); assertThat(gen.getApproximateMemoryOccupied(), equalTo(100)); gen.releaseLongLived(4, true); assertThat(gen.getObjectCount(), equalTo(6)); assertThat(gen.getApproximateMemoryOccupied(), equalTo(60)); } @Test public void longLivedObjectsDiffSizeReleaseEndTest() throws InterruptedException { //Analiser analiser = Mockito.mock(Analiser.class); LongLivedObjectGenerator gen = new LongLivedObjectGenerator(); gen.generate(10, 10, 50); gen.generate(10, 5, 50); assertThat(gen.getObjectCount(), equalTo(20)); assertThat(gen.getApproximateMemoryOccupied(), equalTo(150)); gen.releaseLongLived(11, true); assertThat(gen.getObjectCount(), equalTo(9)); assertThat(gen.getApproximateMemoryOccupied(), equalTo(90)); } @Test public void longLivedObjectsDiffSizeReleaseStartTest() throws InterruptedException { //Analiser analiser = Mockito.mock(Analiser.class); LongLivedObjectGenerator gen = new LongLivedObjectGenerator(); gen.generate(10, 10, 50); gen.generate(10, 5, 50); assertThat(gen.getObjectCount(), equalTo(20)); assertThat(gen.getApproximateMemoryOccupied(), equalTo(150)); gen.releaseLongLived(11, false); assertThat(gen.getObjectCount(), equalTo(9)); assertThat(gen.getApproximateMemoryOccupied(), equalTo(45)); } // @Test // public void testClassCreationMetric() { // //Analiser analiser = new Analiser(new MetricRegistry()); // assertThat(analiser.getLocalObjectCount(), is(equalTo(0L))); // for (int i = 1; i <= 10; i++) { // analiser.incLocalObjectCount(); // } // assertThat(analiser.getLocalObjectCount(), is(equalTo(10L))); // analiser.decLocalObjectCount(10); // assertThat(analiser.getLocalObjectCount(), is(equalTo(0L))); // } @Test public void testMBean() { LongLivedObjectGenerator ll = Mockito.mock(LongLivedObjectGenerator.class); LocalObjectGenerator sl = Mockito.mock(LocalObjectGenerator.class); GarbageGeneratorApp gen = Mockito.mock(GarbageGeneratorApp.class); GCGeneratorMBean bean = new GCGenerator(sl, ll, gen); String result = bean.runLocalObjectCreator(1, 1, 1); assertThat(result, is("Ok")); result = bean.runLongLivedObjectCreator(1, 1, 1); assertThat(result, is("Ok")); } }