You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by be...@apache.org on 2015/07/09 03:38:55 UTC

[2/3] thrift git commit: THRIFT-3221 Create a tool to audit network compatibility between two .thrift files Client: Compiler (general) Patch: Sanjay Poojary , Ben Craig , and Zach Hindes

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break18.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break18.thrift b/test/audit/break18.thrift
new file mode 100644
index 0000000..c778b6a
--- /dev/null
+++ b/test/audit/break18.thrift
@@ -0,0 +1,191 @@
+/*
+ * 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.
+ */
+
+//break18- oneway removed from base_oneway
+
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break19.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break19.thrift b/test/audit/break19.thrift
new file mode 100644
index 0000000..1a0b229
--- /dev/null
+++ b/test/audit/break19.thrift
@@ -0,0 +1,191 @@
+/*
+ * 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.
+ */
+
+//break19 - oneway added to base_function1
+
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    oneway void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break2.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break2.thrift b/test/audit/break2.thrift
new file mode 100644
index 0000000..6f4fe2d
--- /dev/null
+++ b/test/audit/break2.thrift
@@ -0,0 +1,190 @@
+/*
+ * 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.
+ */
+
+//Struct field changed in test_struct1
+
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i32 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break20.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break20.thrift b/test/audit/break20.thrift
new file mode 100644
index 0000000..9ae5f00
--- /dev/null
+++ b/test/audit/break20.thrift
@@ -0,0 +1,190 @@
+/*
+ * 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.
+ */
+
+// break 20 - first enum value removed from enum1
+
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break21.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break21.thrift b/test/audit/break21.thrift
new file mode 100644
index 0000000..f7da400
--- /dev/null
+++ b/test/audit/break21.thrift
@@ -0,0 +1,190 @@
+/*
+ * 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.
+ */
+
+//break21- last enum value removed from enum2
+
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break22.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break22.thrift b/test/audit/break22.thrift
new file mode 100644
index 0000000..3808349
--- /dev/null
+++ b/test/audit/break22.thrift
@@ -0,0 +1,190 @@
+/*
+ * 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.
+ */
+
+//break22 - in-between enum value removed from enum1
+
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break23.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break23.thrift b/test/audit/break23.thrift
new file mode 100644
index 0000000..ff95a42
--- /dev/null
+++ b/test/audit/break23.thrift
@@ -0,0 +1,192 @@
+/*
+ * 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.
+ */
+
+//break23 - required struct field added to struct4
+
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2,
+    3: required i64 struct4_member3
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break24.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break24.thrift b/test/audit/break24.thrift
new file mode 100644
index 0000000..bb4d5b9
--- /dev/null
+++ b/test/audit/break24.thrift
@@ -0,0 +1,191 @@
+/*
+ * 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.
+ */
+
+//break24 - removed inheritance from derived1.
+
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break25.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break25.thrift b/test/audit/break25.thrift
new file mode 100644
index 0000000..6efe97e
--- /dev/null
+++ b/test/audit/break25.thrift
@@ -0,0 +1,191 @@
+/*
+ * 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.
+ */
+
+//Changed inheritance of derived2
+
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends derived1 {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break26.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break26.thrift b/test/audit/break26.thrift
new file mode 100644
index 0000000..6576d9b
--- /dev/null
+++ b/test/audit/break26.thrift
@@ -0,0 +1,191 @@
+/*
+ * 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.
+ */
+
+//break26 - Field type changed in base_function1 argument id=3
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: double function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}
+

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break27.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break27.thrift b/test/audit/break27.thrift
new file mode 100644
index 0000000..b556706
--- /dev/null
+++ b/test/audit/break27.thrift
@@ -0,0 +1,190 @@
+/*
+ * 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.
+ */
+
+// break27 - argument changed base_function2 list<enum1> to list<enum3> id =8
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum3> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break28.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break28.thrift b/test/audit/break28.thrift
new file mode 100644
index 0000000..c64e558
--- /dev/null
+++ b/test/audit/break28.thrift
@@ -0,0 +1,190 @@
+/*
+ * 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.
+ */
+
+//break28- derived1_function5 arguement type changed map<i64, double> to list<i64>
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: list<i64> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break29.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break29.thrift b/test/audit/break29.thrift
new file mode 100644
index 0000000..52f3081
--- /dev/null
+++ b/test/audit/break29.thrift
@@ -0,0 +1,191 @@
+/*
+ * 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.
+ */
+
+//break29 - base_function2 arguemnt type changed list<string> to string
+
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: string function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break3.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break3.thrift b/test/audit/break3.thrift
new file mode 100644
index 0000000..ded9972
--- /dev/null
+++ b/test/audit/break3.thrift
@@ -0,0 +1,191 @@
+/*
+ * 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.
+ */
+
+//break3 - Struct field changed in test_struct1(enum1 to enum2)
+
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum2 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    test_struct1 derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}

