/* * Copyright 2014, Google Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * * Neither the name of Google Inc. nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package io.grpc.testing.integration; import com.google.protobuf.MessageLite; import io.grpc.Metadata; import io.grpc.protobuf.ProtoUtils; import java.util.List; import org.junit.Assert; /** * Utility methods to support integration testing. */ public class Util { public static final Metadata.Key<Messages.SimpleContext> METADATA_KEY = ProtoUtils.keyForProto(Messages.SimpleContext.getDefaultInstance()); public static final Metadata.Key<String> ECHO_INITIAL_METADATA_KEY = Metadata.Key.of("x-grpc-test-echo-initial", Metadata.ASCII_STRING_MARSHALLER); public static final Metadata.Key<byte[]> ECHO_TRAILING_METADATA_KEY = Metadata.Key.of("x-grpc-test-echo-trailing-bin", Metadata.BINARY_BYTE_MARSHALLER); /** Assert that two messages are equal, producing a useful message if not. */ public static void assertEquals(MessageLite expected, MessageLite actual) { if (expected == null || actual == null) { Assert.assertEquals(expected, actual); } else { if (!expected.equals(actual)) { // This assertEquals should always complete. Assert.assertEquals(expected.toString(), actual.toString()); // But if it doesn't, then this should. Assert.assertEquals(expected, actual); Assert.fail("Messages not equal, but assertEquals didn't throw"); } } } /** Assert that two lists of messages are equal, producing a useful message if not. */ public static void assertEquals(List<? extends MessageLite> expected, List<? extends MessageLite> actual) { if (expected == null || actual == null) { Assert.assertEquals(expected, actual); } else if (expected.size() != actual.size()) { Assert.assertEquals(expected, actual); } else { for (int i = 0; i < expected.size(); i++) { assertEquals(expected.get(i), actual.get(i)); } } } }