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

中间件编程

开发平台:

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 "TestTPACall.h"
  20. #include "BaseServerTest.h"
  21. #include "xatmi.h"
  22. #include "malloc.h"
  23. extern void testtpacall_service(TPSVCINFO *svcinfo);
  24. void TestTPACall::setUp() {
  25. userlogc((char*) "TestTPACall::setUp");
  26. sendbuf = NULL;
  27. rcvbuf = NULL;
  28. // Set up server
  29. BaseServerTest::setUp();
  30. // Set up local
  31. int toCheck = tpadvertise((char*) "TestTPACall", testtpacall_service);
  32. BT_ASSERT(tperrno == 0);
  33. BT_ASSERT(toCheck != -1);
  34. }
  35. void TestTPACall::tearDown() {
  36. userlogc((char*) "TestTPACall::tearDown");
  37. // Clean up local
  38. if (sendbuf) {
  39. ::tpfree(sendbuf);
  40. }
  41. if (rcvbuf) {
  42. ::tpfree(rcvbuf);
  43. }
  44. int toCheck = tpunadvertise((char*) "TestTPACall");
  45. BT_ASSERT(tperrno == 0);
  46. BT_ASSERT(toCheck != -1);
  47. // Clean up server
  48. BaseServerTest::tearDown();
  49. }
  50. void TestTPACall::test_tpacall() {
  51. userlogc((char*) "test_tpacall");
  52. sendlen = strlen("test_tpacall") + 1;
  53. sendbuf = tpalloc((char*) "X_OCTET", NULL, sendlen);
  54. strcpy(sendbuf, "test_tpacall");
  55. int cd = ::tpacall((char*) "TestTPACall", (char *) sendbuf, sendlen,
  56. TPNOREPLY);
  57. BT_ASSERT(cd == 0);
  58. BT_ASSERT(tperrno == 0);
  59. BT_ASSERT(tperrno != TPEINVAL);
  60. BT_ASSERT(tperrno != TPENOENT);
  61. BT_ASSERT(tperrno != TPEITYPE);
  62. BT_ASSERT(tperrno != TPELIMIT);
  63. BT_ASSERT(tperrno != TPETRAN);
  64. BT_ASSERT(tperrno != TPETIME);
  65. BT_ASSERT(tperrno != TPEBLOCK);
  66. BT_ASSERT(tperrno != TPGOTSIG);
  67. BT_ASSERT(tperrno != TPEPROTO);
  68. BT_ASSERT(tperrno != TPESYSTEM);
  69. BT_ASSERT(tperrno != TPEOS);
  70. }
  71. void TestTPACall::test_tpacall_systemerr() {
  72. userlogc((char*) "test_tpacall_systemerr");
  73. sendlen = strlen("test_tpacall_systemerr") + 1;
  74. sendbuf = tpalloc((char*) "X_OCTET", NULL, sendlen);
  75. strcpy(sendbuf, "test_tpacall_systemerr");
  76. int cd = ::tpacall((char*) "TestTPACall", (char *) sendbuf, sendlen,
  77. TPNOREPLY);
  78. BT_ASSERT(tperrno == TPESYSTEM);
  79. BT_ASSERT(cd == -1);
  80. }
  81. // 9.1.1
  82. void TestTPACall::test_tpacall_x_octet() {
  83. userlogc((char*) "test_tpacall_x_octet");
  84. char *ptr1, *ptr2;
  85. sendbuf = tpalloc((char*) "X_OCTET", NULL, 25);
  86. ptr1 = sendbuf;
  87. ptr2 = sendbuf + 10;
  88. strcpy(ptr1, "hello");
  89. strcpy(ptr2, "goodbye");
  90. tpacall((char*) "GREETSVC", sendbuf, 25, TPNOREPLY);
  91. }
  92. void testtpacall_service(TPSVCINFO *svcinfo) {
  93. userlogc((char*) "testtpacall_service");
  94. int len = 20;
  95. char *toReturn = (char*) malloc(len);
  96. strcpy(toReturn, "testtpacall_service");
  97. tpreturn(TPSUCCESS, 0, toReturn, len, 0);
  98. free(toReturn);
  99. }