TestTPFreeService.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 "XATMITestSuite.h"
  20. #include "BaseServerTest.h"
  21. #include "xatmi.h"
  22. #include "TestTPFreeService.h"
  23. extern void testtpfreeservice_service(TPSVCINFO *svcinfo);
  24. void TestTPFreeService::setUp() {
  25. userlogc((char*) "TestTPFreeService::setUp");
  26. m_allocated = NULL;
  27. m_rcvbuf = NULL;
  28. // Start server
  29. BaseServerTest::setUp();
  30. // Do local work
  31. int toCheck = tpadvertise((char*) "TestTPFree", testtpfreeservice_service);
  32. BT_ASSERT(tperrno == 0);
  33. BT_ASSERT(toCheck != -1);
  34. m_allocated = NULL;
  35. m_rcvlen = 1;
  36. m_rcvbuf = (char *) tpalloc((char*) "X_OCTET", NULL, 1);
  37. BT_ASSERT(m_rcvbuf != NULL);
  38. }
  39. void TestTPFreeService::tearDown() {
  40. userlogc((char*) "TestTPFreeService::tearDown");
  41. // Do local work
  42. ::tpfree( m_allocated);
  43. ::tpfree( m_rcvbuf);
  44. int toCheck = tpunadvertise((char*) "TestTPFree");
  45. BT_ASSERT(tperrno == 0);
  46. BT_ASSERT(toCheck != -1);
  47. // Clean up server
  48. BaseServerTest::tearDown();
  49. }
  50. void TestTPFreeService::test_tpfree_x_octet() {
  51. userlogc((char*) "test_tpfree_x_octet");
  52. m_allocated = tpalloc((char*) "X_OCTET", NULL, 10);
  53. memset(m_allocated, '', 10);
  54. BT_ASSERT(m_allocated != NULL);
  55. int toCheck = ::tpcall((char*) "TestTPFree", (char*) m_allocated, 10,
  56. (char**) &m_rcvbuf, &m_rcvlen, 0);
  57. BT_ASSERT(toCheck != -1);
  58. BT_ASSERT(tperrno == 0);
  59. BT_ASSERT(m_rcvbuf[0] == '1');
  60. }
  61. void TestTPFreeService::test_tpfree_x_common() {
  62. userlogc((char*) "test_tpfree_x_common");
  63. DEPOSIT *dptr;
  64. dptr = (DEPOSIT*) tpalloc((char*) "X_COMMON", (char*) "deposit", 0);
  65. m_allocated = (char*) dptr;
  66. BT_ASSERT(m_allocated != NULL);
  67. BT_ASSERT(tperrno == 0);
  68. int toCheck = ::tpcall((char*) "TestTPFree", (char*) m_allocated, 0,
  69. (char**) &m_rcvbuf, &m_rcvlen, 0);
  70. BT_ASSERT(toCheck != -1);
  71. BT_ASSERT(tperrno == 0);
  72. BT_ASSERT(m_rcvbuf[0] == '1');
  73. }
  74. void TestTPFreeService::test_tpfree_x_c_type() {
  75. userlogc((char*) "test_tpfree_x_c_type");
  76. ACCT_INFO *aptr;
  77. aptr = (ACCT_INFO*) tpalloc((char*) "X_C_TYPE", (char*) "acct_info", 0);
  78. m_allocated = (char*) aptr;
  79. BT_ASSERT(m_allocated != NULL);
  80. BT_ASSERT(tperrno == 0);
  81. int toCheck = ::tpcall((char*) "TestTPFree", (char*) m_allocated, 0,
  82. (char**) &m_rcvbuf, &m_rcvlen, 0);
  83. BT_ASSERT(toCheck != -1);
  84. BT_ASSERT(tperrno == 0);
  85. BT_ASSERT(m_rcvbuf[0] == '1');
  86. }
  87. void testtpfreeservice_service(TPSVCINFO *svcinfo) {
  88. userlogc((char*) "testtpfreeservice_service");
  89. // Allocate a buffer to return
  90. char *toReturn = tpalloc((char*) "X_OCTET", (char*) "acct_info", 1);
  91. // Free should be idempotent on the inbound buffer
  92. ::tpfree(svcinfo->data);
  93. // Get the data from tptypes still
  94. int toTest = ::tptypes(svcinfo->data, NULL, NULL);
  95. // Check the values of tptypes (should still have been valid
  96. if (toTest == -1 || tperrno == TPEINVAL) {
  97. // False
  98. toReturn[0] = '0';
  99. } else {
  100. // True
  101. toReturn[0] = '1';
  102. }
  103. // Return the data
  104. tpreturn(TPSUCCESS, 0, toReturn, 1, 0);
  105. }