Package com.github.kristofa.brave

Source Code of com.github.kristofa.brave.LoggingSpanCollectorImplTest

package com.github.kristofa.brave;

import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;

import java.nio.ByteBuffer;

import org.junit.Before;
import org.junit.Test;
import org.mockito.InOrder;
import org.slf4j.Logger;

import com.twitter.zipkin.gen.AnnotationType;
import com.twitter.zipkin.gen.BinaryAnnotation;
import com.twitter.zipkin.gen.Span;

public class LoggingSpanCollectorImplTest {

    private static final String KEY1 = "key1";
    private static final String VALUE1 = "value1";
    private static final String KEY2 = "key1";
    private static final String VALUE2 = "value1";
    private LoggingSpanCollectorImpl spanCollector;
    private Logger mockLogger;

    @Before
    public void setup() {

        mockLogger = mock(Logger.class);

        spanCollector = new LoggingSpanCollectorImpl() {

            @Override
            Logger getLogger() {
                return mockLogger;
            }
        };
    }

    @Test
    public void testCollect() {
        final Span mockSpan = mock(Span.class);
        spanCollector.collect(mockSpan);
        verify(mockLogger).isInfoEnabled();
        verifyNoMoreInteractions(mockLogger, mockSpan);
    }

    @Test
    public void testCollectAfterAddingDefaultAnnotations() {

        spanCollector.addDefaultAnnotation(KEY1, VALUE1);

        final Span mockSpan = mock(Span.class);
        spanCollector.collect(mockSpan);

        // Create expected annotation.
        final BinaryAnnotation expectedBinaryAnnoration = create(KEY1, VALUE1);

        final InOrder inOrder = inOrder(mockSpan, mockLogger);

        inOrder.verify(mockSpan).addToBinary_annotations(expectedBinaryAnnoration);
        inOrder.verify(mockLogger).isInfoEnabled();

        verifyNoMoreInteractions(mockLogger, mockSpan);
    }

    @Test
    public void testCollectAfterAddingTwoDefaultAnnotations() {

        spanCollector.addDefaultAnnotation(KEY1, VALUE1);
        spanCollector.addDefaultAnnotation(KEY2, VALUE2);

        final Span mockSpan = mock(Span.class);
        spanCollector.collect(mockSpan);

        // Create expected annotations.
        final BinaryAnnotation expectedBinaryAnnoration = create(KEY1, VALUE1);
        final BinaryAnnotation expectedBinaryAnnoration2 = create(KEY2, VALUE2);

        verify(mockSpan).addToBinary_annotations(expectedBinaryAnnoration);
        verify(mockSpan).addToBinary_annotations(expectedBinaryAnnoration2);
        verify(mockLogger).isInfoEnabled();

        verifyNoMoreInteractions(mockLogger, mockSpan);
    }

    @Test(expected = IllegalArgumentException.class)
    public void testAddDefaultAnnotationEmptyKey() {
        spanCollector.addDefaultAnnotation("", VALUE1);
    }

    @Test(expected = NullPointerException.class)
    public void testAddDefaultAnnotationNullKey() {
        spanCollector.addDefaultAnnotation(null, VALUE1);
    }

    @Test(expected = NullPointerException.class)
    public void testAddDefaultAnnotationNullValue() {
        spanCollector.addDefaultAnnotation(KEY1, null);
    }

    @Test
    public void testClose() {
        spanCollector.close();
        verifyNoMoreInteractions(mockLogger);
    }

    @Test
    public void testGetLogger() {
        final LoggingSpanCollectorImpl loggingSpanCollectorImpl = new LoggingSpanCollectorImpl();
        assertNotNull(loggingSpanCollectorImpl.getLogger());

    }

    private BinaryAnnotation create(final String key, final String value) {
        // Create expected annotation.
        final ByteBuffer bb = ByteBuffer.wrap(value.getBytes());
        final BinaryAnnotation expectedBinaryAnnoration = new BinaryAnnotation();
        expectedBinaryAnnoration.setKey(key);
        expectedBinaryAnnoration.setValue(bb);
        expectedBinaryAnnoration.setAnnotation_type(AnnotationType.STRING);
        return expectedBinaryAnnoration;
    }

}
TOP

Related Classes of com.github.kristofa.brave.LoggingSpanCollectorImplTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.