TestTPCancel.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 "BaseServerTest.h"
  20. #include "xatmi.h"
  21. #include "TestTPCancel.h"
  22. extern void testtpcancel_service(TPSVCINFO *svcinfo);
  23. void TestTPCancel::setUp() {
  24. userlogc((char*) "TestTPCancel::setUp");
  25. sendbuf = NULL;
  26. rcvbuf = NULL;
  27. // Setup server
  28. BaseServerTest::setUp();
  29. // Do local work
  30. sendlen = strlen("cancel") + 1;
  31. BT_ASSERT((sendbuf = (char *) tpalloc((char*) "X_OCTET", NULL, sendlen)) != NULL);
  32. BT_ASSERT((rcvbuf = (char *) tpalloc((char*) "X_OCTET", NULL, sendlen)) != NULL);
  33. strcpy(sendbuf, "cancel");
  34. BT_ASSERT(tperrno == 0);
  35. int toCheck = tpadvertise((char*) "TestTPCancel", testtpcancel_service);
  36. BT_ASSERT(tperrno == 0);
  37. BT_ASSERT(toCheck != -1);
  38. }
  39. void TestTPCancel::tearDown() {
  40. userlogc((char*) "TestTPCancel::tearDown");
  41. // Do local work
  42. ::tpfree(sendbuf);
  43. ::tpfree(rcvbuf);
  44. int toCheck = tpunadvertise((char*) "TestTPCancel");
  45. BT_ASSERT(tperrno == 0);
  46. BT_ASSERT(toCheck != -1);
  47. // Clean up server
  48. BaseServerTest::tearDown();
  49. }
  50. void TestTPCancel::test_tpcancel() {
  51. userlogc((char*) "test_tpcancel");
  52. int cd = ::tpacall((char*) "TestTPCancel", (char *) sendbuf, sendlen, 0);
  53. BT_ASSERT(cd != -1);
  54. BT_ASSERT(tperrno == 0);
  55. // CANCEL THE REQUEST
  56. int cancelled = ::tpcancel(cd);
  57. BT_ASSERT(cancelled != -1);
  58. BT_ASSERT(tperrno == 0);
  59. BT_ASSERT(tperrno != TPEBADDESC);
  60. BT_ASSERT(tperrno != TPETRAN);
  61. BT_ASSERT(tperrno != TPEPROTO);
  62. BT_ASSERT(tperrno != TPESYSTEM);
  63. BT_ASSERT(tperrno != TPEOS);
  64. // FAIL TO RETRIEVE THE RESPONSE
  65. int valToTest = ::tpgetrply(&cd, (char **) &rcvbuf, &rcvlen, 0);
  66. BT_ASSERT(tperrno == TPEBADDESC);
  67. BT_ASSERT(valToTest == -1);
  68. }
  69. void TestTPCancel::test_tpcancel_noreply() {
  70. userlogc((char*) "test_tpcancel_noreply");
  71. int cd = ::tpacall((char*) "TestTPCancel", (char *) sendbuf, sendlen, TPNOREPLY);
  72. BT_ASSERT(cd != -1);
  73. BT_ASSERT(tperrno == 0);
  74. // CANCEL THE REQUEST
  75. int cancelled = ::tpcancel(cd);
  76. BT_ASSERT(cancelled == -1);
  77. BT_ASSERT(tperrno != 0);
  78. BT_ASSERT(tperrno == TPEBADDESC);
  79. }
  80. // 8.5
  81. void TestTPCancel::test_tpcancel_baddesc() {
  82. userlogc((char*) "test_tpcancel_baddesc");
  83. // CANCEL THE REQUEST
  84. int cancelled = ::tpcancel(2);
  85. BT_ASSERT(cancelled == -1);
  86. BT_ASSERT(tperrno == TPEBADDESC);
  87. }
  88. void testtpcancel_service(TPSVCINFO *svcinfo) {
  89. userlogc((char*) "testtpcancel_service");
  90. if (!(svcinfo->flags && TPNOREPLY)) {
  91. int len = 21;
  92. char *toReturn = ::tpalloc((char*) "X_OCTET", NULL, len);
  93. strcpy(toReturn, "testtpcancel_service");
  94. tpreturn(TPSUCCESS, 0, toReturn, len, 0);
  95. }
  96. }