diff options
Diffstat (limited to 'tests_mgrapp/src/com/google/codereview/rpc')
3 files changed, 177 insertions, 0 deletions
diff --git a/tests_mgrapp/src/com/google/codereview/rpc/MessageRequestEntityTest.java b/tests_mgrapp/src/com/google/codereview/rpc/MessageRequestEntityTest.java new file mode 100644 index 0000000000..adf5995dc3 --- /dev/null +++ b/tests_mgrapp/src/com/google/codereview/rpc/MessageRequestEntityTest.java @@ -0,0 +1,61 @@ +// Copyright 2008 Google 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 com.google.codereview.rpc; + +import com.google.codereview.internal.SubmitChange.SubmitChangeResponse; +import com.google.protobuf.Message; + +import junit.framework.TestCase; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Arrays; +import java.util.zip.DeflaterOutputStream; + +public class MessageRequestEntityTest extends TestCase { + public void testCompressedEntity() throws Exception { + final Message msg = buildMessage(); + final byte[] bin = compress(msg); + final String contentType = + "application/x-google-protobuf" + + "; name=codereview.internal.SubmitChangeResponse" + + "; compress=deflate"; + + final MessageRequestEntity mre = new MessageRequestEntity(msg); + assertTrue(mre.isRepeatable()); + assertEquals(bin.length, mre.getContentLength()); + assertEquals(contentType, mre.getContentType()); + + for (int i = 0; i < 5; i++) { + final ByteArrayOutputStream compressed = new ByteArrayOutputStream(); + mre.writeRequest(compressed); + assertTrue(Arrays.equals(bin, compressed.toByteArray())); + } + } + + private static Message buildMessage() { + final SubmitChangeResponse.Builder r = SubmitChangeResponse.newBuilder(); + r.setStatusCode(SubmitChangeResponse.CodeType.PATCHSET_EXISTS); + return r.build(); + } + + private static byte[] compress(final Message m) throws IOException { + final ByteArrayOutputStream out = new ByteArrayOutputStream(); + final DeflaterOutputStream dos = new DeflaterOutputStream(out); + m.writeTo(dos); + dos.close(); + return out.toByteArray(); + } +} diff --git a/tests_mgrapp/src/com/google/codereview/rpc/MockRpcChannel.java b/tests_mgrapp/src/com/google/codereview/rpc/MockRpcChannel.java new file mode 100644 index 0000000000..4a1f1a49ff --- /dev/null +++ b/tests_mgrapp/src/com/google/codereview/rpc/MockRpcChannel.java @@ -0,0 +1,48 @@ +// Copyright 2008 Google 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 com.google.codereview.rpc; + +import com.google.protobuf.Message; +import com.google.protobuf.RpcCallback; +import com.google.protobuf.RpcChannel; +import com.google.protobuf.RpcController; +import com.google.protobuf.Descriptors.MethodDescriptor; + +import junit.framework.TestCase; + +import java.util.LinkedList; + +public class MockRpcChannel implements RpcChannel { + private LinkedList<RpcChannel> calls = new LinkedList<RpcChannel>(); + + public void add(final RpcChannel c) { + calls.add(c); + } + + public void callMethod(final MethodDescriptor method, + final RpcController controller, final Message request, + final Message responsePrototype, final RpcCallback<Message> done) { + if (calls.isEmpty()) { + TestCase.fail("Incorrect call for " + method.getFullName()); + } + + final RpcChannel c = calls.removeFirst(); + c.callMethod(method, controller, request, responsePrototype, done); + } + + public void assertAllCallsMade() { + TestCase.assertTrue(calls.isEmpty()); + } +} diff --git a/tests_mgrapp/src/com/google/codereview/rpc/SimpleControllerTest.java b/tests_mgrapp/src/com/google/codereview/rpc/SimpleControllerTest.java new file mode 100644 index 0000000000..9496f45738 --- /dev/null +++ b/tests_mgrapp/src/com/google/codereview/rpc/SimpleControllerTest.java @@ -0,0 +1,68 @@ +// Copyright 2008 Google 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 com.google.codereview.rpc; + +import com.google.protobuf.RpcCallback; + +import junit.framework.TestCase; + +public class SimpleControllerTest extends TestCase { + public void testDefaultConstructor() { + final SimpleController sc = new SimpleController(); + assertNull(sc.errorText()); + assertFalse(sc.failed()); + assertFalse(sc.isCanceled()); + } + + public void testNotifyCancelUnsupported() { + try { + new SimpleController().notifyOnCancel(new RpcCallback<Object>() { + public void run(Object parameter) { + fail("Callback invoked during notifyOnCancel setup"); + } + }); + fail("notifyOnCancel accepted a callback"); + } catch (UnsupportedOperationException e) { + // Pass + } + } + + public void testStartCancelUnsupported() { + try { + new SimpleController().startCancel(); + fail("startCancel did not fail"); + } catch (UnsupportedOperationException e) { + // Pass + } + } + + public void testSetFailed() { + final String reason = "we failed, yes we did"; + final SimpleController sc = new SimpleController(); + sc.setFailed(reason); + assertTrue(sc.failed()); + assertSame(reason, sc.errorText()); + } + + public void testResetClearedFailure() { + final String reason = "we failed, yes we did"; + final SimpleController sc = new SimpleController(); + sc.setFailed(reason); + sc.reset(); + assertNull(sc.errorText()); + assertFalse(sc.failed()); + assertFalse(sc.isCanceled()); + } +} |