Search in sources :

Example 1 with Event

use of io.grpc.InternalChannelz.ChannelTrace.Event in project grpc-java by grpc.

the class ChannelTracerTest method channelTracerWithZeroMaxEvents.

@Test
public void channelTracerWithZeroMaxEvents() {
    ChannelTracer channelTracer = new ChannelTracer(logId, /* maxEvents= */
    0, /* channelCreationTimeNanos= */
    3L, "fooType");
    ChannelStats.Builder builder = new ChannelStats.Builder();
    Event e1 = new Event.Builder().setDescription("e1").setSeverity(Severity.CT_ERROR).setTimestampNanos(1001).build();
    channelTracer.reportEvent(e1);
    channelTracer.updateBuilder(builder);
    ChannelStats stats = builder.build();
    assertThat(stats.channelTrace).isNull();
    assertThat(logs).hasSize(2);
    LogRecord log = logs.remove(0);
    assertThat(log.getMessage()).isEqualTo(logPrefix + "fooType created");
    assertThat(log.getLevel()).isEqualTo(Level.FINEST);
    log = logs.remove(0);
    assertThat(log.getMessage()).isEqualTo(logPrefix + "e1");
    assertThat(log.getLevel()).isEqualTo(Level.FINE);
}
Also used : ChannelStats(io.grpc.InternalChannelz.ChannelStats) LogRecord(java.util.logging.LogRecord) Event(io.grpc.InternalChannelz.ChannelTrace.Event) Test(org.junit.Test)

Example 2 with Event

use of io.grpc.InternalChannelz.ChannelTrace.Event in project grpc-java by grpc.

the class ChannelLoggerImplTest method logging.

@Test
public void logging() {
    ChannelTracer tracer = new ChannelTracer(logId, /* maxEvents= */
    1, /* channelCreationTimeNanos= */
    3L, "fooType");
    ChannelLoggerImpl logger = new ChannelLoggerImpl(tracer, clock.getTimeProvider());
    ChannelStats.Builder builder = new ChannelStats.Builder();
    logs.clear();
    clock.forwardNanos(100);
    logger.log(ChannelLogLevel.ERROR, "Error message");
    tracer.updateBuilder(builder);
    ChannelStats stats = builder.build();
    Event event = new Event.Builder().setDescription("Error message").setSeverity(Severity.CT_ERROR).setTimestampNanos(100).build();
    assertThat(stats.channelTrace.events).containsExactly(event);
    assertThat(logs).contains("FINE: " + logPrefix + "Error message");
    clock.forwardNanos(100);
    logger.log(ChannelLogLevel.WARNING, "Warning message");
    tracer.updateBuilder(builder);
    stats = builder.build();
    event = new Event.Builder().setDescription("Warning message").setSeverity(Severity.CT_WARNING).setTimestampNanos(200).build();
    assertThat(stats.channelTrace.events).containsExactly(event);
    assertThat(logs).contains("FINE: " + logPrefix + "Warning message");
    clock.forwardNanos(100);
    logger.log(ChannelLogLevel.INFO, "Info message");
    tracer.updateBuilder(builder);
    stats = builder.build();
    event = new Event.Builder().setDescription("Info message").setSeverity(Severity.CT_INFO).setTimestampNanos(300).build();
    assertThat(stats.channelTrace.events).containsExactly(event);
    assertThat(logs).contains("FINER: " + logPrefix + "Info message");
    clock.forwardNanos(100);
    logger.log(ChannelLogLevel.DEBUG, "Debug message");
    tracer.updateBuilder(builder);
    stats = builder.build();
    // DEBUG level messages are not logged to channelz, thus channelz still has the
    // last event.
    assertThat(stats.channelTrace.events).containsExactly(event);
    assertThat(logs).contains("FINEST: " + logPrefix + "Debug message");
}
Also used : ChannelStats(io.grpc.InternalChannelz.ChannelStats) Event(io.grpc.InternalChannelz.ChannelTrace.Event) Test(org.junit.Test)

Example 3 with Event

use of io.grpc.InternalChannelz.ChannelTrace.Event in project grpc-java by grpc.

the class ChannelzProtoUtilTest method channelTrace_withEvents.

