Thrift test improvements, tests for both inline and normal PHP code gen

Summary: So you can A/B test and see 6ms vs. 4ms response time :)


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@664773 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/test/php/Makefile b/test/php/Makefile
index 2e6bec5..12fd7c8 100644
--- a/test/php/Makefile
+++ b/test/php/Makefile
@@ -9,19 +9,17 @@
 # Tools
 THRIFT = thrift
 
-# Compiler flags
-LIBS  = ../../lib/cpp/server/TSimpleServer.cc \
-	../../lib/cpp/protocol/TBinaryProtocol.cc \
-	../../lib/cpp/transport/TBufferedTransport.cc \
-	../../lib/cpp/transport/TServerSocket.cc \
-	../../lib/cpp/transport/TSocket.cc
-CFL   = -Wall -O3 -Igen-cpp -I../../lib/cpp $(LIBS)
-CFL   = -Wall -O3 -Igen-cpp -I../../lib/cpp -lthrift
+all: normal inline
 
-all: stubs
+normal: stubs
+
+inline: stubs-inline
 
 stubs: ../ThriftTest.thrift
-	$(THRIFT) -php ../ThriftTest.thrift
+	$(THRIFT) --php ../ThriftTest.thrift
+
+stubs-inline: ../ThriftTest.thrift
+	$(THRIFT) --phpi ../ThriftTest.thrift
 
 clean:
-	rm -fr gen-php
+	rm -fr gen-php gen-phpi
diff --git a/test/php/TestClient.php b/test/php/TestClient.php
index 8f765fa..6dd40d7 100644
--- a/test/php/TestClient.php
+++ b/test/php/TestClient.php
@@ -1,19 +1,26 @@
 <?php
 
+if (!isset($GEN_DIR)) {
+  $GEN_DIR = 'gen-php';
+}
+if (!isset($MODE)) {
+  $MODE = 'normal';
+}
+
 /** Include the Thrift base */
 require_once '/home/mcslee/code/projects/thrift/lib/php/src/Thrift.php';
 
 /** Include the binary protocol */
-require_once THRIFT_ROOT.'/protocol/TBinaryProtocol.php';
+require_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php';
 
 /** Include the socket layer */
-require_once THRIFT_ROOT.'/transport/TSocket.php';
+require_once $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php';
 
 /** Include the socket layer */
-require_once THRIFT_ROOT.'/transport/TBufferedTransport.php';
+require_once $GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php';
 
 /** Include the generated code */
-require_once '/home/mcslee/code/projects/thrift/test/php/gen-php/ThriftTest.php';
+require_once '/home/mcslee/code/projects/thrift/test/php/'.$GEN_DIR.'/ThriftTest.php';
 
 $host = 'localhost';
 $port = 9090;
@@ -27,11 +34,18 @@
 }
 
 $socket = new TSocket($host, $port);
-$bufferedSocket = new TBufferedTransport($socket, 1024, 1024);
-$binary = new TBinaryProtocol();
 
-$testClient = new ThriftTestClient($bufferedSocket, $binary);
-$bufferedSocket->open();
+if ($MODE == 'inline') {
+  $transport = $socket;
+  $testClient = new ThriftTestClient($transport);
+} else {
+  $bufferedSocket = new TBufferedTransport($socket, 1024, 1024);
+  $transport = $bufferedSocket;
+  $protocol = new TBinaryProtocol();
+  $testClient = new ThriftTestClient($transport, $protocol);
+}
+
+$transport->open();
 
 $start = microtime(true);
 
@@ -261,16 +275,20 @@
     print_r("$k2 => {");
     $userMap = $v2->userMap;
     print_r("{");
-    foreach ($userMap as $k3 => $v3) {
-      print_r("$k3 => $v3, ");
+    if (is_array($usermap)) {
+      foreach ($userMap as $k3 => $v3) {
+        print_r("$k3 => $v3, ");
+      }
     }
     print_r("}, ");
     
     $xtructs = $v2->xtructs;
     print_r("{");
-    foreach ($xtructs as $x) {
-      print_r("{\"".$x->string_thing."\", ".
-              $x->byte_thing.", ".$x->i32_thing.", ".$x->i64_thing."}, ");
+    if (is_array($xtructs)) {
+      foreach ($xtructs as $x) {
+        print_r("{\"".$x->string_thing."\", ".
+                $x->byte_thing.", ".$x->i32_thing.", ".$x->i64_thing."}, ");
+      }
     }
     print_r("}");
     
@@ -280,6 +298,17 @@
 }
 print_r("}\n");
 
+/**
+ * EXCEPTION TEST
+ */
+print_r("testException('Xception')");
+try {
+  $testClient->testException('Xception');
+  print_r("  void\nFAILURE\n");
+} catch (Xception $x) {
+  print_r(' caught xception '.$x->errorCode.': '.$x->message."\n");
+}
+
 
 /**
  * Normal tests done.
@@ -321,7 +350,7 @@
   print "Missed $num = $num2\n";
 }
 
-$bufferedSocket->close();
+$transport->close();
 return;
 
 ?>
diff --git a/test/php/TestInline.php b/test/php/TestInline.php
new file mode 100644
index 0000000..306ece6
--- /dev/null
+++ b/test/php/TestInline.php
@@ -0,0 +1,5 @@
+<?php
+$GEN_DIR = 'gen-phpi';
+$MODE = 'inline';
+include_once('TestClient.php');
+?>