http://git-wip-us.apache.org/repos/asf/thrift/blob/262cfb41/test/audit/break30.thrift
----------------------------------------------------------------------
diff --git a/test/audit/break30.thrift b/test/audit/break30.thrift
new file mode 100644
index 0000000..818dd6e
--- /dev/null
+++ b/test/audit/break30.thrift
@@ -0,0 +1,190 @@
+/*
+ * 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.
+ */
+
+// break30- derived1_function6 argument changed struct1 to map<struct1,struct1>
+namespace cpp test
+
+//Constants
+const i32 const1 = 123;
+const double const2 = 23.3;
+const map<string,string> const3 = {"hello":"world", "thrift":"audit"};
+
+
+//Exception
+exception test_exception1 {
+    1: i32 code;
+    2: string json;
+}
+exception test_exception2 {
+    1: i32 code;
+    2: string json;
+}
+
+//Enums
+
+enum test_enum1 {
+    enum1_value0 = 0,
+    enum1_value1 = 1,
+    enum1_value2 = 2,
+    enum1_value5 = 5,
+    enum1_value7 = 7,
+    enum1_value8 = 8
+}
+
+enum test_enum2 {
+    enum2_value0 = 0,
+    enum2_value1 = 1,
+    enum2_value2 = 2,
+    enum2_value3 = 3
+}
+
+enum test_enum3 {
+    enum3_value1 = 0,
+    enum3_value2 = 1
+}
+
+struct test_struct1 {
+    1: i16 struct1_member1,
+    2: i32 struct1_member2,
+    3: i64 struct1_member3,
+    4: double struct1_member4 = 2.5,
+    5: string struct1_member5 = "Audit test",
+    6: bool struct1_member6,
+    7: byte struct1_member7,
+    8: binary struct1_member8,
+    9: test_enum1 struct1_member9
+}
+
+struct test_struct2 {
+    1: list<i16> struct2_member1,
+    2: list<i32> struct2_member2,
+    3: list<i64> struct2_member3 = [23, 32 ],
+    4: list<double> struct2_member4,
+    5: list<string> struct2_member5,
+    6: list<bool> struct2_member6,
+    7: list<byte> struct2_member7,
+    8: list<binary> struct2_member8,
+    9: list<test_enum1> struct2_member9
+}
+
+struct test_struct3 {
+    1: map<i16, i32> struct3_member1 = {1:2, 3:4},
+    2: map<i64, double> struct3_member2 = {10:1.1, 20:2.1},
+    3: map<string, bool> struct3_member3,
+    4: map<byte, test_enum1> struct3_member4,
+    5: map<test_enum2, test_enum3 > struct3_member5,
+    7: map<double, string> struct3_member7
+}
+
+struct test_struct4 {
+    1: i32 struct4_member1,
+    2: optional i32 struct4_member2
+}
+
+struct test_struct5{
+    1: double struct5_member1,
+    2: string struct5_member2 = "Thrift Audit Test"
+}
+struct test_struct6 {
+    1: i32 struct6_member1,
+    2: required i32 struct6_member2
+}
+
+service base {
+    oneway void base_oneway(
+        1: i32 arg1),
+
+    void base_function1(
+        1: i16 function1_arg1,
+        2: i32 function1_arg2,
+        3: i64 function1_arg3,
+        4: double function1_arg4,
+        5: string function1_arg5,
+        6: bool function1_arg6,
+        7: test_enum1 function1_arg7,
+        8: test_struct1 function1_arg8),
+
+    void base_function2(
+        1: list<i16> function2_arg1,
+        2: list<i32> function2_arg2,
+        3: list<i64> function2_arg3,
+        4: list<double> function2_arg4,
+        5: list<string> function2_arg5,
+        6: list<bool> function2_arg6,
+        7: list<byte> function2_arg7,
+        8: list<test_enum1> function2_arg8,
+        9: list<test_struct1> function2_arg9) throws (1:test_exception2 e),
+
+    void base_function3(),
+
+}
+
+service derived1 extends base {
+    
+    test_enum1 derived1_function1(
+        1: i64 function1_arg1,
+        2: double function1_arg2,
+        3: test_enum1 function1_arg3) throws (1:test_exception2 e),
+
+    i64 derived1_function2(
+        1: list<i64> function2_arg1,
+        2: list<double> function2_arg2,
+        3: list<string> function2_arg3,
+        4: list<byte> function2_arg4,
+        5: list<test_enum1> function2_arg5) throws (1:test_exception2 e),
+
+    double derived1_function3(
+        1: string function3_arg1,
+        2: bool function3_arg2) throws (1:test_exception2 e),
+
+    string derived1_function4(
+        1: string function4_arg1,
+        2: bool function4_arg2) throws (1:test_exception2 e),
+
+
+    bool derived1_function5(
+        1: map<i64, double> function5_arg1,
+        2: map<string, bool> function5_arg2,
+        3: map<test_enum1, test_enum2> function5_arg3) throws (1:test_exception2 e),
+
+    map<test_struct1,test_struct1> derived1_function6(
+        1: double function6_arg1) throws (1:test_exception2 e),
+}
+
+service derived2 extends base {
+
+    list<i32> derived2_function1(
+        1: i32 function1_arg1) throws (1:test_exception2 e),
+    
+    list<test_enum1> derived2_function2(
+        1:i64 function2_arg2) throws (1:test_exception2 e),
+
+    list<test_struct1> derived2_function3(
+        1:double function3_arg1) throws(1:test_exception2 e),
+
+    map<double, string> derived2_function4(
+        1:string function4_arg1) throws(1:test_exception2 e),
+
+    map<test_enum1, test_enum2> derived2_function5(
+        1:bool function5_arg1) throws(1:test_exception2 e),
+
+    map<test_struct1, test_struct2> derived2_function6(
+        1:bool function6_arg1) throws(1:test_exception2 e),
+    
+}