@Test
public void channelTrace_withEvents() {
    Event event1 = new Event.Builder().setDescription("event1").setSeverity(Severity.CT_ERROR).setTimestampNanos(12).setSubchannelRef(subchannel).build();
    Event event2 = new Event.Builder().setDescription("event2").setTimestampNanos(34).setSeverity(Severity.CT_INFO).setChannelRef(channel).build();
    ChannelStats stats = toBuilder(channel.stats).setChannelTrace(new InternalChannelz.ChannelTrace.Builder().setNumEventsLogged(1234).setCreationTimeNanos(1000).setEvents(Arrays.asList(event1, event2)).build()).build();
    ChannelTraceEvent protoEvent1 = ChannelTraceEvent.newBuilder().setDescription("event1").setTimestamp(Timestamps.fromNanos(12)).setSeverity(ChannelTraceEvent.Severity.CT_ERROR).setSubchannelRef(subchannelRef).build();
    ChannelTraceEvent protoEvent2 = ChannelTraceEvent.newBuilder().setDescription("event2").setTimestamp(Timestamps.fromNanos(34)).setSeverity(ChannelTraceEvent.Severity.CT_INFO).setChannelRef(channelRef).build();
    ChannelData protoStats = channelData.toBuilder().setTrace(channelTrace.toBuilder().addAllEvents(Arrays.asList(protoEvent1, protoEvent2)).build()).build();
    assertEquals(ChannelzProtoUtil.extractChannelData(stats), protoStats);
}
Also used : ChannelStats(io.grpc.InternalChannelz.ChannelStats) ChannelData(io.grpc.channelz.v1.ChannelData) InternalChannelz(io.grpc.InternalChannelz) ChannelTraceEvent(io.grpc.channelz.v1.ChannelTraceEvent) Event(io.grpc.InternalChannelz.ChannelTrace.Event) ChannelTraceEvent(io.grpc.channelz.v1.ChannelTraceEvent) Test(org.junit.Test)

Example 4 with Event

use of io.grpc.InternalChannelz.ChannelTrace.Event in project grpc-java by grpc.

the class ChannelTracerTest method reportEvents.

@Test
public void reportEvents() {
    ChannelTracer channelTracer = new ChannelTracer(logId, /* maxEvents= */
    2, /* channelCreationTimeNanos= */
    3L, "fooType");
    ChannelStats.Builder builder = new ChannelStats.Builder();
    Event e1 = new Event.Builder().setDescription("e1").setSeverity(Severity.CT_ERROR).setTimestampNanos(1001).build();
    Event e2 = new Event.Builder().setDescription("e2").setSeverity(Severity.CT_INFO).setTimestampNanos(1002).build();
    Event e3 = new Event.Builder().setDescription("e3").setSeverity(Severity.CT_WARNING).setTimestampNanos(1003).build();
    Event e4 = new Event.Builder().setDescription("e4").setSeverity(Severity.CT_UNKNOWN).setTimestampNanos(1004).build();
    // Check Channelz
    channelTracer.updateBuilder(builder);
    ChannelStats stats = builder.build();
    assertThat(stats.channelTrace.events).hasSize(1);
    Event creationEvent = stats.channelTrace.events.get(0);
    assertThat(stats.channelTrace.numEventsLogged).isEqualTo(1);
    channelTracer.reportEvent(e1);
    channelTracer.updateBuilder(builder);
    stats = builder.build();
    assertThat(stats.channelTrace.events).containsExactly(creationEvent, e1);
    assertThat(stats.channelTrace.numEventsLogged).isEqualTo(2);
    channelTracer.reportEvent(e2);
    channelTracer.updateBuilder(builder);
    stats = builder.build();
    assertThat(stats.channelTrace.events).containsExactly(e1, e2);
    assertThat(stats.channelTrace.numEventsLogged).isEqualTo(3);
    channelTracer.reportEvent(e3);
    channelTracer.updateBuilder(builder);
    stats = builder.build();
    assertThat(stats.channelTrace.events).containsExactly(e2, e3);
    assertThat(stats.channelTrace.numEventsLogged).isEqualTo(4);
    channelTracer.reportEvent(e4);
    channelTracer.updateBuilder(builder);
    stats = builder.build();
    assertThat(stats.channelTrace.events).containsExactly(e3, e4);
    assertThat(stats.channelTrace.numEventsLogged).isEqualTo(5);
    // Check logs
    assertThat(logs).hasSize(5);
    LogRecord log = logs.remove(0);
    assertThat(log.getMessage()).isEqualTo(logPrefix + "fooType created");
    assertThat(log.getLevel()).isEqualTo(Level.FINEST);
    log = logs.remove(0);
    assertThat(log.getMessage()).isEqualTo(logPrefix + "e1");
    assertThat(log.getLevel()).isEqualTo(Level.FINE);
    log = logs.remove(0);
    assertThat(log.getMessage()).isEqualTo(logPrefix + "e2");
    assertThat(log.getLevel()).isEqualTo(Level.FINEST);
    log = logs.remove(0);
    assertThat(log.getMessage()).isEqualTo(logPrefix + "e3");
    assertThat(log.getLevel()).isEqualTo(Level.FINER);
    log = logs.remove(0);
    assertThat(log.getMessage()).isEqualTo(logPrefix + "e4");
    assertThat(log.getLevel()).isEqualTo(Level.FINEST);
}
Also used : ChannelStats(io.grpc.InternalChannelz.ChannelStats) LogRecord(java.util.logging.LogRecord) Event(io.grpc.InternalChannelz.ChannelTrace.Event) Test(org.junit.Test)

