// Path: logging/src/main/java/io/confluent/common/logging/LogRecordBuilder.java
// public interface LogRecordBuilder<T> {
//   String FIELD_LOGGER = "logger";
//   String FIELD_LEVEL = "level";
//   String FIELD_TIME = "time";
//   String FIELD_MESSAGE = "message";
// 
//   String NAMESPACE = "io.confluent.common.logging.";
// 
//   static SchemaBuilder baseSchemaBuilder() {
//     return SchemaBuilder.struct()
//         .name(NAMESPACE + "StructuredLogRecord")
//         .field(FIELD_LOGGER, Schema.OPTIONAL_STRING_SCHEMA)
//         .field(FIELD_LEVEL, Schema.OPTIONAL_STRING_SCHEMA)
//         .field(FIELD_TIME, Schema.OPTIONAL_INT64_SCHEMA);
//   }
// 
//   LogRecordBuilder<T> withLevel(final String level);
// 
//   LogRecordBuilder<T> withTimeMs(final long timeMs);
// 
//   LogRecordBuilder<T> withLoggerName(final String loggerName);
// 
//   LogRecordBuilder<T> withMessageSchemaAndValue(final SchemaAndValue message);
// 
//   LogRecordBuilder<T> withMessageJson(final String message);
// 
//   public T build();
// }
// 
// Path: logging/src/main/java/io/confluent/common/logging/StructuredLogMessage.java
// public interface StructuredLogMessage {
//   SchemaAndValue getMessage();
// }


import io.confluent.common.logging.LogRecordBuilder;
import io.confluent.common.logging.StructuredLogMessage;
import org.apache.kafka.connect.data.Schema;
import org.apache.kafka.connect.data.SchemaAndValue;
import org.apache.kafka.connect.data.Struct;
import org.apache.kafka.connect.storage.Converter;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.message.Message;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import java.util.function.Consumer;
import java.util.function.Function;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
/*
 * Copyright 2018 Confluent Inc.
 *
 * 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 io.confluent.common.logging.log4j2;




public class StructuredLayoutTest {
  private static final String TOPIC = "topic";
  private static final Level LOG_LEVEL = Level.INFO;
  private static final String LOGGER_NAME = "foo.bar";
  private static final long LOG_TIME_MS = 123456L;
  private static final byte[] SERIALIZED_MSG = "serialized".getBytes();

  @Mock
  private Function<Struct, byte[]> converter;
  @Mock
  private LogEvent logEvent;
  @Mock
  private Message log4jMessage;
  @Mock
// Path: logging/src/main/java/io/confluent/common/logging/LogRecordBuilder.java
// public interface LogRecordBuilder<T> {
//   String FIELD_LOGGER = "logger";
//   String FIELD_LEVEL = "level";
//   String FIELD_TIME = "time";
//   String FIELD_MESSAGE = "message";
// 
//   String NAMESPACE = "io.confluent.common.logging.";
// 
//   static SchemaBuilder baseSchemaBuilder() {
//     return SchemaBuilder.struct()
//         .name(NAMESPACE + "StructuredLogRecord")
//         .field(FIELD_LOGGER, Schema.OPTIONAL_STRING_SCHEMA)
//         .field(FIELD_LEVEL, Schema.OPTIONAL_STRING_SCHEMA)
//         .field(FIELD_TIME, Schema.OPTIONAL_INT64_SCHEMA);
//   }
// 
//   LogRecordBuilder<T> withLevel(final String level);
// 
//   LogRecordBuilder<T> withTimeMs(final long timeMs);
// 
//   LogRecordBuilder<T> withLoggerName(final String loggerName);
// 
//   LogRecordBuilder<T> withMessageSchemaAndValue(final SchemaAndValue message);
// 
//   LogRecordBuilder<T> withMessageJson(final String message);
// 
//   public T build();
// }
// 
// Path: logging/src/main/java/io/confluent/common/logging/StructuredLogMessage.java
// public interface StructuredLogMessage {
//   SchemaAndValue getMessage();
// }


// Path: log4j2-extensions/src/test/java/io/confluent/common/logging/log4j2/StructuredLayoutTest.java
import io.confluent.common.logging.LogRecordBuilder;
import io.confluent.common.logging.StructuredLogMessage;
import org.apache.kafka.connect.data.Schema;
import org.apache.kafka.connect.data.SchemaAndValue;
import org.apache.kafka.connect.data.Struct;
import org.apache.kafka.connect.storage.Converter;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.message.Message;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import java.util.function.Consumer;
import java.util.function.Function;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

/*
 * Copyright 2018 Confluent Inc.
 *
 * 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 io.confluent.common.logging.log4j2;




public class StructuredLayoutTest {
  private static final String TOPIC = "topic";
  private static final Level LOG_LEVEL = Level.INFO;
  private static final String LOGGER_NAME = "foo.bar";
  private static final long LOG_TIME_MS = 123456L;
  private static final byte[] SERIALIZED_MSG = "serialized".getBytes();

  @Mock
  private Function<Struct, byte[]> converter;
  @Mock
  private LogEvent logEvent;
  @Mock
  private Message log4jMessage;
  @Mock
  private LogRecordBuilder<Struct> builder;