Moving from govendor to dep, updated dependencies (#48)
* Moving from govendor to dep. * Making the pull request template more friendly. * Fixing akward space in PR template. * goimports run on whole project using ` goimports -w $(find . -type f -name '*.go' -not -path "./vendor/*" -not -path "./gen-go/*")` source of command: https://gist.github.com/bgentry/fd1ffef7dbde01857f66
This commit is contained in:
parent
9631aa3aab
commit
8d445c1c77
2186 changed files with 400410 additions and 352 deletions
BIN
vendor/git.apache.org/thrift.git/lib/java/test/.keystore
generated
vendored
Normal file
BIN
vendor/git.apache.org/thrift.git/lib/java/test/.keystore
generated
vendored
Normal file
Binary file not shown.
BIN
vendor/git.apache.org/thrift.git/lib/java/test/.truststore
generated
vendored
Normal file
BIN
vendor/git.apache.org/thrift.git/lib/java/test/.truststore
generated
vendored
Normal file
Binary file not shown.
6
vendor/git.apache.org/thrift.git/lib/java/test/log4j.properties
generated
vendored
Normal file
6
vendor/git.apache.org/thrift.git/lib/java/test/log4j.properties
generated
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
# log4j configuration used during build and unit tests
|
||||
log4j.rootLogger=debug,stdout
|
||||
log4j.threshold=ALL
|
||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
|
339
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/Fixtures.java
generated
vendored
Normal file
339
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/Fixtures.java
generated
vendored
Normal file
|
@ -0,0 +1,339 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import thrift.test.Bonk;
|
||||
import thrift.test.CompactProtoTestStruct;
|
||||
import thrift.test.HolyMoley;
|
||||
import thrift.test.Nesting;
|
||||
import thrift.test.OneOfEach;
|
||||
|
||||
public class Fixtures {
|
||||
public static final OneOfEach oneOfEach;
|
||||
public static final Nesting nesting;
|
||||
public static final HolyMoley holyMoley;
|
||||
public static final CompactProtoTestStruct compactProtoTestStruct;
|
||||
|
||||
// These byte arrays are serialized versions of the above structs.
|
||||
// They were serialized in binary protocol using thrift 0.6.x and are used to
|
||||
// test backwards compatibility with respect to the standard scheme.
|
||||
public static final byte[] persistentBytesOneOfEach = new byte[] { (byte) 0x02, (byte) 0x00,
|
||||
(byte) 0x01, (byte) 0x01, (byte) 0x02, (byte) 0x00, (byte) 0x02,
|
||||
(byte) 0x00, (byte) 0x03, (byte) 0x00, (byte) 0x03, (byte) 0xD6,
|
||||
(byte) 0x06, (byte) 0x00, (byte) 0x04, (byte) 0x69, (byte) 0x78,
|
||||
(byte) 0x08, (byte) 0x00, (byte) 0x05, (byte) 0x01, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x0A, (byte) 0x00, (byte) 0x06,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x65,
|
||||
(byte) 0xA0, (byte) 0xBC, (byte) 0x00, (byte) 0x04, (byte) 0x00,
|
||||
(byte) 0x07, (byte) 0x40, (byte) 0x09, (byte) 0x21, (byte) 0xFB,
|
||||
(byte) 0x54, (byte) 0x44, (byte) 0x2D, (byte) 0x18, (byte) 0x0B,
|
||||
(byte) 0x00, (byte) 0x08, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x0D, (byte) 0x4A, (byte) 0x53, (byte) 0x4F, (byte) 0x4E,
|
||||
(byte) 0x20, (byte) 0x54, (byte) 0x48, (byte) 0x49, (byte) 0x53,
|
||||
(byte) 0x21, (byte) 0x20, (byte) 0x22, (byte) 0x01, (byte) 0x0B,
|
||||
(byte) 0x00, (byte) 0x09, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x2E, (byte) 0xD3, (byte) 0x80, (byte) 0xE2, (byte) 0x85,
|
||||
(byte) 0xAE, (byte) 0xCE, (byte) 0x9D, (byte) 0x20, (byte) 0xD0,
|
||||
(byte) 0x9D, (byte) 0xCE, (byte) 0xBF, (byte) 0xE2, (byte) 0x85,
|
||||
(byte) 0xBF, (byte) 0xD0, (byte) 0xBE, (byte) 0xC9, (byte) 0xA1,
|
||||
(byte) 0xD0, (byte) 0xB3, (byte) 0xD0, (byte) 0xB0, (byte) 0xCF,
|
||||
(byte) 0x81, (byte) 0xE2, (byte) 0x84, (byte) 0x8E, (byte) 0x20,
|
||||
(byte) 0xCE, (byte) 0x91, (byte) 0x74, (byte) 0x74, (byte) 0xCE,
|
||||
(byte) 0xB1, (byte) 0xE2, (byte) 0x85, (byte) 0xBD, (byte) 0xCE,
|
||||
(byte) 0xBA, (byte) 0xEF, (byte) 0xBF, (byte) 0xBD, (byte) 0xE2,
|
||||
(byte) 0x80, (byte) 0xBC, (byte) 0x02, (byte) 0x00, (byte) 0x0A,
|
||||
(byte) 0x00, (byte) 0x0B, (byte) 0x00, (byte) 0x0B, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x06, (byte) 0x62, (byte) 0x61,
|
||||
(byte) 0x73, (byte) 0x65, (byte) 0x36, (byte) 0x34, (byte) 0x0F,
|
||||
(byte) 0x00, (byte) 0x0C, (byte) 0x03, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x03, (byte) 0x01, (byte) 0x02, (byte) 0x03,
|
||||
(byte) 0x0F, (byte) 0x00, (byte) 0x0D, (byte) 0x06, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x03, (byte) 0x00, (byte) 0x01,
|
||||
(byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x03, (byte) 0x0F,
|
||||
(byte) 0x00, (byte) 0x0E, (byte) 0x0A, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x03, (byte) 0x00 };
|
||||
public static final byte[] persistentBytesNesting = new byte[] { (byte) 0x0C, (byte) 0x00,
|
||||
(byte) 0x01, (byte) 0x08, (byte) 0x00, (byte) 0x01, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x7A, (byte) 0x69, (byte) 0x0B, (byte) 0x00,
|
||||
(byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x13,
|
||||
(byte) 0x49, (byte) 0x20, (byte) 0x61, (byte) 0x6D, (byte) 0x20,
|
||||
(byte) 0x61, (byte) 0x20, (byte) 0x62, (byte) 0x6F, (byte) 0x6E,
|
||||
(byte) 0x6B, (byte) 0x2E, (byte) 0x2E, (byte) 0x2E, (byte) 0x20,
|
||||
(byte) 0x78, (byte) 0x6F, (byte) 0x72, (byte) 0x21, (byte) 0x00,
|
||||
(byte) 0x0C, (byte) 0x00, (byte) 0x02, (byte) 0x02, (byte) 0x00,
|
||||
(byte) 0x01, (byte) 0x01, (byte) 0x02, (byte) 0x00, (byte) 0x02,
|
||||
(byte) 0x00, (byte) 0x03, (byte) 0x00, (byte) 0x03, (byte) 0xD6,
|
||||
(byte) 0x06, (byte) 0x00, (byte) 0x04, (byte) 0x69, (byte) 0x78,
|
||||
(byte) 0x08, (byte) 0x00, (byte) 0x05, (byte) 0x01, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x0A, (byte) 0x00, (byte) 0x06,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x65,
|
||||
(byte) 0xA0, (byte) 0xBC, (byte) 0x00, (byte) 0x04, (byte) 0x00,
|
||||
(byte) 0x07, (byte) 0x40, (byte) 0x09, (byte) 0x21, (byte) 0xFB,
|
||||
(byte) 0x54, (byte) 0x44, (byte) 0x2D, (byte) 0x18, (byte) 0x0B,
|
||||
(byte) 0x00, (byte) 0x08, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x0D, (byte) 0x4A, (byte) 0x53, (byte) 0x4F, (byte) 0x4E,
|
||||
(byte) 0x20, (byte) 0x54, (byte) 0x48, (byte) 0x49, (byte) 0x53,
|
||||
(byte) 0x21, (byte) 0x20, (byte) 0x22, (byte) 0x01, (byte) 0x0B,
|
||||
(byte) 0x00, (byte) 0x09, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x2E, (byte) 0xD3, (byte) 0x80, (byte) 0xE2, (byte) 0x85,
|
||||
(byte) 0xAE, (byte) 0xCE, (byte) 0x9D, (byte) 0x20, (byte) 0xD0,
|
||||
(byte) 0x9D, (byte) 0xCE, (byte) 0xBF, (byte) 0xE2, (byte) 0x85,
|
||||
(byte) 0xBF, (byte) 0xD0, (byte) 0xBE, (byte) 0xC9, (byte) 0xA1,
|
||||
(byte) 0xD0, (byte) 0xB3, (byte) 0xD0, (byte) 0xB0, (byte) 0xCF,
|
||||
(byte) 0x81, (byte) 0xE2, (byte) 0x84, (byte) 0x8E, (byte) 0x20,
|
||||
(byte) 0xCE, (byte) 0x91, (byte) 0x74, (byte) 0x74, (byte) 0xCE,
|
||||
(byte) 0xB1, (byte) 0xE2, (byte) 0x85, (byte) 0xBD, (byte) 0xCE,
|
||||
(byte) 0xBA, (byte) 0xEF, (byte) 0xBF, (byte) 0xBD, (byte) 0xE2,
|
||||
(byte) 0x80, (byte) 0xBC, (byte) 0x02, (byte) 0x00, (byte) 0x0A,
|
||||
(byte) 0x00, (byte) 0x0B, (byte) 0x00, (byte) 0x0B, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x06, (byte) 0x62, (byte) 0x61,
|
||||
(byte) 0x73, (byte) 0x65, (byte) 0x36, (byte) 0x34, (byte) 0x0F,
|
||||
(byte) 0x00, (byte) 0x0C, (byte) 0x03, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x03, (byte) 0x01, (byte) 0x02, (byte) 0x03,
|
||||
(byte) 0x0F, (byte) 0x00, (byte) 0x0D, (byte) 0x06, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x03, (byte) 0x00, (byte) 0x01,
|
||||
(byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x03, (byte) 0x0F,
|
||||
(byte) 0x00, (byte) 0x0E, (byte) 0x0A, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x03, (byte) 0x00, (byte) 0x00 };
|
||||
public static final byte[] persistentBytesHolyMoley = new byte[] { (byte) 0x0F, (byte) 0x00,
|
||||
(byte) 0x01, (byte) 0x0C, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x02, (byte) 0x02, (byte) 0x00, (byte) 0x01, (byte) 0x01,
|
||||
(byte) 0x02, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x03,
|
||||
(byte) 0x00, (byte) 0x03, (byte) 0x23, (byte) 0x06, (byte) 0x00,
|
||||
(byte) 0x04, (byte) 0x69, (byte) 0x78, (byte) 0x08, (byte) 0x00,
|
||||
(byte) 0x05, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x0A, (byte) 0x00, (byte) 0x06, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x01, (byte) 0x65, (byte) 0xA0, (byte) 0xBC,
|
||||
(byte) 0x00, (byte) 0x04, (byte) 0x00, (byte) 0x07, (byte) 0x40,
|
||||
(byte) 0x09, (byte) 0x21, (byte) 0xFB, (byte) 0x54, (byte) 0x44,
|
||||
(byte) 0x2D, (byte) 0x18, (byte) 0x0B, (byte) 0x00, (byte) 0x08,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0D, (byte) 0x4A,
|
||||
(byte) 0x53, (byte) 0x4F, (byte) 0x4E, (byte) 0x20, (byte) 0x54,
|
||||
(byte) 0x48, (byte) 0x49, (byte) 0x53, (byte) 0x21, (byte) 0x20,
|
||||
(byte) 0x22, (byte) 0x01, (byte) 0x0B, (byte) 0x00, (byte) 0x09,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x2E, (byte) 0xD3,
|
||||
(byte) 0x80, (byte) 0xE2, (byte) 0x85, (byte) 0xAE, (byte) 0xCE,
|
||||
(byte) 0x9D, (byte) 0x20, (byte) 0xD0, (byte) 0x9D, (byte) 0xCE,
|
||||
(byte) 0xBF, (byte) 0xE2, (byte) 0x85, (byte) 0xBF, (byte) 0xD0,
|
||||
(byte) 0xBE, (byte) 0xC9, (byte) 0xA1, (byte) 0xD0, (byte) 0xB3,
|
||||
(byte) 0xD0, (byte) 0xB0, (byte) 0xCF, (byte) 0x81, (byte) 0xE2,
|
||||
(byte) 0x84, (byte) 0x8E, (byte) 0x20, (byte) 0xCE, (byte) 0x91,
|
||||
(byte) 0x74, (byte) 0x74, (byte) 0xCE, (byte) 0xB1, (byte) 0xE2,
|
||||
(byte) 0x85, (byte) 0xBD, (byte) 0xCE, (byte) 0xBA, (byte) 0xEF,
|
||||
(byte) 0xBF, (byte) 0xBD, (byte) 0xE2, (byte) 0x80, (byte) 0xBC,
|
||||
(byte) 0x02, (byte) 0x00, (byte) 0x0A, (byte) 0x00, (byte) 0x0B,
|
||||
(byte) 0x00, (byte) 0x0B, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x06, (byte) 0x62, (byte) 0x61, (byte) 0x73, (byte) 0x65,
|
||||
(byte) 0x36, (byte) 0x34, (byte) 0x0F, (byte) 0x00, (byte) 0x0C,
|
||||
(byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x03,
|
||||
(byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x0F, (byte) 0x00,
|
||||
(byte) 0x0D, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x03, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x02,
|
||||
(byte) 0x00, (byte) 0x03, (byte) 0x0F, (byte) 0x00, (byte) 0x0E,
|
||||
(byte) 0x0A, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x03,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x03, (byte) 0x00,
|
||||
(byte) 0x02, (byte) 0x00, (byte) 0x01, (byte) 0x01, (byte) 0x02,
|
||||
(byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x03, (byte) 0x00,
|
||||
(byte) 0x03, (byte) 0xD6, (byte) 0x06, (byte) 0x00, (byte) 0x04,
|
||||
(byte) 0x69, (byte) 0x78, (byte) 0x08, (byte) 0x00, (byte) 0x05,
|
||||
(byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0A,
|
||||
(byte) 0x00, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x01, (byte) 0x65, (byte) 0xA0, (byte) 0xBC, (byte) 0x00,
|
||||
(byte) 0x04, (byte) 0x00, (byte) 0x07, (byte) 0x40, (byte) 0x09,
|
||||
(byte) 0x21, (byte) 0xFB, (byte) 0x54, (byte) 0x44, (byte) 0x2D,
|
||||
(byte) 0x18, (byte) 0x0B, (byte) 0x00, (byte) 0x08, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x0D, (byte) 0x4A, (byte) 0x53,
|
||||
(byte) 0x4F, (byte) 0x4E, (byte) 0x20, (byte) 0x54, (byte) 0x48,
|
||||
(byte) 0x49, (byte) 0x53, (byte) 0x21, (byte) 0x20, (byte) 0x22,
|
||||
(byte) 0x01, (byte) 0x0B, (byte) 0x00, (byte) 0x09, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x2E, (byte) 0xD3, (byte) 0x80,
|
||||
(byte) 0xE2, (byte) 0x85, (byte) 0xAE, (byte) 0xCE, (byte) 0x9D,
|
||||
(byte) 0x20, (byte) 0xD0, (byte) 0x9D, (byte) 0xCE, (byte) 0xBF,
|
||||
(byte) 0xE2, (byte) 0x85, (byte) 0xBF, (byte) 0xD0, (byte) 0xBE,
|
||||
(byte) 0xC9, (byte) 0xA1, (byte) 0xD0, (byte) 0xB3, (byte) 0xD0,
|
||||
(byte) 0xB0, (byte) 0xCF, (byte) 0x81, (byte) 0xE2, (byte) 0x84,
|
||||
(byte) 0x8E, (byte) 0x20, (byte) 0xCE, (byte) 0x91, (byte) 0x74,
|
||||
(byte) 0x74, (byte) 0xCE, (byte) 0xB1, (byte) 0xE2, (byte) 0x85,
|
||||
(byte) 0xBD, (byte) 0xCE, (byte) 0xBA, (byte) 0xEF, (byte) 0xBF,
|
||||
(byte) 0xBD, (byte) 0xE2, (byte) 0x80, (byte) 0xBC, (byte) 0x02,
|
||||
(byte) 0x00, (byte) 0x0A, (byte) 0x00, (byte) 0x0B, (byte) 0x00,
|
||||
(byte) 0x0B, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x06,
|
||||
(byte) 0x62, (byte) 0x61, (byte) 0x73, (byte) 0x65, (byte) 0x36,
|
||||
(byte) 0x34, (byte) 0x0F, (byte) 0x00, (byte) 0x0C, (byte) 0x03,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x03, (byte) 0x01,
|
||||
(byte) 0x02, (byte) 0x03, (byte) 0x0F, (byte) 0x00, (byte) 0x0D,
|
||||
(byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x03,
|
||||
(byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x02, (byte) 0x00,
|
||||
(byte) 0x03, (byte) 0x0F, (byte) 0x00, (byte) 0x0E, (byte) 0x0A,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x03, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x03, (byte) 0x00, (byte) 0x0E,
|
||||
(byte) 0x00, (byte) 0x02, (byte) 0x0F, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x03, (byte) 0x0B, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x0B, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x0F, (byte) 0x74, (byte) 0x68, (byte) 0x65, (byte) 0x6E,
|
||||
(byte) 0x20, (byte) 0x61, (byte) 0x20, (byte) 0x6F, (byte) 0x6E,
|
||||
(byte) 0x65, (byte) 0x2C, (byte) 0x20, (byte) 0x74, (byte) 0x77,
|
||||
(byte) 0x6F, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x06,
|
||||
(byte) 0x74, (byte) 0x68, (byte) 0x72, (byte) 0x65, (byte) 0x65,
|
||||
(byte) 0x21, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x06,
|
||||
(byte) 0x46, (byte) 0x4F, (byte) 0x55, (byte) 0x52, (byte) 0x21,
|
||||
(byte) 0x21, (byte) 0x0B, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x09,
|
||||
(byte) 0x61, (byte) 0x6E, (byte) 0x64, (byte) 0x20, (byte) 0x61,
|
||||
(byte) 0x20, (byte) 0x6F, (byte) 0x6E, (byte) 0x65, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x09, (byte) 0x61, (byte) 0x6E,
|
||||
(byte) 0x64, (byte) 0x20, (byte) 0x61, (byte) 0x20, (byte) 0x74,
|
||||
(byte) 0x77, (byte) 0x6F, (byte) 0x0D, (byte) 0x00, (byte) 0x03,
|
||||
(byte) 0x0B, (byte) 0x0F, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x03,
|
||||
(byte) 0x74, (byte) 0x77, (byte) 0x6F, (byte) 0x0C, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x08, (byte) 0x00,
|
||||
(byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01,
|
||||
(byte) 0x0B, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x05, (byte) 0x57, (byte) 0x61, (byte) 0x69,
|
||||
(byte) 0x74, (byte) 0x2E, (byte) 0x00, (byte) 0x08, (byte) 0x00,
|
||||
(byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02,
|
||||
(byte) 0x0B, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x05, (byte) 0x57, (byte) 0x68, (byte) 0x61,
|
||||
(byte) 0x74, (byte) 0x3F, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x05, (byte) 0x74, (byte) 0x68, (byte) 0x72,
|
||||
(byte) 0x65, (byte) 0x65, (byte) 0x0C, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x04, (byte) 0x7A, (byte) 0x65, (byte) 0x72, (byte) 0x6F,
|
||||
(byte) 0x0C, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
|
||||
(byte) 0x00 };
|
||||
|
||||
private static final byte[] kUnicodeBytes = { (byte) 0xd3, (byte) 0x80,
|
||||
(byte) 0xe2, (byte) 0x85, (byte) 0xae, (byte) 0xce, (byte) 0x9d,
|
||||
(byte) 0x20, (byte) 0xd0, (byte) 0x9d, (byte) 0xce, (byte) 0xbf,
|
||||
(byte) 0xe2, (byte) 0x85, (byte) 0xbf, (byte) 0xd0, (byte) 0xbe,
|
||||
(byte) 0xc9, (byte) 0xa1, (byte) 0xd0, (byte) 0xb3, (byte) 0xd0,
|
||||
(byte) 0xb0, (byte) 0xcf, (byte) 0x81, (byte) 0xe2, (byte) 0x84,
|
||||
(byte) 0x8e, (byte) 0x20, (byte) 0xce, (byte) 0x91, (byte) 0x74,
|
||||
(byte) 0x74, (byte) 0xce, (byte) 0xb1, (byte) 0xe2, (byte) 0x85,
|
||||
(byte) 0xbd, (byte) 0xce, (byte) 0xba, (byte) 0x83, (byte) 0xe2,
|
||||
(byte) 0x80, (byte) 0xbc };
|
||||
|
||||
static {
|
||||
try {
|
||||
oneOfEach = new OneOfEach();
|
||||
oneOfEach.setIm_true(true);
|
||||
oneOfEach.setIm_false(false);
|
||||
oneOfEach.setA_bite((byte) 0xd6);
|
||||
oneOfEach.setInteger16((short) 27000);
|
||||
oneOfEach.setInteger32(1 << 24);
|
||||
oneOfEach.setInteger64((long) 6000 * 1000 * 1000);
|
||||
oneOfEach.setDouble_precision(Math.PI);
|
||||
oneOfEach.setSome_characters("JSON THIS! \"\1");
|
||||
oneOfEach.setZomg_unicode(new String(kUnicodeBytes, "UTF-8"));
|
||||
oneOfEach.setBase64(ByteBuffer.wrap("base64".getBytes()));
|
||||
// byte, i16, and i64 lists are populated by default constructor
|
||||
|
||||
Bonk bonk = new Bonk();
|
||||
bonk.setType(31337);
|
||||
bonk.setMessage("I am a bonk... xor!");
|
||||
nesting = new Nesting(bonk, oneOfEach);
|
||||
|
||||
holyMoley = new HolyMoley();
|
||||
ArrayList big = new ArrayList<OneOfEach>();
|
||||
big.add(new OneOfEach(oneOfEach));
|
||||
big.add(nesting.my_ooe);
|
||||
holyMoley.setBig(big);
|
||||
holyMoley.getBig().get(0).setA_bite((byte) 0x22);
|
||||
holyMoley.getBig().get(0).setA_bite((byte) 0x23);
|
||||
|
||||
holyMoley.setContain(new HashSet<List<String>>());
|
||||
ArrayList<String> stage1 = new ArrayList<String>(2);
|
||||
stage1.add("and a one");
|
||||
stage1.add("and a two");
|
||||
holyMoley.getContain().add(stage1);
|
||||
stage1 = new ArrayList<String>(3);
|
||||
stage1.add("then a one, two");
|
||||
stage1.add("three!");
|
||||
stage1.add("FOUR!!");
|
||||
holyMoley.getContain().add(stage1);
|
||||
stage1 = new ArrayList<String>(0);
|
||||
holyMoley.getContain().add(stage1);
|
||||
|
||||
ArrayList<Bonk> stage2 = new ArrayList<Bonk>();
|
||||
holyMoley.setBonks(new HashMap<String, List<Bonk>>());
|
||||
// one empty
|
||||
holyMoley.getBonks().put("zero", stage2);
|
||||
|
||||
// one with two
|
||||
stage2 = new ArrayList<Bonk>();
|
||||
Bonk b = new Bonk();
|
||||
b.setType(1);
|
||||
b.setMessage("Wait.");
|
||||
stage2.add(b);
|
||||
b = new Bonk();
|
||||
b.setType(2);
|
||||
b.setMessage("What?");
|
||||
stage2.add(b);
|
||||
holyMoley.getBonks().put("two", stage2);
|
||||
|
||||
// one with three
|
||||
stage2 = new ArrayList<Bonk>();
|
||||
b = new Bonk();
|
||||
b.setType(3);
|
||||
b.setMessage("quoth");
|
||||
b = new Bonk();
|
||||
b.setType(4);
|
||||
b.setMessage("the raven");
|
||||
b = new Bonk();
|
||||
b.setType(5);
|
||||
b.setMessage("nevermore");
|
||||
holyMoley.getBonks().put("three", stage2);
|
||||
|
||||
// superhuge compact proto test struct
|
||||
compactProtoTestStruct = new CompactProtoTestStruct(
|
||||
thrift.test.DebugProtoTestConstants.COMPACT_TEST);
|
||||
compactProtoTestStruct.setA_binary(ByteBuffer.wrap(new byte[] { 0, 1, 2,
|
||||
3, 4, 5, 6, 7, 8 }));
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
59
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestFullCamel.java
generated
vendored
Normal file
59
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestFullCamel.java
generated
vendored
Normal file
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.protocol.TBinaryProtocol;
|
||||
import org.apache.thrift.protocol.TType;
|
||||
|
||||
import thrift.test.fullcamel.OneOfEachZZ;
|
||||
import thrift.test.fullcamel.UnderscoreSrv;
|
||||
|
||||
// Sanity check for the code generated by 'fullcamel'.
|
||||
//
|
||||
public class TestFullCamel extends TestCase {
|
||||
|
||||
public void testCamelCaseSyntax() throws Exception {
|
||||
TSerializer binarySerializer = new TSerializer(new TBinaryProtocol.Factory());
|
||||
TDeserializer binaryDeserializer = new TDeserializer(new TBinaryProtocol.Factory());
|
||||
|
||||
OneOfEachZZ obj = new OneOfEachZZ();
|
||||
obj.setABite((byte) 0xae);
|
||||
obj.setImFalse(true);
|
||||
byte[] serBytes = binarySerializer.serialize(obj);
|
||||
binaryDeserializer.deserialize(obj, serBytes);
|
||||
assertTrue( obj.getABite() == (byte) 0xae );
|
||||
assertTrue( obj.isImFalse() == true );
|
||||
}
|
||||
|
||||
public void testCamelCaseRpcMethods() throws Exception {
|
||||
final UnderscoreSrv.Iface srv = new UnderscoreSrv.Iface() {
|
||||
@Override
|
||||
public long someRpcCall(String message) {
|
||||
return 1l;
|
||||
}
|
||||
};
|
||||
assertTrue(1l == srv.someRpcCall("test"));
|
||||
}
|
||||
}
|
||||
|
66
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestOptionType.java
generated
vendored
Normal file
66
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestOptionType.java
generated
vendored
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.apache.thrift.Option;
|
||||
|
||||
// Tests and documents behavior for the "Option<T>" type
|
||||
public class TestOptionType extends TestCase {
|
||||
public void testSome() throws Exception {
|
||||
String name = "Chuck Norris";
|
||||
Option<String> option = Option.fromNullable(name);
|
||||
|
||||
assertTrue(option instanceof Option.Some);
|
||||
assertTrue(option.isDefined());
|
||||
assertEquals("Some(Chuck Norris)", option.toString());
|
||||
assertEquals(option.or("default value"), "Chuck Norris");
|
||||
assertEquals(option.get(),"Chuck Norris");
|
||||
}
|
||||
|
||||
public void testNone() throws Exception {
|
||||
String name = null;
|
||||
Option<String> option = Option.fromNullable(name);
|
||||
|
||||
assertTrue(option instanceof Option.None);
|
||||
assertFalse(option.isDefined());
|
||||
assertEquals("None", option.toString());
|
||||
assertEquals(option.or("default value"), "default value");
|
||||
// Expect exception
|
||||
try {
|
||||
Object value = option.get();
|
||||
fail("Expected IllegalStateException, got no exception");
|
||||
} catch (IllegalStateException ex) {
|
||||
|
||||
} catch(Exception ex) {
|
||||
fail("Expected IllegalStateException, got some other exception: "+ex.toString());
|
||||
}
|
||||
}
|
||||
|
||||
public void testMakeSome() throws Exception {
|
||||
Option<String> some = Option.some("wee");
|
||||
assertTrue(some instanceof Option.Some);
|
||||
}
|
||||
|
||||
public void testMakeNone() throws Exception {
|
||||
Option<Integer> none = Option.none();
|
||||
assertTrue(none instanceof Option.None);
|
||||
}
|
||||
}
|
88
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestOptionals.java
generated
vendored
Normal file
88
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestOptionals.java
generated
vendored
Normal file
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import thrift.test.Opt4;
|
||||
import thrift.test.Opt30;
|
||||
import thrift.test.Opt64;
|
||||
import thrift.test.Opt80;
|
||||
|
||||
// Exercises the isSet methods using structs from from ManyOptionals.thrift
|
||||
public class TestOptionals extends TestCase {
|
||||
public void testEncodingUtils() throws Exception {
|
||||
assertEquals((short)0x8, EncodingUtils.setBit((short)0, 3, true));
|
||||
assertEquals((short)0, EncodingUtils.setBit((short)0x8, 3, false));
|
||||
assertEquals(true, EncodingUtils.testBit((short)0x8, 3));
|
||||
assertEquals(false, EncodingUtils.testBit((short)0x8, 4));
|
||||
|
||||
assertEquals((short)Short.MIN_VALUE, EncodingUtils.setBit((short)0, 15, true));
|
||||
assertEquals((short)0, EncodingUtils.setBit((short)Short.MIN_VALUE, 15, false));
|
||||
assertEquals(true, EncodingUtils.testBit(Short.MIN_VALUE, 15));
|
||||
assertEquals(false, EncodingUtils.testBit(Short.MIN_VALUE, 14));
|
||||
}
|
||||
|
||||
public void testOpt4() throws Exception {
|
||||
Opt4 x = new Opt4();
|
||||
assertEquals(false, x.isSetDef1());
|
||||
x.setDef1(3);
|
||||
assertEquals(true, x.isSetDef1());
|
||||
assertEquals(false, x.isSetDef2());
|
||||
|
||||
Opt4 copy = new Opt4(x);
|
||||
assertEquals(true, copy.isSetDef1());
|
||||
copy.unsetDef1();
|
||||
assertEquals(false, copy.isSetDef1());
|
||||
assertEquals(true, x.isSetDef1());
|
||||
}
|
||||
|
||||
public void testOpt30() throws Exception {
|
||||
Opt30 x = new Opt30();
|
||||
assertEquals(false, x.isSetDef1());
|
||||
x.setDef1(3);
|
||||
assertEquals(true, x.isSetDef1());
|
||||
assertEquals(false, x.isSetDef2());
|
||||
}
|
||||
|
||||
public void testOpt64() throws Exception {
|
||||
Opt64 x = new Opt64();
|
||||
assertEquals(false, x.isSetDef1());
|
||||
x.setDef1(3);
|
||||
assertEquals(true, x.isSetDef1());
|
||||
assertEquals(false, x.isSetDef2());
|
||||
x.setDef64(22);
|
||||
assertEquals(true, x.isSetDef64());
|
||||
assertEquals(false, x.isSetDef63());
|
||||
}
|
||||
|
||||
public void testOpt80() throws Exception {
|
||||
Opt80 x = new Opt80();
|
||||
assertEquals(false, x.isSetDef1());
|
||||
x.setDef1(3);
|
||||
assertEquals(true, x.isSetDef1());
|
||||
assertEquals(false, x.isSetDef2());
|
||||
|
||||
Opt80 copy = new Opt80(x);
|
||||
copy.unsetDef1();
|
||||
assertEquals(false, copy.isSetDef1());
|
||||
assertEquals(true, x.isSetDef1());
|
||||
}
|
||||
}
|
60
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestReuse.java
generated
vendored
Normal file
60
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestReuse.java
generated
vendored
Normal file
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.protocol.TBinaryProtocol;
|
||||
import org.apache.thrift.protocol.TType;
|
||||
|
||||
import thrift.test.Reuse;
|
||||
|
||||
// Tests reusing objects for deserialization.
|
||||
//
|
||||
public class TestReuse extends TestStruct {
|
||||
|
||||
public void testReuseObject() throws Exception {
|
||||
TSerializer binarySerializer = new TSerializer(new TBinaryProtocol.Factory());
|
||||
TDeserializer binaryDeserializer = new TDeserializer(new TBinaryProtocol.Factory());
|
||||
|
||||
Reuse ru1 = new Reuse();
|
||||
HashSet<String> hs1 = new HashSet<String>();
|
||||
byte[] serBytes;
|
||||
String st1 = new String("string1");
|
||||
String st2 = new String("string2");
|
||||
|
||||
ru1.setVal1(11);
|
||||
ru1.setVal2(hs1);
|
||||
ru1.addToVal2(st1);
|
||||
|
||||
serBytes = binarySerializer.serialize(ru1);
|
||||
|
||||
// update hash set after serialization
|
||||
hs1.add(st2);
|
||||
|
||||
binaryDeserializer.deserialize(ru1, serBytes);
|
||||
|
||||
assertTrue( ru1.getVal2() == hs1 );
|
||||
assertTrue( hs1.size() == 2 );
|
||||
}
|
||||
|
||||
}
|
116
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestShortStack.java
generated
vendored
Normal file
116
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestShortStack.java
generated
vendored
Normal file
|
@ -0,0 +1,116 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift;
|
||||
|
||||
import java.util.Stack;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class TestShortStack extends TestCase {
|
||||
private static final int NUM_TRIALS = 5;
|
||||
private static final int NUM_REPS = 10000000;
|
||||
|
||||
public void testOps() throws Exception {
|
||||
ShortStack s = new ShortStack(10);
|
||||
s.push((short)10);
|
||||
s.push((short)11);
|
||||
s.push((short)12);
|
||||
assertEquals((short)12, s.peek());
|
||||
assertEquals((short)12, s.peek());
|
||||
assertEquals((short)12, s.pop());
|
||||
assertEquals((short)11, s.pop());
|
||||
s.push((short)40);
|
||||
assertEquals((short)40, s.peek());
|
||||
assertEquals((short)40, s.pop());
|
||||
assertEquals((short)10, s.peek());
|
||||
assertEquals((short)10, s.pop());
|
||||
try {
|
||||
s.peek();
|
||||
fail("should have thrown an exception!");
|
||||
} catch (Exception e) {
|
||||
// yay
|
||||
}
|
||||
|
||||
try {
|
||||
s.pop();
|
||||
fail("should have thrown an exception!");
|
||||
} catch (Exception e) {
|
||||
// yay
|
||||
}
|
||||
}
|
||||
|
||||
public void testGrow() throws Exception {
|
||||
ShortStack s = new ShortStack(1);
|
||||
s.push((short)1);
|
||||
s.push((short)1);
|
||||
s.push((short)1);
|
||||
s.push((short)1);
|
||||
s.push((short)1);
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
for (int trial = 0; trial < NUM_TRIALS; trial++) {
|
||||
long start = System.currentTimeMillis();
|
||||
ShortStack s = new ShortStack(10);
|
||||
for (int rep = 0; rep < NUM_REPS; rep++) {
|
||||
s.push((short)1);
|
||||
s.push((short)11);
|
||||
s.push((short)111);
|
||||
s.pop();
|
||||
s.pop();
|
||||
s.push((short)12);
|
||||
s.push((short)121);
|
||||
s.push((short)1211);
|
||||
s.push((short)12111);
|
||||
s.pop();
|
||||
s.pop();
|
||||
s.pop();
|
||||
s.pop();
|
||||
s.push((short)5);
|
||||
s.pop();
|
||||
s.pop();
|
||||
}
|
||||
long end = System.currentTimeMillis();
|
||||
System.out.println("ShortStack: " + (end-start));
|
||||
|
||||
start = System.currentTimeMillis();
|
||||
Stack<Short> stdStack = new Stack<Short>();
|
||||
for (int rep = 0; rep < NUM_REPS; rep++) {
|
||||
stdStack.push((short)1);
|
||||
stdStack.push((short)11);
|
||||
stdStack.push((short)111);
|
||||
stdStack.pop();
|
||||
stdStack.pop();
|
||||
stdStack.push((short)12);
|
||||
stdStack.push((short)121);
|
||||
stdStack.push((short)1211);
|
||||
stdStack.push((short)12111);
|
||||
stdStack.pop();
|
||||
stdStack.pop();
|
||||
stdStack.pop();
|
||||
stdStack.pop();
|
||||
stdStack.push((short)5);
|
||||
stdStack.pop();
|
||||
stdStack.pop();
|
||||
}
|
||||
end = System.currentTimeMillis();
|
||||
System.out.println("Built-in stack: " + (end-start));
|
||||
}
|
||||
}
|
||||
}
|
396
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestStruct.java
generated
vendored
Normal file
396
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestStruct.java
generated
vendored
Normal file
|
@ -0,0 +1,396 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.meta_data.FieldMetaData;
|
||||
import org.apache.thrift.meta_data.ListMetaData;
|
||||
import org.apache.thrift.meta_data.MapMetaData;
|
||||
import org.apache.thrift.meta_data.SetMetaData;
|
||||
import org.apache.thrift.meta_data.StructMetaData;
|
||||
import org.apache.thrift.protocol.TBinaryProtocol;
|
||||
import org.apache.thrift.protocol.TType;
|
||||
|
||||
import thrift.test.Bonk;
|
||||
import thrift.test.CrazyNesting;
|
||||
import thrift.test.HolyMoley;
|
||||
import thrift.test.Insanity;
|
||||
import thrift.test.JavaTestHelper;
|
||||
import thrift.test.Nesting;
|
||||
import thrift.test.Numberz;
|
||||
import thrift.test.OneOfEach;
|
||||
import thrift.test.StructA;
|
||||
import thrift.test.StructB;
|
||||
import thrift.test.Xtruct;
|
||||
|
||||
public class TestStruct extends TestCase {
|
||||
public void testIdentity() throws Exception {
|
||||
TSerializer binarySerializer = new TSerializer(new TBinaryProtocol.Factory());
|
||||
TDeserializer binaryDeserializer = new TDeserializer(new TBinaryProtocol.Factory());
|
||||
|
||||
OneOfEach ooe = Fixtures.oneOfEach;
|
||||
|
||||
Nesting n = new Nesting();
|
||||
n.my_ooe = ooe;
|
||||
n.my_ooe.integer16 = 16;
|
||||
n.my_ooe.integer32 = 32;
|
||||
n.my_ooe.integer64 = 64;
|
||||
n.my_ooe.double_precision = (Math.sqrt(5)+1)/2;
|
||||
n.my_ooe.some_characters = ":R (me going \"rrrr\")";
|
||||
n.my_ooe.zomg_unicode = "\u04c0\u216e\u039d\u0020\u041d\u03bf\u217f"+
|
||||
"\u043e\u0261\u0433\u0430\u03c1\u210e\u0020"+
|
||||
"\u0391\u0074\u0074\u03b1\u217d\u03ba\u01c3"+
|
||||
"\u203c";
|
||||
n.my_bonk = Fixtures.nesting.my_bonk;
|
||||
|
||||
HolyMoley hm = Fixtures.holyMoley;
|
||||
|
||||
OneOfEach ooe2 = new OneOfEach();
|
||||
binaryDeserializer.deserialize(
|
||||
ooe2,
|
||||
binarySerializer.serialize(ooe));
|
||||
|
||||
assertEquals(ooe, ooe2);
|
||||
assertEquals(ooe.hashCode(), ooe2.hashCode());
|
||||
|
||||
|
||||
Nesting n2 = new Nesting();
|
||||
binaryDeserializer.deserialize(
|
||||
n2,
|
||||
binarySerializer.serialize(n));
|
||||
|
||||
assertEquals(n, n2);
|
||||
assertEquals(n.hashCode(), n2.hashCode());
|
||||
|
||||
HolyMoley hm2 = new HolyMoley();
|
||||
binaryDeserializer.deserialize(
|
||||
hm2,
|
||||
binarySerializer.serialize(hm));
|
||||
|
||||
assertEquals(hm, hm2);
|
||||
assertEquals(hm.hashCode(), hm2.hashCode());
|
||||
}
|
||||
|
||||
public void testDeepCopy() throws Exception {
|
||||
TSerializer binarySerializer = new TSerializer(new TBinaryProtocol.Factory());
|
||||
TDeserializer binaryDeserializer = new TDeserializer(new TBinaryProtocol.Factory());
|
||||
|
||||
HolyMoley hm = Fixtures.holyMoley;
|
||||
|
||||
byte[] binaryCopy = binarySerializer.serialize(hm);
|
||||
HolyMoley hmCopy = new HolyMoley();
|
||||
binaryDeserializer.deserialize(hmCopy, binaryCopy);
|
||||
HolyMoley hmCopy2 = new HolyMoley(hm);
|
||||
|
||||
assertEquals(hm, hmCopy);
|
||||
assertEquals(hmCopy, hmCopy2);
|
||||
|
||||
// change binary value in original object
|
||||
hm.big.get(0).base64.array()[0]++;
|
||||
// make sure the change didn't propagate to the copied object
|
||||
assertFalse(hm.equals(hmCopy2));
|
||||
hm.big.get(0).base64.array()[0]--; // undo change
|
||||
|
||||
hmCopy2.bonks.get("two").get(1).message = "What else?";
|
||||
|
||||
assertFalse(hm.equals(hmCopy2));
|
||||
}
|
||||
|
||||
public void testCompareTo() throws Exception {
|
||||
Bonk bonk1 = new Bonk();
|
||||
Bonk bonk2 = new Bonk();
|
||||
|
||||
// Compare empty thrift objects.
|
||||
assertEquals(0, bonk1.compareTo(bonk2));
|
||||
|
||||
bonk1.setMessage("m");
|
||||
|
||||
// Compare one thrift object with a filled in field and another without it.
|
||||
assertTrue(bonk1.compareTo(bonk2) > 0);
|
||||
assertTrue(bonk2.compareTo(bonk1) < 0);
|
||||
|
||||
// Compare both have filled-in fields.
|
||||
bonk2.setMessage("z");
|
||||
assertTrue(bonk1.compareTo(bonk2) < 0);
|
||||
assertTrue(bonk2.compareTo(bonk1) > 0);
|
||||
|
||||
// Compare bonk1 has a field filled in that bonk2 doesn't.
|
||||
bonk1.setType(123);
|
||||
assertTrue(bonk1.compareTo(bonk2) > 0);
|
||||
assertTrue(bonk2.compareTo(bonk1) < 0);
|
||||
|
||||
// Compare bonk1 and bonk2 equal.
|
||||
bonk2.setType(123);
|
||||
bonk2.setMessage("m");
|
||||
assertEquals(0, bonk1.compareTo(bonk2));
|
||||
}
|
||||
|
||||
public void testCompareToWithDataStructures() {
|
||||
Insanity insanity1 = new Insanity();
|
||||
Insanity insanity2 = new Insanity();
|
||||
|
||||
// Both empty.
|
||||
expectEquals(insanity1, insanity2);
|
||||
|
||||
insanity1.setUserMap(new HashMap<Numberz, Long>());
|
||||
// insanity1.map = {}, insanity2.map = null
|
||||
expectGreaterThan(insanity1, insanity2);
|
||||
|
||||
// insanity1.map = {2:1}, insanity2.map = null
|
||||
insanity1.getUserMap().put(Numberz.TWO, 1l);
|
||||
expectGreaterThan(insanity1, insanity2);
|
||||
|
||||
// insanity1.map = {2:1}, insanity2.map = {}
|
||||
insanity2.setUserMap(new HashMap<Numberz, Long>());
|
||||
expectGreaterThan(insanity1, insanity2);
|
||||
|
||||
// insanity1.map = {2:1}, insanity2.map = {2:2}
|
||||
insanity2.getUserMap().put(Numberz.TWO, 2l);
|
||||
expectLessThan(insanity1, insanity2);
|
||||
|
||||
// insanity1.map = {2:1, 3:5}, insanity2.map = {2:2}
|
||||
insanity1.getUserMap().put(Numberz.THREE, 5l);
|
||||
expectGreaterThan(insanity1, insanity2);
|
||||
|
||||
// insanity1.map = {2:1, 3:5}, insanity2.map = {2:1, 4:5}
|
||||
insanity2.getUserMap().put(Numberz.TWO, 1l);
|
||||
insanity2.getUserMap().put(Numberz.FIVE, 5l);
|
||||
expectLessThan(insanity1, insanity2);
|
||||
}
|
||||
|
||||
private void expectLessThan(Insanity insanity1, Insanity insanity2) {
|
||||
int compareTo = insanity1.compareTo(insanity2);
|
||||
assertTrue(insanity1 + " should be less than " + insanity2 + ", but is: " + compareTo, compareTo < 0);
|
||||
}
|
||||
|
||||
private void expectGreaterThan(Insanity insanity1, Insanity insanity2) {
|
||||
int compareTo = insanity1.compareTo(insanity2);
|
||||
assertTrue(insanity1 + " should be greater than " + insanity2 + ", but is: " + compareTo, compareTo > 0);
|
||||
}
|
||||
|
||||
private void expectEquals(Insanity insanity1, Insanity insanity2) {
|
||||
int compareTo = insanity1.compareTo(insanity2);
|
||||
assertEquals(insanity1 + " should be equal to " + insanity2 + ", but is: " + compareTo, 0, compareTo);
|
||||
}
|
||||
|
||||
public void testMetaData() throws Exception {
|
||||
Map<CrazyNesting._Fields, FieldMetaData> mdMap = CrazyNesting.metaDataMap;
|
||||
|
||||
// Check for struct fields existence
|
||||
assertEquals(4, mdMap.size());
|
||||
assertTrue(mdMap.containsKey(CrazyNesting._Fields.SET_FIELD));
|
||||
assertTrue(mdMap.containsKey(CrazyNesting._Fields.LIST_FIELD));
|
||||
assertTrue(mdMap.containsKey(CrazyNesting._Fields.STRING_FIELD));
|
||||
assertTrue(mdMap.containsKey(CrazyNesting._Fields.BINARY_FIELD));
|
||||
|
||||
// Check for struct fields contents
|
||||
assertEquals("string_field", mdMap.get(CrazyNesting._Fields.STRING_FIELD).fieldName);
|
||||
assertEquals("list_field", mdMap.get(CrazyNesting._Fields.LIST_FIELD).fieldName);
|
||||
assertEquals("set_field", mdMap.get(CrazyNesting._Fields.SET_FIELD).fieldName);
|
||||
assertEquals("binary_field", mdMap.get(CrazyNesting._Fields.BINARY_FIELD).fieldName);
|
||||
|
||||
assertEquals(TFieldRequirementType.DEFAULT, mdMap.get(CrazyNesting._Fields.STRING_FIELD).requirementType);
|
||||
assertEquals(TFieldRequirementType.REQUIRED, mdMap.get(CrazyNesting._Fields.LIST_FIELD).requirementType);
|
||||
assertEquals(TFieldRequirementType.OPTIONAL, mdMap.get(CrazyNesting._Fields.SET_FIELD).requirementType);
|
||||
|
||||
assertEquals(TType.STRING, mdMap.get(CrazyNesting._Fields.STRING_FIELD).valueMetaData.type);
|
||||
assertFalse(mdMap.get(CrazyNesting._Fields.STRING_FIELD).valueMetaData.isBinary());
|
||||
assertEquals(TType.LIST, mdMap.get(CrazyNesting._Fields.LIST_FIELD).valueMetaData.type);
|
||||
assertEquals(TType.SET, mdMap.get(CrazyNesting._Fields.SET_FIELD).valueMetaData.type);
|
||||
assertEquals(TType.STRING, mdMap.get(CrazyNesting._Fields.BINARY_FIELD).valueMetaData.type);
|
||||
assertTrue(mdMap.get(CrazyNesting._Fields.BINARY_FIELD).valueMetaData.isBinary());
|
||||
|
||||
// Check nested structures
|
||||
assertTrue(mdMap.get(CrazyNesting._Fields.LIST_FIELD).valueMetaData.isContainer());
|
||||
|
||||
assertFalse(mdMap.get(CrazyNesting._Fields.LIST_FIELD).valueMetaData.isStruct());
|
||||
|
||||
assertEquals(TType.STRUCT, ((MapMetaData)((ListMetaData)((SetMetaData)((MapMetaData)((MapMetaData)((ListMetaData)mdMap.get(CrazyNesting._Fields.LIST_FIELD).valueMetaData).elemMetaData).valueMetaData).valueMetaData).elemMetaData).elemMetaData).keyMetaData.type);
|
||||
|
||||
assertEquals(Insanity.class, ((StructMetaData)((MapMetaData)((ListMetaData)((SetMetaData)((MapMetaData)((MapMetaData)((ListMetaData)mdMap.get(CrazyNesting._Fields.LIST_FIELD).valueMetaData).elemMetaData).valueMetaData).valueMetaData).elemMetaData).elemMetaData).keyMetaData).structClass);
|
||||
|
||||
// Check that FieldMetaData contains a map with metadata for all generated struct classes
|
||||
assertNotNull(FieldMetaData.getStructMetaDataMap(CrazyNesting.class));
|
||||
assertNotNull(FieldMetaData.getStructMetaDataMap(Insanity.class));
|
||||
assertNotNull(FieldMetaData.getStructMetaDataMap(Xtruct.class));
|
||||
|
||||
assertEquals(CrazyNesting.metaDataMap, FieldMetaData.getStructMetaDataMap(CrazyNesting.class));
|
||||
assertEquals(Insanity.metaDataMap, FieldMetaData.getStructMetaDataMap(Insanity.class));
|
||||
|
||||
for (Map.Entry<? extends TFieldIdEnum, FieldMetaData> mdEntry : mdMap.entrySet()) {
|
||||
assertEquals(mdEntry.getKey(), CrazyNesting._Fields.findByName(mdEntry.getValue().fieldName));
|
||||
}
|
||||
|
||||
MapMetaData vmd = (MapMetaData)Insanity.metaDataMap.get(Insanity._Fields.USER_MAP).valueMetaData;
|
||||
assertTrue(vmd.valueMetaData.isTypedef());
|
||||
assertFalse(vmd.keyMetaData.isTypedef());
|
||||
}
|
||||
|
||||
public void testToString() throws Exception {
|
||||
JavaTestHelper object = new JavaTestHelper();
|
||||
object.req_int = 0;
|
||||
object.req_obj = "";
|
||||
|
||||
object.req_bin = ByteBuffer.wrap(new byte[] {
|
||||
0, -1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, -13, 14, -15,
|
||||
16, -17, 18, -19, 20, -21, 22, -23, 24, -25, 26, -27, 28, -29,
|
||||
30, -31, 32, -33, 34, -35, 36, -37, 38, -39, 40, -41, 42, -43, 44,
|
||||
-45, 46, -47, 48, -49, 50, -51, 52, -53, 54, -55, 56, -57, 58, -59,
|
||||
60, -61, 62, -63, 64, -65, 66, -67, 68, -69, 70, -71, 72, -73, 74,
|
||||
-75, 76, -77, 78, -79, 80, -81, 82, -83, 84, -85, 86, -87, 88, -89,
|
||||
90, -91, 92, -93, 94, -95, 96, -97, 98, -99, 100, -101, 102, -103,
|
||||
104, -105, 106, -107, 108, -109, 110, -111, 112, -113, 114, -115,
|
||||
116, -117, 118, -119, 120, -121, 122, -123, 124, -125, 126, -127,
|
||||
});
|
||||
|
||||
assertEquals("JavaTestHelper(req_int:0, req_obj:, req_bin:"+
|
||||
"00 FF 02 FD 04 FB 06 F9 08 F7 0A F5 0C F3 0E F1 10 EF 12 ED 14 "+
|
||||
"EB 16 E9 18 E7 1A E5 1C E3 1E E1 20 DF 22 DD 24 DB 26 D9 28 D7 "+
|
||||
"2A D5 2C D3 2E D1 30 CF 32 CD 34 CB 36 C9 38 C7 3A C5 3C C3 3E "+
|
||||
"C1 40 BF 42 BD 44 BB 46 B9 48 B7 4A B5 4C B3 4E B1 50 AF 52 AD "+
|
||||
"54 AB 56 A9 58 A7 5A A5 5C A3 5E A1 60 9F 62 9D 64 9B 66 99 68 "+
|
||||
"97 6A 95 6C 93 6E 91 70 8F 72 8D 74 8B 76 89 78 87 7A 85 7C 83 "+
|
||||
"7E 81)",
|
||||
object.toString());
|
||||
|
||||
object.req_bin = ByteBuffer.wrap(new byte[] {
|
||||
0, -1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, -13, 14, -15,
|
||||
16, -17, 18, -19, 20, -21, 22, -23, 24, -25, 26, -27, 28, -29,
|
||||
30, -31, 32, -33, 34, -35, 36, -37, 38, -39, 40, -41, 42, -43, 44,
|
||||
-45, 46, -47, 48, -49, 50, -51, 52, -53, 54, -55, 56, -57, 58, -59,
|
||||
60, -61, 62, -63, 64, -65, 66, -67, 68, -69, 70, -71, 72, -73, 74,
|
||||
-75, 76, -77, 78, -79, 80, -81, 82, -83, 84, -85, 86, -87, 88, -89,
|
||||
90, -91, 92, -93, 94, -95, 96, -97, 98, -99, 100, -101, 102, -103,
|
||||
104, -105, 106, -107, 108, -109, 110, -111, 112, -113, 114, -115,
|
||||
116, -117, 118, -119, 120, -121, 122, -123, 124, -125, 126, -127,
|
||||
0,
|
||||
});
|
||||
|
||||
assertEquals("JavaTestHelper(req_int:0, req_obj:, req_bin:"+
|
||||
"00 FF 02 FD 04 FB 06 F9 08 F7 0A F5 0C F3 0E F1 10 EF 12 ED 14 "+
|
||||
"EB 16 E9 18 E7 1A E5 1C E3 1E E1 20 DF 22 DD 24 DB 26 D9 28 D7 "+
|
||||
"2A D5 2C D3 2E D1 30 CF 32 CD 34 CB 36 C9 38 C7 3A C5 3C C3 3E "+
|
||||
"C1 40 BF 42 BD 44 BB 46 B9 48 B7 4A B5 4C B3 4E B1 50 AF 52 AD "+
|
||||
"54 AB 56 A9 58 A7 5A A5 5C A3 5E A1 60 9F 62 9D 64 9B 66 99 68 "+
|
||||
"97 6A 95 6C 93 6E 91 70 8F 72 8D 74 8B 76 89 78 87 7A 85 7C 83 "+
|
||||
"7E 81...)",
|
||||
object.toString());
|
||||
|
||||
object.req_bin = ByteBuffer.wrap(new byte[] {});
|
||||
object.setOpt_binIsSet(true);
|
||||
|
||||
assertEquals("JavaTestHelper(req_int:0, req_obj:, req_bin:)",
|
||||
object.toString());
|
||||
}
|
||||
|
||||
private static void assertArrayEquals(byte[] expected, byte[] actual) {
|
||||
if (!java.util.Arrays.equals(expected, actual)) {
|
||||
fail("Expected byte array did not match actual.");
|
||||
}
|
||||
}
|
||||
|
||||
public void testBytesBufferFeatures() throws Exception {
|
||||
|
||||
final String testString = "testBytesBufferFeatures";
|
||||
final JavaTestHelper o = new JavaTestHelper();
|
||||
|
||||
o.setReq_bin((ByteBuffer)null);
|
||||
assertNull(o.getReq_bin());
|
||||
|
||||
o.setReq_bin(ByteBuffer.wrap(testString.getBytes()));
|
||||
assertArrayEquals(testString.getBytes(), o.getReq_bin());
|
||||
|
||||
o.setReq_bin((byte[])null);
|
||||
assertNull(o.getReq_bin());
|
||||
|
||||
o.setReq_bin(testString.getBytes());
|
||||
assertArrayEquals(testString.getBytes(), o.getReq_bin());
|
||||
|
||||
o.setFieldValue(JavaTestHelper._Fields.REQ_BIN, null);
|
||||
assertNull(o.getReq_bin());
|
||||
|
||||
o.setFieldValue(JavaTestHelper._Fields.REQ_BIN, testString.getBytes());
|
||||
assertArrayEquals(testString.getBytes(), o.getReq_bin());
|
||||
|
||||
o.setFieldValue(JavaTestHelper._Fields.REQ_BIN, null);
|
||||
assertNull(o.getReq_bin());
|
||||
|
||||
o.setFieldValue(JavaTestHelper._Fields.REQ_BIN, ByteBuffer.wrap(testString.getBytes()));
|
||||
assertArrayEquals(testString.getBytes(), o.getReq_bin());
|
||||
}
|
||||
|
||||
public void testJavaSerializable() throws Exception {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
ObjectOutputStream oos = new ObjectOutputStream(baos);
|
||||
|
||||
OneOfEach ooe = Fixtures.oneOfEach;
|
||||
|
||||
// Serialize ooe the Java way...
|
||||
oos.writeObject(ooe);
|
||||
byte[] serialized = baos.toByteArray();
|
||||
|
||||
// Attempt to deserialize it
|
||||
ByteArrayInputStream bais = new ByteArrayInputStream(serialized);
|
||||
ObjectInputStream ois = new ObjectInputStream(bais);
|
||||
OneOfEach ooe2 = (OneOfEach) ois.readObject();
|
||||
|
||||
assertEquals(ooe, ooe2);
|
||||
}
|
||||
|
||||
public void testSubStructValidation() throws Exception {
|
||||
StructA valid = new StructA("valid");
|
||||
StructA invalid = new StructA();
|
||||
|
||||
StructB b = new StructB();
|
||||
try {
|
||||
b.validate();
|
||||
fail();
|
||||
} catch (TException e) {
|
||||
// expected
|
||||
}
|
||||
|
||||
b = new StructB().setAb(valid);
|
||||
b.validate();
|
||||
|
||||
b = new StructB().setAb(invalid);
|
||||
try {
|
||||
b.validate();
|
||||
fail();
|
||||
} catch (TException e) {
|
||||
// expected
|
||||
}
|
||||
|
||||
b = new StructB().setAb(valid).setAa(invalid);
|
||||
try {
|
||||
b.validate();
|
||||
fail();
|
||||
} catch (TException e) {
|
||||
// expected
|
||||
}
|
||||
}
|
||||
}
|
209
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestTBaseHelper.java
generated
vendored
Normal file
209
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestTBaseHelper.java
generated
vendored
Normal file
|
@ -0,0 +1,209 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class TestTBaseHelper extends TestCase {
|
||||
public void testByteArrayComparison() {
|
||||
assertTrue(TBaseHelper.compareTo(new byte[]{'a','b'}, new byte[]{'a','c'}) < 0);
|
||||
}
|
||||
|
||||
public void testSets() {
|
||||
Set<String> a = new HashSet<String>();
|
||||
Set<String> b = new HashSet<String>();
|
||||
|
||||
assertTrue(TBaseHelper.compareTo(a, b) == 0);
|
||||
|
||||
a.add("test");
|
||||
|
||||
assertTrue(TBaseHelper.compareTo(a, b) > 0);
|
||||
|
||||
b.add("test");
|
||||
|
||||
assertTrue(TBaseHelper.compareTo(a, b) == 0);
|
||||
|
||||
b.add("aardvark");
|
||||
|
||||
assertTrue(TBaseHelper.compareTo(a, b) < 0);
|
||||
|
||||
a.add("test2");
|
||||
|
||||
assertTrue(TBaseHelper.compareTo(a, b) > 0);
|
||||
}
|
||||
|
||||
public void testNestedStructures() {
|
||||
Set<List<String>> a = new HashSet<List<String>>();
|
||||
Set<List<String>> b = new HashSet<List<String>>();
|
||||
|
||||
a.add(Arrays.asList(new String[] {"a","b"}));
|
||||
b.add(Arrays.asList(new String[] {"a","b", "c"}));
|
||||
a.add(Arrays.asList(new String[] {"a","b"}));
|
||||
b.add(Arrays.asList(new String[] {"a","b", "c"}));
|
||||
|
||||
assertTrue(TBaseHelper.compareTo(a, b) < 0);
|
||||
}
|
||||
|
||||
public void testMapsInSets() {
|
||||
Set<Map<String, Long>> a = new HashSet<Map<String, Long>>();
|
||||
Set<Map<String, Long>> b = new HashSet<Map<String, Long>>();
|
||||
|
||||
assertTrue(TBaseHelper.compareTo(a, b) == 0);
|
||||
|
||||
Map<String, Long> innerA = new HashMap<String, Long>();
|
||||
Map<String, Long> innerB = new HashMap<String, Long>();
|
||||
a.add(innerA);
|
||||
b.add(innerB);
|
||||
|
||||
innerA.put("a", 1l);
|
||||
innerB.put("a", 2l);
|
||||
|
||||
assertTrue(TBaseHelper.compareTo(a, b) < 0);
|
||||
}
|
||||
|
||||
public void testByteArraysInMaps() {
|
||||
Map<byte[], Long> a = new HashMap<byte[], Long>();
|
||||
Map<byte[], Long> b = new HashMap<byte[], Long>();
|
||||
|
||||
assertTrue(TBaseHelper.compareTo(a, b) == 0);
|
||||
|
||||
a.put(new byte[]{'a','b'}, 1000L);
|
||||
b.put(new byte[]{'a','b'}, 1000L);
|
||||
a.put(new byte[]{'a','b', 'd'}, 1000L);
|
||||
b.put(new byte[]{'a','b', 'a'}, 1000L);
|
||||
assertTrue(TBaseHelper.compareTo(a, b) > 0);
|
||||
}
|
||||
|
||||
public void testMapsWithNulls() {
|
||||
Map<String, String> a = new HashMap<String, String>();
|
||||
Map<String, String> b = new HashMap<String, String>();
|
||||
a.put("a", null);
|
||||
a.put("b", null);
|
||||
b.put("a", null);
|
||||
b.put("b", null);
|
||||
|
||||
assertTrue(TBaseHelper.compareTo(a, b) == 0);
|
||||
}
|
||||
|
||||
public void testMapKeyComparison() {
|
||||
Map<String, String> a = new HashMap<String, String>();
|
||||
Map<String, String> b = new HashMap<String, String>();
|
||||
a.put("a", "a");
|
||||
b.put("b", "a");
|
||||
|
||||
assertTrue(TBaseHelper.compareTo(a, b) < 0);
|
||||
}
|
||||
|
||||
public void testMapValueComparison() {
|
||||
Map<String, String> a = new HashMap<String, String>();
|
||||
Map<String, String> b = new HashMap<String, String>();
|
||||
a.put("a", "b");
|
||||
b.put("a", "a");
|
||||
|
||||
assertTrue(TBaseHelper.compareTo(a, b) > 0);
|
||||
}
|
||||
|
||||
public void testByteArraysInSets() {
|
||||
Set<byte[]> a = new HashSet<byte[]>();
|
||||
Set<byte[]> b = new HashSet<byte[]>();
|
||||
|
||||
if (TBaseHelper.compareTo(a, b) != 0)
|
||||
throw new RuntimeException("Set compare failed:" + a + " vs. " + b);
|
||||
|
||||
a.add(new byte[]{'a','b'});
|
||||
b.add(new byte[]{'a','b'});
|
||||
a.add(new byte[]{'a','b', 'd'});
|
||||
b.add(new byte[]{'a','b', 'a'});
|
||||
assertTrue(TBaseHelper.compareTo(a, b) > 0);
|
||||
}
|
||||
|
||||
public void testByteBufferToByteArray() throws Exception {
|
||||
byte[] b1 = {10,9,8,7,6,5,4,3,2,1,0};
|
||||
byte[] b2 = TBaseHelper.byteBufferToByteArray(ByteBuffer.wrap(b1));
|
||||
assertEquals("b1 and b2 should be the exact same array (identity) due to fast path", b1, b2);
|
||||
|
||||
byte[] b3 = TBaseHelper.byteBufferToByteArray(ByteBuffer.wrap(b1, 1, 3));
|
||||
assertEquals(3, b3.length);
|
||||
assertEquals(ByteBuffer.wrap(b1, 1, 3), ByteBuffer.wrap(b3));
|
||||
}
|
||||
|
||||
public void testRightSize() throws Exception {
|
||||
assertNull(TBaseHelper.rightSize(null));
|
||||
}
|
||||
|
||||
public void testByteBufferToString() {
|
||||
byte[] array = new byte[]{1, 2, 3};
|
||||
ByteBuffer bb = ByteBuffer.wrap(array, 1, 2);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
TBaseHelper.toString(bb, sb);
|
||||
assertEquals("02 03", sb.toString());
|
||||
bb = ByteBuffer.wrap(array, 0, array.length);
|
||||
bb.position(1);
|
||||
bb = bb.slice();
|
||||
assertEquals(1, bb.arrayOffset());
|
||||
assertEquals(0, bb.position());
|
||||
assertEquals(2, bb.limit());
|
||||
sb = new StringBuilder();
|
||||
TBaseHelper.toString(bb, sb);
|
||||
assertEquals("02 03", sb.toString());
|
||||
}
|
||||
|
||||
public void testCopyBinaryWithByteBuffer() throws Exception {
|
||||
byte[] bytes = new byte[]{0, 1, 2, 3, 4, 5};
|
||||
ByteBuffer b = ByteBuffer.wrap(bytes);
|
||||
ByteBuffer bCopy = TBaseHelper.copyBinary(b);
|
||||
assertEquals(b, bCopy);
|
||||
assertEquals(0, b.position());
|
||||
|
||||
b = ByteBuffer.allocateDirect(6);
|
||||
b.put(bytes);
|
||||
b.position(0);
|
||||
bCopy = TBaseHelper.copyBinary(b);
|
||||
assertEquals(6, b.remaining());
|
||||
assertEquals(0, b.position());
|
||||
assertEquals(b, bCopy);
|
||||
|
||||
b.mark();
|
||||
b.get();
|
||||
bCopy = TBaseHelper.copyBinary(b);
|
||||
assertEquals(ByteBuffer.wrap(bytes, 1, 5), bCopy);
|
||||
assertEquals(1, b.position());
|
||||
b.reset();
|
||||
assertEquals(0, b.position());
|
||||
|
||||
assertNull(TBaseHelper.copyBinary((ByteBuffer)null));
|
||||
}
|
||||
|
||||
public void testCopyBinaryWithByteArray() throws Exception {
|
||||
byte[] bytes = new byte[]{0, 1, 2, 3, 4, 5};
|
||||
byte[] copy = TBaseHelper.copyBinary(bytes);
|
||||
assertEquals(ByteBuffer.wrap(bytes), ByteBuffer.wrap(copy));
|
||||
assertNotSame(bytes, copy);
|
||||
|
||||
assertNull(TBaseHelper.copyBinary((byte[])null));
|
||||
}
|
||||
}
|
126
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestTDeserializer.java
generated
vendored
Normal file
126
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestTDeserializer.java
generated
vendored
Normal file
|
@ -0,0 +1,126 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.protocol.TBinaryProtocol;
|
||||
import org.apache.thrift.protocol.TCompactProtocol;
|
||||
import org.apache.thrift.protocol.TJSONProtocol;
|
||||
import org.apache.thrift.protocol.TProtocolFactory;
|
||||
|
||||
import thrift.test.Backwards;
|
||||
import thrift.test.OneOfEach;
|
||||
import thrift.test.PrimitiveThenStruct;
|
||||
import thrift.test.StructWithAUnion;
|
||||
import thrift.test.TestUnion;
|
||||
|
||||
public class TestTDeserializer extends TestCase {
|
||||
|
||||
private static final TProtocolFactory[] PROTOCOLS = new TProtocolFactory[] {
|
||||
new TBinaryProtocol.Factory(),
|
||||
new TCompactProtocol.Factory(),
|
||||
new TJSONProtocol.Factory()
|
||||
};
|
||||
|
||||
public void testPartialDeserialize() throws Exception {
|
||||
//Root:StructWithAUnion
|
||||
// 1:Union
|
||||
// 1.3:OneOfEach
|
||||
OneOfEach level3OneOfEach = Fixtures.oneOfEach;
|
||||
TestUnion level2TestUnion = new TestUnion(TestUnion._Fields.STRUCT_FIELD, level3OneOfEach);
|
||||
StructWithAUnion level1SWU = new StructWithAUnion(level2TestUnion);
|
||||
|
||||
Backwards bw = new Backwards(2, 1);
|
||||
PrimitiveThenStruct pts = new PrimitiveThenStruct(12345, 67890, bw);
|
||||
|
||||
for (TProtocolFactory factory : PROTOCOLS) {
|
||||
|
||||
//Level 2 test
|
||||
testPartialDeserialize(factory, level1SWU, new TestUnion(), level2TestUnion, StructWithAUnion._Fields.TEST_UNION);
|
||||
|
||||
//Level 3 on 3rd field test
|
||||
testPartialDeserialize(factory, level1SWU, new OneOfEach(), level3OneOfEach, StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.STRUCT_FIELD);
|
||||
|
||||
//Test early termination when traversed path Field.id exceeds the one being searched for
|
||||
testPartialDeserialize(factory, level1SWU, new OneOfEach(), new OneOfEach(), StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.I32_FIELD);
|
||||
|
||||
//Test that readStructBegin isn't called on primitive
|
||||
testPartialDeserialize(factory, pts, new Backwards(), bw, PrimitiveThenStruct._Fields.BW);
|
||||
|
||||
//Test primitive types
|
||||
TDeserializer deserializer = new TDeserializer(factory);
|
||||
|
||||
Boolean expectedBool = level3OneOfEach.isIm_true();
|
||||
Boolean resultBool = deserializer.partialDeserializeBool(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.STRUCT_FIELD, OneOfEach._Fields.IM_TRUE);
|
||||
assertEquals(expectedBool, resultBool);
|
||||
|
||||
Byte expectedByte = level3OneOfEach.getA_bite();
|
||||
Byte resultByte = deserializer.partialDeserializeByte(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.STRUCT_FIELD, OneOfEach._Fields.A_BITE);
|
||||
assertEquals(expectedByte, resultByte);
|
||||
|
||||
Double expectedDouble = level3OneOfEach.getDouble_precision();
|
||||
Double resultDouble = deserializer.partialDeserializeDouble(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.STRUCT_FIELD, OneOfEach._Fields.DOUBLE_PRECISION);
|
||||
assertEquals(expectedDouble, resultDouble);
|
||||
|
||||
Short expectedI16 = level3OneOfEach.getInteger16();
|
||||
Short resultI16 = deserializer.partialDeserializeI16(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.STRUCT_FIELD, OneOfEach._Fields.INTEGER16);
|
||||
assertEquals(expectedI16, resultI16);
|
||||
|
||||
Integer expectedI32 = level3OneOfEach.getInteger32();
|
||||
Integer resultI32 = deserializer.partialDeserializeI32(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.STRUCT_FIELD, OneOfEach._Fields.INTEGER32);
|
||||
assertEquals(expectedI32, resultI32);
|
||||
|
||||
Long expectedI64 = level3OneOfEach.getInteger64();
|
||||
Long resultI64= deserializer.partialDeserializeI64(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.STRUCT_FIELD, OneOfEach._Fields.INTEGER64);
|
||||
assertEquals(expectedI64, resultI64);
|
||||
|
||||
String expectedString = level3OneOfEach.getSome_characters();
|
||||
String resultString = deserializer.partialDeserializeString(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.STRUCT_FIELD, OneOfEach._Fields.SOME_CHARACTERS);
|
||||
assertEquals(expectedString, resultString);
|
||||
|
||||
byte[] expectedBinary = level3OneOfEach.getBase64();
|
||||
ByteBuffer resultBinary = deserializer.partialDeserializeByteArray(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION, TestUnion._Fields.STRUCT_FIELD, OneOfEach._Fields.BASE64);
|
||||
assertEquals(expectedBinary.length, resultBinary.limit() - resultBinary.position() - resultBinary.arrayOffset());
|
||||
assertEquals(ByteBuffer.wrap(expectedBinary), resultBinary);
|
||||
|
||||
// Test field id in Union
|
||||
short id = deserializer.partialDeserializeSetFieldIdInUnion(serialize(level1SWU, factory), StructWithAUnion._Fields.TEST_UNION);
|
||||
assertEquals(level2TestUnion.getSetField().getThriftFieldId(), id);
|
||||
}
|
||||
}
|
||||
|
||||
public static void testPartialDeserialize(TProtocolFactory protocolFactory, TBase input, TBase output, TBase expected, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
|
||||
byte[] record = serialize(input, protocolFactory);
|
||||
TDeserializer deserializer = new TDeserializer(protocolFactory);
|
||||
for (int i = 0; i < 2; i++) {
|
||||
TBase outputCopy = output.deepCopy();
|
||||
deserializer.partialDeserialize(outputCopy, record, fieldIdPathFirst, fieldIdPathRest);
|
||||
assertEquals("on attempt " + i + ", with " + protocolFactory.toString()
|
||||
+ ", expected " + expected + " but got " + outputCopy,
|
||||
expected, outputCopy);
|
||||
}
|
||||
}
|
||||
|
||||
private static byte[] serialize(TBase input, TProtocolFactory protocolFactory) throws TException{
|
||||
return new TSerializer(protocolFactory).serialize(input);
|
||||
}
|
||||
}
|
41
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestTEnumHelper.java
generated
vendored
Normal file
41
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestTEnumHelper.java
generated
vendored
Normal file
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift;
|
||||
|
||||
import thrift.test.Numberz;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class TestTEnumHelper extends TestCase {
|
||||
|
||||
public void testGetByValue_ValidValues() {
|
||||
for (Numberz n: Numberz.values()) {
|
||||
int value = n.getValue();
|
||||
assertEquals(n, TEnumHelper.getByValue(Numberz.class, value));
|
||||
}
|
||||
}
|
||||
|
||||
public void testGetByValue_InvalidValue() {
|
||||
assertEquals(null, TEnumHelper.getByValue(Numberz.class, 0));
|
||||
}
|
||||
|
||||
public void testGetByValue_InvalidClass() {
|
||||
assertEquals(null, TEnumHelper.getByValue(TEnum.class, 0));
|
||||
}
|
||||
}
|
268
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestTUnion.java
generated
vendored
Normal file
268
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/TestTUnion.java
generated
vendored
Normal file
|
@ -0,0 +1,268 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.protocol.TBinaryProtocol;
|
||||
import org.apache.thrift.protocol.TProtocol;
|
||||
import org.apache.thrift.protocol.TTupleProtocol;
|
||||
import org.apache.thrift.transport.TMemoryBuffer;
|
||||
|
||||
import thrift.test.ComparableUnion;
|
||||
import thrift.test.Empty;
|
||||
import thrift.test.RandomStuff;
|
||||
import thrift.test.SomeEnum;
|
||||
import thrift.test.StructWithAUnion;
|
||||
import thrift.test.TestUnion;
|
||||
import thrift.test.TestUnionMinusStringField;
|
||||
|
||||
public class TestTUnion extends TestCase {
|
||||
|
||||
public void testBasic() throws Exception {
|
||||
TestUnion union = new TestUnion();
|
||||
|
||||
assertFalse(union.isSet());
|
||||
assertFalse(union.isSetI32_field());
|
||||
assertNull(union.getFieldValue());
|
||||
|
||||
union = new TestUnion(TestUnion._Fields.I32_FIELD, 25);
|
||||
|
||||
assertEquals(Integer.valueOf(25), union.getFieldValue());
|
||||
|
||||
assertEquals(Integer.valueOf(25), union.getFieldValue(TestUnion._Fields.I32_FIELD));
|
||||
|
||||
assertTrue(union.isSetI32_field());
|
||||
|
||||
try {
|
||||
union.getFieldValue(TestUnion._Fields.STRING_FIELD);
|
||||
fail("should have thrown an exception");
|
||||
} catch (IllegalArgumentException e) {
|
||||
// cool!
|
||||
}
|
||||
|
||||
union = new TestUnion();
|
||||
|
||||
// should not throw an exception here
|
||||
union.hashCode();
|
||||
|
||||
union.setI32_field(1);
|
||||
assertEquals(1, union.getI32_field());
|
||||
union.hashCode();
|
||||
|
||||
assertFalse(union.isSetString_field());
|
||||
|
||||
try {
|
||||
union.getString_field();
|
||||
fail("should have thrown an exception");
|
||||
} catch (Exception e) {
|
||||
// sweet
|
||||
}
|
||||
|
||||
union = TestUnion.i32_field(1);
|
||||
|
||||
assertFalse(union.equals((TestUnion)null));
|
||||
|
||||
union = TestUnion.enum_field(SomeEnum.ONE);
|
||||
union.hashCode();
|
||||
|
||||
union = new TestUnion();
|
||||
// should not throw an exception
|
||||
union.toString();
|
||||
}
|
||||
|
||||
public void testCompareTo() throws Exception {
|
||||
ComparableUnion cu = ComparableUnion.string_field("a");
|
||||
ComparableUnion cu2 = ComparableUnion.string_field("b");
|
||||
|
||||
assertTrue(cu.compareTo(cu) == 0);
|
||||
assertTrue(cu2.compareTo(cu2) == 0);
|
||||
|
||||
assertTrue(cu.compareTo(cu2) < 0);
|
||||
assertTrue(cu2.compareTo(cu) > 0);
|
||||
|
||||
cu2 = ComparableUnion.binary_field(ByteBuffer.wrap(new byte[]{2}));
|
||||
|
||||
assertTrue(cu.compareTo(cu2) < 0);
|
||||
assertTrue(cu2.compareTo(cu) > 0);
|
||||
|
||||
cu = ComparableUnion.binary_field(ByteBuffer.wrap(new byte[]{1}));
|
||||
|
||||
assertTrue(cu.compareTo(cu2) < 0);
|
||||
assertTrue(cu2.compareTo(cu) > 0);
|
||||
|
||||
TestUnion union1 = new TestUnion(TestUnion._Fields.STRUCT_LIST, new ArrayList<RandomStuff>());
|
||||
TestUnion union2 = new TestUnion(TestUnion._Fields.STRUCT_LIST, new ArrayList<RandomStuff>());
|
||||
assertTrue(union1.compareTo(union2) == 0);
|
||||
|
||||
TestUnion union3 = new TestUnion(TestUnion._Fields.I32_SET, new HashSet<Integer>());
|
||||
Set<Integer> i32_set = new HashSet<Integer>();
|
||||
i32_set.add(1);
|
||||
TestUnion union4 = new TestUnion(TestUnion._Fields.I32_SET, i32_set);
|
||||
assertTrue(union3.compareTo(union4) < 0);
|
||||
|
||||
Map<Integer, Integer> i32_map = new HashMap<Integer, Integer>();
|
||||
i32_map.put(1,1);
|
||||
TestUnion union5 = new TestUnion(TestUnion._Fields.I32_MAP, i32_map);
|
||||
TestUnion union6 = new TestUnion(TestUnion._Fields.I32_MAP, new HashMap<Integer, Integer>());
|
||||
assertTrue(union5.compareTo(union6) > 0);
|
||||
}
|
||||
|
||||
public void testEquality() throws Exception {
|
||||
TestUnion union = new TestUnion(TestUnion._Fields.I32_FIELD, 25);
|
||||
|
||||
TestUnion otherUnion = new TestUnion(TestUnion._Fields.STRING_FIELD, "blah!!!");
|
||||
|
||||
assertFalse(union.equals(otherUnion));
|
||||
|
||||
otherUnion = new TestUnion(TestUnion._Fields.I32_FIELD, 400);
|
||||
|
||||
assertFalse(union.equals(otherUnion));
|
||||
|
||||
otherUnion = new TestUnion(TestUnion._Fields.OTHER_I32_FIELD, 25);
|
||||
|
||||
assertFalse(union.equals(otherUnion));
|
||||
}
|
||||
|
||||
public void testSerialization() throws Exception {
|
||||
TestUnion union = new TestUnion(TestUnion._Fields.I32_FIELD, 25);
|
||||
union.setI32_set(Collections.singleton(42));
|
||||
|
||||
TMemoryBuffer buf = new TMemoryBuffer(0);
|
||||
TProtocol proto = new TBinaryProtocol(buf);
|
||||
|
||||
union.write(proto);
|
||||
|
||||
TestUnion u2 = new TestUnion();
|
||||
|
||||
u2.read(proto);
|
||||
|
||||
assertEquals(u2, union);
|
||||
|
||||
StructWithAUnion swau = new StructWithAUnion(u2);
|
||||
|
||||
buf = new TMemoryBuffer(0);
|
||||
proto = new TBinaryProtocol(buf);
|
||||
|
||||
swau.write(proto);
|
||||
|
||||
StructWithAUnion swau2 = new StructWithAUnion();
|
||||
assertFalse(swau2.equals(swau));
|
||||
swau2.read(proto);
|
||||
assertEquals(swau2, swau);
|
||||
|
||||
// this should NOT throw an exception.
|
||||
buf = new TMemoryBuffer(0);
|
||||
proto = new TBinaryProtocol(buf);
|
||||
|
||||
swau.write(proto);
|
||||
new Empty().read(proto);
|
||||
}
|
||||
|
||||
public void testTupleProtocolSerialization () throws Exception {
|
||||
TestUnion union = new TestUnion(TestUnion._Fields.I32_FIELD, 25);
|
||||
union.setI32_set(Collections.singleton(42));
|
||||
|
||||
TMemoryBuffer buf = new TMemoryBuffer(0);
|
||||
TProtocol proto = new TTupleProtocol(buf);
|
||||
|
||||
union.write(proto);
|
||||
|
||||
TestUnion u2 = new TestUnion();
|
||||
|
||||
u2.read(proto);
|
||||
|
||||
assertEquals(u2, union);
|
||||
|
||||
StructWithAUnion swau = new StructWithAUnion(u2);
|
||||
|
||||
buf = new TMemoryBuffer(0);
|
||||
proto = new TBinaryProtocol(buf);
|
||||
|
||||
swau.write(proto);
|
||||
|
||||
StructWithAUnion swau2 = new StructWithAUnion();
|
||||
assertFalse(swau2.equals(swau));
|
||||
swau2.read(proto);
|
||||
assertEquals(swau2, swau);
|
||||
|
||||
// this should NOT throw an exception.
|
||||
buf = new TMemoryBuffer(0);
|
||||
proto = new TTupleProtocol(buf);
|
||||
|
||||
swau.write(proto);
|
||||
new Empty().read(proto);
|
||||
}
|
||||
|
||||
public void testSkip() throws Exception {
|
||||
TestUnion tu = TestUnion.string_field("string");
|
||||
byte[] tuSerialized = new TSerializer().serialize(tu);
|
||||
TestUnionMinusStringField tums = new TestUnionMinusStringField();
|
||||
new TDeserializer().deserialize(tums, tuSerialized);
|
||||
assertNull(tums.getSetField());
|
||||
assertNull(tums.getFieldValue());
|
||||
}
|
||||
|
||||
public void testDeepCopy() throws Exception {
|
||||
byte[] bytes = {1, 2, 3};
|
||||
ByteBuffer value = ByteBuffer.wrap(bytes);
|
||||
ComparableUnion cu = ComparableUnion.binary_field(value);
|
||||
ComparableUnion copy = cu.deepCopy();
|
||||
assertEquals(cu, copy);
|
||||
assertNotSame(cu.bufferForBinary_field().array(), copy.bufferForBinary_field().array());
|
||||
}
|
||||
|
||||
public void testToString() throws Exception {
|
||||
byte[] bytes = {1, 2, 3};
|
||||
ByteBuffer value = ByteBuffer.wrap(bytes);
|
||||
ComparableUnion cu = ComparableUnion.binary_field(value);
|
||||
String expectedString = "<ComparableUnion binary_field:01 02 03>";
|
||||
assertEquals(expectedString, cu.toString());
|
||||
}
|
||||
|
||||
public void testJavaSerializable() throws Exception {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
ObjectOutputStream oos = new ObjectOutputStream(baos);
|
||||
|
||||
TestUnion tu = TestUnion.string_field("string");
|
||||
|
||||
// Serialize tu the Java way...
|
||||
oos.writeObject(tu);
|
||||
byte[] serialized = baos.toByteArray();
|
||||
|
||||
// Attempt to deserialize it
|
||||
ByteArrayInputStream bais = new ByteArrayInputStream(serialized);
|
||||
ObjectInputStream ois = new ObjectInputStream(bais);
|
||||
TestUnion tu2 = (TestUnion) ois.readObject();
|
||||
|
||||
assertEquals(tu, tu2);
|
||||
}
|
||||
}
|
28
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/async/TestTAsyncClient.java
generated
vendored
Normal file
28
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/async/TestTAsyncClient.java
generated
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
package org.apache.thrift.async;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.TException;
|
||||
|
||||
import thrift.test.Srv;
|
||||
import thrift.test.Srv.AsyncClient;
|
||||
|
||||
public class TestTAsyncClient extends TestCase {
|
||||
public void testRaisesExceptionWhenUsedConcurrently() throws Exception {
|
||||
TAsyncClientManager mockClientManager = new TAsyncClientManager() {
|
||||
@Override
|
||||
public void call(TAsyncMethodCall method) throws TException {
|
||||
// do nothing
|
||||
}
|
||||
};
|
||||
|
||||
Srv.AsyncClient c = new AsyncClient(null, mockClientManager, null);
|
||||
c.Janky(0, null);
|
||||
try {
|
||||
c.checkReady();
|
||||
fail("should have hit an exception");
|
||||
} catch (Exception e) {
|
||||
// awesome
|
||||
}
|
||||
}
|
||||
}
|
378
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/async/TestTAsyncClientManager.java
generated
vendored
Normal file
378
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/async/TestTAsyncClientManager.java
generated
vendored
Normal file
|
@ -0,0 +1,378 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.async;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.TException;
|
||||
import org.apache.thrift.protocol.TBinaryProtocol;
|
||||
import org.apache.thrift.server.ServerTestBase;
|
||||
import org.apache.thrift.server.THsHaServer;
|
||||
import org.apache.thrift.server.THsHaServer.Args;
|
||||
import org.apache.thrift.transport.TNonblockingServerSocket;
|
||||
import org.apache.thrift.transport.TNonblockingSocket;
|
||||
|
||||
import thrift.test.CompactProtoTestStruct;
|
||||
import thrift.test.ExceptionWithAMap;
|
||||
import thrift.test.Srv;
|
||||
import thrift.test.Srv.Iface;
|
||||
|
||||
public class TestTAsyncClientManager extends TestCase {
|
||||
|
||||
private THsHaServer server_;
|
||||
private Thread serverThread_;
|
||||
private TAsyncClientManager clientManager_;
|
||||
|
||||
public void setUp() throws Exception {
|
||||
server_ = new THsHaServer(new Args(new TNonblockingServerSocket(
|
||||
new TNonblockingServerSocket.NonblockingAbstractServerSocketArgs().port(ServerTestBase.PORT))).
|
||||
processor(new Srv.Processor(new SrvHandler())));
|
||||
serverThread_ = new Thread(new Runnable() {
|
||||
public void run() {
|
||||
server_.serve();
|
||||
}
|
||||
});
|
||||
serverThread_.start();
|
||||
clientManager_ = new TAsyncClientManager();
|
||||
Thread.sleep(500);
|
||||
}
|
||||
|
||||
public void tearDown() throws Exception {
|
||||
server_.stop();
|
||||
clientManager_.stop();
|
||||
serverThread_.join();
|
||||
}
|
||||
|
||||
public void testBasicCall() throws Exception {
|
||||
Srv.AsyncClient client = getClient();
|
||||
basicCall(client);
|
||||
}
|
||||
|
||||
public void testBasicCallWithTimeout() throws Exception {
|
||||
Srv.AsyncClient client = getClient();
|
||||
client.setTimeout(5000);
|
||||
basicCall(client);
|
||||
}
|
||||
|
||||
private static abstract class ErrorCallTest<C extends TAsyncClient, R> {
|
||||
final void runTest() throws Exception {
|
||||
final CountDownLatch latch = new CountDownLatch(1);
|
||||
final AtomicReference<Exception> error = new AtomicReference<Exception>();
|
||||
C client = executeErroringCall(new AsyncMethodCallback<R>() {
|
||||
@Override
|
||||
public void onComplete(R response) {
|
||||
latch.countDown();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception exception) {
|
||||
error.set(exception);
|
||||
latch.countDown();
|
||||
}
|
||||
});
|
||||
latch.await(2, TimeUnit.SECONDS);
|
||||
assertTrue(client.hasError());
|
||||
Exception exception = error.get();
|
||||
assertNotNull(exception);
|
||||
assertSame(exception, client.getError());
|
||||
validateError(client, exception);
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes a call that is expected to raise an exception.
|
||||
*
|
||||
* @param callback The testing callback that should be installed.
|
||||
* @return The client the call was made against.
|
||||
* @throws Exception if there was a problem setting up the client or making the call.
|
||||
*/
|
||||
abstract C executeErroringCall(AsyncMethodCallback<R> callback) throws Exception;
|
||||
|
||||
/**
|
||||
* Further validates the properties of the error raised in the remote call and the state of the
|
||||
* client after that call.
|
||||
*
|
||||
* @param client The client returned from {@link #executeErroringCall(AsyncMethodCallback)}.
|
||||
* @param error The exception raised by the remote call.
|
||||
*/
|
||||
abstract void validateError(C client, Exception error);
|
||||
}
|
||||
|
||||
public void testUnexpectedRemoteExceptionCall() throws Exception {
|
||||
new ErrorCallTest<Srv.AsyncClient, Boolean>() {
|
||||
@Override
|
||||
Srv.AsyncClient executeErroringCall(AsyncMethodCallback<Boolean> callback) throws Exception {
|
||||
Srv.AsyncClient client = getClient();
|
||||
client.declaredExceptionMethod(false, callback);
|
||||
return client;
|
||||
}
|
||||
|
||||
@Override
|
||||
void validateError(Srv.AsyncClient client, Exception error) {
|
||||
assertFalse(client.hasTimeout());
|
||||
assertTrue(error instanceof TException);
|
||||
}
|
||||
}.runTest();
|
||||
}
|
||||
|
||||
public void testDeclaredRemoteExceptionCall() throws Exception {
|
||||
new ErrorCallTest<Srv.AsyncClient, Boolean>() {
|
||||
@Override
|
||||
Srv.AsyncClient executeErroringCall(AsyncMethodCallback<Boolean> callback) throws Exception {
|
||||
Srv.AsyncClient client = getClient();
|
||||
client.declaredExceptionMethod(true, callback);
|
||||
return client;
|
||||
}
|
||||
|
||||
@Override
|
||||
void validateError(Srv.AsyncClient client, Exception error) {
|
||||
assertFalse(client.hasTimeout());
|
||||
assertEquals(ExceptionWithAMap.class, error.getClass());
|
||||
ExceptionWithAMap exceptionWithAMap = (ExceptionWithAMap) error;
|
||||
assertEquals("blah", exceptionWithAMap.getBlah());
|
||||
assertEquals(new HashMap<String, String>(), exceptionWithAMap.getMap_field());
|
||||
}
|
||||
}.runTest();
|
||||
}
|
||||
|
||||
public void testTimeoutCall() throws Exception {
|
||||
new ErrorCallTest<Srv.AsyncClient, Integer>() {
|
||||
@Override
|
||||
Srv.AsyncClient executeErroringCall(AsyncMethodCallback<Integer> callback) throws Exception {
|
||||
Srv.AsyncClient client = getClient();
|
||||
client.setTimeout(100);
|
||||
client.primitiveMethod(callback);
|
||||
return client;
|
||||
}
|
||||
|
||||
@Override
|
||||
void validateError(Srv.AsyncClient client, Exception error) {
|
||||
assertTrue(client.hasTimeout());
|
||||
assertTrue(error instanceof TimeoutException);
|
||||
}
|
||||
}.runTest();
|
||||
}
|
||||
|
||||
public void testVoidCall() throws Exception {
|
||||
final CountDownLatch latch = new CountDownLatch(1);
|
||||
final AtomicBoolean returned = new AtomicBoolean(false);
|
||||
Srv.AsyncClient client = getClient();
|
||||
client.voidMethod(new FailureLessCallback<Void>() {
|
||||
@Override
|
||||
public void onComplete(Void response) {
|
||||
returned.set(true);
|
||||
latch.countDown();
|
||||
}
|
||||
});
|
||||
latch.await(1, TimeUnit.SECONDS);
|
||||
assertTrue(returned.get());
|
||||
}
|
||||
|
||||
public void testOnewayCall() throws Exception {
|
||||
final CountDownLatch latch = new CountDownLatch(1);
|
||||
final AtomicBoolean returned = new AtomicBoolean(false);
|
||||
Srv.AsyncClient client = getClient();
|
||||
client.onewayMethod(new FailureLessCallback<Void>() {
|
||||
@Override
|
||||
public void onComplete(Void response) {
|
||||
returned.set(true);
|
||||
latch.countDown();
|
||||
}
|
||||
});
|
||||
latch.await(1, TimeUnit.SECONDS);
|
||||
assertTrue(returned.get());
|
||||
}
|
||||
|
||||
public void testParallelCalls() throws Exception {
|
||||
// make multiple calls with deserialization in the selector thread (repro Eric's issue)
|
||||
int numThreads = 50;
|
||||
int numCallsPerThread = 100;
|
||||
List<JankyRunnable> runnables = new ArrayList<JankyRunnable>();
|
||||
List<Thread> threads = new ArrayList<Thread>();
|
||||
for (int i = 0; i < numThreads; i++) {
|
||||
JankyRunnable runnable = new JankyRunnable(numCallsPerThread);
|
||||
Thread thread = new Thread(runnable);
|
||||
thread.start();
|
||||
threads.add(thread);
|
||||
runnables.add(runnable);
|
||||
}
|
||||
for (Thread thread : threads) {
|
||||
thread.join();
|
||||
}
|
||||
int numSuccesses = 0;
|
||||
for (JankyRunnable runnable : runnables) {
|
||||
numSuccesses += runnable.getNumSuccesses();
|
||||
}
|
||||
assertEquals(numThreads * numCallsPerThread, numSuccesses);
|
||||
}
|
||||
|
||||
private Srv.AsyncClient getClient() throws IOException {
|
||||
TNonblockingSocket clientSocket = new TNonblockingSocket(ServerTestBase.HOST, ServerTestBase.PORT);
|
||||
return new Srv.AsyncClient(new TBinaryProtocol.Factory(), clientManager_, clientSocket);
|
||||
}
|
||||
|
||||
private void basicCall(Srv.AsyncClient client) throws Exception {
|
||||
final CountDownLatch latch = new CountDownLatch(1);
|
||||
final AtomicBoolean returned = new AtomicBoolean(false);
|
||||
client.Janky(1, new FailureLessCallback<Integer>() {
|
||||
@Override
|
||||
public void onComplete(Integer response) {
|
||||
assertEquals(3, response.intValue());
|
||||
returned.set(true);
|
||||
latch.countDown();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception exception) {
|
||||
try {
|
||||
StringWriter sink = new StringWriter();
|
||||
exception.printStackTrace(new PrintWriter(sink, true));
|
||||
fail("unexpected onError with exception " + sink.toString());
|
||||
} finally {
|
||||
latch.countDown();
|
||||
}
|
||||
}
|
||||
});
|
||||
latch.await(100, TimeUnit.SECONDS);
|
||||
assertTrue(returned.get());
|
||||
}
|
||||
|
||||
public class SrvHandler implements Iface {
|
||||
// Use this method for a standard call testing
|
||||
@Override
|
||||
public int Janky(int arg) throws TException {
|
||||
assertEquals(1, arg);
|
||||
return 3;
|
||||
}
|
||||
|
||||
// Using this method for timeout testing - sleeps for 1 second before returning
|
||||
@Override
|
||||
public int primitiveMethod() throws TException {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void methodWithDefaultArgs(int something) throws TException { }
|
||||
|
||||
@Override
|
||||
public CompactProtoTestStruct structMethod() throws TException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void voidMethod() throws TException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onewayMethod() throws TException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean declaredExceptionMethod(boolean shouldThrowDeclared) throws TException {
|
||||
if (shouldThrowDeclared) {
|
||||
throw new ExceptionWithAMap("blah", new HashMap<String, String>());
|
||||
} else {
|
||||
throw new TException("Unexpected!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static abstract class FailureLessCallback<T> implements AsyncMethodCallback<T> {
|
||||
@Override
|
||||
public void onError(Exception exception) {
|
||||
fail(exception);
|
||||
}
|
||||
}
|
||||
|
||||
private static void fail(Exception exception) {
|
||||
StringWriter sink = new StringWriter();
|
||||
exception.printStackTrace(new PrintWriter(sink, true));
|
||||
fail("unexpected error " + sink.toString());
|
||||
}
|
||||
|
||||
private class JankyRunnable implements Runnable {
|
||||
private int numCalls_;
|
||||
private int numSuccesses_ = 0;
|
||||
private Srv.AsyncClient client_;
|
||||
|
||||
public JankyRunnable(int numCalls) throws Exception {
|
||||
numCalls_ = numCalls;
|
||||
client_ = getClient();
|
||||
client_.setTimeout(20000);
|
||||
}
|
||||
|
||||
public int getNumSuccesses() {
|
||||
return numSuccesses_;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
for (int i = 0; i < numCalls_ && !client_.hasError(); i++) {
|
||||
final int iteration = i;
|
||||
try {
|
||||
// connect an async client
|
||||
final CountDownLatch latch = new CountDownLatch(1);
|
||||
final AtomicBoolean returned = new AtomicBoolean(false);
|
||||
client_.Janky(1, new AsyncMethodCallback<Integer>() {
|
||||
|
||||
@Override
|
||||
public void onComplete(Integer result) {
|
||||
assertEquals(3, result.intValue());
|
||||
returned.set(true);
|
||||
latch.countDown();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception exception) {
|
||||
try {
|
||||
StringWriter sink = new StringWriter();
|
||||
exception.printStackTrace(new PrintWriter(sink, true));
|
||||
fail("unexpected onError on iteration " + iteration + ": " + sink.toString());
|
||||
} finally {
|
||||
latch.countDown();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
boolean calledBack = latch.await(30, TimeUnit.SECONDS);
|
||||
assertTrue("wasn't called back in time on iteration " + iteration, calledBack);
|
||||
assertTrue("onComplete not called on iteration " + iteration, returned.get());
|
||||
this.numSuccesses_++;
|
||||
} catch (Exception e) {
|
||||
fail(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
88
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/BenchmarkProtocols.java
generated
vendored
Normal file
88
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/BenchmarkProtocols.java
generated
vendored
Normal file
|
@ -0,0 +1,88 @@
|
|||
package org.apache.thrift.protocol;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.thrift.Fixtures;
|
||||
import org.apache.thrift.TException;
|
||||
import org.apache.thrift.transport.TMemoryBuffer;
|
||||
|
||||
public class BenchmarkProtocols {
|
||||
|
||||
private static final Set<TProtocolFactory> FACTORIES = new LinkedHashSet<TProtocolFactory>(){{
|
||||
add(new TTupleProtocol.Factory());
|
||||
add(new TCompactProtocol.Factory());
|
||||
add(new TBinaryProtocol.Factory());
|
||||
}};
|
||||
|
||||
private static final int NUM_REPS = 100000;
|
||||
private static final int NUM_TRIALS = 10;
|
||||
|
||||
public static void main(String[] args) throws TException {
|
||||
Map<TProtocolFactory, List<Long>> timesByFactory = new HashMap<TProtocolFactory, List<Long>>();
|
||||
|
||||
for (int trial = 0; trial < NUM_TRIALS; trial++) {
|
||||
for (int i = 0; i < 16; i++) {
|
||||
System.gc();
|
||||
}
|
||||
// TProtocol proto = factory.getProtocol(new TTransport() {
|
||||
// @Override
|
||||
// public void write(byte[] buf, int off, int len) throws TTransportException {
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public int read(byte[] buf, int off, int len) throws TTransportException {
|
||||
// return 0;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void open() throws TTransportException {
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public boolean isOpen() {
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void close() {
|
||||
// }
|
||||
// });
|
||||
|
||||
|
||||
for (TProtocolFactory factory : FACTORIES) {
|
||||
if (timesByFactory.get(factory) == null) {
|
||||
timesByFactory.put(factory, new ArrayList<Long>());
|
||||
}
|
||||
|
||||
long start = System.currentTimeMillis();
|
||||
for (int rep = 0; rep < NUM_REPS; rep++) {
|
||||
TProtocol proto = factory.getProtocol(new TMemoryBuffer(128*1024));
|
||||
Fixtures.compactProtoTestStruct.write(proto);
|
||||
Fixtures.nesting.write(proto);
|
||||
}
|
||||
long end = System.currentTimeMillis();
|
||||
timesByFactory.get(factory).add(end-start);
|
||||
}
|
||||
}
|
||||
|
||||
for (TProtocolFactory factory : FACTORIES) {
|
||||
List<Long> times = timesByFactory.get(factory);
|
||||
// System.out.println("raw times pre-drop: " + times );
|
||||
times.remove(Collections.max(times));
|
||||
long total = 0;
|
||||
for (long t : times) {
|
||||
total += t;
|
||||
}
|
||||
Collections.sort(times);
|
||||
System.out.println(factory.getClass().getName() + " average time: " + (total / times.size()) + "ms");
|
||||
System.out.println("raw times: " + times);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
427
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/ProtocolTestBase.java
generated
vendored
Normal file
427
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/ProtocolTestBase.java
generated
vendored
Normal file
|
@ -0,0 +1,427 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.protocol;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.Fixtures;
|
||||
import org.apache.thrift.TBase;
|
||||
import org.apache.thrift.TDeserializer;
|
||||
import org.apache.thrift.TException;
|
||||
import org.apache.thrift.TSerializer;
|
||||
import org.apache.thrift.transport.TMemoryBuffer;
|
||||
|
||||
import thrift.test.CompactProtoTestStruct;
|
||||
import thrift.test.HolyMoley;
|
||||
import thrift.test.Nesting;
|
||||
import thrift.test.OneOfEach;
|
||||
import thrift.test.Srv;
|
||||
|
||||
public abstract class ProtocolTestBase extends TestCase {
|
||||
|
||||
/** Does it make sense to call methods like writeI32 directly on your protocol? */
|
||||
protected abstract boolean canBeUsedNaked();
|
||||
|
||||
/** The protocol factory for the protocol being tested. */
|
||||
protected abstract TProtocolFactory getFactory();
|
||||
|
||||
public void testDouble() throws Exception {
|
||||
if (canBeUsedNaked()) {
|
||||
TMemoryBuffer buf = new TMemoryBuffer(1000);
|
||||
TProtocol proto = getFactory().getProtocol(buf);
|
||||
proto.writeDouble(123.456);
|
||||
assertEquals(123.456, proto.readDouble());
|
||||
}
|
||||
|
||||
internalTestStructField(new StructFieldTestCase(TType.DOUBLE, (short)15) {
|
||||
@Override
|
||||
public void readMethod(TProtocol proto) throws TException {
|
||||
assertEquals(123.456, proto.readDouble());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeMethod(TProtocol proto) throws TException {
|
||||
proto.writeDouble(123.456);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void testSerialization() throws Exception {
|
||||
internalTestSerialization(OneOfEach.class, Fixtures.oneOfEach);
|
||||
internalTestSerialization(Nesting.class, Fixtures.nesting);
|
||||
internalTestSerialization(HolyMoley.class, Fixtures.holyMoley);
|
||||
internalTestSerialization(CompactProtoTestStruct.class, Fixtures.compactProtoTestStruct);
|
||||
}
|
||||
|
||||
public void testBinary() throws Exception {
|
||||
for (byte[] b : Arrays.asList(new byte[0],
|
||||
new byte[]{0,1,2,3,4,5,6,7,8,9,10},
|
||||
new byte[]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14},
|
||||
new byte[]{0x5D},
|
||||
new byte[]{(byte)0xD5,(byte)0x5D},
|
||||
new byte[]{(byte)0xFF,(byte)0xD5,(byte)0x5D},
|
||||
new byte[128])) {
|
||||
if (canBeUsedNaked()) {
|
||||
internalTestNakedBinary(b);
|
||||
}
|
||||
internalTestBinaryField(b);
|
||||
}
|
||||
|
||||
if (canBeUsedNaked()) {
|
||||
byte[] data = {1, 2, 3, 4, 5, 6};
|
||||
|
||||
TMemoryBuffer buf = new TMemoryBuffer(0);
|
||||
TProtocol proto = getFactory().getProtocol(buf);
|
||||
ByteBuffer bb = ByteBuffer.wrap(data);
|
||||
bb.get();
|
||||
proto.writeBinary(bb.slice());
|
||||
assertEquals(ByteBuffer.wrap(data, 1, 5), proto.readBinary());
|
||||
}
|
||||
}
|
||||
|
||||
public void testString() throws Exception {
|
||||
for (String s : Arrays.asList("", "short", "borderlinetiny", "a bit longer than the smallest possible")) {
|
||||
if (canBeUsedNaked()) {
|
||||
internalTestNakedString(s);
|
||||
}
|
||||
internalTestStringField(s);
|
||||
}
|
||||
}
|
||||
|
||||
public void testLong() throws Exception {
|
||||
if (canBeUsedNaked()) {
|
||||
internalTestNakedI64(0);
|
||||
}
|
||||
internalTestI64Field(0);
|
||||
for (int i = 0; i < 62; i++) {
|
||||
if (canBeUsedNaked()) {
|
||||
internalTestNakedI64(1L << i);
|
||||
internalTestNakedI64(-(1L << i));
|
||||
}
|
||||
internalTestI64Field(1L << i);
|
||||
internalTestI64Field(-(1L << i));
|
||||
}
|
||||
}
|
||||
|
||||
public void testInt() throws Exception {
|
||||
for (int i : Arrays.asList(0, 1, 7, 150, 15000, 31337, 0xffff, 0xffffff, -1, -7, -150, -15000, -0xffff, -0xffffff)) {
|
||||
if (canBeUsedNaked()) {
|
||||
internalTestNakedI32(i);
|
||||
}
|
||||
internalTestI32Field(i);
|
||||
}
|
||||
}
|
||||
|
||||
public void testShort() throws Exception {
|
||||
for (int s : Arrays.asList(0, 1, 7, 150, 15000, 0x7fff, -1, -7, -150, -15000, -0x7fff)) {
|
||||
if (canBeUsedNaked()) {
|
||||
internalTestNakedI16((short)s);
|
||||
}
|
||||
internalTestI16Field((short)s);
|
||||
}
|
||||
}
|
||||
|
||||
public void testByte() throws Exception {
|
||||
if (canBeUsedNaked()) {
|
||||
internalTestNakedByte();
|
||||
}
|
||||
for (int i = 0; i < 128; i++) {
|
||||
internalTestByteField((byte)i);
|
||||
internalTestByteField((byte)-i);
|
||||
}
|
||||
}
|
||||
|
||||
private void internalTestNakedByte() throws Exception {
|
||||
TMemoryBuffer buf = new TMemoryBuffer(1000);
|
||||
TProtocol proto = getFactory().getProtocol(buf);
|
||||
proto.writeByte((byte)123);
|
||||
assertEquals((byte) 123, proto.readByte());
|
||||
}
|
||||
|
||||
private void internalTestByteField(final byte b) throws Exception {
|
||||
internalTestStructField(new StructFieldTestCase(TType.BYTE, (short)15) {
|
||||
public void writeMethod(TProtocol proto) throws TException {
|
||||
proto.writeByte(b);
|
||||
}
|
||||
|
||||
public void readMethod(TProtocol proto) throws TException {
|
||||
assertEquals((byte)b, proto.readByte());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void internalTestNakedI16(short n) throws Exception {
|
||||
TMemoryBuffer buf = new TMemoryBuffer(0);
|
||||
TProtocol proto = getFactory().getProtocol(buf);
|
||||
proto.writeI16(n);
|
||||
assertEquals(n, proto.readI16());
|
||||
}
|
||||
|
||||
private void internalTestI16Field(final short n) throws Exception {
|
||||
internalTestStructField(new StructFieldTestCase(TType.I16, (short)15) {
|
||||
public void writeMethod(TProtocol proto) throws TException {
|
||||
proto.writeI16(n);
|
||||
}
|
||||
|
||||
public void readMethod(TProtocol proto) throws TException {
|
||||
assertEquals(n, proto.readI16());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void internalTestNakedI32(int n) throws Exception {
|
||||
TMemoryBuffer buf = new TMemoryBuffer(0);
|
||||
TProtocol proto = getFactory().getProtocol(buf);
|
||||
proto.writeI32(n);
|
||||
assertEquals(n, proto.readI32());
|
||||
}
|
||||
|
||||
private void internalTestI32Field(final int n) throws Exception {
|
||||
internalTestStructField(new StructFieldTestCase(TType.I32, (short)15) {
|
||||
public void writeMethod(TProtocol proto) throws TException {
|
||||
proto.writeI32(n);
|
||||
}
|
||||
|
||||
public void readMethod(TProtocol proto) throws TException {
|
||||
assertEquals(n, proto.readI32());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void internalTestNakedI64(long n) throws Exception {
|
||||
TMemoryBuffer buf = new TMemoryBuffer(0);
|
||||
TProtocol proto = getFactory().getProtocol(buf);
|
||||
proto.writeI64(n);
|
||||
assertEquals(n, proto.readI64());
|
||||
}
|
||||
|
||||
private void internalTestI64Field(final long n) throws Exception {
|
||||
internalTestStructField(new StructFieldTestCase(TType.I64, (short)15) {
|
||||
public void writeMethod(TProtocol proto) throws TException {
|
||||
proto.writeI64(n);
|
||||
}
|
||||
|
||||
public void readMethod(TProtocol proto) throws TException {
|
||||
assertEquals(n, proto.readI64());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void internalTestNakedString(String str) throws Exception {
|
||||
TMemoryBuffer buf = new TMemoryBuffer(0);
|
||||
TProtocol proto = getFactory().getProtocol(buf);
|
||||
proto.writeString(str);
|
||||
assertEquals(str, proto.readString());
|
||||
}
|
||||
|
||||
private void internalTestStringField(final String str) throws Exception {
|
||||
internalTestStructField(new StructFieldTestCase(TType.STRING, (short)15) {
|
||||
public void writeMethod(TProtocol proto) throws TException {
|
||||
proto.writeString(str);
|
||||
}
|
||||
|
||||
public void readMethod(TProtocol proto) throws TException {
|
||||
assertEquals(str, proto.readString());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void internalTestNakedBinary(byte[] data) throws Exception {
|
||||
TMemoryBuffer buf = new TMemoryBuffer(0);
|
||||
TProtocol proto = getFactory().getProtocol(buf);
|
||||
proto.writeBinary(ByteBuffer.wrap(data));
|
||||
assertEquals(ByteBuffer.wrap(data), proto.readBinary());
|
||||
}
|
||||
|
||||
private void internalTestBinaryField(final byte[] data) throws Exception {
|
||||
internalTestStructField(new StructFieldTestCase(TType.STRING, (short)15) {
|
||||
public void writeMethod(TProtocol proto) throws TException {
|
||||
proto.writeBinary(ByteBuffer.wrap(data));
|
||||
}
|
||||
|
||||
public void readMethod(TProtocol proto) throws TException {
|
||||
assertEquals(ByteBuffer.wrap(data), proto.readBinary());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private <T extends TBase> void internalTestSerialization(Class<T> klass, T expected) throws Exception {
|
||||
TMemoryBuffer buf = new TMemoryBuffer(0);
|
||||
TBinaryProtocol binproto = new TBinaryProtocol(buf);
|
||||
|
||||
expected.write(binproto);
|
||||
|
||||
buf = new TMemoryBuffer(0);
|
||||
TProtocol proto = getFactory().getProtocol(buf);
|
||||
|
||||
expected.write(proto);
|
||||
System.out.println("Size in " + proto.getClass().getSimpleName() + ": " + buf.length());
|
||||
|
||||
T actual = klass.newInstance();
|
||||
actual.read(proto);
|
||||
assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
public void testMessage() throws Exception {
|
||||
List<TMessage> msgs = Arrays.asList(new TMessage[]{
|
||||
new TMessage("short message name", TMessageType.CALL, 0),
|
||||
new TMessage("1", TMessageType.REPLY, 12345),
|
||||
new TMessage("loooooooooooooooooooooooooooooooooong", TMessageType.EXCEPTION, 1 << 16),
|
||||
new TMessage("Janky", TMessageType.CALL, 0),
|
||||
});
|
||||
|
||||
for (TMessage msg : msgs) {
|
||||
TMemoryBuffer buf = new TMemoryBuffer(0);
|
||||
TProtocol proto = getFactory().getProtocol(buf);
|
||||
TMessage output = null;
|
||||
|
||||
proto.writeMessageBegin(msg);
|
||||
proto.writeMessageEnd();
|
||||
|
||||
output = proto.readMessageBegin();
|
||||
|
||||
assertEquals(msg, output);
|
||||
}
|
||||
}
|
||||
|
||||
public void testServerRequest() throws Exception {
|
||||
Srv.Iface handler = new Srv.Iface() {
|
||||
public int Janky(int i32arg) throws TException {
|
||||
return i32arg * 2;
|
||||
}
|
||||
|
||||
public int primitiveMethod() throws TException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public CompactProtoTestStruct structMethod() throws TException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void voidMethod() throws TException {
|
||||
}
|
||||
|
||||
public void methodWithDefaultArgs(int something) throws TException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onewayMethod() throws TException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean declaredExceptionMethod(boolean shouldThrow) throws TException {
|
||||
return shouldThrow;
|
||||
}
|
||||
};
|
||||
|
||||
Srv.Processor testProcessor = new Srv.Processor(handler);
|
||||
|
||||
TMemoryBuffer clientOutTrans = new TMemoryBuffer(0);
|
||||
TProtocol clientOutProto = getFactory().getProtocol(clientOutTrans);
|
||||
TMemoryBuffer clientInTrans = new TMemoryBuffer(0);
|
||||
TProtocol clientInProto = getFactory().getProtocol(clientInTrans);
|
||||
|
||||
Srv.Client testClient = new Srv.Client(clientInProto, clientOutProto);
|
||||
|
||||
testClient.send_Janky(1);
|
||||
// System.out.println(clientOutTrans.inspect());
|
||||
testProcessor.process(clientOutProto, clientInProto);
|
||||
// System.out.println(clientInTrans.inspect());
|
||||
assertEquals(2, testClient.recv_Janky());
|
||||
}
|
||||
|
||||
public void testTDeserializer() throws TException {
|
||||
TSerializer ser = new TSerializer(getFactory());
|
||||
byte[] bytes = ser.serialize(Fixtures.compactProtoTestStruct);
|
||||
|
||||
TDeserializer deser = new TDeserializer(getFactory());
|
||||
CompactProtoTestStruct cpts = new CompactProtoTestStruct();
|
||||
deser.deserialize(cpts, bytes);
|
||||
|
||||
assertEquals(Fixtures.compactProtoTestStruct, cpts);
|
||||
}
|
||||
|
||||
//
|
||||
// Helper methods
|
||||
//
|
||||
|
||||
private void internalTestStructField(StructFieldTestCase testCase) throws Exception {
|
||||
TMemoryBuffer buf = new TMemoryBuffer(0);
|
||||
TProtocol proto = getFactory().getProtocol(buf);
|
||||
|
||||
TField field = new TField("test_field", testCase.type_, testCase.id_);
|
||||
proto.writeStructBegin(new TStruct("test_struct"));
|
||||
proto.writeFieldBegin(field);
|
||||
testCase.writeMethod(proto);
|
||||
proto.writeFieldEnd();
|
||||
proto.writeStructEnd();
|
||||
|
||||
proto.readStructBegin();
|
||||
TField readField = proto.readFieldBegin();
|
||||
assertEquals(testCase.id_, readField.id);
|
||||
assertEquals(testCase.type_, readField.type);
|
||||
testCase.readMethod(proto);
|
||||
proto.readStructEnd();
|
||||
}
|
||||
|
||||
private static abstract class StructFieldTestCase {
|
||||
byte type_;
|
||||
short id_;
|
||||
public StructFieldTestCase(byte type, short id) {
|
||||
type_ = type;
|
||||
id_ = id;
|
||||
}
|
||||
|
||||
public abstract void writeMethod(TProtocol proto) throws TException;
|
||||
public abstract void readMethod(TProtocol proto) throws TException;
|
||||
}
|
||||
|
||||
private static final int NUM_TRIALS = 5;
|
||||
private static final int NUM_REPS = 10000;
|
||||
|
||||
protected void benchmark() throws Exception {
|
||||
for (int trial = 0; trial < NUM_TRIALS; trial++) {
|
||||
TSerializer ser = new TSerializer(getFactory());
|
||||
byte[] serialized = null;
|
||||
long serStart = System.currentTimeMillis();
|
||||
for (int rep = 0; rep < NUM_REPS; rep++) {
|
||||
serialized = ser.serialize(Fixtures.holyMoley);
|
||||
}
|
||||
long serEnd = System.currentTimeMillis();
|
||||
long serElapsed = serEnd - serStart;
|
||||
System.out.println("Ser:\t" + serElapsed + "ms\t"
|
||||
+ ((double)serElapsed / NUM_REPS) + "ms per serialization");
|
||||
|
||||
HolyMoley cpts = new HolyMoley();
|
||||
TDeserializer deser = new TDeserializer(getFactory());
|
||||
long deserStart = System.currentTimeMillis();
|
||||
for (int rep = 0; rep < NUM_REPS; rep++) {
|
||||
deser.deserialize(cpts, serialized);
|
||||
}
|
||||
long deserEnd = System.currentTimeMillis();
|
||||
long deserElapsed = deserEnd - deserStart;
|
||||
System.out.println("Des:\t" + deserElapsed + "ms\t"
|
||||
+ ((double)deserElapsed / NUM_REPS) + "ms per deserialization");
|
||||
}
|
||||
}
|
||||
}
|
56
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/TestTCompactProtocol.java
generated
vendored
Normal file
56
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/TestTCompactProtocol.java
generated
vendored
Normal file
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.protocol;
|
||||
|
||||
import org.apache.thrift.TDeserializer;
|
||||
import org.apache.thrift.TException;
|
||||
|
||||
import thrift.test.Bonk;
|
||||
|
||||
public class TestTCompactProtocol extends ProtocolTestBase {
|
||||
@Override
|
||||
protected TProtocolFactory getFactory() {
|
||||
return new TCompactProtocol.Factory();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canBeUsedNaked() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void testOOMDenialOfService() throws Exception {
|
||||
// Struct header, Integer.MAX_VALUE length, and only one real
|
||||
// byte of data
|
||||
byte [] bytes = {24, -1, -1, -1, -17, 49};
|
||||
TDeserializer deser = new TDeserializer(new TCompactProtocol
|
||||
.Factory(1000));
|
||||
Bonk bonk = new Bonk();
|
||||
try {
|
||||
deser.deserialize(bonk, bytes);
|
||||
} catch (TException e) {
|
||||
// Ignore as we are only checking for OOM in the failure case
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String args[]) throws Exception {
|
||||
new TestTCompactProtocol().benchmark();
|
||||
}
|
||||
}
|
48
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/TestTJSONProtocol.java
generated
vendored
Normal file
48
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/TestTJSONProtocol.java
generated
vendored
Normal file
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.protocol;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.apache.thrift.TException;
|
||||
import org.apache.thrift.protocol.TJSONProtocol;
|
||||
import org.apache.thrift.transport.TMemoryBuffer;
|
||||
|
||||
public class TestTJSONProtocol extends ProtocolTestBase {
|
||||
@Override
|
||||
protected TProtocolFactory getFactory() {
|
||||
return new TJSONProtocol.Factory();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canBeUsedNaked() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void testEscapedUnicode() throws TException, IOException {
|
||||
String jsonString = "\"hello unicode \\u0e01\\ud834\\udd1e world\"";
|
||||
String expectedString = "hello unicode \u0e01\ud834\udd1e world";
|
||||
|
||||
TMemoryBuffer buffer = new TMemoryBuffer(1000);
|
||||
TJSONProtocol protocol = new TJSONProtocol(buffer);
|
||||
buffer.write(jsonString.getBytes("UTF-8"));
|
||||
|
||||
assertEquals(expectedString, protocol.readString());
|
||||
}
|
||||
}
|
97
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/TestTProtocolUtil.java
generated
vendored
Normal file
97
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/TestTProtocolUtil.java
generated
vendored
Normal file
|
@ -0,0 +1,97 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.protocol;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.Fixtures;
|
||||
import org.apache.thrift.TBase;
|
||||
import org.apache.thrift.TDeserializer;
|
||||
import org.apache.thrift.TException;
|
||||
import org.apache.thrift.TSerializer;
|
||||
import org.apache.thrift.transport.TMemoryBuffer;
|
||||
|
||||
import thrift.test.CompactProtoTestStruct;
|
||||
import thrift.test.HolyMoley;
|
||||
import thrift.test.Nesting;
|
||||
import thrift.test.OneOfEach;
|
||||
import thrift.test.Srv;
|
||||
import thrift.test.GuessProtocolStruct;
|
||||
|
||||
public class TestTProtocolUtil extends TestCase {
|
||||
|
||||
public void testGuessProtocolFactory_JSON() throws Exception {
|
||||
|
||||
byte[] data = "{foo}".getBytes();
|
||||
TProtocolFactory factory = TProtocolUtil.guessProtocolFactory(data, new TCompactProtocol.Factory());
|
||||
assertTrue(factory instanceof TJSONProtocol.Factory);
|
||||
|
||||
// Make sure data serialized with TCompact and which starts with '{'
|
||||
// is not mistakenly guessed as serialized with JSON.
|
||||
|
||||
GuessProtocolStruct s = new GuessProtocolStruct();
|
||||
s.putToMap_field("}","}");
|
||||
byte[] ser = new TSerializer(new TCompactProtocol.Factory()).serialize(s);
|
||||
factory = TProtocolUtil.guessProtocolFactory(ser, new TCompactProtocol.Factory());
|
||||
assertFalse(factory instanceof TJSONProtocol.Factory);
|
||||
}
|
||||
|
||||
public void testGuessProtocolFactory_Binary() throws Exception {
|
||||
// Check that a last byte != 0 is correctly reported as Binary
|
||||
|
||||
byte[] buf = new byte[1];
|
||||
for (int i = 1; i < 256; i++) {
|
||||
buf[0] = (byte) i;
|
||||
TProtocolFactory factory = TProtocolUtil.guessProtocolFactory(buf, new TCompactProtocol.Factory());
|
||||
assertTrue(factory instanceof TBinaryProtocol.Factory);
|
||||
}
|
||||
|
||||
// Check that a second byte set to 0 is reported as Binary
|
||||
buf = new byte[2];
|
||||
TProtocolFactory factory = TProtocolUtil.guessProtocolFactory(buf, new TCompactProtocol.Factory());
|
||||
assertTrue(factory instanceof TBinaryProtocol.Factory);
|
||||
}
|
||||
|
||||
public void testGuessProtocolFactory_Compact() throws Exception {
|
||||
// Check that a first byte > 0x10 is reported as Compact
|
||||
byte[] buf = new byte[3];
|
||||
buf[0] = 0x11;
|
||||
TProtocolFactory factory = TProtocolUtil.guessProtocolFactory(buf, new TBinaryProtocol.Factory());
|
||||
assertTrue(factory instanceof TCompactProtocol.Factory);
|
||||
|
||||
// Check that second byte >= 0x80 is reported as Compact
|
||||
buf[0] = 0;
|
||||
for (int i = 0x80; i < 0x100; i++) {
|
||||
buf[1] = (byte) i;
|
||||
factory = TProtocolUtil.guessProtocolFactory(buf, new TBinaryProtocol.Factory());
|
||||
assertTrue(factory instanceof TCompactProtocol.Factory);
|
||||
}
|
||||
}
|
||||
|
||||
public void testGuessProtocolFactory_Undecided() throws Exception {
|
||||
byte[] buf = new byte[3];
|
||||
buf[1] = 0x7e;
|
||||
TProtocolFactory factory = TProtocolUtil.guessProtocolFactory(buf, new TSimpleJSONProtocol.Factory());
|
||||
assertTrue(factory instanceof TSimpleJSONProtocol.Factory);
|
||||
}
|
||||
}
|
98
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/TestTSimpleJSONProtocol.java
generated
vendored
Normal file
98
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/TestTSimpleJSONProtocol.java
generated
vendored
Normal file
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.protocol;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.Fixtures;
|
||||
import org.apache.thrift.TException;
|
||||
import org.apache.thrift.transport.TMemoryBuffer;
|
||||
|
||||
import thrift.test.CompactProtoTestStruct;
|
||||
import thrift.test.HolyMoley;
|
||||
|
||||
public class TestTSimpleJSONProtocol extends TestCase {
|
||||
private TMemoryBuffer buf;
|
||||
private TSimpleJSONProtocol proto;
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
buf = new TMemoryBuffer(1000);
|
||||
proto = new TSimpleJSONProtocol(buf);
|
||||
}
|
||||
|
||||
private String bufToString() {
|
||||
try {
|
||||
return buf.toString("UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void testHolyMoley() throws TException {
|
||||
final HolyMoley holyMoley = Fixtures.holyMoley.deepCopy();
|
||||
// unset sets that produce inconsistent ordering between JDK7/8
|
||||
holyMoley.unsetBonks();
|
||||
holyMoley.unsetContain();
|
||||
holyMoley.write(proto);
|
||||
assertEquals("{\"big\":[{\"im_true\":1,\"im_false\":0,\"a_bite\":35,\"integer16\":27000,\"integer32\":16777216,\"integer64\":6000000000,\"double_precision\":3.141592653589793,\"some_characters\":\"JSON THIS! \\\"\\u0001\",\"zomg_unicode\":\"ӀⅮΝ Нοⅿоɡгаρℎ Αttαⅽκ<E285BD>‼\",\"what_who\":0,\"base64\":\"base64\",\"byte_list\":[1,2,3],\"i16_list\":[1,2,3],\"i64_list\":[1,2,3]},{\"im_true\":1,\"im_false\":0,\"a_bite\":-42,\"integer16\":27000,\"integer32\":16777216,\"integer64\":6000000000,\"double_precision\":3.141592653589793,\"some_characters\":\"JSON THIS! \\\"\\u0001\",\"zomg_unicode\":\"ӀⅮΝ Нοⅿоɡгаρℎ Αttαⅽκ<E285BD>‼\",\"what_who\":0,\"base64\":\"base64\",\"byte_list\":[1,2,3],\"i16_list\":[1,2,3],\"i64_list\":[1,2,3]}]}", bufToString());
|
||||
}
|
||||
|
||||
public void testNesting() throws TException {
|
||||
Fixtures.nesting.write(proto);
|
||||
assertEquals("{\"my_bonk\":{\"type\":31337,\"message\":\"I am a bonk... xor!\"},\"my_ooe\":{\"im_true\":1,\"im_false\":0,\"a_bite\":-42,\"integer16\":27000,\"integer32\":16777216,\"integer64\":6000000000,\"double_precision\":3.141592653589793,\"some_characters\":\"JSON THIS! \\\"\\u0001\",\"zomg_unicode\":\"ӀⅮΝ Нοⅿоɡгаρℎ Αttαⅽκ<E285BD>‼\",\"what_who\":0,\"base64\":\"base64\",\"byte_list\":[1,2,3],\"i16_list\":[1,2,3],\"i64_list\":[1,2,3]}}", bufToString());
|
||||
}
|
||||
|
||||
public void testOneOfEach() throws TException {
|
||||
Fixtures.oneOfEach.write(proto);
|
||||
assertEquals("{\"im_true\":1,\"im_false\":0,\"a_bite\":-42,\"integer16\":27000,\"integer32\":16777216,\"integer64\":6000000000,\"double_precision\":3.141592653589793,\"some_characters\":\"JSON THIS! \\\"\\u0001\",\"zomg_unicode\":\"ӀⅮΝ Нοⅿоɡгаρℎ Αttαⅽκ<E285BD>‼\",\"what_who\":0,\"base64\":\"base64\",\"byte_list\":[1,2,3],\"i16_list\":[1,2,3],\"i64_list\":[1,2,3]}", bufToString());
|
||||
}
|
||||
|
||||
public void testSanePartsOfCompactProtoTestStruct() throws TException {
|
||||
// unset all the maps with container keys
|
||||
CompactProtoTestStruct struct = Fixtures.compactProtoTestStruct.deepCopy();
|
||||
struct.unsetList_byte_map();
|
||||
struct.unsetSet_byte_map();
|
||||
struct.unsetMap_byte_map();
|
||||
// unset sets and maps that produce inconsistent ordering between JDK7/8
|
||||
struct.unsetByte_set();
|
||||
struct.unsetI16_set();
|
||||
struct.unsetI64_set();
|
||||
struct.unsetDouble_set();
|
||||
struct.unsetString_set();
|
||||
struct.unsetI16_byte_map();
|
||||
struct.unsetI32_byte_map();
|
||||
struct.unsetI64_byte_map();
|
||||
struct.unsetDouble_byte_map();
|
||||
struct.unsetString_byte_map();
|
||||
struct.write(proto);
|
||||
assertEquals("{\"a_byte\":127,\"a_i16\":32000,\"a_i32\":1000000000,\"a_i64\":1099511627775,\"a_double\":5.6789,\"a_string\":\"my string\",\"a_binary\":\"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\",\"true_field\":1,\"false_field\":0,\"empty_struct_field\":{},\"byte_list\":[-127,-1,0,1,127],\"i16_list\":[-1,0,1,32767],\"i32_list\":[-1,0,255,65535,16777215,2147483647],\"i64_list\":[-1,0,255,65535,16777215,4294967295,1099511627775,281474976710655,72057594037927935,9223372036854775807],\"double_list\":[0.1,0.2,0.3],\"string_list\":[\"first\",\"second\",\"third\"],\"boolean_list\":[1,1,1,0,0,0],\"struct_list\":[{},{}],\"i32_set\":[1,2,3],\"boolean_set\":[0,1],\"struct_set\":[{}],\"byte_byte_map\":{\"1\":2},\"boolean_byte_map\":{\"0\":0,\"1\":1},\"byte_i16_map\":{\"1\":1,\"2\":-1,\"3\":32767},\"byte_i32_map\":{\"1\":1,\"2\":-1,\"3\":2147483647},\"byte_i64_map\":{\"1\":1,\"2\":-1,\"3\":9223372036854775807},\"byte_double_map\":{\"1\":0.1,\"2\":-0.1,\"3\":1000000.0},\"byte_string_map\":{\"1\":\"\",\"2\":\"blah\",\"3\":\"loooooooooooooong string\"},\"byte_boolean_map\":{\"1\":1,\"2\":0},\"byte_map_map\":{\"0\":{},\"1\":{\"1\":1},\"2\":{\"1\":1,\"2\":2}},\"byte_set_map\":{\"0\":[],\"1\":[1],\"2\":[1,2]},\"byte_list_map\":{\"0\":[],\"1\":[1],\"2\":[1,2]}}", bufToString());
|
||||
}
|
||||
|
||||
public void testThrowsOnCollectionKeys() throws TException {
|
||||
try {
|
||||
Fixtures.compactProtoTestStruct.write(proto);
|
||||
fail("this should throw a CollectionMapKeyException");
|
||||
} catch (TSimpleJSONProtocol.CollectionMapKeyException e) {
|
||||
//
|
||||
}
|
||||
}
|
||||
}
|
27
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/TestTTupleProtocol.java
generated
vendored
Normal file
27
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/protocol/TestTTupleProtocol.java
generated
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
package org.apache.thrift.protocol;
|
||||
|
||||
import org.apache.thrift.TDeserializer;
|
||||
import org.apache.thrift.TSerializer;
|
||||
|
||||
import thrift.test.TupleProtocolTestStruct;
|
||||
|
||||
|
||||
public class TestTTupleProtocol extends ProtocolTestBase {
|
||||
|
||||
@Override
|
||||
protected boolean canBeUsedNaked() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TProtocolFactory getFactory() {
|
||||
return new TTupleProtocol.Factory();
|
||||
}
|
||||
|
||||
public void testBitsetLengthIssue() throws Exception {
|
||||
final TupleProtocolTestStruct t1 = new TupleProtocolTestStruct();
|
||||
t1.setField1(0);
|
||||
t1.setField2(12);
|
||||
new TDeserializer(new TTupleProtocol.Factory()).deserialize(new TupleProtocolTestStruct(), new TSerializer(new TTupleProtocol.Factory()).serialize(t1));
|
||||
}
|
||||
}
|
40
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/scheme/TestStandardScheme.java
generated
vendored
Normal file
40
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/scheme/TestStandardScheme.java
generated
vendored
Normal file
|
@ -0,0 +1,40 @@
|
|||
package org.apache.thrift.scheme;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.Fixtures;
|
||||
import org.apache.thrift.TBase;
|
||||
import org.apache.thrift.TDeserializer;
|
||||
import org.apache.thrift.TException;
|
||||
import org.apache.thrift.TSerializer;
|
||||
import org.apache.thrift.protocol.TBinaryProtocol;
|
||||
import org.apache.thrift.protocol.TProtocol;
|
||||
import org.apache.thrift.transport.TMemoryBuffer;
|
||||
import org.apache.thrift.transport.TTransport;
|
||||
|
||||
import thrift.test.HolyMoley;
|
||||
import thrift.test.Nesting;
|
||||
import thrift.test.OneOfEach;
|
||||
|
||||
public class TestStandardScheme extends TestCase {
|
||||
TSerializer serializer = new TSerializer();
|
||||
TDeserializer deserializer = new TDeserializer();
|
||||
|
||||
/**
|
||||
* This tests whether the Standard Scheme properly reads structs serialized
|
||||
* using an older version of thrift.
|
||||
*/
|
||||
public void testPersistentStructs() throws TException {
|
||||
readAndCompare(new OneOfEach(), Fixtures.oneOfEach, Fixtures.persistentBytesOneOfEach);
|
||||
readAndCompare(new HolyMoley(), Fixtures.holyMoley, Fixtures.persistentBytesHolyMoley);
|
||||
readAndCompare(new Nesting(), Fixtures.nesting, Fixtures.persistentBytesNesting);
|
||||
}
|
||||
|
||||
public void readAndCompare(TBase struct, TBase fixture, byte[] inputBytes) throws TException {
|
||||
TTransport trans = new TMemoryBuffer(0);
|
||||
trans.write(inputBytes, 0, inputBytes.length);
|
||||
TProtocol iprot = new TBinaryProtocol(trans);
|
||||
struct.read(iprot);
|
||||
assertEquals(fixture, struct);
|
||||
}
|
||||
}
|
705
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/server/ServerTestBase.java
generated
vendored
Normal file
705
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/server/ServerTestBase.java
generated
vendored
Normal file
|
@ -0,0 +1,705 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.server;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.TException;
|
||||
import org.apache.thrift.TProcessor;
|
||||
import org.apache.thrift.async.AsyncMethodCallback;
|
||||
import org.apache.thrift.protocol.TBinaryProtocol;
|
||||
import org.apache.thrift.protocol.TCompactProtocol;
|
||||
import org.apache.thrift.protocol.TProtocol;
|
||||
import org.apache.thrift.protocol.TProtocolFactory;
|
||||
import org.apache.thrift.transport.TFramedTransport;
|
||||
import org.apache.thrift.transport.TSocket;
|
||||
import org.apache.thrift.transport.TTransport;
|
||||
import org.apache.thrift.transport.TTransportFactory;
|
||||
import org.apache.thrift.transport.TFramedTransport.Factory;
|
||||
|
||||
import thrift.test.Insanity;
|
||||
import thrift.test.Numberz;
|
||||
import thrift.test.ThriftTest;
|
||||
import thrift.test.Xception;
|
||||
import thrift.test.Xception2;
|
||||
import thrift.test.Xtruct;
|
||||
import thrift.test.Xtruct2;
|
||||
|
||||
public abstract class ServerTestBase extends TestCase {
|
||||
|
||||
public static class TestHandler implements ThriftTest.Iface {
|
||||
|
||||
public TestHandler() {}
|
||||
|
||||
public void testVoid() {
|
||||
System.out.print("testVoid()\n");
|
||||
}
|
||||
|
||||
public String testString(String thing) {
|
||||
System.out.print("testString(\"" + thing + "\")\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public boolean testBool(boolean thing) {
|
||||
System.out.print("testBool(" + thing + ")\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public byte testByte(byte thing) {
|
||||
System.out.print("testByte(" + thing + ")\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public int testI32(int thing) {
|
||||
System.out.print("testI32(" + thing + ")\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public long testI64(long thing) {
|
||||
System.out.print("testI64(" + thing + ")\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public double testDouble(double thing) {
|
||||
System.out.print("testDouble(" + thing + ")\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public ByteBuffer testBinary(ByteBuffer thing) {
|
||||
StringBuilder sb = new StringBuilder(thing.remaining() * 3);
|
||||
thing.mark();
|
||||
while (thing.remaining() > 0) {
|
||||
sb.append(String.format("%02X ", thing.get()));
|
||||
}
|
||||
System.out.print("testBinary(" + sb.toString() + ")\n");
|
||||
thing.reset();
|
||||
return thing;
|
||||
}
|
||||
|
||||
public Xtruct testStruct(Xtruct thing) {
|
||||
System.out.print("testStruct({" +
|
||||
"\"" + thing.string_thing + "\", " +
|
||||
thing.byte_thing + ", " +
|
||||
thing.i32_thing + ", " +
|
||||
thing.i64_thing + "})\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public Xtruct2 testNest(Xtruct2 nest) {
|
||||
Xtruct thing = nest.struct_thing;
|
||||
System.out.print("testNest({" +
|
||||
nest.byte_thing + ", {" +
|
||||
"\"" + thing.string_thing + "\", " +
|
||||
thing.byte_thing + ", " +
|
||||
thing.i32_thing + ", " +
|
||||
thing.i64_thing + "}, " +
|
||||
nest.i32_thing + "})\n");
|
||||
return nest;
|
||||
}
|
||||
|
||||
public Map<Integer,Integer> testMap(Map<Integer,Integer> thing) {
|
||||
System.out.print("testMap({");
|
||||
System.out.print(thing);
|
||||
System.out.print("})\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public Map<String,String> testStringMap(Map<String,String> thing) {
|
||||
System.out.print("testStringMap({");
|
||||
System.out.print(thing);
|
||||
System.out.print("})\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public Set<Integer> testSet(Set<Integer> thing) {
|
||||
System.out.print("testSet({");
|
||||
boolean first = true;
|
||||
for (int elem : thing) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
System.out.print(", ");
|
||||
}
|
||||
System.out.print(elem);
|
||||
}
|
||||
System.out.print("})\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public List<Integer> testList(List<Integer> thing) {
|
||||
System.out.print("testList({");
|
||||
boolean first = true;
|
||||
for (int elem : thing) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
System.out.print(", ");
|
||||
}
|
||||
System.out.print(elem);
|
||||
}
|
||||
System.out.print("})\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public Numberz testEnum(Numberz thing) {
|
||||
System.out.print("testEnum(" + thing + ")\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public long testTypedef(long thing) {
|
||||
System.out.print("testTypedef(" + thing + ")\n");
|
||||
return thing;
|
||||
}
|
||||
|
||||
public Map<Integer,Map<Integer,Integer>> testMapMap(int hello) {
|
||||
System.out.print("testMapMap(" + hello + ")\n");
|
||||
Map<Integer,Map<Integer,Integer>> mapmap =
|
||||
new HashMap<Integer,Map<Integer,Integer>>();
|
||||
|
||||
HashMap<Integer,Integer> pos = new HashMap<Integer,Integer>();
|
||||
HashMap<Integer,Integer> neg = new HashMap<Integer,Integer>();
|
||||
for (int i = 1; i < 5; i++) {
|
||||
pos.put(i, i);
|
||||
neg.put(-i, -i);
|
||||
}
|
||||
|
||||
mapmap.put(4, pos);
|
||||
mapmap.put(-4, neg);
|
||||
|
||||
return mapmap;
|
||||
}
|
||||
|
||||
public Map<Long, Map<Numberz,Insanity>> testInsanity(Insanity argument) {
|
||||
System.out.print("testInsanity()\n");
|
||||
|
||||
HashMap<Numberz,Insanity> first_map = new HashMap<Numberz, Insanity>();
|
||||
HashMap<Numberz,Insanity> second_map = new HashMap<Numberz, Insanity>();;
|
||||
|
||||
first_map.put(Numberz.TWO, argument);
|
||||
first_map.put(Numberz.THREE, argument);
|
||||
|
||||
Insanity looney = new Insanity();
|
||||
second_map.put(Numberz.SIX, looney);
|
||||
|
||||
Map<Long,Map<Numberz,Insanity>> insane =
|
||||
new HashMap<Long, Map<Numberz,Insanity>>();
|
||||
insane.put((long)1, first_map);
|
||||
insane.put((long)2, second_map);
|
||||
|
||||
return insane;
|
||||
}
|
||||
|
||||
public Xtruct testMulti(byte arg0, int arg1, long arg2, Map<Short,String> arg3, Numberz arg4, long arg5) {
|
||||
System.out.print("testMulti()\n");
|
||||
|
||||
Xtruct hello = new Xtruct();;
|
||||
hello.string_thing = "Hello2";
|
||||
hello.byte_thing = arg0;
|
||||
hello.i32_thing = arg1;
|
||||
hello.i64_thing = arg2;
|
||||
return hello;
|
||||
}
|
||||
|
||||
public void testException(String arg) throws Xception, TException {
|
||||
System.out.print("testException("+arg+")\n");
|
||||
if ("Xception".equals(arg)) {
|
||||
Xception x = new Xception();
|
||||
x.errorCode = 1001;
|
||||
x.message = arg;
|
||||
throw x;
|
||||
} else if ("TException".equals(arg)) {
|
||||
throw new TException(arg);
|
||||
} else {
|
||||
Xtruct result = new Xtruct();
|
||||
result.string_thing = arg;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
public Xtruct testMultiException(String arg0, String arg1) throws Xception, Xception2 {
|
||||
System.out.print("testMultiException(" + arg0 + ", " + arg1 + ")\n");
|
||||
if (arg0.equals("Xception")) {
|
||||
Xception x = new Xception();
|
||||
x.errorCode = 1001;
|
||||
x.message = "This is an Xception";
|
||||
throw x;
|
||||
} else if (arg0.equals("Xception2")) {
|
||||
Xception2 x = new Xception2();
|
||||
x.errorCode = 2002;
|
||||
x.struct_thing = new Xtruct();
|
||||
x.struct_thing.string_thing = "This is an Xception2";
|
||||
throw x;
|
||||
}
|
||||
|
||||
Xtruct result = new Xtruct();
|
||||
result.string_thing = arg1;
|
||||
return result;
|
||||
}
|
||||
|
||||
public void testOneway(int sleepFor) {
|
||||
System.out.println("testOneway(" + Integer.toString(sleepFor) +
|
||||
") => sleeping...");
|
||||
try {
|
||||
Thread.sleep(sleepFor * 1000);
|
||||
System.out.println("Done sleeping!");
|
||||
} catch (InterruptedException ie) {
|
||||
throw new RuntimeException(ie);
|
||||
}
|
||||
}
|
||||
} // class TestHandler
|
||||
|
||||
private static final List<TProtocolFactory> PROTOCOLS = Arrays.asList(
|
||||
new TBinaryProtocol.Factory(),
|
||||
new TCompactProtocol.Factory());
|
||||
|
||||
public static final String HOST = "localhost";
|
||||
public static final int PORT = Integer.valueOf(
|
||||
System.getProperty("test.port", "9090"));
|
||||
protected static final int SOCKET_TIMEOUT = 1500;
|
||||
private static final Xtruct XSTRUCT = new Xtruct("Zero", (byte) 1, -3, -5);
|
||||
private static final Xtruct2 XSTRUCT2 = new Xtruct2((byte)1, XSTRUCT, 5);
|
||||
|
||||
public void startServer(TProcessor processor, TProtocolFactory protoFactory) throws Exception{
|
||||
startServer(processor, protoFactory, null);
|
||||
}
|
||||
|
||||
public abstract void startServer(TProcessor processor, TProtocolFactory protoFactory, TTransportFactory factory) throws Exception;
|
||||
|
||||
public abstract void stopServer() throws Exception;
|
||||
|
||||
public abstract TTransport getClientTransport(TTransport underlyingTransport) throws Exception;
|
||||
|
||||
private void testBool(ThriftTest.Client testClient) throws TException {
|
||||
boolean t = testClient.testBool(true);
|
||||
assertEquals(true, t);
|
||||
boolean f = testClient.testBool(false);
|
||||
assertEquals(false, f);
|
||||
}
|
||||
|
||||
private void testByte(ThriftTest.Client testClient) throws TException {
|
||||
byte i8 = testClient.testByte((byte)1);
|
||||
assertEquals(1, i8);
|
||||
}
|
||||
|
||||
private void testDouble(ThriftTest.Client testClient) throws TException {
|
||||
double dub = testClient.testDouble(5.325098235);
|
||||
assertEquals(5.325098235, dub);
|
||||
}
|
||||
|
||||
private void testEnum(ThriftTest.Client testClient) throws TException {
|
||||
assertEquals(Numberz.ONE, testClient.testEnum(Numberz.ONE));
|
||||
assertEquals(Numberz.TWO, testClient.testEnum(Numberz.TWO));
|
||||
assertEquals(Numberz.THREE, testClient.testEnum(Numberz.THREE));
|
||||
assertEquals(Numberz.FIVE, testClient.testEnum(Numberz.FIVE));
|
||||
assertEquals(Numberz.EIGHT, testClient.testEnum(Numberz.EIGHT));
|
||||
}
|
||||
|
||||
private void testI32(ThriftTest.Client testClient) throws TException {
|
||||
int i32 = testClient.testI32(-1);
|
||||
assertEquals(i32, -1);
|
||||
}
|
||||
|
||||
private void testI64(ThriftTest.Client testClient) throws TException {
|
||||
long i64 = testClient.testI64(-34359738368L);
|
||||
assertEquals(i64, -34359738368L);
|
||||
}
|
||||
|
||||
// todo: add assertions
|
||||
private void testInsanity(ThriftTest.Client testClient) throws TException {
|
||||
Insanity insane;
|
||||
|
||||
insane = new Insanity();
|
||||
insane.userMap = new HashMap<Numberz, Long>();
|
||||
insane.userMap.put(Numberz.FIVE, (long)5000);
|
||||
Xtruct truck = new Xtruct();
|
||||
truck.string_thing = "Truck";
|
||||
truck.byte_thing = (byte)8;
|
||||
truck.i32_thing = 8;
|
||||
truck.i64_thing = 8;
|
||||
insane.xtructs = new ArrayList<Xtruct>();
|
||||
insane.xtructs.add(truck);
|
||||
System.out.print("testInsanity()");
|
||||
Map<Long,Map<Numberz,Insanity>> whoa =
|
||||
testClient.testInsanity(insane);
|
||||
System.out.print(" = {");
|
||||
for (long key : whoa.keySet()) {
|
||||
Map<Numberz,Insanity> val = whoa.get(key);
|
||||
System.out.print(key + " => {");
|
||||
|
||||
for (Numberz k2 : val.keySet()) {
|
||||
Insanity v2 = val.get(k2);
|
||||
System.out.print(k2 + " => {");
|
||||
Map<Numberz, Long> userMap = v2.userMap;
|
||||
System.out.print("{");
|
||||
if (userMap != null) {
|
||||
for (Numberz k3 : userMap.keySet()) {
|
||||
System.out.print(k3 + " => " + userMap.get(k3) + ", ");
|
||||
}
|
||||
}
|
||||
System.out.print("}, ");
|
||||
|
||||
List<Xtruct> xtructs = v2.xtructs;
|
||||
System.out.print("{");
|
||||
if (xtructs != null) {
|
||||
for (Xtruct x : xtructs) {
|
||||
System.out.print("{" + "\"" + x.string_thing + "\", " + x.byte_thing + ", " + x.i32_thing + ", "+ x.i64_thing + "}, ");
|
||||
}
|
||||
}
|
||||
System.out.print("}");
|
||||
|
||||
System.out.print("}, ");
|
||||
}
|
||||
System.out.print("}, ");
|
||||
}
|
||||
System.out.print("}\n");
|
||||
}
|
||||
|
||||
public boolean useAsyncProcessor() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void testIt() throws Exception {
|
||||
|
||||
for (TProtocolFactory protoFactory : getProtocols()) {
|
||||
TProcessor processor = useAsyncProcessor() ? new ThriftTest.AsyncProcessor(new AsyncTestHandler()) : new ThriftTest.Processor(new TestHandler());
|
||||
|
||||
startServer(processor, protoFactory);
|
||||
|
||||
TSocket socket = new TSocket(HOST, PORT);
|
||||
socket.setTimeout(SOCKET_TIMEOUT);
|
||||
TTransport transport = getClientTransport(socket);
|
||||
|
||||
TProtocol protocol = protoFactory.getProtocol(transport);
|
||||
ThriftTest.Client testClient = new ThriftTest.Client(protocol);
|
||||
|
||||
open(transport);
|
||||
testVoid(testClient);
|
||||
testString(testClient);
|
||||
testBool(testClient);
|
||||
testByte(testClient);
|
||||
testI32(testClient);
|
||||
testI64(testClient);
|
||||
testDouble(testClient);
|
||||
testStruct(testClient);
|
||||
testNestedStruct(testClient);
|
||||
testMap(testClient);
|
||||
testStringMap(testClient);
|
||||
testSet(testClient);
|
||||
testList(testClient);
|
||||
testEnum(testClient);
|
||||
testTypedef(testClient);
|
||||
testNestedMap(testClient);
|
||||
testInsanity(testClient);
|
||||
testException(testClient);
|
||||
testOneway(testClient);
|
||||
testI32(testClient);
|
||||
transport.close();
|
||||
|
||||
stopServer();
|
||||
}
|
||||
}
|
||||
|
||||
public void open(TTransport transport) throws Exception {
|
||||
transport.open();
|
||||
}
|
||||
|
||||
public List<TProtocolFactory> getProtocols() {
|
||||
return PROTOCOLS;
|
||||
}
|
||||
|
||||
private void testList(ThriftTest.Client testClient) throws TException {
|
||||
List<Integer> listout = new ArrayList<Integer>();
|
||||
for (int i = -2; i < 3; ++i) {
|
||||
listout.add(i);
|
||||
}
|
||||
List<Integer> listin = testClient.testList(listout);
|
||||
assertEquals(listout, listin);
|
||||
}
|
||||
|
||||
private void testMap(ThriftTest.Client testClient) throws TException {
|
||||
Map<Integer,Integer> mapout = new HashMap<Integer,Integer>();
|
||||
for (int i = 0; i < 5; ++i) {
|
||||
mapout.put(i, i-10);
|
||||
}
|
||||
Map<Integer,Integer> mapin = testClient.testMap(mapout);
|
||||
assertEquals(mapout, mapin);
|
||||
}
|
||||
|
||||
private void testStringMap(ThriftTest.Client testClient) throws TException {
|
||||
Map<String,String> mapout = new HashMap<String,String>();
|
||||
mapout.put("a", "123");
|
||||
mapout.put(" x y ", " with spaces ");
|
||||
mapout.put("same", "same");
|
||||
mapout.put("0", "numeric key");
|
||||
Map<String,String> mapin = testClient.testStringMap(mapout);
|
||||
assertEquals(mapout, mapin);
|
||||
}
|
||||
|
||||
private void testNestedMap(ThriftTest.Client testClient) throws TException {
|
||||
Map<Integer,Map<Integer,Integer>> mm =
|
||||
testClient.testMapMap(1);
|
||||
Map<Integer,Map<Integer,Integer>> mapmap =
|
||||
new HashMap<Integer,Map<Integer,Integer>>();
|
||||
|
||||
HashMap<Integer,Integer> pos = new HashMap<Integer,Integer>();
|
||||
HashMap<Integer,Integer> neg = new HashMap<Integer,Integer>();
|
||||
for (int i = 1; i < 5; i++) {
|
||||
pos.put(i, i);
|
||||
neg.put(-i, -i);
|
||||
}
|
||||
|
||||
mapmap.put(4, pos);
|
||||
mapmap.put(-4, neg);
|
||||
assertEquals(mapmap, mm);
|
||||
}
|
||||
|
||||
private void testNestedStruct(ThriftTest.Client testClient) throws TException {
|
||||
Xtruct2 in2 = testClient.testNest(XSTRUCT2);
|
||||
assertEquals(XSTRUCT2, in2);
|
||||
}
|
||||
|
||||
private void testOneway(ThriftTest.Client testClient) throws Exception {
|
||||
long begin = System.currentTimeMillis();
|
||||
testClient.testOneway(1);
|
||||
long elapsed = System.currentTimeMillis() - begin;
|
||||
assertTrue(elapsed < 500);
|
||||
}
|
||||
|
||||
private void testSet(ThriftTest.Client testClient) throws TException {
|
||||
Set<Integer> setout = new HashSet<Integer>();
|
||||
for (int i = -2; i < 3; ++i) {
|
||||
setout.add(i);
|
||||
}
|
||||
Set<Integer> setin = testClient.testSet(setout);
|
||||
assertEquals(setout, setin);
|
||||
}
|
||||
|
||||
private void testString(ThriftTest.Client testClient) throws TException {
|
||||
String s = testClient.testString("Test");
|
||||
assertEquals("Test", s);
|
||||
}
|
||||
|
||||
private void testStruct(ThriftTest.Client testClient) throws TException {
|
||||
assertEquals(XSTRUCT, testClient.testStruct(XSTRUCT));
|
||||
}
|
||||
|
||||
private void testTypedef(ThriftTest.Client testClient) throws TException {
|
||||
assertEquals(309858235082523L, testClient.testTypedef(309858235082523L));
|
||||
}
|
||||
|
||||
private void testVoid(ThriftTest.Client testClient) throws TException {
|
||||
testClient.testVoid();
|
||||
}
|
||||
|
||||
private static class CallCountingTransportFactory extends TTransportFactory {
|
||||
public int count = 0;
|
||||
private final Factory factory;
|
||||
|
||||
public CallCountingTransportFactory(Factory factory) {
|
||||
this.factory = factory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TTransport getTransport(TTransport trans) {
|
||||
count++;
|
||||
return factory.getTransport(trans);
|
||||
}
|
||||
}
|
||||
|
||||
public void testTransportFactory() throws Exception {
|
||||
for (TProtocolFactory protoFactory : getProtocols()) {
|
||||
TestHandler handler = new TestHandler();
|
||||
ThriftTest.Processor processor = new ThriftTest.Processor(handler);
|
||||
|
||||
final CallCountingTransportFactory factory = new CallCountingTransportFactory(new TFramedTransport.Factory());
|
||||
|
||||
startServer(processor, protoFactory, factory);
|
||||
assertEquals(0, factory.count);
|
||||
|
||||
TSocket socket = new TSocket(HOST, PORT);
|
||||
socket.setTimeout(SOCKET_TIMEOUT);
|
||||
TTransport transport = getClientTransport(socket);
|
||||
open(transport);
|
||||
|
||||
TProtocol protocol = protoFactory.getProtocol(transport);
|
||||
ThriftTest.Client testClient = new ThriftTest.Client(protocol);
|
||||
assertEquals(0, testClient.testByte((byte) 0));
|
||||
assertEquals(2, factory.count);
|
||||
stopServer();
|
||||
}
|
||||
}
|
||||
|
||||
private void testException(ThriftTest.Client testClient) throws TException, Xception {
|
||||
try {
|
||||
testClient.testException("Xception");
|
||||
assert false;
|
||||
} catch(Xception e) {
|
||||
assertEquals(e.message, "Xception");
|
||||
assertEquals(e.errorCode, 1001);
|
||||
}
|
||||
try {
|
||||
testClient.testException("TException");
|
||||
assert false;
|
||||
} catch(TException e) {
|
||||
}
|
||||
testClient.testException("no Exception");
|
||||
}
|
||||
|
||||
|
||||
public static class AsyncTestHandler implements ThriftTest.AsyncIface {
|
||||
|
||||
TestHandler handler = new TestHandler();
|
||||
|
||||
@Override
|
||||
public void testVoid(AsyncMethodCallback<Void> resultHandler) throws TException {
|
||||
resultHandler.onComplete(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testString(String thing, AsyncMethodCallback<String> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testString(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testBool(boolean thing, AsyncMethodCallback<Boolean> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testBool(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testByte(byte thing, AsyncMethodCallback<Byte> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testByte(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testI32(int thing, AsyncMethodCallback<Integer> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testI32(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testI64(long thing, AsyncMethodCallback<Long> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testI64(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testDouble(double thing, AsyncMethodCallback<Double> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testDouble(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testBinary(ByteBuffer thing, AsyncMethodCallback<ByteBuffer> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testBinary(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testStruct(Xtruct thing, AsyncMethodCallback<Xtruct> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testStruct(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testNest(Xtruct2 thing, AsyncMethodCallback<Xtruct2> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testNest(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testMap(Map<Integer, Integer> thing, AsyncMethodCallback<Map<Integer, Integer>> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testMap(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testStringMap(Map<String, String> thing, AsyncMethodCallback<Map<String, String>> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testStringMap(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testSet(Set<Integer> thing, AsyncMethodCallback<Set<Integer>> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testSet(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testList(List<Integer> thing, AsyncMethodCallback<List<Integer>> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testList(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testEnum(Numberz thing, AsyncMethodCallback<Numberz> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testEnum(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testTypedef(long thing, AsyncMethodCallback<Long> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testTypedef(thing));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testMapMap(int hello, AsyncMethodCallback<Map<Integer,Map<Integer,Integer>>> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testMapMap(hello));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testInsanity(Insanity argument, AsyncMethodCallback<Map<Long, Map<Numberz,Insanity>>> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testInsanity(argument));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testMulti(byte arg0, int arg1, long arg2, Map<Short, String> arg3, Numberz arg4, long arg5, AsyncMethodCallback<Xtruct> resultHandler) throws TException {
|
||||
resultHandler.onComplete(handler.testMulti(arg0,arg1,arg2,arg3,arg4,arg5));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testException(String arg, AsyncMethodCallback<Void> resultHandler) throws TException {
|
||||
System.out.print("testException("+arg+")\n");
|
||||
if ("Xception".equals(arg)) {
|
||||
Xception x = new Xception();
|
||||
x.errorCode = 1001;
|
||||
x.message = arg;
|
||||
// throw and onError yield the same result.
|
||||
// resultHandler.onError(x);
|
||||
// return;
|
||||
throw x;
|
||||
} else if ("TException".equals(arg)) {
|
||||
// throw new TException(arg);
|
||||
resultHandler.onError(new TException(arg));
|
||||
return;
|
||||
}
|
||||
resultHandler.onComplete(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testMultiException(String arg0, String arg1, AsyncMethodCallback<Xtruct> resultHandler) throws TException {
|
||||
//To change body of implemented methods use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testOneway(int secondsToSleep, AsyncMethodCallback<Void> resultHandler) throws TException {
|
||||
handler.testOneway(secondsToSleep);
|
||||
resultHandler.onComplete(null);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
28
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/server/TestAsyncServer.java
generated
vendored
Normal file
28
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/server/TestAsyncServer.java
generated
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.server;
|
||||
|
||||
public class TestAsyncServer extends TestNonblockingServer {
|
||||
|
||||
@Override
|
||||
public boolean useAsyncProcessor(){
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
30
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/server/TestHsHaServer.java
generated
vendored
Normal file
30
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/server/TestHsHaServer.java
generated
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.server;
|
||||
|
||||
import org.apache.thrift.TProcessor;
|
||||
import org.apache.thrift.protocol.TProtocolFactory;
|
||||
import org.apache.thrift.server.THsHaServer.Args;
|
||||
import org.apache.thrift.transport.TNonblockingServerSocket;
|
||||
|
||||
public class TestHsHaServer extends TestNonblockingServer {
|
||||
protected TServer getServer(TProcessor processor, TNonblockingServerSocket socket, TProtocolFactory protoFactory) {
|
||||
return new THsHaServer(new Args(socket).processor(processor).protocolFactory(protoFactory));
|
||||
}
|
||||
}
|
123
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/server/TestNonblockingServer.java
generated
vendored
Normal file
123
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/server/TestNonblockingServer.java
generated
vendored
Normal file
|
@ -0,0 +1,123 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.server;
|
||||
|
||||
|
||||
import org.apache.thrift.TProcessor;
|
||||
import org.apache.thrift.protocol.TProtocol;
|
||||
import org.apache.thrift.protocol.TProtocolFactory;
|
||||
import org.apache.thrift.server.TNonblockingServer.Args;
|
||||
import org.apache.thrift.transport.TFramedTransport;
|
||||
import org.apache.thrift.transport.TNonblockingServerSocket;
|
||||
import org.apache.thrift.transport.TSocket;
|
||||
import org.apache.thrift.transport.TTransport;
|
||||
import org.apache.thrift.transport.TTransportException;
|
||||
import org.apache.thrift.transport.TTransportFactory;
|
||||
|
||||
import thrift.test.ThriftTest;
|
||||
|
||||
public class TestNonblockingServer extends ServerTestBase {
|
||||
|
||||
private Thread serverThread;
|
||||
private TServer server;
|
||||
private static final int NUM_QUERIES = 1000;
|
||||
|
||||
protected TServer getServer(TProcessor processor, TNonblockingServerSocket socket, TProtocolFactory protoFactory, TTransportFactory factory) {
|
||||
final Args args = new Args(socket).processor(processor).protocolFactory(protoFactory);
|
||||
if (factory != null) {
|
||||
args.transportFactory(factory);
|
||||
}
|
||||
return new TNonblockingServer(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startServer(final TProcessor processor, final TProtocolFactory protoFactory, final TTransportFactory factory) throws Exception {
|
||||
serverThread = new Thread() {
|
||||
public void run() {
|
||||
try {
|
||||
// Transport
|
||||
TNonblockingServerSocket tServerSocket =
|
||||
new TNonblockingServerSocket(new TNonblockingServerSocket.NonblockingAbstractServerSocketArgs().port(PORT));
|
||||
|
||||
server = getServer(processor, tServerSocket, protoFactory, factory);
|
||||
|
||||
// Run it
|
||||
System.out.println("Starting the server on port " + PORT + "...");
|
||||
server.serve();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
fail();
|
||||
}
|
||||
}
|
||||
};
|
||||
serverThread.start();
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stopServer() throws Exception {
|
||||
server.stop();
|
||||
try {
|
||||
serverThread.join();
|
||||
} catch (InterruptedException e) {}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TTransport getClientTransport(TTransport underlyingTransport) throws Exception {
|
||||
return new TFramedTransport(underlyingTransport);
|
||||
}
|
||||
|
||||
|
||||
public void testCleanupAllSelectionKeys() throws Exception {
|
||||
for (TProtocolFactory protoFactory : getProtocols()) {
|
||||
TestHandler handler = new TestHandler();
|
||||
ThriftTest.Processor processor = new ThriftTest.Processor(handler);
|
||||
|
||||
startServer(processor, protoFactory);
|
||||
|
||||
TSocket socket = new TSocket(HOST, PORT);
|
||||
socket.setTimeout(SOCKET_TIMEOUT);
|
||||
TTransport transport = getClientTransport(socket);
|
||||
|
||||
TProtocol protocol = protoFactory.getProtocol(transport);
|
||||
ThriftTest.Client testClient = new ThriftTest.Client(protocol);
|
||||
|
||||
open(transport);
|
||||
|
||||
for (int i = 0; i < NUM_QUERIES; ++i) {
|
||||
testClient.testI32(1);
|
||||
}
|
||||
server.stop();
|
||||
for (int i = 0; i < NUM_QUERIES; ++i) {
|
||||
try {
|
||||
testClient.testI32(1);
|
||||
} catch(TTransportException e) {
|
||||
System.err.println(e);
|
||||
e.printStackTrace();
|
||||
if (e.getCause() instanceof java.net.SocketTimeoutException) {
|
||||
fail("timed out when it should have thrown another kind of error!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
transport.close();
|
||||
stopServer();
|
||||
}
|
||||
}
|
||||
}
|
30
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/server/TestThreadedSelectorServer.java
generated
vendored
Normal file
30
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/server/TestThreadedSelectorServer.java
generated
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.server;
|
||||
|
||||
import org.apache.thrift.TProcessor;
|
||||
import org.apache.thrift.protocol.TProtocolFactory;
|
||||
import org.apache.thrift.server.TThreadedSelectorServer.Args;
|
||||
import org.apache.thrift.transport.TNonblockingServerSocket;
|
||||
|
||||
public class TestThreadedSelectorServer extends TestNonblockingServer {
|
||||
protected TServer getServer(TProcessor processor, TNonblockingServerSocket socket, TProtocolFactory protoFactory) {
|
||||
return new TThreadedSelectorServer(new Args(socket).processor(processor).protocolFactory(protoFactory));
|
||||
}
|
||||
}
|
663
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/EqualityTest.java
generated
vendored
Normal file
663
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/EqualityTest.java
generated
vendored
Normal file
|
@ -0,0 +1,663 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
This program was generated by the following Python script:
|
||||
|
||||
#!/usr/bin/python2.5
|
||||
|
||||
# Remove this when Python 2.6 hits the streets.
|
||||
from __future__ import with_statement
|
||||
|
||||
import sys
|
||||
import os.path
|
||||
|
||||
|
||||
# Quines the easy way.
|
||||
with open(sys.argv[0], 'r') as handle:
|
||||
source = handle.read()
|
||||
|
||||
with open(os.path.join(os.path.dirname(sys.argv[0]), 'EqualityTest.java'), 'w') as out:
|
||||
print >> out, ("/""*" r"""
|
||||
* 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
|
||||
*
|
||||
* 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.
|
||||
""" "*""/")
|
||||
print >> out
|
||||
print >> out, "/""*"
|
||||
print >> out, "This program was generated by the following Python script:"
|
||||
print >> out
|
||||
out.write(source)
|
||||
print >> out, "*""/"
|
||||
|
||||
print >> out, r'''
|
||||
package org.apache.thrift.test;
|
||||
|
||||
// Generated code
|
||||
import thrift.test.*;
|
||||
|
||||
/'''r'''**
|
||||
*'''r'''/
|
||||
public class EqualityTest {
|
||||
public static void main(String[] args) throws Exception {
|
||||
JavaTestHelper lhs, rhs;
|
||||
'''
|
||||
|
||||
vals = {
|
||||
'int': ("1", "2"),
|
||||
'obj': ("\"foo\"", "\"bar\""),
|
||||
'bin': ("new byte[]{1,2}", "new byte[]{3,4}"),
|
||||
}
|
||||
matrix = (
|
||||
(False,False),
|
||||
(False,True ),
|
||||
(True ,False),
|
||||
(True ,True ),
|
||||
)
|
||||
|
||||
for type in ('int', 'obj', 'bin'):
|
||||
for option in ('req', 'opt'):
|
||||
nulls = matrix[0:1] if type == 'int' else matrix[-1::-1]
|
||||
issets = matrix
|
||||
for is_null in nulls:
|
||||
for is_set in issets:
|
||||
# isset is implied for non-primitives, so only consider the case
|
||||
# where isset and non-null match.
|
||||
if type != 'int' and list(is_set) != [ not null for null in is_null ]:
|
||||
continue
|
||||
for equal in (True, False):
|
||||
print >> out
|
||||
print >> out, " lhs = new JavaTestHelper();"
|
||||
print >> out, " rhs = new JavaTestHelper();"
|
||||
print >> out, " lhs." + option + "_" + type, "=", vals[type][0] + ";"
|
||||
print >> out, " rhs." + option + "_" + type, "=", vals[type][0 if equal else 1] + ";"
|
||||
isset_setter = "set" + option[0].upper() + option[1:] + "_" + type + "IsSet"
|
||||
if (type == 'int' and is_set[0]): print >> out, " lhs." + isset_setter + "(true);"
|
||||
if (type == 'int' and is_set[1]): print >> out, " rhs." + isset_setter + "(true);"
|
||||
if (is_null[0]): print >> out, " lhs." + option + "_" + type, "= null;"
|
||||
if (is_null[1]): print >> out, " rhs." + option + "_" + type, "= null;"
|
||||
this_present = not is_null[0] and (option == 'req' or is_set[0])
|
||||
that_present = not is_null[1] and (option == 'req' or is_set[1])
|
||||
print >> out, " // this_present = " + repr(this_present)
|
||||
print >> out, " // that_present = " + repr(that_present)
|
||||
is_equal = \
|
||||
(not this_present and not that_present) or \
|
||||
(this_present and that_present and equal)
|
||||
eq_str = 'true' if is_equal else 'false'
|
||||
|
||||
print >> out, " if (lhs.equals(rhs) != "+eq_str+")"
|
||||
print >> out, " throw new RuntimeException(\"Failure\");"
|
||||
if is_equal:
|
||||
print >> out, " if (lhs.hashCode() != rhs.hashCode())"
|
||||
print >> out, " throw new RuntimeException(\"Failure\");"
|
||||
|
||||
print >> out, r'''
|
||||
}
|
||||
}
|
||||
'''
|
||||
*/
|
||||
|
||||
package org.apache.thrift.test;
|
||||
|
||||
// Generated code
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import thrift.test.JavaTestHelper;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class EqualityTest {
|
||||
public static void main(String[] args) throws Exception {
|
||||
JavaTestHelper lhs, rhs;
|
||||
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_int = 1;
|
||||
rhs.req_int = 1;
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_int = 1;
|
||||
rhs.req_int = 2;
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_int = 1;
|
||||
rhs.req_int = 1;
|
||||
rhs.setReq_intIsSet(true);
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_int = 1;
|
||||
rhs.req_int = 2;
|
||||
rhs.setReq_intIsSet(true);
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_int = 1;
|
||||
rhs.req_int = 1;
|
||||
lhs.setReq_intIsSet(true);
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_int = 1;
|
||||
rhs.req_int = 2;
|
||||
lhs.setReq_intIsSet(true);
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_int = 1;
|
||||
rhs.req_int = 1;
|
||||
lhs.setReq_intIsSet(true);
|
||||
rhs.setReq_intIsSet(true);
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_int = 1;
|
||||
rhs.req_int = 2;
|
||||
lhs.setReq_intIsSet(true);
|
||||
rhs.setReq_intIsSet(true);
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_int = 1;
|
||||
rhs.opt_int = 1;
|
||||
// this_present = False
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_int = 1;
|
||||
rhs.opt_int = 2;
|
||||
// this_present = False
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_int = 1;
|
||||
rhs.opt_int = 1;
|
||||
rhs.setOpt_intIsSet(true);
|
||||
// this_present = False
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_int = 1;
|
||||
rhs.opt_int = 2;
|
||||
rhs.setOpt_intIsSet(true);
|
||||
// this_present = False
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_int = 1;
|
||||
rhs.opt_int = 1;
|
||||
lhs.setOpt_intIsSet(true);
|
||||
// this_present = True
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_int = 1;
|
||||
rhs.opt_int = 2;
|
||||
lhs.setOpt_intIsSet(true);
|
||||
// this_present = True
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_int = 1;
|
||||
rhs.opt_int = 1;
|
||||
lhs.setOpt_intIsSet(true);
|
||||
rhs.setOpt_intIsSet(true);
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_int = 1;
|
||||
rhs.opt_int = 2;
|
||||
lhs.setOpt_intIsSet(true);
|
||||
rhs.setOpt_intIsSet(true);
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_obj = "foo";
|
||||
rhs.req_obj = "foo";
|
||||
lhs.req_obj = null;
|
||||
rhs.req_obj = null;
|
||||
// this_present = False
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_obj = "foo";
|
||||
rhs.req_obj = "bar";
|
||||
lhs.req_obj = null;
|
||||
rhs.req_obj = null;
|
||||
// this_present = False
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_obj = "foo";
|
||||
rhs.req_obj = "foo";
|
||||
lhs.req_obj = null;
|
||||
// this_present = False
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_obj = "foo";
|
||||
rhs.req_obj = "bar";
|
||||
lhs.req_obj = null;
|
||||
// this_present = False
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_obj = "foo";
|
||||
rhs.req_obj = "foo";
|
||||
rhs.req_obj = null;
|
||||
// this_present = True
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_obj = "foo";
|
||||
rhs.req_obj = "bar";
|
||||
rhs.req_obj = null;
|
||||
// this_present = True
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_obj = "foo";
|
||||
rhs.req_obj = "foo";
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_obj = "foo";
|
||||
rhs.req_obj = "bar";
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_obj = "foo";
|
||||
rhs.opt_obj = "foo";
|
||||
lhs.opt_obj = null;
|
||||
rhs.opt_obj = null;
|
||||
// this_present = False
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_obj = "foo";
|
||||
rhs.opt_obj = "bar";
|
||||
lhs.opt_obj = null;
|
||||
rhs.opt_obj = null;
|
||||
// this_present = False
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_obj = "foo";
|
||||
rhs.opt_obj = "foo";
|
||||
lhs.opt_obj = null;
|
||||
// this_present = False
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_obj = "foo";
|
||||
rhs.opt_obj = "bar";
|
||||
lhs.opt_obj = null;
|
||||
// this_present = False
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_obj = "foo";
|
||||
rhs.opt_obj = "foo";
|
||||
rhs.opt_obj = null;
|
||||
// this_present = True
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_obj = "foo";
|
||||
rhs.opt_obj = "bar";
|
||||
rhs.opt_obj = null;
|
||||
// this_present = True
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_obj = "foo";
|
||||
rhs.opt_obj = "foo";
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_obj = "foo";
|
||||
rhs.opt_obj = "bar";
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
lhs.req_bin = null;
|
||||
rhs.req_bin = null;
|
||||
// this_present = False
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.req_bin = ByteBuffer.wrap(new byte[]{3,4});
|
||||
lhs.req_bin = null;
|
||||
rhs.req_bin = null;
|
||||
// this_present = False
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
lhs.req_bin = null;
|
||||
// this_present = False
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.req_bin = ByteBuffer.wrap(new byte[]{3,4});
|
||||
lhs.req_bin = null;
|
||||
// this_present = False
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.req_bin = null;
|
||||
// this_present = True
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.req_bin = ByteBuffer.wrap(new byte[]{3,4});
|
||||
rhs.req_bin = null;
|
||||
// this_present = True
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.req_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.req_bin = ByteBuffer.wrap(new byte[]{3,4});
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
lhs.opt_bin = null;
|
||||
rhs.opt_bin = null;
|
||||
// this_present = False
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.opt_bin = ByteBuffer.wrap(new byte[]{3,4});
|
||||
lhs.opt_bin = null;
|
||||
rhs.opt_bin = null;
|
||||
// this_present = False
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
lhs.opt_bin = null;
|
||||
// this_present = False
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.opt_bin = ByteBuffer.wrap(new byte[]{3,4});
|
||||
lhs.opt_bin = null;
|
||||
// this_present = False
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.opt_bin = null;
|
||||
// this_present = True
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.opt_bin = ByteBuffer.wrap(new byte[]{3,4});
|
||||
rhs.opt_bin = null;
|
||||
// this_present = True
|
||||
// that_present = False
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != true)
|
||||
throw new RuntimeException("Failure");
|
||||
if (lhs.hashCode() != rhs.hashCode())
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
lhs = new JavaTestHelper();
|
||||
rhs = new JavaTestHelper();
|
||||
lhs.opt_bin = ByteBuffer.wrap(new byte[]{1,2});
|
||||
rhs.opt_bin = ByteBuffer.wrap(new byte[]{3,4});
|
||||
// this_present = True
|
||||
// that_present = True
|
||||
if (lhs.equals(rhs) != false)
|
||||
throw new RuntimeException("Failure");
|
||||
|
||||
}
|
||||
}
|
||||
|
112
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/JavaBeansTest.java
generated
vendored
Normal file
112
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/JavaBeansTest.java
generated
vendored
Normal file
|
@ -0,0 +1,112 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.test;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.LinkedList;
|
||||
|
||||
import thrift.test.OneOfEachBeans;
|
||||
|
||||
public class JavaBeansTest {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Test isSet methods
|
||||
OneOfEachBeans ooe = new OneOfEachBeans();
|
||||
|
||||
// Nothing should be set
|
||||
if (ooe.is_set_a_bite())
|
||||
throw new RuntimeException("isSet method error: unset field returned as set!");
|
||||
if (ooe.is_set_base64())
|
||||
throw new RuntimeException("isSet method error: unset field returned as set!");
|
||||
if (ooe.is_set_byte_list())
|
||||
throw new RuntimeException("isSet method error: unset field returned as set!");
|
||||
if (ooe.is_set_double_precision())
|
||||
throw new RuntimeException("isSet method error: unset field returned as set!");
|
||||
if (ooe.is_set_i16_list())
|
||||
throw new RuntimeException("isSet method error: unset field returned as set!");
|
||||
if (ooe.is_set_i64_list())
|
||||
throw new RuntimeException("isSet method error: unset field returned as set!");
|
||||
if (ooe.is_set_boolean_field())
|
||||
throw new RuntimeException("isSet method error: unset field returned as set!");
|
||||
if (ooe.is_set_integer16())
|
||||
throw new RuntimeException("isSet method error: unset field returned as set!");
|
||||
if (ooe.is_set_integer32())
|
||||
throw new RuntimeException("isSet method error: unset field returned as set!");
|
||||
if (ooe.is_set_integer64())
|
||||
throw new RuntimeException("isSet method error: unset field returned as set!");
|
||||
if (ooe.is_set_some_characters())
|
||||
throw new RuntimeException("isSet method error: unset field returned as set!");
|
||||
|
||||
for (int i = 1; i < 12; i++){
|
||||
if (ooe.isSet(ooe.fieldForId(i)))
|
||||
throw new RuntimeException("isSet method error: unset field " + i + " returned as set!");
|
||||
}
|
||||
|
||||
// Everything is set
|
||||
ooe.set_a_bite((byte) 1);
|
||||
ooe.set_base64(ByteBuffer.wrap("bytes".getBytes()));
|
||||
ooe.set_byte_list(new LinkedList<Byte>());
|
||||
ooe.set_double_precision(1);
|
||||
ooe.set_i16_list(new LinkedList<Short>());
|
||||
ooe.set_i64_list(new LinkedList<Long>());
|
||||
ooe.set_boolean_field(true);
|
||||
ooe.set_integer16((short) 1);
|
||||
ooe.set_integer32(1);
|
||||
ooe.set_integer64(1);
|
||||
ooe.set_some_characters("string");
|
||||
|
||||
if (!ooe.is_set_a_bite())
|
||||
throw new RuntimeException("isSet method error: set field returned as unset!");
|
||||
if (!ooe.is_set_base64())
|
||||
throw new RuntimeException("isSet method error: set field returned as unset!");
|
||||
if (!ooe.is_set_byte_list())
|
||||
throw new RuntimeException("isSet method error: set field returned as unset!");
|
||||
if (!ooe.is_set_double_precision())
|
||||
throw new RuntimeException("isSet method error: set field returned as unset!");
|
||||
if (!ooe.is_set_i16_list())
|
||||
throw new RuntimeException("isSet method error: set field returned as unset!");
|
||||
if (!ooe.is_set_i64_list())
|
||||
throw new RuntimeException("isSet method error: set field returned as unset!");
|
||||
if (!ooe.is_set_boolean_field())
|
||||
throw new RuntimeException("isSet method error: set field returned as unset!");
|
||||
if (!ooe.is_set_integer16())
|
||||
throw new RuntimeException("isSet method error: set field returned as unset!");
|
||||
if (!ooe.is_set_integer32())
|
||||
throw new RuntimeException("isSet method error: set field returned as unset!");
|
||||
if (!ooe.is_set_integer64())
|
||||
throw new RuntimeException("isSet method error: set field returned as unset!");
|
||||
if (!ooe.is_set_some_characters())
|
||||
throw new RuntimeException("isSet method error: set field returned as unset!");
|
||||
|
||||
for (int i = 1; i < 12; i++){
|
||||
if (!ooe.isSet(ooe.fieldForId(i)))
|
||||
throw new RuntimeException("isSet method error: set field " + i + " returned as unset!");
|
||||
}
|
||||
|
||||
// Should throw exception when field doesn't exist
|
||||
boolean exceptionThrown = false;
|
||||
try{
|
||||
if (ooe.isSet(ooe.fieldForId(100)));
|
||||
} catch (IllegalArgumentException e){
|
||||
exceptionThrown = true;
|
||||
}
|
||||
if (!exceptionThrown)
|
||||
throw new RuntimeException("isSet method error: non-existent field provided as agument but no exception thrown!");
|
||||
}
|
||||
}
|
62
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/ReadStruct.java
generated
vendored
Normal file
62
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/ReadStruct.java
generated
vendored
Normal file
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.test;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.FileInputStream;
|
||||
|
||||
import org.apache.thrift.Fixtures;
|
||||
import org.apache.thrift.protocol.TProtocol;
|
||||
import org.apache.thrift.protocol.TProtocolFactory;
|
||||
import org.apache.thrift.transport.TIOStreamTransport;
|
||||
import org.apache.thrift.transport.TTransport;
|
||||
|
||||
import thrift.test.CompactProtoTestStruct;
|
||||
|
||||
public class ReadStruct {
|
||||
public static void main(String[] args) throws Exception {
|
||||
if (args.length != 2) {
|
||||
System.out.println("usage: java -cp build/classes org.apache.thrift.test.ReadStruct filename proto_factory_class");
|
||||
System.out.println("Read in an instance of CompactProtocolTestStruct from 'file', making sure that it is equivalent to Fixtures.compactProtoTestStruct. Use a protocol from 'proto_factory_class'.");
|
||||
}
|
||||
|
||||
TTransport trans = new TIOStreamTransport(new BufferedInputStream(new FileInputStream(args[0])));
|
||||
|
||||
TProtocolFactory factory = (TProtocolFactory)Class.forName(args[1]).newInstance();
|
||||
|
||||
TProtocol proto = factory.getProtocol(trans);
|
||||
|
||||
CompactProtoTestStruct cpts = new CompactProtoTestStruct();
|
||||
|
||||
for (CompactProtoTestStruct._Fields fid : CompactProtoTestStruct.metaDataMap.keySet()) {
|
||||
cpts.setFieldValue(fid, null);
|
||||
}
|
||||
|
||||
cpts.read(proto);
|
||||
|
||||
if (cpts.equals(Fixtures.compactProtoTestStruct)) {
|
||||
System.out.println("Object verified successfully!");
|
||||
} else {
|
||||
System.out.println("Object failed verification!");
|
||||
System.out.println("Expected: " + Fixtures.compactProtoTestStruct + " but got " + cpts);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
80
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/SerializationBenchmark.java
generated
vendored
Normal file
80
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/SerializationBenchmark.java
generated
vendored
Normal file
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.test;
|
||||
|
||||
import org.apache.thrift.Fixtures;
|
||||
import org.apache.thrift.TBase;
|
||||
import org.apache.thrift.protocol.TBinaryProtocol;
|
||||
import org.apache.thrift.protocol.TProtocol;
|
||||
import org.apache.thrift.protocol.TProtocolFactory;
|
||||
import org.apache.thrift.transport.TMemoryBuffer;
|
||||
import org.apache.thrift.transport.TMemoryInputTransport;
|
||||
import org.apache.thrift.transport.TTransport;
|
||||
import org.apache.thrift.transport.TTransportException;
|
||||
|
||||
import thrift.test.OneOfEach;
|
||||
|
||||
public class SerializationBenchmark {
|
||||
private final static int HOW_MANY = 10000000;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
TProtocolFactory factory = new TBinaryProtocol.Factory();
|
||||
|
||||
testSerialization(factory, Fixtures.oneOfEach);
|
||||
testDeserialization(factory, Fixtures.oneOfEach, OneOfEach.class);
|
||||
}
|
||||
|
||||
public static void testSerialization(TProtocolFactory factory, TBase object) throws Exception {
|
||||
TTransport trans = new TTransport() {
|
||||
public void write(byte[] bin, int x, int y) throws TTransportException {}
|
||||
public int read(byte[] bin, int x, int y) throws TTransportException {return 0;}
|
||||
public void close() {}
|
||||
public void open() {}
|
||||
public boolean isOpen() {return true;}
|
||||
};
|
||||
|
||||
TProtocol proto = factory.getProtocol(trans);
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
for (int i = 0; i < HOW_MANY; i++) {
|
||||
object.write(proto);
|
||||
}
|
||||
long endTime = System.currentTimeMillis();
|
||||
|
||||
System.out.println("Serialization test time: " + (endTime - startTime) + " ms");
|
||||
}
|
||||
|
||||
public static <T extends TBase> void testDeserialization(TProtocolFactory factory, T object, Class<T> klass) throws Exception {
|
||||
TMemoryBuffer buf = new TMemoryBuffer(0);
|
||||
object.write(factory.getProtocol(buf));
|
||||
byte[] serialized = new byte[100*1024];
|
||||
buf.read(serialized, 0, 100*1024);
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
for (int i = 0; i < HOW_MANY; i++) {
|
||||
T o2 = klass.newInstance();
|
||||
o2.read(factory.getProtocol(new TMemoryInputTransport(serialized)));
|
||||
}
|
||||
long endTime = System.currentTimeMillis();
|
||||
|
||||
System.out.println("Deserialization test time: " + (endTime - startTime) + " ms");
|
||||
}
|
||||
}
|
782
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/TestClient.java
generated
vendored
Normal file
782
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/TestClient.java
generated
vendored
Normal file
|
@ -0,0 +1,782 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.test;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.thrift.TApplicationException;
|
||||
import org.apache.thrift.TException;
|
||||
import org.apache.thrift.TSerializer;
|
||||
import org.apache.thrift.protocol.TBinaryProtocol;
|
||||
import org.apache.thrift.protocol.TCompactProtocol;
|
||||
import org.apache.thrift.protocol.TJSONProtocol;
|
||||
import org.apache.thrift.protocol.TProtocol;
|
||||
import org.apache.thrift.protocol.TSimpleJSONProtocol;
|
||||
import org.apache.thrift.transport.TFastFramedTransport;
|
||||
import org.apache.thrift.transport.TFramedTransport;
|
||||
import org.apache.thrift.transport.THttpClient;
|
||||
import org.apache.thrift.transport.TSSLTransportFactory;
|
||||
import org.apache.thrift.transport.TSocket;
|
||||
import org.apache.thrift.transport.TTransport;
|
||||
import org.apache.thrift.transport.TTransportException;
|
||||
|
||||
// Generated code
|
||||
import thrift.test.Insanity;
|
||||
import thrift.test.Numberz;
|
||||
import thrift.test.ThriftTest;
|
||||
import thrift.test.Xception;
|
||||
import thrift.test.Xception2;
|
||||
import thrift.test.Xtruct;
|
||||
import thrift.test.Xtruct2;
|
||||
|
||||
/**
|
||||
* Test Java client for thrift. Essentially just a copy of the C++ version,
|
||||
* this makes a variety of requests to enable testing for both performance and
|
||||
* correctness of the output.
|
||||
*
|
||||
*/
|
||||
public class TestClient {
|
||||
|
||||
private static int ERR_BASETYPES = 1;
|
||||
private static int ERR_STRUCTS = 2;
|
||||
private static int ERR_CONTAINERS = 4;
|
||||
private static int ERR_EXCEPTIONS = 8;
|
||||
private static int ERR_UNKNOWN = 64;
|
||||
|
||||
public static void main(String [] args) {
|
||||
String host = "localhost";
|
||||
int port = 9090;
|
||||
int numTests = 1;
|
||||
String protocol_type = "binary";
|
||||
String transport_type = "buffered";
|
||||
boolean ssl = false;
|
||||
|
||||
int socketTimeout = 1000;
|
||||
|
||||
try {
|
||||
for (int i = 0; i < args.length; ++i) {
|
||||
if (args[i].startsWith("--host")) {
|
||||
host = args[i].split("=")[1];
|
||||
host.trim();
|
||||
} else if (args[i].startsWith("--port")) {
|
||||
port = Integer.valueOf(args[i].split("=")[1]);
|
||||
} else if (args[i].startsWith("--n") ||
|
||||
args[i].startsWith("--testloops")){
|
||||
numTests = Integer.valueOf(args[i].split("=")[1]);
|
||||
} else if (args[i].equals("--timeout")) {
|
||||
socketTimeout = Integer.valueOf(args[i].split("=")[1]);
|
||||
} else if (args[i].startsWith("--protocol")) {
|
||||
protocol_type = args[i].split("=")[1];
|
||||
protocol_type.trim();
|
||||
} else if (args[i].startsWith("--transport")) {
|
||||
transport_type = args[i].split("=")[1];
|
||||
transport_type.trim();
|
||||
} else if (args[i].equals("--ssl")) {
|
||||
ssl = true;
|
||||
} else if (args[i].equals("--help")) {
|
||||
System.out.println("Allowed options:");
|
||||
System.out.println(" --help\t\t\tProduce help message");
|
||||
System.out.println(" --host=arg (=" + host + ")\tHost to connect");
|
||||
System.out.println(" --port=arg (=" + port + ")\tPort number to connect");
|
||||
System.out.println(" --transport=arg (=" + transport_type + ")\n\t\t\t\tTransport: buffered, framed, fastframed, http");
|
||||
System.out.println(" --protocol=arg (=" + protocol_type + ")\tProtocol: binary, json, compact");
|
||||
System.out.println(" --ssl\t\t\tEncrypted Transport using SSL");
|
||||
System.out.println(" --testloops[--n]=arg (=" + numTests + ")\tNumber of Tests");
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
} catch (Exception x) {
|
||||
System.err.println("Can not parse arguments! See --help");
|
||||
System.exit(ERR_UNKNOWN);
|
||||
}
|
||||
|
||||
try {
|
||||
if (protocol_type.equals("binary")) {
|
||||
} else if (protocol_type.equals("compact")) {
|
||||
} else if (protocol_type.equals("json")) {
|
||||
} else {
|
||||
throw new Exception("Unknown protocol type! " + protocol_type);
|
||||
}
|
||||
if (transport_type.equals("buffered")) {
|
||||
} else if (transport_type.equals("framed")) {
|
||||
} else if (transport_type.equals("fastframed")) {
|
||||
} else if (transport_type.equals("http")) {
|
||||
} else {
|
||||
throw new Exception("Unknown transport type! " + transport_type);
|
||||
}
|
||||
if (transport_type.equals("http") && ssl == true) {
|
||||
throw new Exception("SSL is not supported over http.");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println("Error: " + e.getMessage());
|
||||
System.exit(ERR_UNKNOWN);
|
||||
}
|
||||
|
||||
TTransport transport = null;
|
||||
|
||||
try {
|
||||
if (transport_type.equals("http")) {
|
||||
String url = "http://" + host + ":" + port + "/service";
|
||||
transport = new THttpClient(url);
|
||||
} else {
|
||||
TSocket socket = null;
|
||||
if (ssl == true) {
|
||||
socket = TSSLTransportFactory.getClientSocket(host, port, 0);
|
||||
} else {
|
||||
socket = new TSocket(host, port);
|
||||
}
|
||||
socket.setTimeout(socketTimeout);
|
||||
transport = socket;
|
||||
if (transport_type.equals("buffered")) {
|
||||
} else if (transport_type.equals("framed")) {
|
||||
transport = new TFramedTransport(transport);
|
||||
} else if (transport_type.equals("fastframed")) {
|
||||
transport = new TFastFramedTransport(transport);
|
||||
}
|
||||
}
|
||||
} catch (Exception x) {
|
||||
x.printStackTrace();
|
||||
System.exit(ERR_UNKNOWN);
|
||||
}
|
||||
|
||||
TProtocol tProtocol = null;
|
||||
if (protocol_type.equals("json")) {
|
||||
tProtocol = new TJSONProtocol(transport);
|
||||
} else if (protocol_type.equals("compact")) {
|
||||
tProtocol = new TCompactProtocol(transport);
|
||||
} else {
|
||||
tProtocol = new TBinaryProtocol(transport);
|
||||
}
|
||||
|
||||
ThriftTest.Client testClient =
|
||||
new ThriftTest.Client(tProtocol);
|
||||
Insanity insane = new Insanity();
|
||||
|
||||
long timeMin = 0;
|
||||
long timeMax = 0;
|
||||
long timeTot = 0;
|
||||
|
||||
int returnCode = 0;
|
||||
for (int test = 0; test < numTests; ++test) {
|
||||
try {
|
||||
/**
|
||||
* CONNECT TEST
|
||||
*/
|
||||
System.out.println("Test #" + (test+1) + ", " + "connect " + host + ":" + port);
|
||||
|
||||
if (transport.isOpen() == false) {
|
||||
try {
|
||||
transport.open();
|
||||
} catch (TTransportException ttx) {
|
||||
ttx.printStackTrace();
|
||||
System.out.println("Connect failed: " + ttx.getMessage());
|
||||
System.exit(ERR_UNKNOWN);
|
||||
}
|
||||
}
|
||||
|
||||
long start = System.nanoTime();
|
||||
|
||||
/**
|
||||
* VOID TEST
|
||||
*/
|
||||
try {
|
||||
System.out.print("testVoid()");
|
||||
testClient.testVoid();
|
||||
System.out.print(" = void\n");
|
||||
} catch (TApplicationException tax) {
|
||||
tax.printStackTrace();
|
||||
returnCode |= ERR_BASETYPES;
|
||||
}
|
||||
|
||||
/**
|
||||
* STRING TEST
|
||||
*/
|
||||
System.out.print("testString(\"Test\")");
|
||||
String s = testClient.testString("Test");
|
||||
System.out.print(" = \"" + s + "\"\n");
|
||||
if (!s.equals("Test")) {
|
||||
returnCode |= ERR_BASETYPES;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* BYTE TEST
|
||||
*/
|
||||
System.out.print("testByte(1)");
|
||||
byte i8 = testClient.testByte((byte)1);
|
||||
System.out.print(" = " + i8 + "\n");
|
||||
if (i8 != 1) {
|
||||
returnCode |= ERR_BASETYPES;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* I32 TEST
|
||||
*/
|
||||
System.out.print("testI32(-1)");
|
||||
int i32 = testClient.testI32(-1);
|
||||
System.out.print(" = " + i32 + "\n");
|
||||
if (i32 != -1) {
|
||||
returnCode |= ERR_BASETYPES;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* I64 TEST
|
||||
*/
|
||||
System.out.print("testI64(-34359738368)");
|
||||
long i64 = testClient.testI64(-34359738368L);
|
||||
System.out.print(" = " + i64 + "\n");
|
||||
if (i64 != -34359738368L) {
|
||||
returnCode |= ERR_BASETYPES;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* DOUBLE TEST
|
||||
*/
|
||||
System.out.print("testDouble(-5.325098235)");
|
||||
double dub = testClient.testDouble(-5.325098235);
|
||||
System.out.print(" = " + dub + "\n");
|
||||
if (Math.abs(dub - (-5.325098235)) > 0.001) {
|
||||
returnCode |= ERR_BASETYPES;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* BINARY TEST
|
||||
*/
|
||||
try {
|
||||
System.out.print("testBinary(-128...127) = ");
|
||||
byte[] data = new byte[] {-128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127};
|
||||
ByteBuffer bin = testClient.testBinary(ByteBuffer.wrap(data));
|
||||
bin.mark();
|
||||
byte[] bytes = new byte[bin.limit() - bin.position()];
|
||||
bin.get(bytes);
|
||||
bin.reset();
|
||||
System.out.print("{");
|
||||
boolean first = true;
|
||||
for (int i = 0; i < bytes.length; ++i) {
|
||||
if (first)
|
||||
first = false;
|
||||
else
|
||||
System.out.print(", ");
|
||||
System.out.print(bytes[i]);
|
||||
}
|
||||
System.out.println("}");
|
||||
if (!ByteBuffer.wrap(data).equals(bin)) {
|
||||
returnCode |= ERR_BASETYPES;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
returnCode |= ERR_BASETYPES;
|
||||
System.out.println("\n*** FAILURE ***\n");
|
||||
ex.printStackTrace(System.out);
|
||||
}
|
||||
|
||||
/**
|
||||
* STRUCT TEST
|
||||
*/
|
||||
System.out.print("testStruct({\"Zero\", 1, -3, -5})");
|
||||
Xtruct out = new Xtruct();
|
||||
out.string_thing = "Zero";
|
||||
out.byte_thing = (byte) 1;
|
||||
out.i32_thing = -3;
|
||||
out.i64_thing = -5;
|
||||
Xtruct in = testClient.testStruct(out);
|
||||
System.out.print(" = {" + "\"" +
|
||||
in.string_thing + "\"," +
|
||||
in.byte_thing + ", " +
|
||||
in.i32_thing + ", " +
|
||||
in.i64_thing + "}\n");
|
||||
if (!in.equals(out)) {
|
||||
returnCode |= ERR_STRUCTS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* NESTED STRUCT TEST
|
||||
*/
|
||||
System.out.print("testNest({1, {\"Zero\", 1, -3, -5}), 5}");
|
||||
Xtruct2 out2 = new Xtruct2();
|
||||
out2.byte_thing = (short)1;
|
||||
out2.struct_thing = out;
|
||||
out2.i32_thing = 5;
|
||||
Xtruct2 in2 = testClient.testNest(out2);
|
||||
in = in2.struct_thing;
|
||||
System.out.print(" = {" + in2.byte_thing + ", {" + "\"" +
|
||||
in.string_thing + "\", " +
|
||||
in.byte_thing + ", " +
|
||||
in.i32_thing + ", " +
|
||||
in.i64_thing + "}, " +
|
||||
in2.i32_thing + "}\n");
|
||||
if (!in2.equals(out2)) {
|
||||
returnCode |= ERR_STRUCTS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* MAP TEST
|
||||
*/
|
||||
Map<Integer,Integer> mapout = new HashMap<Integer,Integer>();
|
||||
for (int i = 0; i < 5; ++i) {
|
||||
mapout.put(i, i-10);
|
||||
}
|
||||
System.out.print("testMap({");
|
||||
boolean first = true;
|
||||
for (int key : mapout.keySet()) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
System.out.print(", ");
|
||||
}
|
||||
System.out.print(key + " => " + mapout.get(key));
|
||||
}
|
||||
System.out.print("})");
|
||||
Map<Integer,Integer> mapin = testClient.testMap(mapout);
|
||||
System.out.print(" = {");
|
||||
first = true;
|
||||
for (int key : mapin.keySet()) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
System.out.print(", ");
|
||||
}
|
||||
System.out.print(key + " => " + mapout.get(key));
|
||||
}
|
||||
System.out.print("}\n");
|
||||
if (!mapout.equals(mapin)) {
|
||||
returnCode |= ERR_CONTAINERS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* STRING MAP TEST
|
||||
*/
|
||||
try {
|
||||
Map<String, String> smapout = new HashMap<String, String>();
|
||||
smapout.put("a", "2");
|
||||
smapout.put("b", "blah");
|
||||
smapout.put("some", "thing");
|
||||
for (String key : smapout.keySet()) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
System.out.print(", ");
|
||||
}
|
||||
System.out.print(key + " => " + smapout.get(key));
|
||||
}
|
||||
System.out.print("})");
|
||||
Map<String, String> smapin = testClient.testStringMap(smapout);
|
||||
System.out.print(" = {");
|
||||
first = true;
|
||||
for (String key : smapin.keySet()) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
System.out.print(", ");
|
||||
}
|
||||
System.out.print(key + " => " + smapout.get(key));
|
||||
}
|
||||
System.out.print("}\n");
|
||||
if (!smapout.equals(smapin)) {
|
||||
returnCode |= ERR_CONTAINERS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
returnCode |= ERR_CONTAINERS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
ex.printStackTrace(System.out);
|
||||
}
|
||||
|
||||
/**
|
||||
* SET TEST
|
||||
*/
|
||||
Set<Integer> setout = new HashSet<Integer>();
|
||||
for (int i = -2; i < 3; ++i) {
|
||||
setout.add(i);
|
||||
}
|
||||
System.out.print("testSet({");
|
||||
first = true;
|
||||
for (int elem : setout) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
System.out.print(", ");
|
||||
}
|
||||
System.out.print(elem);
|
||||
}
|
||||
System.out.print("})");
|
||||
Set<Integer> setin = testClient.testSet(setout);
|
||||
System.out.print(" = {");
|
||||
first = true;
|
||||
for (int elem : setin) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
System.out.print(", ");
|
||||
}
|
||||
System.out.print(elem);
|
||||
}
|
||||
System.out.print("}\n");
|
||||
if (!setout.equals(setin)) {
|
||||
returnCode |= ERR_CONTAINERS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* LIST TEST
|
||||
*/
|
||||
List<Integer> listout = new ArrayList<Integer>();
|
||||
for (int i = -2; i < 3; ++i) {
|
||||
listout.add(i);
|
||||
}
|
||||
System.out.print("testList({");
|
||||
first = true;
|
||||
for (int elem : listout) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
System.out.print(", ");
|
||||
}
|
||||
System.out.print(elem);
|
||||
}
|
||||
System.out.print("})");
|
||||
List<Integer> listin = testClient.testList(listout);
|
||||
System.out.print(" = {");
|
||||
first = true;
|
||||
for (int elem : listin) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
System.out.print(", ");
|
||||
}
|
||||
System.out.print(elem);
|
||||
}
|
||||
System.out.print("}\n");
|
||||
if (!listout.equals(listin)) {
|
||||
returnCode |= ERR_CONTAINERS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* ENUM TEST
|
||||
*/
|
||||
System.out.print("testEnum(ONE)");
|
||||
Numberz ret = testClient.testEnum(Numberz.ONE);
|
||||
System.out.print(" = " + ret + "\n");
|
||||
if (ret != Numberz.ONE) {
|
||||
returnCode |= ERR_STRUCTS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
System.out.print("testEnum(TWO)");
|
||||
ret = testClient.testEnum(Numberz.TWO);
|
||||
System.out.print(" = " + ret + "\n");
|
||||
if (ret != Numberz.TWO) {
|
||||
returnCode |= ERR_STRUCTS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
System.out.print("testEnum(THREE)");
|
||||
ret = testClient.testEnum(Numberz.THREE);
|
||||
System.out.print(" = " + ret + "\n");
|
||||
if (ret != Numberz.THREE) {
|
||||
returnCode |= ERR_STRUCTS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
System.out.print("testEnum(FIVE)");
|
||||
ret = testClient.testEnum(Numberz.FIVE);
|
||||
System.out.print(" = " + ret + "\n");
|
||||
if (ret != Numberz.FIVE) {
|
||||
returnCode |= ERR_STRUCTS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
System.out.print("testEnum(EIGHT)");
|
||||
ret = testClient.testEnum(Numberz.EIGHT);
|
||||
System.out.print(" = " + ret + "\n");
|
||||
if (ret != Numberz.EIGHT) {
|
||||
returnCode |= ERR_STRUCTS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* TYPEDEF TEST
|
||||
*/
|
||||
System.out.print("testTypedef(309858235082523)");
|
||||
long uid = testClient.testTypedef(309858235082523L);
|
||||
System.out.print(" = " + uid + "\n");
|
||||
if (uid != 309858235082523L) {
|
||||
returnCode |= ERR_BASETYPES;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* NESTED MAP TEST
|
||||
*/
|
||||
System.out.print("testMapMap(1)");
|
||||
Map<Integer,Map<Integer,Integer>> mm =
|
||||
testClient.testMapMap(1);
|
||||
System.out.print(" = {");
|
||||
for (int key : mm.keySet()) {
|
||||
System.out.print(key + " => {");
|
||||
Map<Integer,Integer> m2 = mm.get(key);
|
||||
for (int k2 : m2.keySet()) {
|
||||
System.out.print(k2 + " => " + m2.get(k2) + ", ");
|
||||
}
|
||||
System.out.print("}, ");
|
||||
}
|
||||
System.out.print("}\n");
|
||||
if (mm.size() != 2 || !mm.containsKey(4) || !mm.containsKey(-4)) {
|
||||
returnCode |= ERR_CONTAINERS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
} else {
|
||||
Map<Integer, Integer> m1 = mm.get(4);
|
||||
Map<Integer, Integer> m2 = mm.get(-4);
|
||||
if (m1.get(1) != 1 || m1.get(2) != 2 || m1.get(3) != 3 || m1.get(4) != 4 ||
|
||||
m2.get(-1) != -1 || m2.get(-2) != -2 || m2.get(-3) != -3 || m2.get(-4) != -4) {
|
||||
returnCode |= ERR_CONTAINERS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* INSANITY TEST
|
||||
*/
|
||||
|
||||
boolean insanityFailed = true;
|
||||
try {
|
||||
Xtruct hello = new Xtruct();
|
||||
hello.string_thing = "Hello2";
|
||||
hello.byte_thing = 2;
|
||||
hello.i32_thing = 2;
|
||||
hello.i64_thing = 2;
|
||||
|
||||
Xtruct goodbye = new Xtruct();
|
||||
goodbye.string_thing = "Goodbye4";
|
||||
goodbye.byte_thing = (byte)4;
|
||||
goodbye.i32_thing = 4;
|
||||
goodbye.i64_thing = (long)4;
|
||||
|
||||
insane.userMap = new HashMap<Numberz, Long>();
|
||||
insane.userMap.put(Numberz.EIGHT, (long)8);
|
||||
insane.userMap.put(Numberz.FIVE, (long)5);
|
||||
insane.xtructs = new ArrayList<Xtruct>();
|
||||
insane.xtructs.add(goodbye);
|
||||
insane.xtructs.add(hello);
|
||||
|
||||
System.out.print("testInsanity()");
|
||||
Map<Long,Map<Numberz,Insanity>> whoa =
|
||||
testClient.testInsanity(insane);
|
||||
System.out.print(" = {");
|
||||
for (long key : whoa.keySet()) {
|
||||
Map<Numberz,Insanity> val = whoa.get(key);
|
||||
System.out.print(key + " => {");
|
||||
|
||||
for (Numberz k2 : val.keySet()) {
|
||||
Insanity v2 = val.get(k2);
|
||||
System.out.print(k2 + " => {");
|
||||
Map<Numberz, Long> userMap = v2.userMap;
|
||||
System.out.print("{");
|
||||
if (userMap != null) {
|
||||
for (Numberz k3 : userMap.keySet()) {
|
||||
System.out.print(k3 + " => " + userMap.get(k3) + ", ");
|
||||
}
|
||||
}
|
||||
System.out.print("}, ");
|
||||
|
||||
List<Xtruct> xtructs = v2.xtructs;
|
||||
System.out.print("{");
|
||||
if (xtructs != null) {
|
||||
for (Xtruct x : xtructs) {
|
||||
System.out.print("{" + "\"" + x.string_thing + "\", " + x.byte_thing + ", " + x.i32_thing + ", "+ x.i64_thing + "}, ");
|
||||
}
|
||||
}
|
||||
System.out.print("}");
|
||||
|
||||
System.out.print("}, ");
|
||||
}
|
||||
System.out.print("}, ");
|
||||
}
|
||||
System.out.print("}\n");
|
||||
if (whoa.size() == 2 && whoa.containsKey(1L) && whoa.containsKey(2L)) {
|
||||
Map<Numberz, Insanity> first_map = whoa.get(1L);
|
||||
Map<Numberz, Insanity> second_map = whoa.get(2L);
|
||||
if (first_map.size() == 2 &&
|
||||
first_map.containsKey(Numberz.TWO) &&
|
||||
first_map.containsKey(Numberz.THREE) &&
|
||||
second_map.size() == 1 &&
|
||||
second_map.containsKey(Numberz.SIX) &&
|
||||
insane.equals(first_map.get(Numberz.TWO)) &&
|
||||
insane.equals(first_map.get(Numberz.THREE))) {
|
||||
Insanity six =second_map.get(Numberz.SIX);
|
||||
// Cannot use "new Insanity().equals(six)" because as of now, struct/container
|
||||
// fields with default requiredness have isset=false for local instances and yet
|
||||
// received empty values from other languages like C++ have isset=true .
|
||||
if (six.getUserMapSize() == 0 && six.getXtructsSize() == 0) {
|
||||
// OK
|
||||
insanityFailed = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
returnCode |= ERR_STRUCTS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
ex.printStackTrace(System.out);
|
||||
insanityFailed = false;
|
||||
}
|
||||
if (insanityFailed) {
|
||||
returnCode |= ERR_STRUCTS;
|
||||
System.out.println("*** FAILURE ***\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* EXECPTION TEST
|
||||
*/
|
||||
try {
|
||||
System.out.print("testClient.testException(\"Xception\") =>");
|
||||
testClient.testException("Xception");
|
||||
System.out.print(" void\n*** FAILURE ***\n");
|
||||
returnCode |= ERR_EXCEPTIONS;
|
||||
} catch(Xception e) {
|
||||
System.out.printf(" {%d, \"%s\"}\n", e.errorCode, e.message);
|
||||
}
|
||||
|
||||
try {
|
||||
System.out.print("testClient.testException(\"TException\") =>");
|
||||
testClient.testException("TException");
|
||||
System.out.print(" void\n*** FAILURE ***\n");
|
||||
returnCode |= ERR_EXCEPTIONS;
|
||||
} catch(TException e) {
|
||||
System.out.printf(" {\"%s\"}\n", e.getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
System.out.print("testClient.testException(\"success\") =>");
|
||||
testClient.testException("success");
|
||||
System.out.print(" void\n");
|
||||
}catch(Exception e) {
|
||||
System.out.printf(" exception\n*** FAILURE ***\n");
|
||||
returnCode |= ERR_EXCEPTIONS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* MULTI EXCEPTION TEST
|
||||
*/
|
||||
|
||||
try {
|
||||
System.out.printf("testClient.testMultiException(\"Xception\", \"test 1\") =>");
|
||||
testClient.testMultiException("Xception", "test 1");
|
||||
System.out.print(" result\n*** FAILURE ***\n");
|
||||
returnCode |= ERR_EXCEPTIONS;
|
||||
} catch(Xception e) {
|
||||
System.out.printf(" {%d, \"%s\"}\n", e.errorCode, e.message);
|
||||
}
|
||||
|
||||
try {
|
||||
System.out.printf("testClient.testMultiException(\"Xception2\", \"test 2\") =>");
|
||||
testClient.testMultiException("Xception2", "test 2");
|
||||
System.out.print(" result\n*** FAILURE ***\n");
|
||||
returnCode |= ERR_EXCEPTIONS;
|
||||
} catch(Xception2 e) {
|
||||
System.out.printf(" {%d, {\"%s\"}}\n", e.errorCode, e.struct_thing.string_thing);
|
||||
}
|
||||
|
||||
try {
|
||||
System.out.print("testClient.testMultiException(\"success\", \"test 3\") =>");
|
||||
Xtruct result;
|
||||
result = testClient.testMultiException("success", "test 3");
|
||||
System.out.printf(" {{\"%s\"}}\n", result.string_thing);
|
||||
} catch(Exception e) {
|
||||
System.out.printf(" exception\n*** FAILURE ***\n");
|
||||
returnCode |= ERR_EXCEPTIONS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* ONEWAY TEST
|
||||
*/
|
||||
System.out.print("testOneway(3)...");
|
||||
long startOneway = System.nanoTime();
|
||||
testClient.testOneway(3);
|
||||
long onewayElapsedMillis = (System.nanoTime() - startOneway) / 1000000;
|
||||
if (onewayElapsedMillis > 200) {
|
||||
System.out.println("Oneway test failed: took " +
|
||||
Long.toString(onewayElapsedMillis) +
|
||||
"ms");
|
||||
System.out.printf("*** FAILURE ***\n");
|
||||
returnCode |= ERR_BASETYPES;
|
||||
} else {
|
||||
System.out.println("Success - took " +
|
||||
Long.toString(onewayElapsedMillis) +
|
||||
"ms");
|
||||
}
|
||||
|
||||
|
||||
long stop = System.nanoTime();
|
||||
long tot = stop-start;
|
||||
|
||||
System.out.println("Total time: " + tot/1000 + "us");
|
||||
|
||||
if (timeMin == 0 || tot < timeMin) {
|
||||
timeMin = tot;
|
||||
}
|
||||
if (tot > timeMax) {
|
||||
timeMax = tot;
|
||||
}
|
||||
timeTot += tot;
|
||||
|
||||
transport.close();
|
||||
} catch (Exception x) {
|
||||
System.out.printf("*** FAILURE ***\n");
|
||||
x.printStackTrace();
|
||||
returnCode |= ERR_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
long timeAvg = timeTot / numTests;
|
||||
|
||||
System.out.println("Min time: " + timeMin/1000 + "us");
|
||||
System.out.println("Max time: " + timeMax/1000 + "us");
|
||||
System.out.println("Avg time: " + timeAvg/1000 + "us");
|
||||
|
||||
try {
|
||||
String json = (new TSerializer(new TSimpleJSONProtocol.Factory())).toString(insane);
|
||||
System.out.println("\nSample TSimpleJSONProtocol output:\n" + json);
|
||||
} catch (TException x) {
|
||||
System.out.println("*** FAILURE ***");
|
||||
x.printStackTrace();
|
||||
returnCode |= ERR_BASETYPES;
|
||||
}
|
||||
|
||||
|
||||
System.exit(returnCode);
|
||||
}
|
||||
}
|
76
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/TestNonblockingServer.java
generated
vendored
Normal file
76
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/TestNonblockingServer.java
generated
vendored
Normal file
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.test;
|
||||
|
||||
import org.apache.thrift.server.THsHaServer;
|
||||
import org.apache.thrift.server.TNonblockingServer;
|
||||
import org.apache.thrift.server.TServer;
|
||||
import org.apache.thrift.server.THsHaServer.Args;
|
||||
import org.apache.thrift.transport.TNonblockingServerSocket;
|
||||
import org.apache.thrift.server.ServerTestBase.TestHandler;
|
||||
|
||||
import thrift.test.ThriftTest;
|
||||
|
||||
|
||||
public class TestNonblockingServer extends TestServer {
|
||||
public static void main(String [] args) {
|
||||
try {
|
||||
int port = 9090;
|
||||
boolean hsha = false;
|
||||
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
if (args[i].equals("-p")) {
|
||||
port = Integer.valueOf(args[i++]);
|
||||
} else if (args[i].equals("-hsha")) {
|
||||
hsha = true;
|
||||
}
|
||||
}
|
||||
//@TODO add other protocol and transport types
|
||||
|
||||
// Processor
|
||||
TestHandler testHandler =
|
||||
new TestHandler();
|
||||
ThriftTest.Processor testProcessor =
|
||||
new ThriftTest.Processor(testHandler);
|
||||
|
||||
// Transport
|
||||
TNonblockingServerSocket tServerSocket =
|
||||
new TNonblockingServerSocket(new TNonblockingServerSocket.NonblockingAbstractServerSocketArgs().port(port));
|
||||
|
||||
TServer serverEngine;
|
||||
|
||||
if (hsha) {
|
||||
// HsHa Server
|
||||
serverEngine = new THsHaServer(new Args(tServerSocket).processor(testProcessor));
|
||||
} else {
|
||||
// Nonblocking Server
|
||||
serverEngine = new TNonblockingServer(new Args(tServerSocket).processor(testProcessor));
|
||||
}
|
||||
|
||||
// Run it
|
||||
System.out.println("Starting the server on port " + port + "...");
|
||||
serverEngine.serve();
|
||||
|
||||
} catch (Exception x) {
|
||||
x.printStackTrace();
|
||||
}
|
||||
System.out.println("done.");
|
||||
}
|
||||
}
|
284
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/TestServer.java
generated
vendored
Normal file
284
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/TestServer.java
generated
vendored
Normal file
|
@ -0,0 +1,284 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.thrift.protocol.TBinaryProtocol;
|
||||
import org.apache.thrift.protocol.TCompactProtocol;
|
||||
import org.apache.thrift.protocol.TJSONProtocol;
|
||||
import org.apache.thrift.protocol.TProtocol;
|
||||
import org.apache.thrift.protocol.TProtocolFactory;
|
||||
import org.apache.thrift.server.ServerContext;
|
||||
import org.apache.thrift.server.TServer;
|
||||
import org.apache.thrift.server.TServer.Args;
|
||||
import org.apache.thrift.server.TSimpleServer;
|
||||
import org.apache.thrift.server.TThreadPoolServer;
|
||||
import org.apache.thrift.server.ServerTestBase.TestHandler;
|
||||
import org.apache.thrift.server.TServerEventHandler;
|
||||
import org.apache.thrift.server.TThreadedSelectorServer;
|
||||
import org.apache.thrift.server.TNonblockingServer;
|
||||
import org.apache.thrift.transport.TFramedTransport;
|
||||
import org.apache.thrift.transport.TFastFramedTransport;
|
||||
import org.apache.thrift.transport.TServerSocket;
|
||||
import org.apache.thrift.transport.TSSLTransportFactory;
|
||||
import org.apache.thrift.transport.TTransport;
|
||||
import org.apache.thrift.transport.TTransportFactory;
|
||||
import org.apache.thrift.transport.TNonblockingServerSocket;
|
||||
|
||||
|
||||
import thrift.test.Insanity;
|
||||
import thrift.test.Numberz;
|
||||
import thrift.test.ThriftTest;
|
||||
import thrift.test.Xception;
|
||||
import thrift.test.Xception2;
|
||||
import thrift.test.Xtruct;
|
||||
import thrift.test.Xtruct2;
|
||||
|
||||
public class TestServer {
|
||||
|
||||
static class TestServerContext implements ServerContext {
|
||||
|
||||
int connectionId;
|
||||
|
||||
public TestServerContext(int connectionId) {
|
||||
this.connectionId = connectionId;
|
||||
}
|
||||
|
||||
public int getConnectionId() {
|
||||
return connectionId;
|
||||
}
|
||||
|
||||
public void setConnectionId(int connectionId) {
|
||||
this.connectionId = connectionId;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class TestServerEventHandler implements TServerEventHandler {
|
||||
|
||||
private int nextConnectionId = 1;
|
||||
|
||||
public void preServe() {
|
||||
System.out.println("TServerEventHandler.preServe - called only once before server starts accepting connections");
|
||||
}
|
||||
|
||||
public ServerContext createContext(TProtocol input, TProtocol output) {
|
||||
//we can create some connection level data which is stored while connection is alive & served
|
||||
TestServerContext ctx = new TestServerContext(nextConnectionId++);
|
||||
System.out.println("TServerEventHandler.createContext - connection #"+ctx.getConnectionId()+" established");
|
||||
return ctx;
|
||||
}
|
||||
|
||||
public void deleteContext(ServerContext serverContext, TProtocol input, TProtocol output) {
|
||||
TestServerContext ctx = (TestServerContext)serverContext;
|
||||
System.out.println("TServerEventHandler.deleteContext - connection #"+ctx.getConnectionId()+" terminated");
|
||||
}
|
||||
|
||||
public void processContext(ServerContext serverContext, TTransport inputTransport, TTransport outputTransport) {
|
||||
TestServerContext ctx = (TestServerContext)serverContext;
|
||||
System.out.println("TServerEventHandler.processContext - connection #"+ctx.getConnectionId()+" is ready to process next request");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void main(String [] args) {
|
||||
try {
|
||||
int port = 9090;
|
||||
boolean ssl = false;
|
||||
String transport_type = "buffered";
|
||||
String protocol_type = "binary";
|
||||
String server_type = "thread-pool";
|
||||
String domain_socket = "";
|
||||
int string_limit = -1;
|
||||
int container_limit = -1;
|
||||
try {
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
if (args[i].startsWith("--port")) {
|
||||
port = Integer.valueOf(args[i].split("=")[1]);
|
||||
} else if (args[i].startsWith("--server-type")) {
|
||||
server_type = args[i].split("=")[1];
|
||||
server_type.trim();
|
||||
} else if (args[i].startsWith("--port")) {
|
||||
port=Integer.parseInt(args[i].split("=")[1]);
|
||||
} else if (args[i].startsWith("--protocol")) {
|
||||
protocol_type = args[i].split("=")[1];
|
||||
protocol_type.trim();
|
||||
} else if (args[i].startsWith("--transport")) {
|
||||
transport_type = args[i].split("=")[1];
|
||||
transport_type.trim();
|
||||
} else if (args[i].equals("--ssl")) {
|
||||
ssl = true;
|
||||
} else if (args[i].startsWith("--string-limit")) {
|
||||
string_limit = Integer.valueOf(args[i].split("=")[1]);
|
||||
} else if (args[i].startsWith("--container-limit")) {
|
||||
container_limit = Integer.valueOf(args[i].split("=")[1]);
|
||||
} else if (args[i].equals("--help")) {
|
||||
System.out.println("Allowed options:");
|
||||
System.out.println(" --help\t\t\tProduce help message");
|
||||
System.out.println(" --port=arg (=" + port + ")\tPort number to connect");
|
||||
System.out.println(" --transport=arg (=" + transport_type + ")\n\t\t\t\tTransport: buffered, framed, fastframed");
|
||||
System.out.println(" --protocol=arg (=" + protocol_type + ")\tProtocol: binary, json, compact");
|
||||
System.out.println(" --ssl\t\t\tEncrypted Transport using SSL");
|
||||
System.out.println(" --server-type=arg (=" + server_type +")\n\t\t\t\tType of server: simple, thread-pool, nonblocking, threaded-selector");
|
||||
System.out.println(" --string-limit=arg (=" + string_limit + ")\tString read length limit");
|
||||
System.out.println(" --container-limit=arg (=" + container_limit + ")\tContainer read length limit");
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println("Can not parse arguments! See --help");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
try {
|
||||
if (server_type.equals("simple")) {
|
||||
} else if (server_type.equals("thread-pool")) {
|
||||
} else if (server_type.equals("nonblocking")) {
|
||||
if (ssl == true) {
|
||||
throw new Exception("SSL is not supported over nonblocking servers!");
|
||||
}
|
||||
} else if (server_type.equals("threaded-selector")) {
|
||||
if (ssl == true) {
|
||||
throw new Exception("SSL is not supported over nonblocking servers!");
|
||||
}
|
||||
} else {
|
||||
throw new Exception("Unknown server type! " + server_type);
|
||||
}
|
||||
if (protocol_type.equals("binary")) {
|
||||
} else if (protocol_type.equals("json")) {
|
||||
} else if (protocol_type.equals("compact")) {
|
||||
} else {
|
||||
throw new Exception("Unknown protocol type! " + protocol_type);
|
||||
}
|
||||
if (transport_type.equals("buffered")) {
|
||||
} else if (transport_type.equals("framed")) {
|
||||
} else if (transport_type.equals("fastframed")) {
|
||||
} else {
|
||||
throw new Exception("Unknown transport type! " + transport_type);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println("Error: " + e.getMessage());
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
// Processor
|
||||
TestHandler testHandler =
|
||||
new TestHandler();
|
||||
ThriftTest.Processor testProcessor =
|
||||
new ThriftTest.Processor(testHandler);
|
||||
|
||||
// Protocol factory
|
||||
TProtocolFactory tProtocolFactory = null;
|
||||
if (protocol_type.equals("json")) {
|
||||
tProtocolFactory = new TJSONProtocol.Factory();
|
||||
} else if (protocol_type.equals("compact")) {
|
||||
tProtocolFactory = new TCompactProtocol.Factory(string_limit, container_limit);
|
||||
} else {
|
||||
tProtocolFactory = new TBinaryProtocol.Factory(string_limit, container_limit);
|
||||
}
|
||||
|
||||
TTransportFactory tTransportFactory = null;
|
||||
|
||||
if (transport_type.equals("framed")) {
|
||||
tTransportFactory = new TFramedTransport.Factory();
|
||||
} else if (transport_type.equals("fastframed")) {
|
||||
tTransportFactory = new TFastFramedTransport.Factory();
|
||||
} else { // .equals("buffered") => default value
|
||||
tTransportFactory = new TTransportFactory();
|
||||
}
|
||||
|
||||
TServer serverEngine = null;
|
||||
|
||||
|
||||
if (server_type.equals("nonblocking") ||
|
||||
server_type.equals("threaded-selector")) {
|
||||
// Nonblocking servers
|
||||
TNonblockingServerSocket tNonblockingServerSocket =
|
||||
new TNonblockingServerSocket(new TNonblockingServerSocket.NonblockingAbstractServerSocketArgs().port(port));
|
||||
|
||||
if (server_type.equals("nonblocking")) {
|
||||
// Nonblocking Server
|
||||
TNonblockingServer.Args tNonblockingServerArgs
|
||||
= new TNonblockingServer.Args(tNonblockingServerSocket);
|
||||
tNonblockingServerArgs.processor(testProcessor);
|
||||
tNonblockingServerArgs.protocolFactory(tProtocolFactory);
|
||||
tNonblockingServerArgs.transportFactory(tTransportFactory);
|
||||
|
||||
serverEngine = new TNonblockingServer(tNonblockingServerArgs);
|
||||
} else { // server_type.equals("threaded-selector")
|
||||
// ThreadedSelector Server
|
||||
TThreadedSelectorServer.Args tThreadedSelectorServerArgs
|
||||
= new TThreadedSelectorServer.Args(tNonblockingServerSocket);
|
||||
tThreadedSelectorServerArgs.processor(testProcessor);
|
||||
tThreadedSelectorServerArgs.protocolFactory(tProtocolFactory);
|
||||
tThreadedSelectorServerArgs.transportFactory(tTransportFactory);
|
||||
|
||||
serverEngine = new TThreadedSelectorServer(tThreadedSelectorServerArgs);
|
||||
}
|
||||
} else {
|
||||
// Blocking servers
|
||||
|
||||
// SSL socket
|
||||
TServerSocket tServerSocket = null;
|
||||
if (ssl) {
|
||||
tServerSocket = TSSLTransportFactory.getServerSocket(port, 0);
|
||||
} else {
|
||||
tServerSocket = new TServerSocket(new TServerSocket.ServerSocketTransportArgs().port(port));
|
||||
}
|
||||
|
||||
if (server_type.equals("simple")) {
|
||||
// Simple Server
|
||||
TServer.Args tServerArgs = new TServer.Args(tServerSocket);
|
||||
tServerArgs.processor(testProcessor);
|
||||
tServerArgs.protocolFactory(tProtocolFactory);
|
||||
tServerArgs.transportFactory(tTransportFactory);
|
||||
|
||||
serverEngine = new TSimpleServer(tServerArgs);
|
||||
} else { // server_type.equals("threadpool")
|
||||
// ThreadPool Server
|
||||
TThreadPoolServer.Args tThreadPoolServerArgs
|
||||
= new TThreadPoolServer.Args(tServerSocket);
|
||||
tThreadPoolServerArgs.processor(testProcessor);
|
||||
tThreadPoolServerArgs.protocolFactory(tProtocolFactory);
|
||||
tThreadPoolServerArgs.transportFactory(tTransportFactory);
|
||||
|
||||
serverEngine = new TThreadPoolServer(tThreadPoolServerArgs);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Set server event handler
|
||||
serverEngine.setServerEventHandler(new TestServerEventHandler());
|
||||
|
||||
// Run it
|
||||
System.out.println("Starting the server on port " + port + "...");
|
||||
serverEngine.serve();
|
||||
|
||||
} catch (Exception x) {
|
||||
x.printStackTrace();
|
||||
}
|
||||
System.out.println("done.");
|
||||
}
|
||||
}
|
48
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/WriteStruct.java
generated
vendored
Normal file
48
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/test/WriteStruct.java
generated
vendored
Normal file
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.test;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.FileOutputStream;
|
||||
|
||||
import org.apache.thrift.Fixtures;
|
||||
import org.apache.thrift.protocol.TProtocol;
|
||||
import org.apache.thrift.protocol.TProtocolFactory;
|
||||
import org.apache.thrift.transport.TIOStreamTransport;
|
||||
import org.apache.thrift.transport.TTransport;
|
||||
|
||||
public class WriteStruct {
|
||||
public static void main(String[] args) throws Exception {
|
||||
if (args.length != 2) {
|
||||
System.out.println("usage: java -cp build/classes org.apache.thrift.test.WriteStruct filename proto_factory_class");
|
||||
System.out.println("Write out an instance of Fixtures.compactProtocolTestStruct to 'file'. Use a protocol from 'proto_factory_class'.");
|
||||
}
|
||||
|
||||
TTransport trans = new TIOStreamTransport(new BufferedOutputStream(new FileOutputStream(args[0])));
|
||||
|
||||
TProtocolFactory factory = (TProtocolFactory)Class.forName(args[1]).newInstance();
|
||||
|
||||
TProtocol proto = factory.getProtocol(trans);
|
||||
|
||||
Fixtures.compactProtoTestStruct.write(proto);
|
||||
trans.flush();
|
||||
}
|
||||
|
||||
}
|
61
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/ReadCountingTransport.java
generated
vendored
Normal file
61
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/ReadCountingTransport.java
generated
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
|
||||
public class ReadCountingTransport extends TTransport {
|
||||
public int readCount = 0;
|
||||
private TTransport trans;
|
||||
private boolean open = true;
|
||||
|
||||
public ReadCountingTransport(TTransport underlying) {
|
||||
trans = underlying;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
open = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpen() {
|
||||
return open;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void open() throws TTransportException {
|
||||
open = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int read(byte[] buf, int off, int len) throws TTransportException {
|
||||
if (!isOpen()) {
|
||||
throw new TTransportException(TTransportException.NOT_OPEN, "Transport is closed");
|
||||
}
|
||||
readCount++;
|
||||
return trans.read(buf, off, len);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(byte[] buf, int off, int len) throws TTransportException {
|
||||
if (!isOpen()) {
|
||||
throw new TTransportException(TTransportException.NOT_OPEN, "Transport is closed");
|
||||
}
|
||||
}
|
||||
}
|
37
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestAutoExpandingBuffer.java
generated
vendored
Normal file
37
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestAutoExpandingBuffer.java
generated
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class TestAutoExpandingBuffer extends TestCase {
|
||||
public void testExpands() throws Exception {
|
||||
// has expected initial capacity
|
||||
AutoExpandingBuffer b = new AutoExpandingBuffer(10, 1.5);
|
||||
assertEquals(10, b.array().length);
|
||||
|
||||
// doesn't shrink
|
||||
b.resizeIfNecessary(8);
|
||||
assertEquals(10, b.array().length);
|
||||
|
||||
// grows when more capacity is needed
|
||||
b.resizeIfNecessary(100);
|
||||
assertTrue(b.array().length >= 100);
|
||||
}
|
||||
}
|
50
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestAutoExpandingBufferReadTransport.java
generated
vendored
Normal file
50
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestAutoExpandingBufferReadTransport.java
generated
vendored
Normal file
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class TestAutoExpandingBufferReadTransport extends TestCase {
|
||||
private static final byte[] HUNDRED_BYTES = new byte[100];
|
||||
|
||||
static {
|
||||
for (byte i = 0; i < 100; i++) {
|
||||
HUNDRED_BYTES[i] = i;
|
||||
}
|
||||
}
|
||||
|
||||
public void testIt() throws Exception {
|
||||
AutoExpandingBufferReadTransport t = new AutoExpandingBufferReadTransport(150, 1.5);
|
||||
|
||||
TMemoryInputTransport membuf = new TMemoryInputTransport(HUNDRED_BYTES);
|
||||
|
||||
t.fill(membuf, 100);
|
||||
assertEquals(100, t.getBytesRemainingInBuffer());
|
||||
assertEquals(0, t.getBufferPosition());
|
||||
|
||||
byte[] target = new byte[10];
|
||||
assertEquals(10, t.read(target, 0, 10));
|
||||
assertEquals(ByteBuffer.wrap(HUNDRED_BYTES, 0, 10), ByteBuffer.wrap(target));
|
||||
|
||||
assertEquals(90, t.getBytesRemainingInBuffer());
|
||||
assertEquals(10, t.getBufferPosition());
|
||||
}
|
||||
}
|
44
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestAutoExpandingBufferWriteTransport.java
generated
vendored
Normal file
44
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestAutoExpandingBufferWriteTransport.java
generated
vendored
Normal file
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class TestAutoExpandingBufferWriteTransport extends TestCase {
|
||||
|
||||
public void testIt() throws Exception {
|
||||
AutoExpandingBufferWriteTransport t = new AutoExpandingBufferWriteTransport(1, 1.5);
|
||||
assertEquals(1, t.getBuf().array().length);
|
||||
byte[] b1 = new byte[]{1,2,3};
|
||||
t.write(b1);
|
||||
assertEquals(3, t.getPos());
|
||||
assertTrue(t.getBuf().array().length >= 3);
|
||||
assertEquals(ByteBuffer.wrap(b1), ByteBuffer.wrap(t.getBuf().array(), 0, 3));
|
||||
|
||||
t.reset();
|
||||
assertTrue(t.getBuf().array().length >= 3);
|
||||
assertEquals(0, t.getPos());
|
||||
byte[] b2 = new byte[]{4,5};
|
||||
t.write(b2);
|
||||
assertEquals(2, t.getPos());
|
||||
assertEquals(ByteBuffer.wrap(b2), ByteBuffer.wrap(t.getBuf().array(), 0, 2));
|
||||
}
|
||||
}
|
36
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTByteBuffer.java
generated
vendored
Normal file
36
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTByteBuffer.java
generated
vendored
Normal file
|
@ -0,0 +1,36 @@
|
|||
package org.apache.thrift.transport;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.apache.commons.codec.Charsets;
|
||||
import org.apache.thrift.TException;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public class TestTByteBuffer extends TestCase {
|
||||
public void testReadWrite() throws Exception {
|
||||
final TByteBuffer byteBuffer = new TByteBuffer(ByteBuffer.allocate(16));
|
||||
byteBuffer.write("Hello World".getBytes(Charsets.UTF_8));
|
||||
assertEquals("Hello World", new String(byteBuffer.flip().toByteArray(), Charsets.UTF_8));
|
||||
}
|
||||
|
||||
public void testReuseReadWrite() throws Exception {
|
||||
final TByteBuffer byteBuffer = new TByteBuffer(ByteBuffer.allocate(16));
|
||||
byteBuffer.write("Hello World".getBytes(Charsets.UTF_8));
|
||||
assertEquals("Hello World", new String(byteBuffer.flip().toByteArray(), Charsets.UTF_8));
|
||||
|
||||
byteBuffer.clear();
|
||||
|
||||
byteBuffer.write("Goodbye Horses".getBytes(Charsets.UTF_8));
|
||||
assertEquals("Goodbye Horses", new String(byteBuffer.flip().toByteArray(), Charsets.UTF_8));
|
||||
}
|
||||
|
||||
public void testOverflow() throws Exception {
|
||||
final TByteBuffer byteBuffer = new TByteBuffer(ByteBuffer.allocate(4));
|
||||
try {
|
||||
byteBuffer.write("Hello World".getBytes(Charsets.UTF_8));
|
||||
fail("Expected write operation to fail with TTransportException");
|
||||
} catch (TTransportException e) {
|
||||
assertEquals("Not enough room in output buffer", e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
31
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTFastFramedTransport.java
generated
vendored
Normal file
31
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTFastFramedTransport.java
generated
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
public class TestTFastFramedTransport extends TestTFramedTransport {
|
||||
@Override
|
||||
protected TTransport getTransport(TTransport underlying) {
|
||||
return new TFastFramedTransport(underlying, 50, 10 * 1024 * 1024);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TTransport getTransport(TTransport underlying, int maxLength) {
|
||||
return new TFastFramedTransport(underlying, 50, maxLength);
|
||||
}
|
||||
}
|
186
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTFramedTransport.java
generated
vendored
Normal file
186
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTFramedTransport.java
generated
vendored
Normal file
|
@ -0,0 +1,186 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class TestTFramedTransport extends TestCase {
|
||||
|
||||
protected TTransport getTransport(TTransport underlying) {
|
||||
return new TFramedTransport(underlying);
|
||||
}
|
||||
|
||||
protected TTransport getTransport(TTransport underlying, int maxLength) {
|
||||
return new TFramedTransport(underlying, maxLength);
|
||||
}
|
||||
|
||||
public static byte[] byteSequence(int start, int end) {
|
||||
byte[] result = new byte[end-start+1];
|
||||
for (int i = 0; i <= (end-start); i++) {
|
||||
result[i] = (byte)(start+i);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void testRead() throws IOException, TTransportException {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
DataOutputStream dos = new DataOutputStream(baos);
|
||||
dos.writeInt(50);
|
||||
dos.write(byteSequence(0, 49));
|
||||
|
||||
dos.writeInt(220);
|
||||
dos.write(byteSequence(0, 219));
|
||||
|
||||
TMemoryBuffer membuf = new TMemoryBuffer(0);
|
||||
membuf.write(baos.toByteArray());
|
||||
|
||||
ReadCountingTransport countTrans = new ReadCountingTransport(membuf);
|
||||
TTransport trans = getTransport(countTrans);
|
||||
|
||||
byte[] readBuf = new byte[10];
|
||||
trans.read(readBuf, 0, 10);
|
||||
assertTrue(Arrays.equals(readBuf, byteSequence(0,9)));
|
||||
assertEquals(2, countTrans.readCount);
|
||||
|
||||
trans.read(readBuf, 0, 10);
|
||||
assertTrue(Arrays.equals(readBuf, byteSequence(10,19)));
|
||||
assertEquals(2, countTrans.readCount);
|
||||
|
||||
assertEquals(30, trans.read(new byte[30], 0, 30));
|
||||
assertEquals(2, countTrans.readCount);
|
||||
|
||||
readBuf = new byte[220];
|
||||
assertEquals(220, trans.read(readBuf, 0, 220));
|
||||
assertTrue(Arrays.equals(readBuf, byteSequence(0, 219)));
|
||||
assertEquals(4, countTrans.readCount);
|
||||
}
|
||||
|
||||
public void testInvalidFrameSize() throws IOException, TTransportException {
|
||||
int maxLength = 128;
|
||||
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
DataOutputStream dos = new DataOutputStream(baos);
|
||||
dos.writeInt(130);
|
||||
dos.write(byteSequence(0, 129));
|
||||
|
||||
TMemoryBuffer membuf = new TMemoryBuffer(0);
|
||||
membuf.write(baos.toByteArray());
|
||||
|
||||
ReadCountingTransport countTrans = new ReadCountingTransport(membuf);
|
||||
TTransport trans = getTransport(countTrans, maxLength);
|
||||
|
||||
byte[] readBuf = new byte[10];
|
||||
try {
|
||||
trans.read(readBuf, 0, 4);
|
||||
fail("Expected a TTransportException");
|
||||
} catch (TTransportException e) {
|
||||
// We expect this exception because the frame we're trying to read is larger than our max frame length
|
||||
assertEquals(TTransportException.CORRUPTED_DATA, e.getType());
|
||||
}
|
||||
|
||||
assertFalse(trans.isOpen());
|
||||
|
||||
try {
|
||||
trans.read(readBuf, 0, 4);
|
||||
fail("Expected a TTransportException");
|
||||
} catch (TTransportException e) {
|
||||
// This time we get an exception indicating the connection was closed
|
||||
assertEquals(TTransportException.NOT_OPEN, e.getType());
|
||||
}
|
||||
}
|
||||
|
||||
public void testWrite() throws TTransportException, IOException {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
WriteCountingTransport countingTrans = new WriteCountingTransport(new TIOStreamTransport(new BufferedOutputStream(baos)));
|
||||
TTransport trans = getTransport(countingTrans);
|
||||
|
||||
trans.write(byteSequence(0,100));
|
||||
assertEquals(0, countingTrans.writeCount);
|
||||
trans.write(byteSequence(101,200));
|
||||
trans.write(byteSequence(201,255));
|
||||
assertEquals(0, countingTrans.writeCount);
|
||||
|
||||
trans.flush();
|
||||
assertEquals(2, countingTrans.writeCount);
|
||||
|
||||
trans.write(byteSequence(0, 245));
|
||||
trans.flush();
|
||||
assertEquals(4, countingTrans.writeCount);
|
||||
|
||||
DataInputStream din = new DataInputStream(new ByteArrayInputStream(baos.toByteArray()));
|
||||
assertEquals(256, din.readInt());
|
||||
|
||||
byte[] buf = new byte[256];
|
||||
din.read(buf, 0, 256);
|
||||
assertTrue(Arrays.equals(byteSequence(0,255), buf));
|
||||
|
||||
assertEquals(246, din.readInt());
|
||||
buf = new byte[246];
|
||||
din.read(buf, 0, 246);
|
||||
assertTrue(Arrays.equals(byteSequence(0,245), buf));
|
||||
}
|
||||
|
||||
public void testDirectRead() throws IOException, TTransportException {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
DataOutputStream dos = new DataOutputStream(baos);
|
||||
dos.writeInt(50);
|
||||
dos.write(byteSequence(0, 49));
|
||||
dos.writeInt(75);
|
||||
dos.write(byteSequence(125, 200));
|
||||
|
||||
TMemoryBuffer membuf = new TMemoryBuffer(0);
|
||||
membuf.write(baos.toByteArray());
|
||||
|
||||
ReadCountingTransport countTrans = new ReadCountingTransport(membuf);
|
||||
TTransport trans = getTransport(countTrans);
|
||||
|
||||
assertEquals(0, trans.getBytesRemainingInBuffer());
|
||||
|
||||
byte[] readBuf = new byte[10];
|
||||
trans.read(readBuf, 0, 10);
|
||||
assertTrue(Arrays.equals(readBuf, byteSequence(0,9)));
|
||||
|
||||
assertEquals(40, trans.getBytesRemainingInBuffer());
|
||||
assertEquals(10, trans.getBufferPosition());
|
||||
|
||||
trans.consumeBuffer(5);
|
||||
assertEquals(35, trans.getBytesRemainingInBuffer());
|
||||
assertEquals(15, trans.getBufferPosition());
|
||||
|
||||
assertEquals(2, countTrans.readCount);
|
||||
|
||||
assertEquals(35, trans.read(new byte[35], 0, 35));
|
||||
assertEquals(0, trans.getBytesRemainingInBuffer());
|
||||
assertEquals(50, trans.getBufferPosition());
|
||||
|
||||
trans.read(readBuf, 0, 10);
|
||||
assertEquals(4, countTrans.readCount);
|
||||
assertTrue(Arrays.equals(readBuf, byteSequence(125,134)));
|
||||
assertEquals(65, trans.getBytesRemainingInBuffer());
|
||||
assertEquals(10, trans.getBufferPosition());
|
||||
}
|
||||
}
|
85
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTMemoryInputTransport.java
generated
vendored
Normal file
85
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTMemoryInputTransport.java
generated
vendored
Normal file
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class TestTMemoryInputTransport extends TestCase {
|
||||
public void testFresh() throws Exception {
|
||||
byte[] input_buf = new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
||||
TMemoryInputTransport trans = new TMemoryInputTransport(input_buf);
|
||||
assertEquals(0, trans.getBufferPosition());
|
||||
assertEquals(input_buf, trans.getBuffer());
|
||||
assertEquals(10, trans.getBytesRemainingInBuffer());
|
||||
|
||||
byte[] buf1 = new byte[4];
|
||||
trans.readAll(buf1, 0, 4);
|
||||
assertTrue(Arrays.equals(new byte[]{1, 2, 3, 4}, buf1));
|
||||
assertEquals(4, trans.getBufferPosition());
|
||||
assertEquals(6, trans.getBytesRemainingInBuffer());
|
||||
|
||||
trans.consumeBuffer(2);
|
||||
|
||||
assertEquals(6, trans.getBufferPosition());
|
||||
assertEquals(4, trans.getBytesRemainingInBuffer());
|
||||
|
||||
trans.readAll(buf1, 0, 4);
|
||||
assertTrue(Arrays.equals(new byte[]{7, 8, 9, 10}, buf1));
|
||||
assertEquals(10, trans.getBufferPosition());
|
||||
assertEquals(0, trans.getBytesRemainingInBuffer());
|
||||
}
|
||||
|
||||
public void testReused() throws Exception {
|
||||
byte[] input_buf = new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
||||
TMemoryInputTransport trans = new TMemoryInputTransport(input_buf);
|
||||
assertEquals(0, trans.getBufferPosition());
|
||||
assertEquals(input_buf, trans.getBuffer());
|
||||
assertEquals(10, trans.getBytesRemainingInBuffer());
|
||||
|
||||
byte[] new_buf = new byte[]{10, 9, 8};
|
||||
trans.reset(new_buf);
|
||||
assertEquals(0, trans.getBufferPosition());
|
||||
assertEquals(new_buf, trans.getBuffer());
|
||||
assertEquals(3, trans.getBytesRemainingInBuffer());
|
||||
}
|
||||
|
||||
public void testWithOffsetAndLength() throws Exception {
|
||||
byte[] input_buf = new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
||||
TMemoryInputTransport trans = new TMemoryInputTransport(input_buf, 1, 3);
|
||||
assertEquals(1, trans.getBufferPosition());
|
||||
assertEquals(3, trans.getBytesRemainingInBuffer());
|
||||
byte[] readBuffer = new byte[3];
|
||||
trans.readAll(readBuffer, 0, 3);
|
||||
assertTrue(Arrays.equals(new byte[]{2, 3, 4}, readBuffer));
|
||||
|
||||
try {
|
||||
assertEquals(0, trans.readAll(readBuffer, 0, 3));
|
||||
fail("should have thrown an exception");
|
||||
} catch (Exception e) {
|
||||
// yay
|
||||
}
|
||||
|
||||
trans.reset(input_buf, 3, 4);
|
||||
readBuffer = new byte[4];
|
||||
trans.readAll(readBuffer, 0, 4);
|
||||
assertTrue(Arrays.equals(new byte[]{4, 5, 6, 7}, readBuffer));
|
||||
}
|
||||
}
|
88
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTSSLTransportFactory.java
generated
vendored
Normal file
88
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTSSLTransportFactory.java
generated
vendored
Normal file
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.thrift.TProcessor;
|
||||
import org.apache.thrift.protocol.TBinaryProtocol;
|
||||
import org.apache.thrift.protocol.TProtocolFactory;
|
||||
import org.apache.thrift.server.ServerTestBase;
|
||||
import org.apache.thrift.server.TServer;
|
||||
import org.apache.thrift.server.TSimpleServer;
|
||||
import org.apache.thrift.server.TServer.Args;
|
||||
|
||||
public class TestTSSLTransportFactory extends ServerTestBase {
|
||||
private Thread serverThread;
|
||||
private TServer server;
|
||||
|
||||
private static final List<TProtocolFactory> protocols = new ArrayList<TProtocolFactory>();
|
||||
static {
|
||||
// TODO: Only supported on TBinaryProtocol. Doesn't work for TCompactProtocol
|
||||
protocols.add(new TBinaryProtocol.Factory());
|
||||
}
|
||||
|
||||
@Override
|
||||
public TTransport getClientTransport(TTransport underlyingTransport)
|
||||
throws Exception {
|
||||
return TSSLTransportFactory.getClientSocket(HOST, PORT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startServer(final TProcessor processor, final TProtocolFactory protoFactory, final TTransportFactory factory)
|
||||
throws Exception {
|
||||
serverThread = new Thread() {
|
||||
public void run() {
|
||||
try {
|
||||
TServerTransport serverTransport = TSSLTransportFactory.getServerSocket(PORT);
|
||||
final Args args = new Args(serverTransport).processor(processor);
|
||||
server = new TSimpleServer(args);
|
||||
server.serve();
|
||||
} catch (TTransportException e) {
|
||||
e.printStackTrace();
|
||||
assert false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
serverThread.start();
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stopServer() throws Exception {
|
||||
server.stop();
|
||||
serverThread.join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void open(TTransport transport) throws Exception {}
|
||||
|
||||
@Override
|
||||
public List<TProtocolFactory> getProtocols() {
|
||||
return protocols;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testTransportFactory() throws Exception {
|
||||
// this test doesn't really apply to this suite, so let's skip it.
|
||||
}
|
||||
}
|
35
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTSSLTransportFactoryCustomClient1.java
generated
vendored
Normal file
35
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTSSLTransportFactoryCustomClient1.java
generated
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
public class TestTSSLTransportFactoryCustomClient1 extends TestTSSLTransportFactory {
|
||||
|
||||
@Override
|
||||
public TTransport getClientTransport(TTransport underlyingTransport)
|
||||
throws Exception {
|
||||
TSSLTransportFactory.TSSLTransportParameters params = new
|
||||
TSSLTransportFactory.TSSLTransportParameters();
|
||||
|
||||
params.setTrustStore(System.getProperty("javax.net.ssl.trustStore"),
|
||||
System.getProperty("javax.net.ssl.trustStorePassword"));
|
||||
|
||||
return TSSLTransportFactory.getClientSocket(HOST, PORT, 0/*timeout*/, params);
|
||||
}
|
||||
}
|
34
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTSSLTransportFactoryCustomClient2.java
generated
vendored
Normal file
34
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTSSLTransportFactoryCustomClient2.java
generated
vendored
Normal file
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
public class TestTSSLTransportFactoryCustomClient2 extends TestTSSLTransportFactory {
|
||||
|
||||
@Override
|
||||
public TTransport getClientTransport(TTransport underlyingTransport)
|
||||
throws Exception {
|
||||
TSSLTransportFactory.TSSLTransportParameters params = new
|
||||
TSSLTransportFactory.TSSLTransportParameters();
|
||||
|
||||
params.setTrustStore(System.getProperty("javax.net.ssl.trustStore"), null);
|
||||
|
||||
return TSSLTransportFactory.getClientSocket(HOST, PORT, 0/*timeout*/, params);
|
||||
}
|
||||
}
|
478
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTSaslTransports.java
generated
vendored
Normal file
478
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTSaslTransports.java
generated
vendored
Normal file
|
@ -0,0 +1,478 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.security.auth.callback.Callback;
|
||||
import javax.security.auth.callback.CallbackHandler;
|
||||
import javax.security.auth.callback.NameCallback;
|
||||
import javax.security.auth.callback.PasswordCallback;
|
||||
import javax.security.auth.callback.UnsupportedCallbackException;
|
||||
import javax.security.sasl.AuthorizeCallback;
|
||||
import javax.security.sasl.RealmCallback;
|
||||
import javax.security.sasl.Sasl;
|
||||
import javax.security.sasl.SaslClient;
|
||||
import javax.security.sasl.SaslClientFactory;
|
||||
import javax.security.sasl.SaslException;
|
||||
import javax.security.sasl.SaslServer;
|
||||
import javax.security.sasl.SaslServerFactory;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.thrift.TProcessor;
|
||||
import org.apache.thrift.protocol.TProtocolFactory;
|
||||
import org.apache.thrift.server.ServerTestBase;
|
||||
import org.apache.thrift.server.TServer;
|
||||
import org.apache.thrift.server.TSimpleServer;
|
||||
import org.apache.thrift.server.TServer.Args;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class TestTSaslTransports extends TestCase {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(TestTSaslTransports.class);
|
||||
|
||||
private static final String HOST = "localhost";
|
||||
private static final String SERVICE = "thrift-test";
|
||||
private static final String PRINCIPAL = "thrift-test-principal";
|
||||
private static final String PASSWORD = "super secret password";
|
||||
private static final String REALM = "thrift-test-realm";
|
||||
|
||||
private static final String UNWRAPPED_MECHANISM = "CRAM-MD5";
|
||||
private static final Map<String, String> UNWRAPPED_PROPS = null;
|
||||
|
||||
private static final String WRAPPED_MECHANISM = "DIGEST-MD5";
|
||||
private static final Map<String, String> WRAPPED_PROPS = new HashMap<String, String>();
|
||||
|
||||
static {
|
||||
WRAPPED_PROPS.put(Sasl.QOP, "auth-int");
|
||||
WRAPPED_PROPS.put("com.sun.security.sasl.digest.realm", REALM);
|
||||
}
|
||||
|
||||
private static final String testMessage1 = "Hello, world! Also, four "
|
||||
+ "score and seven years ago our fathers brought forth on this "
|
||||
+ "continent a new nation, conceived in liberty, and dedicated to the "
|
||||
+ "proposition that all men are created equal.";
|
||||
|
||||
private static final String testMessage2 = "I have a dream that one day "
|
||||
+ "this nation will rise up and live out the true meaning of its creed: "
|
||||
+ "'We hold these truths to be self-evident, that all men are created equal.'";
|
||||
|
||||
|
||||
private static class TestSaslCallbackHandler implements CallbackHandler {
|
||||
private final String password;
|
||||
|
||||
public TestSaslCallbackHandler(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
|
||||
for (Callback c : callbacks) {
|
||||
if (c instanceof NameCallback) {
|
||||
((NameCallback) c).setName(PRINCIPAL);
|
||||
} else if (c instanceof PasswordCallback) {
|
||||
((PasswordCallback) c).setPassword(password.toCharArray());
|
||||
} else if (c instanceof AuthorizeCallback) {
|
||||
((AuthorizeCallback) c).setAuthorized(true);
|
||||
} else if (c instanceof RealmCallback) {
|
||||
((RealmCallback) c).setText(REALM);
|
||||
} else {
|
||||
throw new UnsupportedCallbackException(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class ServerThread extends Thread {
|
||||
final String mechanism;
|
||||
final Map<String, String> props;
|
||||
volatile Throwable thrown;
|
||||
|
||||
public ServerThread(String mechanism, Map<String, String> props) {
|
||||
this.mechanism = mechanism;
|
||||
this.props = props;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
try {
|
||||
internalRun();
|
||||
} catch (Throwable t) {
|
||||
thrown = t;
|
||||
}
|
||||
}
|
||||
|
||||
private void internalRun() throws Exception {
|
||||
TServerSocket serverSocket = new TServerSocket(
|
||||
new TServerSocket.ServerSocketTransportArgs().
|
||||
port(ServerTestBase.PORT));
|
||||
try {
|
||||
acceptAndWrite(serverSocket);
|
||||
} finally {
|
||||
serverSocket.close();
|
||||
}
|
||||
}
|
||||
|
||||
private void acceptAndWrite(TServerSocket serverSocket)
|
||||
throws Exception {
|
||||
TTransport serverTransport = serverSocket.accept();
|
||||
TTransport saslServerTransport = new TSaslServerTransport(
|
||||
mechanism, SERVICE, HOST,
|
||||
props, new TestSaslCallbackHandler(PASSWORD), serverTransport);
|
||||
|
||||
saslServerTransport.open();
|
||||
|
||||
byte[] inBuf = new byte[testMessage1.getBytes().length];
|
||||
// Deliberately read less than the full buffer to ensure
|
||||
// that TSaslTransport is correctly buffering reads. This
|
||||
// will fail for the WRAPPED test, if it doesn't work.
|
||||
saslServerTransport.readAll(inBuf, 0, 5);
|
||||
saslServerTransport.readAll(inBuf, 5, 10);
|
||||
saslServerTransport.readAll(inBuf, 15, inBuf.length - 15);
|
||||
LOGGER.debug("server got: {}", new String(inBuf));
|
||||
assertEquals(new String(inBuf), testMessage1);
|
||||
|
||||
LOGGER.debug("server writing: {}", testMessage2);
|
||||
saslServerTransport.write(testMessage2.getBytes());
|
||||
saslServerTransport.flush();
|
||||
|
||||
saslServerTransport.close();
|
||||
}
|
||||
}
|
||||
|
||||
private void testSaslOpen(final String mechanism, final Map<String, String> props)
|
||||
throws Exception {
|
||||
ServerThread serverThread = new ServerThread(mechanism, props);
|
||||
serverThread.start();
|
||||
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
// Ah well.
|
||||
}
|
||||
|
||||
try {
|
||||
TSocket clientSocket = new TSocket(HOST, ServerTestBase.PORT);
|
||||
TTransport saslClientTransport = new TSaslClientTransport(mechanism,
|
||||
PRINCIPAL, SERVICE, HOST, props, new TestSaslCallbackHandler(PASSWORD), clientSocket);
|
||||
saslClientTransport.open();
|
||||
LOGGER.debug("client writing: {}", testMessage1);
|
||||
saslClientTransport.write(testMessage1.getBytes());
|
||||
saslClientTransport.flush();
|
||||
|
||||
byte[] inBuf = new byte[testMessage2.getBytes().length];
|
||||
saslClientTransport.readAll(inBuf, 0, inBuf.length);
|
||||
LOGGER.debug("client got: {}", new String(inBuf));
|
||||
assertEquals(new String(inBuf), testMessage2);
|
||||
|
||||
TTransportException expectedException = null;
|
||||
try {
|
||||
saslClientTransport.open();
|
||||
} catch (TTransportException e) {
|
||||
expectedException = e;
|
||||
}
|
||||
assertNotNull(expectedException);
|
||||
|
||||
saslClientTransport.close();
|
||||
} catch (Exception e) {
|
||||
LOGGER.warn("Exception caught", e);
|
||||
throw e;
|
||||
} finally {
|
||||
serverThread.interrupt();
|
||||
try {
|
||||
serverThread.join();
|
||||
} catch (InterruptedException e) {
|
||||
// Ah well.
|
||||
}
|
||||
assertNull(serverThread.thrown);
|
||||
}
|
||||
}
|
||||
|
||||
public void testUnwrappedOpen() throws Exception {
|
||||
testSaslOpen(UNWRAPPED_MECHANISM, UNWRAPPED_PROPS);
|
||||
}
|
||||
|
||||
public void testWrappedOpen() throws Exception {
|
||||
testSaslOpen(WRAPPED_MECHANISM, WRAPPED_PROPS);
|
||||
}
|
||||
|
||||
public void testAnonymousOpen() throws Exception {
|
||||
testSaslOpen("ANONYMOUS", null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that we get the proper exceptions thrown back the server when
|
||||
* the client provides invalid password.
|
||||
*/
|
||||
public void testBadPassword() throws Exception {
|
||||
ServerThread serverThread = new ServerThread(UNWRAPPED_MECHANISM, UNWRAPPED_PROPS);
|
||||
serverThread.start();
|
||||
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
// Ah well.
|
||||
}
|
||||
|
||||
boolean clientSidePassed = true;
|
||||
|
||||
try {
|
||||
TSocket clientSocket = new TSocket(HOST, ServerTestBase.PORT);
|
||||
TTransport saslClientTransport = new TSaslClientTransport(
|
||||
UNWRAPPED_MECHANISM, PRINCIPAL, SERVICE, HOST, UNWRAPPED_PROPS,
|
||||
new TestSaslCallbackHandler("NOT THE PASSWORD"), clientSocket);
|
||||
saslClientTransport.open();
|
||||
clientSidePassed = false;
|
||||
fail("Was able to open transport with bad password");
|
||||
} catch (TTransportException tte) {
|
||||
LOGGER.error("Exception for bad password", tte);
|
||||
assertNotNull(tte.getMessage());
|
||||
assertTrue(tte.getMessage().contains("Invalid response"));
|
||||
|
||||
} finally {
|
||||
serverThread.interrupt();
|
||||
serverThread.join();
|
||||
|
||||
if (clientSidePassed) {
|
||||
assertNotNull(serverThread.thrown);
|
||||
assertTrue(serverThread.thrown.getMessage().contains("Invalid response"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void testWithServer() throws Exception {
|
||||
new TestTSaslTransportsWithServer().testIt();
|
||||
}
|
||||
|
||||
private static class TestTSaslTransportsWithServer extends ServerTestBase {
|
||||
|
||||
private Thread serverThread;
|
||||
private TServer server;
|
||||
|
||||
@Override
|
||||
public TTransport getClientTransport(TTransport underlyingTransport) throws Exception {
|
||||
return new TSaslClientTransport(
|
||||
WRAPPED_MECHANISM, PRINCIPAL, SERVICE, HOST, WRAPPED_PROPS,
|
||||
new TestSaslCallbackHandler(PASSWORD), underlyingTransport);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startServer(final TProcessor processor, final TProtocolFactory protoFactory, final TTransportFactory factory) throws Exception {
|
||||
serverThread = new Thread() {
|
||||
public void run() {
|
||||
try {
|
||||
// Transport
|
||||
TServerSocket socket = new TServerSocket(new TServerSocket.ServerSocketTransportArgs().port(PORT));
|
||||
|
||||
TTransportFactory factory = new TSaslServerTransport.Factory(
|
||||
WRAPPED_MECHANISM, SERVICE, HOST, WRAPPED_PROPS,
|
||||
new TestSaslCallbackHandler(PASSWORD));
|
||||
server = new TSimpleServer(new Args(socket).processor(processor).transportFactory(factory).protocolFactory(protoFactory));
|
||||
|
||||
// Run it
|
||||
LOGGER.debug("Starting the server on port {}", PORT);
|
||||
server.serve();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
fail();
|
||||
}
|
||||
}
|
||||
};
|
||||
serverThread.start();
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stopServer() throws Exception {
|
||||
server.stop();
|
||||
try {
|
||||
serverThread.join();
|
||||
} catch (InterruptedException e) {}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implementation of SASL ANONYMOUS, used for testing client-side
|
||||
* initial responses.
|
||||
*/
|
||||
private static class AnonymousClient implements SaslClient {
|
||||
private final String username;
|
||||
private boolean hasProvidedInitialResponse;
|
||||
|
||||
public AnonymousClient(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getMechanismName() { return "ANONYMOUS"; }
|
||||
public boolean hasInitialResponse() { return true; }
|
||||
public byte[] evaluateChallenge(byte[] challenge) throws SaslException {
|
||||
if (hasProvidedInitialResponse) {
|
||||
throw new SaslException("Already complete!");
|
||||
}
|
||||
|
||||
try {
|
||||
hasProvidedInitialResponse = true;
|
||||
return username.getBytes("UTF-8");
|
||||
} catch (IOException e) {
|
||||
throw new SaslException(e.toString());
|
||||
}
|
||||
}
|
||||
public boolean isComplete() { return hasProvidedInitialResponse; }
|
||||
public byte[] unwrap(byte[] incoming, int offset, int len) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
public byte[] wrap(byte[] outgoing, int offset, int len) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
public Object getNegotiatedProperty(String propName) { return null; }
|
||||
public void dispose() {}
|
||||
}
|
||||
|
||||
private static class AnonymousServer implements SaslServer {
|
||||
private String user;
|
||||
public String getMechanismName() { return "ANONYMOUS"; }
|
||||
public byte[] evaluateResponse(byte[] response) throws SaslException {
|
||||
try {
|
||||
this.user = new String(response, "UTF-8");
|
||||
} catch (IOException e) {
|
||||
throw new SaslException(e.toString());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public boolean isComplete() { return user != null; }
|
||||
public String getAuthorizationID() { return user; }
|
||||
public byte[] unwrap(byte[] incoming, int offset, int len) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
public byte[] wrap(byte[] outgoing, int offset, int len) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
public Object getNegotiatedProperty(String propName) { return null; }
|
||||
public void dispose() {}
|
||||
|
||||
}
|
||||
|
||||
public static class SaslAnonymousFactory
|
||||
implements SaslClientFactory, SaslServerFactory {
|
||||
|
||||
public SaslClient createSaslClient(
|
||||
String[] mechanisms, String authorizationId, String protocol,
|
||||
String serverName, Map<String,?> props, CallbackHandler cbh)
|
||||
{
|
||||
for (String mech : mechanisms) {
|
||||
if ("ANONYMOUS".equals(mech)) {
|
||||
return new AnonymousClient(authorizationId);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public SaslServer createSaslServer(
|
||||
String mechanism, String protocol, String serverName, Map<String,?> props, CallbackHandler cbh)
|
||||
{
|
||||
if ("ANONYMOUS".equals(mechanism)) {
|
||||
return new AnonymousServer();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public String[] getMechanismNames(Map<String, ?> props) {
|
||||
return new String[] { "ANONYMOUS" };
|
||||
}
|
||||
}
|
||||
|
||||
static {
|
||||
java.security.Security.addProvider(new SaslAnonymousProvider());
|
||||
}
|
||||
public static class SaslAnonymousProvider extends java.security.Provider {
|
||||
public SaslAnonymousProvider() {
|
||||
super("ThriftSaslAnonymous", 1.0, "Thrift Anonymous SASL provider");
|
||||
put("SaslClientFactory.ANONYMOUS", SaslAnonymousFactory.class.getName());
|
||||
put("SaslServerFactory.ANONYMOUS", SaslAnonymousFactory.class.getName());
|
||||
}
|
||||
}
|
||||
|
||||
private static class MockTTransport extends TTransport {
|
||||
|
||||
byte[] badHeader = null;
|
||||
private TMemoryInputTransport readBuffer = new TMemoryInputTransport();
|
||||
|
||||
public MockTTransport(int mode) {
|
||||
if (mode==1) {
|
||||
// Invalid status byte
|
||||
badHeader = new byte[] { (byte)0xFF, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x05 };
|
||||
} else if (mode == 2) {
|
||||
// Valid status byte, negative payload length
|
||||
badHeader = new byte[] { (byte)0x01, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF };
|
||||
} else if (mode == 3) {
|
||||
// Valid status byte, excessively large, bogus payload length
|
||||
badHeader = new byte[] { (byte)0x01, (byte)0x64, (byte)0x00, (byte)0x00, (byte)0x00 };
|
||||
}
|
||||
readBuffer.reset(badHeader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpen() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void open() throws TTransportException {}
|
||||
|
||||
@Override
|
||||
public void close() {}
|
||||
|
||||
@Override
|
||||
public int read(byte[] buf, int off, int len) throws TTransportException {
|
||||
return readBuffer.read(buf, off, len);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(byte[] buf, int off, int len) throws TTransportException {}
|
||||
}
|
||||
|
||||
public void testBadHeader() {
|
||||
TSaslTransport saslTransport = new TSaslServerTransport(new MockTTransport(1));
|
||||
try {
|
||||
saslTransport.receiveSaslMessage();
|
||||
fail("Should have gotten an error due to incorrect status byte value.");
|
||||
} catch (TTransportException e) {
|
||||
assertEquals(e.getMessage(), "Invalid status -1");
|
||||
}
|
||||
saslTransport = new TSaslServerTransport(new MockTTransport(2));
|
||||
try {
|
||||
saslTransport.receiveSaslMessage();
|
||||
fail("Should have gotten an error due to negative payload length.");
|
||||
} catch (TTransportException e) {
|
||||
assertEquals(e.getMessage(), "Invalid payload header length: -1");
|
||||
}
|
||||
saslTransport = new TSaslServerTransport(new MockTTransport(3));
|
||||
try {
|
||||
saslTransport.receiveSaslMessage();
|
||||
fail("Should have gotten an error due to bogus (large) payload length.");
|
||||
} catch (TTransportException e) {
|
||||
assertEquals(e.getMessage(), "Invalid payload header length: 1677721600");
|
||||
}
|
||||
}
|
||||
}
|
74
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTSimpleFileTransport.java
generated
vendored
Normal file
74
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTSimpleFileTransport.java
generated
vendored
Normal file
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Arrays;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class TestTSimpleFileTransport extends TestCase {
|
||||
public void testFresh() throws Exception {
|
||||
//Test write side
|
||||
Path tempFilePathName = Files.createTempFile("TSimpleFileTransportTest", null);
|
||||
Files.delete(tempFilePathName);
|
||||
byte[] input_buf = new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
||||
TSimpleFileTransport trans_write = new TSimpleFileTransport(tempFilePathName.toString(),false, true, false);
|
||||
assert (!trans_write.isOpen());
|
||||
trans_write.open();
|
||||
assert(trans_write.isOpen());
|
||||
trans_write.write(input_buf);
|
||||
trans_write.write(input_buf,2,2);
|
||||
trans_write.flush();
|
||||
trans_write.close();
|
||||
|
||||
//Test read side
|
||||
TSimpleFileTransport trans = new TSimpleFileTransport(tempFilePathName.toString(),true, false);
|
||||
assert(trans_write.isOpen());
|
||||
|
||||
//Simple file trans provides no buffer access
|
||||
assert(0 == trans.getBufferPosition());
|
||||
assert(null == trans.getBuffer());
|
||||
assert(-1 == trans.getBytesRemainingInBuffer());
|
||||
|
||||
//Test file pointer operations
|
||||
assert(0 == trans.getFilePointer());
|
||||
assert(12 == trans.length());
|
||||
|
||||
final int BUFSIZ = 4;
|
||||
byte[] buf1 = new byte[BUFSIZ];
|
||||
trans.readAll(buf1, 0, BUFSIZ);
|
||||
assert(BUFSIZ == trans.getFilePointer());
|
||||
assert(Arrays.equals(new byte[]{1, 2, 3, 4}, buf1));
|
||||
|
||||
int bytesRead = trans.read(buf1, 0, BUFSIZ);
|
||||
assert(bytesRead > 0);
|
||||
for (int i = 0; i < bytesRead; ++i) {
|
||||
assert(buf1[i] == i+5);
|
||||
}
|
||||
|
||||
trans.seek(0);
|
||||
assert(0 == trans.getFilePointer());
|
||||
trans.readAll(buf1, 0, BUFSIZ);
|
||||
assert(Arrays.equals(new byte[]{1, 2, 3, 4}, buf1));
|
||||
assert(BUFSIZ == trans.getFilePointer());
|
||||
trans.close();
|
||||
Files.delete(tempFilePathName);
|
||||
}
|
||||
}
|
140
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTZlibTransport.java
generated
vendored
Normal file
140
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/TestTZlibTransport.java
generated
vendored
Normal file
|
@ -0,0 +1,140 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.zip.DataFormatException;
|
||||
import java.util.zip.DeflaterOutputStream;
|
||||
import java.util.zip.InflaterInputStream;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class TestTZlibTransport extends TestCase {
|
||||
|
||||
protected TTransport getTransport(TTransport underlying) {
|
||||
return new TZlibTransport(underlying);
|
||||
}
|
||||
|
||||
public static byte[] byteSequence(int start, int end) {
|
||||
byte[] result = new byte[end-start+1];
|
||||
for (int i = 0; i <= (end-start); i++) {
|
||||
result[i] = (byte)(start+i);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void testClose() throws TTransportException {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
WriteCountingTransport countingTrans = new WriteCountingTransport(new TIOStreamTransport(new BufferedOutputStream
|
||||
(baos)));
|
||||
TTransport trans = getTransport(countingTrans);
|
||||
trans.write(byteSequence(0, 245));
|
||||
countingTrans.close();
|
||||
trans.close();
|
||||
}
|
||||
|
||||
public void testCloseOpen() throws TTransportException {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
TTransport trans = getTransport(new TIOStreamTransport(baos));
|
||||
byte[] uncompressed = byteSequence(0, 245);
|
||||
trans.write(uncompressed);
|
||||
trans.close();
|
||||
final byte[] compressed = baos.toByteArray();
|
||||
|
||||
final byte[] buf = new byte[255];
|
||||
TTransport transRead = getTransport(new TIOStreamTransport(new ByteArrayInputStream(compressed)));
|
||||
int readBytes = transRead.read(buf, 0, buf.length);
|
||||
assertEquals(uncompressed.length, readBytes);
|
||||
transRead.close();
|
||||
}
|
||||
|
||||
public void testRead() throws IOException, TTransportException {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(baos);
|
||||
DataOutputStream dos = new DataOutputStream(deflaterOutputStream);
|
||||
dos.write(byteSequence(0, 49));
|
||||
dos.write(byteSequence(0, 219));
|
||||
|
||||
deflaterOutputStream.finish();
|
||||
|
||||
TMemoryBuffer membuf = new TMemoryBuffer(0);
|
||||
membuf.write(baos.toByteArray());
|
||||
|
||||
ReadCountingTransport countTrans = new ReadCountingTransport(membuf);
|
||||
TTransport trans = getTransport(countTrans);
|
||||
|
||||
byte[] readBuf = new byte[10];
|
||||
trans.read(readBuf, 0, 10);
|
||||
assertTrue(Arrays.equals(readBuf, byteSequence(0,9)));
|
||||
assertEquals(1, countTrans.readCount);
|
||||
|
||||
trans.read(readBuf, 0, 10);
|
||||
assertTrue(Arrays.equals(readBuf, byteSequence(10,19)));
|
||||
assertEquals(1, countTrans.readCount);
|
||||
|
||||
assertEquals(30, trans.read(new byte[30], 0, 30));
|
||||
assertEquals(1, countTrans.readCount);
|
||||
|
||||
readBuf = new byte[220];
|
||||
assertEquals(220, trans.read(readBuf, 0, 220));
|
||||
assertTrue(Arrays.equals(readBuf, byteSequence(0, 219)));
|
||||
assertEquals(1, countTrans.readCount);
|
||||
}
|
||||
|
||||
public void testWrite() throws TTransportException, IOException, DataFormatException {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
WriteCountingTransport countingTrans = new WriteCountingTransport(new TIOStreamTransport(new BufferedOutputStream(baos)));
|
||||
TTransport trans = getTransport(countingTrans);
|
||||
|
||||
trans.write(byteSequence(0, 100));
|
||||
assertEquals(1, countingTrans.writeCount);
|
||||
trans.write(byteSequence(101, 200));
|
||||
trans.write(byteSequence(201, 255));
|
||||
assertEquals(1, countingTrans.writeCount);
|
||||
|
||||
trans.flush();
|
||||
assertEquals(2, countingTrans.writeCount);
|
||||
|
||||
trans.write(byteSequence(0, 245));
|
||||
trans.flush();
|
||||
assertEquals(3, countingTrans.writeCount);
|
||||
|
||||
DataInputStream din = new DataInputStream(new InflaterInputStream(new ByteArrayInputStream(baos.toByteArray())));
|
||||
byte[] buf = new byte[256];
|
||||
int n = din.read(buf, 0, 256);
|
||||
assertEquals(n, 256);
|
||||
assertTrue(Arrays.equals(byteSequence(0, 255), buf));
|
||||
|
||||
buf = new byte[246];
|
||||
n = din.read(buf, 0, 246);
|
||||
assertEquals(n, 246);
|
||||
for (int i = 0; i<buf.length; i++) {
|
||||
assertEquals("for "+i, byteSequence(0,245)[i], buf[i]);
|
||||
}
|
||||
|
||||
assertTrue(Arrays.equals(byteSequence(0,245), buf));
|
||||
}
|
||||
|
||||
}
|
54
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/WriteCountingTransport.java
generated
vendored
Normal file
54
vendor/git.apache.org/thrift.git/lib/java/test/org/apache/thrift/transport/WriteCountingTransport.java
generated
vendored
Normal file
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* 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
|
||||
*
|
||||
* 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 org.apache.thrift.transport;
|
||||
|
||||
|
||||
public class WriteCountingTransport extends TTransport {
|
||||
public int writeCount = 0;
|
||||
private final TTransport trans;
|
||||
|
||||
public WriteCountingTransport(TTransport underlying) {
|
||||
trans = underlying;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {}
|
||||
|
||||
@Override
|
||||
public boolean isOpen() {return true;}
|
||||
|
||||
@Override
|
||||
public void open() throws TTransportException {}
|
||||
|
||||
@Override
|
||||
public int read(byte[] buf, int off, int len) throws TTransportException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(byte[] buf, int off, int len) throws TTransportException {
|
||||
writeCount ++;
|
||||
trans.write(buf, off, len);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flush() throws TTransportException {
|
||||
trans.flush();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue