diff options
Diffstat (limited to 'tests_mgrapp/src/com/google/codereview/rpc/MessageRequestEntityTest.java')
-rw-r--r-- | tests_mgrapp/src/com/google/codereview/rpc/MessageRequestEntityTest.java | 61 |
1 files changed, 61 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(); + } +} |