From 4fce960b7fa9e100cc67933b8cae663469748b9b Mon Sep 17 00:00:00 2001 From: Roger Meier Date: Fri, 4 May 2012 06:22:09 +0000 Subject: [PATCH] THRIFT-1592 Test clients should have a return codes that reflect whether they succeeded or not Patch: Nathaniel Cook git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1333765 13f79535-47bb-0310-9956-ffa450edef68 --- test/cpp/src/TestClient.cpp | 53 ++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/test/cpp/src/TestClient.cpp b/test/cpp/src/TestClient.cpp index a1af77e0..fbf04f0b 100755 --- a/test/cpp/src/TestClient.cpp +++ b/test/cpp/src/TestClient.cpp @@ -222,6 +222,7 @@ int main(int argc, char** argv) { uint64_t time_max = 0; uint64_t time_tot = 0; + int failCount = 0; int test = 0; for (test = 0; test < numTests; ++test) { @@ -246,8 +247,9 @@ int main(int argc, char** argv) { printf("testVoid()"); testClient.testVoid(); printf(" = void\n"); - } catch (TApplicationException tax) { + } catch (TApplicationException& tax) { printf("%s\n", tax.what()); + failCount++; } /** @@ -257,6 +259,8 @@ int main(int argc, char** argv) { string s; testClient.testString(s, "Test"); printf(" = \"%s\"\n", s.c_str()); + if (s != "Test") + failCount++; /** * BYTE TEST @@ -264,6 +268,8 @@ int main(int argc, char** argv) { printf("testByte(1)"); uint8_t u8 = testClient.testByte(1); printf(" = %d\n", (int)u8); + if (u8 != 1) + failCount++; /** * I32 TEST @@ -271,6 +277,8 @@ int main(int argc, char** argv) { printf("testI32(-1)"); int32_t i32 = testClient.testI32(-1); printf(" = %d\n", i32); + if (i32 != -1) + failCount++; /** * I64 TEST @@ -278,13 +286,16 @@ int main(int argc, char** argv) { printf("testI64(-34359738368)"); int64_t i64 = testClient.testI64(-34359738368LL); printf(" = %"PRId64"\n", i64); - + if (i64 != -34359738368LL) + failCount++; /** * DOUBLE TEST */ printf("testDouble(-5.2098523)"); double dub = testClient.testDouble(-5.2098523); printf(" = %f\n", dub); + if ((dub - (-5.2098523)) > 0.001) + failCount++; /** * STRUCT TEST @@ -302,6 +313,8 @@ int main(int argc, char** argv) { (int)in.byte_thing, in.i32_thing, in.i64_thing); + if (in != out) + failCount++; /** * NESTED STRUCT TEST @@ -321,6 +334,8 @@ int main(int argc, char** argv) { in.i32_thing, in.i64_thing, in2.i32_thing); + if (in2 != out2) + failCount++; /** * MAP TEST @@ -354,6 +369,13 @@ int main(int argc, char** argv) { printf("%d => %d", m_iter->first, m_iter->second); } printf("}\n"); + if (mapin != mapout) + failCount++; + + /** + * STRING MAP TEST + * missing + */ /** * SET TEST @@ -387,6 +409,8 @@ int main(int argc, char** argv) { printf("%d", *s_iter); } printf("}\n"); + if (setin != setout) + failCount++; /** * LIST TEST @@ -420,6 +444,8 @@ int main(int argc, char** argv) { printf("%d", *l_iter); } printf("}\n"); + if (listin != listout) + failCount++; /** * ENUM TEST @@ -427,22 +453,32 @@ int main(int argc, char** argv) { printf("testEnum(ONE)"); Numberz::type ret = testClient.testEnum(Numberz::ONE); printf(" = %d\n", ret); + if (ret != Numberz::ONE) + failCount++; printf("testEnum(TWO)"); ret = testClient.testEnum(Numberz::TWO); printf(" = %d\n", ret); + if (ret != Numberz::TWO) + failCount++; printf("testEnum(THREE)"); ret = testClient.testEnum(Numberz::THREE); printf(" = %d\n", ret); + if (ret != Numberz::THREE) + failCount++; printf("testEnum(FIVE)"); ret = testClient.testEnum(Numberz::FIVE); printf(" = %d\n", ret); + if (ret != Numberz::FIVE) + failCount++; printf("testEnum(EIGHT)"); ret = testClient.testEnum(Numberz::EIGHT); printf(" = %d\n", ret); + if (ret != Numberz::EIGHT) + failCount++; /** * TYPEDEF TEST @@ -450,6 +486,8 @@ int main(int argc, char** argv) { printf("testTypedef(309858235082523)"); UserId uid = testClient.testTypedef(309858235082523LL); printf(" = %"PRId64"\n", uid); + if (uid != 309858235082523LL) + failCount++; /** * NESTED MAP TEST @@ -524,6 +562,7 @@ int main(int argc, char** argv) { printf("testClient.testException(\"Xception\") =>"); testClient.testException("Xception"); printf(" void\nFAILURE\n"); + failCount++; } catch(Xception& e) { printf(" {%u, \"%s\"}\n", e.errorCode, e.message.c_str()); @@ -533,6 +572,7 @@ int main(int argc, char** argv) { printf("testClient.testException(\"TException\") =>"); testClient.testException("TException"); printf(" void\nFAILURE\n"); + failCount++; } catch(TException& e) { printf(" Caught TException\n"); @@ -544,6 +584,7 @@ int main(int argc, char** argv) { printf(" void\n"); } catch(...) { printf(" exception\nFAILURE\n"); + failCount++; } /* test multi exception */ @@ -553,6 +594,7 @@ int main(int argc, char** argv) { Xtruct result; testClient.testMultiException(result, "Xception", "test 1"); printf(" result\nFAILURE\n"); + failCount++; } catch(Xception& e) { printf(" {%u, \"%s\"}\n", e.errorCode, e.message.c_str()); } @@ -562,6 +604,7 @@ int main(int argc, char** argv) { Xtruct result; testClient.testMultiException(result, "Xception2", "test 2"); printf(" result\nFAILURE\n"); + failCount++; } catch(Xception2& e) { printf(" {%u, {\"%s\"}}\n", e.errorCode, e.struct_thing.string_thing.c_str()); @@ -574,6 +617,7 @@ int main(int argc, char** argv) { printf(" {{\"%s\"}}\n", result.string_thing.c_str()); } catch(...) { printf(" exception\nFAILURE\n"); + failCount++; } /* test oneway void */ @@ -584,6 +628,7 @@ int main(int argc, char** argv) { uint64_t elapsed = now() - startOneway; if (elapsed > 200 * 1000) { // 0.2 seconds printf(" FAILURE - took %.2f ms\n", (double)elapsed/1000.0); + failCount++; } else { printf(" success - took %.2f ms\n", (double)elapsed/1000.0); } @@ -603,6 +648,8 @@ int main(int argc, char** argv) { printf("re-test testI32(-1)"); i32 = testClient.testI32(-1); printf(" = %d\n", i32); + if (i32 != -1) + failCount++; uint64_t stop = now(); @@ -630,5 +677,5 @@ int main(int argc, char** argv) { printf("Max time: %"PRIu64" us\n", time_max); printf("Avg time: %"PRIu64" us\n", time_avg); - return 0; + return failCount; } -- 2.17.1