Example 5 with Event

use of io.grpc.InternalChannelz.ChannelTrace.Event in project grpc-java by grpc.

the class ChannelLoggerImplTest method formatLogging.

@Test
public void formatLogging() {
    ChannelTracer tracer = new ChannelTracer(logId, /* maxEvents= */
    1, /* channelCreationTimeNanos= */
    3L, "fooType");
    ChannelLoggerImpl logger = new ChannelLoggerImpl(tracer, clock.getTimeProvider());
    ChannelStats.Builder builder = new ChannelStats.Builder();
    logs.clear();
    clock.forwardNanos(100);
    logger.log(ChannelLogLevel.ERROR, "Error message {0}", "foo");
    tracer.updateBuilder(builder);
    ChannelStats stats = builder.build();
    Event event = new Event.Builder().setDescription("Error message foo").setSeverity(Severity.CT_ERROR).setTimestampNanos(100).build();
    assertThat(stats.channelTrace.events).containsExactly(event);
    assertThat(logs).contains("FINE: " + logPrefix + "Error message foo");
    clock.forwardNanos(100);
    logger.log(ChannelLogLevel.WARNING, "Warning message {0}, {1}", "foo", "bar");
    tracer.updateBuilder(builder);
    stats = builder.build();
    event = new Event.Builder().setDescription("Warning message foo, bar").setSeverity(Severity.CT_WARNING).setTimestampNanos(200).build();
    assertThat(stats.channelTrace.events).containsExactly(event);
    assertThat(logs).contains("FINE: " + logPrefix + "Warning message foo, bar");
    clock.forwardNanos(100);
    logger.log(ChannelLogLevel.INFO, "Info message {0}", "bar");
    tracer.updateBuilder(builder);
    stats = builder.build();
    event = new Event.Builder().setDescription("Info message bar").setSeverity(Severity.CT_INFO).setTimestampNanos(300).build();
    assertThat(stats.channelTrace.events).containsExactly(event);
    assertThat(logs).contains("FINER: " + logPrefix + "Info message bar");
    clock.forwardNanos(100);
    logger.log(ChannelLogLevel.DEBUG, "Debug message {0}", "foo");
    tracer.updateBuilder(builder);
    stats = builder.build();
    // DEBUG level messages are not logged to channelz, thus channelz still has the
    // last event.
    assertThat(stats.channelTrace.events).containsExactly(event);
    assertThat(logs).contains("FINEST: " + logPrefix + "Debug message foo");
}
Also used : ChannelStats(io.grpc.InternalChannelz.ChannelStats) Event(io.grpc.InternalChannelz.ChannelTrace.Event) Test(org.junit.Test)

Aggregations

Event (io.grpc.InternalChannelz.ChannelTrace.Event)6 ChannelStats (io.grpc.InternalChannelz.ChannelStats)5 Test (org.junit.Test)5 ChannelTraceEvent (io.grpc.channelz.v1.ChannelTraceEvent)2 LogRecord (java.util.logging.LogRecord)2 InternalChannelz (io.grpc.InternalChannelz)1 ChannelData (io.grpc.channelz.v1.ChannelData)1 ArrayList (java.util.ArrayList)1