TestTPGetRply.cxx
上传用户:xfwatch
上传日期:2020-12-14
资源大小:872k
文件大小:7k
源码类别:

中间件编程

开发平台:

Java

  1. /*
  2.  * JBoss, Home of Professional Open Source
  3.  * Copyright 2008, Red Hat, Inc., and others contributors as indicated
  4.  * by the @authors tag. All rights reserved.
  5.  * See the copyright.txt in the distribution for a
  6.  * full listing of individual contributors.
  7.  * This copyrighted material is made available to anyone wishing to use,
  8.  * modify, copy, or redistribute it subject to the terms and conditions
  9.  * of the GNU Lesser General Public License, v. 2.1.
  10.  * This program is distributed in the hope that it will be useful, but WITHOUT A
  11.  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  12.  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  13.  * You should have received a copy of the GNU Lesser General Public License,
  14.  * v.2.1 along with this distribution; if not, write to the Free Software
  15.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  16.  * MA  02110-1301, USA.
  17.  */
  18. #include "TestAssert.h"
  19. #include "BaseServerTest.h"
  20. #include "xatmi.h"
  21. #include "TestTPGetRply.h"
  22. #include "Sleeper.h"
  23. extern void testtpgetrply_service(TPSVCINFO *svcinfo);
  24. extern void test_tpgetrply_TPNOBLOCK(TPSVCINFO *svcinfo);
  25. void TestTPGetRply::setUp() {
  26. userlogc((char*) "TestTPGetRply::setUp");
  27. sendbuf = NULL;
  28. rcvbuf = NULL;
  29. // Setup server
  30. BaseServerTest::setUp();
  31. // Do local work
  32. sendlen = strlen("grply") + 1;
  33. rcvlen = 22;
  34. BT_ASSERT((sendbuf
  35. = (char *) tpalloc((char*) "X_OCTET", NULL, sendlen)) != NULL);
  36. BT_ASSERT((rcvbuf = (char *) tpalloc((char*) "X_OCTET", NULL, rcvlen))
  37. != NULL);
  38. strcpy(sendbuf, "grply");
  39. BT_ASSERT(tperrno == 0);
  40. }
  41. void TestTPGetRply::tearDown() {
  42. userlogc((char*) "TestTPGetRply::tearDown");
  43. // Do local work
  44. ::tpfree( sendbuf);
  45. ::tpfree( rcvbuf);
  46. int toCheck = tpunadvertise((char*) "TestTPGetrply");
  47. BT_ASSERT(tperrno == 0);
  48. BT_ASSERT(toCheck != -1);
  49. // Clean up server
  50. BaseServerTest::tearDown();
  51. }
  52. void TestTPGetRply::test_tpgetrply() {
  53. userlogc((char*) "test_tpgetrply");
  54. int toCheck = tpadvertise((char*) "TestTPGetrply", testtpgetrply_service);
  55. BT_ASSERT(tperrno == 0);
  56. BT_ASSERT(toCheck != -1);
  57. int cd = ::tpacall((char*) "TestTPGetrply", (char *) sendbuf, sendlen, 0);
  58. BT_ASSERT(cd != -1);
  59. BT_ASSERT(tperrno == 0);
  60. // RETRIEVE THE RESPONSE
  61. int valToTest = ::tpgetrply(&cd, (char **) &rcvbuf, &rcvlen, 0);
  62. BT_ASSERT(tperrno != TPEINVAL);
  63. BT_ASSERT(tperrno != TPEBADDESC);
  64. BT_ASSERT(tperrno != TPEOTYPE);
  65. BT_ASSERT(tperrno != TPETIME);
  66. BT_ASSERT(tperrno != TPESVCFAIL);
  67. BT_ASSERT(tperrno != TPESVCERR);
  68. BT_ASSERT(tperrno != TPEBLOCK);
  69. BT_ASSERT(tperrno == 0);
  70. BT_ASSERT(valToTest == 0);
  71. BT_ASSERT(strcmp(rcvbuf, "testtpgetrply_service") == 0);
  72. }
  73. // 8.5
  74. void TestTPGetRply::test_tpgetrply_baddesc() {
  75. userlogc((char*) "test_tpgetrply_baddesc");
  76. int toCheck = tpadvertise((char*) "TestTPGetrply", testtpgetrply_service);
  77. BT_ASSERT(tperrno == 0);
  78. BT_ASSERT(toCheck != -1);
  79. int cd = 2;
  80. int valToTest = ::tpgetrply(&cd, (char **) &rcvbuf, &rcvlen, 0);
  81. BT_ASSERT(valToTest == -1);
  82. BT_ASSERT(tperrno != 0);
  83. BT_ASSERT(tperrno != TPEINVAL);
  84. BT_ASSERT(tperrno != TPEOTYPE);
  85. BT_ASSERT(tperrno != TPETIME);
  86. BT_ASSERT(tperrno != TPESVCFAIL);
  87. BT_ASSERT(tperrno != TPESVCERR);
  88. BT_ASSERT(tperrno != TPEBLOCK);
  89. BT_ASSERT(tperrno == TPEBADDESC);
  90. }
  91. void TestTPGetRply::test_tpgetrply_nullcd() {
  92. userlogc((char*) "test_tpgetrply_nullcd");
  93. int toCheck = tpadvertise((char*) "TestTPGetrply", testtpgetrply_service);
  94. BT_ASSERT(tperrno == 0);
  95. BT_ASSERT(toCheck != -1);
  96. int valToTest = ::tpgetrply(NULL, (char **) &rcvbuf, &rcvlen, 0);
  97. BT_ASSERT(valToTest == -1);
  98. BT_ASSERT(tperrno != 0);
  99. BT_ASSERT(tperrno != TPEBADDESC);
  100. BT_ASSERT(tperrno != TPEOTYPE);
  101. BT_ASSERT(tperrno != TPETIME);
  102. BT_ASSERT(tperrno != TPESVCFAIL);
  103. BT_ASSERT(tperrno != TPESVCERR);
  104. BT_ASSERT(tperrno != TPEBLOCK);
  105. BT_ASSERT(tperrno == TPEINVAL);
  106. }
  107. void TestTPGetRply::test_tpgetrply_nullrcvbuf() {
  108. userlogc((char*) "test_tpgetrply_nullrcvbuf");
  109. int toCheck = tpadvertise((char*) "TestTPGetrply", testtpgetrply_service);
  110. BT_ASSERT(tperrno == 0);
  111. BT_ASSERT(toCheck != -1);
  112. int cd = ::tpacall((char*) "TestTPGetrply", (char *) sendbuf, sendlen, 0);
  113. BT_ASSERT(cd != -1);
  114. BT_ASSERT(tperrno == 0);
  115. int valToTest = ::tpgetrply(&cd, NULL, &rcvlen, 0);
  116. BT_ASSERT(valToTest == -1);
  117. BT_ASSERT(tperrno != 0);
  118. BT_ASSERT(tperrno != TPEOTYPE);
  119. BT_ASSERT(tperrno != TPETIME);
  120. BT_ASSERT(tperrno != TPESVCFAIL);
  121. BT_ASSERT(tperrno != TPESVCERR);
  122. BT_ASSERT(tperrno != TPEBLOCK);
  123. BT_ASSERT(tperrno != TPEBADDESC);
  124. BT_ASSERT(tperrno == TPEINVAL);
  125. }
  126. void TestTPGetRply::test_tpgetrply_nullrcvlen() {
  127. userlogc((char*) "test_tpgetrply_nullrcvlen");
  128. int toCheck = tpadvertise((char*) "TestTPGetrply", testtpgetrply_service);
  129. BT_ASSERT(tperrno == 0);
  130. BT_ASSERT(toCheck != -1);
  131. int cd = 2;
  132. int valToTest = ::tpgetrply(&cd, (char **) &rcvbuf, NULL, 0);
  133. BT_ASSERT(valToTest == -1);
  134. BT_ASSERT(tperrno != 0);
  135. BT_ASSERT(tperrno != TPEBADDESC);
  136. BT_ASSERT(tperrno != TPEOTYPE);
  137. BT_ASSERT(tperrno != TPETIME);
  138. BT_ASSERT(tperrno != TPESVCFAIL);
  139. BT_ASSERT(tperrno != TPESVCERR);
  140. BT_ASSERT(tperrno != TPEBLOCK);
  141. BT_ASSERT(tperrno == TPEINVAL);
  142. }
  143. void testtpgetrply_service(TPSVCINFO *svcinfo) {
  144. userlogc((char*) "testtpgetrply_service");
  145. char * toReturn = ::tpalloc((char*) "X_OCTET", NULL, 22);
  146. strcpy(toReturn, "testtpgetrply_service");
  147. tpreturn(TPSUCCESS, 0, toReturn, 22, 0);
  148. }
  149. void TestTPGetRply::test_tpgetrply_with_TPNOBLOCK() {
  150. userlogc((char*) "test_tpgetrply_with_TPNOBLOCK");
  151. tpadvertise((char*) "TestTPGetrply", test_tpgetrply_TPNOBLOCK);
  152. int cd = ::tpacall((char*) "TestTPGetrply", (char *) sendbuf, sendlen, 0);
  153. BT_ASSERT(cd != -1);
  154. BT_ASSERT(tperrno == 0);
  155. // RETRIEVE THE RESPONSE
  156. int valToTest = ::tpgetrply(&cd, (char **) &rcvbuf, &rcvlen, TPNOBLOCK);
  157. BT_ASSERT(tperrno == 0);
  158. BT_ASSERT(valToTest == -1);
  159. BT_ASSERT(strcmp(rcvbuf, "test_tpgetrply_TPNOBLOCK") == -1);
  160. }
  161. void TestTPGetRply::test_tpgetrply_without_TPNOBLOCK() {
  162. userlogc((char*) "test_tpgetrply_without_TPNOBLOCK");
  163. tpadvertise((char*) "TestTPGetrply", test_tpgetrply_TPNOBLOCK);
  164. int cd = ::tpacall((char*) "TestTPGetrply", (char *) sendbuf, sendlen, 0);
  165. BT_ASSERT(cd != -1);
  166. BT_ASSERT(tperrno == 0);
  167. // RETRIEVE THE RESPONSE
  168. int valToTest = ::tpgetrply(&cd, (char **) &rcvbuf, &rcvlen, 0);
  169. BT_ASSERT(tperrno == 0);
  170. BT_ASSERT(valToTest == 0);
  171. BT_ASSERT(strcmp(rcvbuf, "test_tpgetrply_TPNOBLOCK") == 0);
  172. }
  173. void test_tpgetrply_TPNOBLOCK(TPSVCINFO *svcinfo) {
  174. char* response = (char*) "test_tpgetrply_TPNOBLOCK";
  175. userlogc(response);
  176. long sendlen = strlen(response) + 1;
  177. char * toReturn = ::tpalloc((char*) "X_OCTET", NULL, sendlen);
  178. strcpy(toReturn, response);
  179. ::sleeper(5);
  180. tpreturn(TPSUCCESS, 0, toReturn, sendlen, 0);
  181. }