package rocks.inspectit.agent.java.buffer.impl;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import rocks.inspectit.shared.all.communication.MethodSensorData;
@SuppressWarnings("PMD")
public class SizeBufferStrategyTest {
private SizeBufferStrategy bufferStrategy;
@BeforeMethod
public void initTestClass() {
bufferStrategy = new SizeBufferStrategy();
bufferStrategy.log = LoggerFactory.getLogger(SizeBufferStrategy.class);
}
@Test
public void addAndRetrieve() {
bufferStrategy.addMeasurements(Collections.<MethodSensorData> emptyList());
assertThat(bufferStrategy.hasNext(), is(true));
List<MethodSensorData> list = bufferStrategy.next();
assertThat(list, is(notNullValue()));
assertThat(list, is(equalTo(Collections.<MethodSensorData> emptyList())));
assertThat(bufferStrategy.hasNext(), is(false));
}
@Test
public void emptyBuffer() {
assertThat(bufferStrategy.hasNext(), is(false));
}
@Test(expectedExceptions = { NoSuchElementException.class })
public void noSuchElementException() {
bufferStrategy.next();
}
@Test(expectedExceptions = { IllegalArgumentException.class })
public void addNullMeasurement() {
bufferStrategy.addMeasurements(null);
}
@Test(expectedExceptions = { NoSuchElementException.class })
public void exceptionAfterDoubleRetrieve() {
bufferStrategy.addMeasurements(Collections.<MethodSensorData> emptyList());
bufferStrategy.next();
bufferStrategy.next();
}
@Test
public void callInit() {
Map<String, String> settings = new HashMap<String, String>();
settings.put("size", "3");
bufferStrategy.init(Collections.<String, String> emptyMap());
}
@Test
public void addElementFullStack() {
Map<String, String> settings = new HashMap<String, String>();
settings.put("size", "3");
bufferStrategy.init(settings);
List<MethodSensorData> listOne = new ArrayList<MethodSensorData>(0);
List<MethodSensorData> listTwo = new ArrayList<MethodSensorData>(0);
List<MethodSensorData> listThree = new ArrayList<MethodSensorData>(0);
List<MethodSensorData> listFour = new ArrayList<MethodSensorData>(0);
List<MethodSensorData> listFive = new ArrayList<MethodSensorData>(0);
bufferStrategy.addMeasurements(listOne);
bufferStrategy.addMeasurements(listTwo);
bufferStrategy.addMeasurements(listThree);
bufferStrategy.addMeasurements(listFour);
bufferStrategy.addMeasurements(listFive);
assertThat(bufferStrategy.next(), is(equalTo(listFive)));
assertThat(bufferStrategy.next(), is(equalTo(listFour)));
assertThat(bufferStrategy.next(), is(equalTo(listThree)));
assertThat(bufferStrategy.hasNext(), is(false));
}
}