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

中间件编程

开发平台:

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 "malloc.h"
  22. #include "TestTPReturn.h"
  23. extern void testtpreturn_service(TPSVCINFO *svcinfo);
  24. extern void testtpreturn_service_tpurcode(TPSVCINFO *svcinfo);
  25. void TestTPReturn::setUp() {
  26. userlogc((char*) "TestTPReturn::setUp");
  27. sendbuf = NULL;
  28. rcvbuf = NULL;
  29. // Setup server
  30. BaseServerTest::setUp();
  31. }
  32. void TestTPReturn::tearDown() {
  33. userlogc((char*) "TestTPReturn::tearDown");
  34. // Do local work
  35. ::tpfree(sendbuf);
  36. ::tpfree(rcvbuf);
  37. int toCheck = tpunadvertise((char*) "TestTPReturn");
  38. BT_ASSERT(tperrno == 0);
  39. BT_ASSERT(toCheck != -1);
  40. // Clean up server
  41. BaseServerTest::tearDown();
  42. }
  43. // 8.1 8.3
  44. void TestTPReturn::test_tpreturn_nonservice() {
  45. int toCheck = tpadvertise((char*) "TestTPReturn", testtpreturn_service);
  46. BT_ASSERT(tperrno == 0);
  47. BT_ASSERT(toCheck != -1);
  48. userlogc((char*) "test_tpreturn_nonservice");
  49. // THIS IS ILLEGAL STATE TABLE
  50. int len = 25;
  51. char *toReturn = (char*) malloc(len);
  52. strcpy(toReturn, "test_tpreturn_nonservice");
  53. tpreturn(TPSUCCESS, 0, toReturn, len, 0);
  54. free(toReturn);
  55. }
  56. void TestTPReturn::test_tpreturn_nonbuffer() {
  57. userlogc((char*) "test_tpreturn_nonbuffer");
  58. // Do local work
  59. int toCheck = tpadvertise((char*) "TestTPReturn", testtpreturn_service);
  60. BT_ASSERT(tperrno == 0);
  61. BT_ASSERT(toCheck != -1);
  62. sendlen = strlen("tprnb") + 1;
  63. rcvlen = sendlen;
  64. BT_ASSERT((sendbuf
  65. = (char *) tpalloc((char*) "X_OCTET", NULL, sendlen)) != NULL);
  66. BT_ASSERT((rcvbuf = (char *) tpalloc((char*) "X_OCTET", NULL, rcvlen))
  67. != NULL);
  68. (void) strcpy(sendbuf, "tprnb");
  69. BT_ASSERT(tperrno == 0);
  70. int id = ::tpcall((char*) "TestTPReturn", (char *) sendbuf, sendlen,
  71. (char **) &rcvbuf, &rcvlen, 0);
  72. long tperrnoS = tperrno;
  73. BT_ASSERT(id == -1);
  74. BT_ASSERT(tperrnoS == TPESVCERR);
  75. }
  76. void TestTPReturn::test_tpreturn_tpurcode() {
  77. userlogc((char*) "test_tpreturn_tpurcode");
  78. // Do local work
  79. int toCheck = tpadvertise((char*) "TestTPReturn",
  80. testtpreturn_service_tpurcode);
  81. BT_ASSERT(tperrno == 0);
  82. BT_ASSERT(toCheck != -1);
  83. sendlen = 3;
  84. rcvlen = 1;
  85. BT_ASSERT((sendbuf
  86. = (char *) tpalloc((char*) "X_OCTET", NULL, sendlen)) != NULL);
  87. BT_ASSERT(tperrno == 0);
  88. BT_ASSERT((rcvbuf = (char *) tpalloc((char*) "X_OCTET", NULL, rcvlen))
  89. != NULL);
  90. BT_ASSERT(tperrno == 0);
  91. strcpy(sendbuf, "24");
  92. int success = ::tpcall((char*) "TestTPReturn", (char *) sendbuf, sendlen,
  93. (char **) &rcvbuf, &rcvlen, (long) 0);
  94. BT_ASSERT(success != -1);
  95. BT_ASSERT(tperrno == 0);
  96. BT_ASSERT(tpurcode == 24);
  97. strcpy(sendbuf, "77");
  98. success = ::tpcall((char*) "TestTPReturn", (char *) sendbuf, sendlen,
  99. (char **) &rcvbuf, &rcvlen, (long) 0);
  100. BT_ASSERT(success != -1);
  101. BT_ASSERT(tperrno == 0);
  102. BT_ASSERT(tpurcode == 77);
  103. }
  104. void testtpreturn_service(TPSVCINFO *svcinfo) {
  105. userlogc((char*) "testtpreturn_service");
  106. char *toReturn = (char*) malloc(21);
  107. strcpy(toReturn, "testtpreturn_service");
  108. tpreturn(TPSUCCESS, 0, toReturn, 21, 0);
  109. free(toReturn);
  110. }
  111. void testtpreturn_service_tpurcode(TPSVCINFO *svcinfo) {
  112. userlogc((char*) "testtpreturn_service_tpurcode");
  113. int len = 1;
  114. char *toReturn = ::tpalloc((char*) "X_OCTET", NULL, len);
  115. if (strncmp(svcinfo->data, "24", 2) == 0) {
  116. tpreturn(TPSUCCESS, 24, toReturn, len, 0);
  117. } else {
  118. tpreturn(TPSUCCESS, 77, toReturn, len, 0);
  119. }
  120. }