/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.actuate.metrics.writer;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.springframework.boot.actuate.metrics.Metric;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.verify;
/**
* Tests for {@link MessageChannelMetricWriter} and {@link MetricWriterMessageHandler}.
*
* @author Dave Syer
*/
public class MessageChannelMetricWriterTests {
@Mock
private MessageChannel channel;
@Mock
private MetricWriter observer;
private MessageChannelMetricWriter writer;
private MetricWriterMessageHandler handler;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
given(this.channel.send(any(Message.class))).willAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
MessageChannelMetricWriterTests.this.handler
.handleMessage(invocation.getArgument(0));
return true;
}
});
this.writer = new MessageChannelMetricWriter(this.channel);
this.handler = new MetricWriterMessageHandler(this.observer);
}
@Test
public void messageSentOnAdd() {
this.writer.increment(new Delta<>("foo", 1));
verify(this.channel).send(any(Message.class));
verify(this.observer).increment(any(Delta.class));
}
@Test
public void messageSentOnSet() {
this.writer.set(new Metric<>("foo", 1d));
verify(this.channel).send(any(Message.class));
verify(this.observer).set(any(Metric.class));
}
@Test
public void messageSentOnReset() throws Exception {
this.writer.reset("foo");
verify(this.channel).send(any(Message.class));
verify(this.observer).reset("foo");
}
}