/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 * * https://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. */ using System; using Avro.Generic; using Avro.IO; using Avro.ipc; using Avro.ipc.Generic; using NUnit.Framework; namespace Avro.Test.Ipc { [TestFixture] public class LocalTransceiverTest { [TestCase] public void TestSingleRpc() { Transceiver t = new LocalTransceiver(new TestResponder(protocol)); var p = new GenericRecord(protocol.Messages["m"].Request); p.Add("x", "hello"); var r = new GenericRequestor(t, protocol); for (int x = 0; x < 5; x++) { object request = r.Request("m", p); Assert.AreEqual("there", request); } } private readonly Protocol protocol = Protocol.Parse("" + "{\"protocol\": \"Minimal\", " + "\"messages\": { \"m\": {" + " \"request\": [{\"name\": \"x\", \"type\": \"string\"}], " + " \"response\": \"string\"} } }"); public class TestResponder : GenericResponder { public TestResponder(Protocol local) : base(local) { } public override object Respond(Message message, object request) { Assert.AreEqual("hello", ((GenericRecord) request)["x"]); return "there"; } public override void WriteError(Schema schema, object error, Encoder output) { throw new NotSupportedException(); } } } }