TestTimeToLive.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 "ace/OS_NS_stdlib.h"
  20. #include "ace/OS_NS_stdio.h"
  21. #include "ace/OS_NS_string.h"
  22. #include "ace/OS_NS_unistd.h"
  23. #include "xatmi.h"
  24. #include "userlogc.h"
  25. #include "TestTimeToLive.h"
  26. void test_TTL_service(TPSVCINFO *svcinfo) {
  27. long timeout = 45;
  28. ACE_OS::sleep(timeout);
  29. userlogc((char*) "TTL sleep timeout %d seconds", timeout);
  30. int len = 60;
  31. char *toReturn = ::tpalloc((char*) "X_OCTET", NULL, len);
  32. strcpy(toReturn, "test_tpcall_TTL_service");
  33. tpreturn(TPSUCCESS, 0, toReturn, len, 0);
  34. }
  35. void TestTimeToLive::setUp() {
  36. userlogc((char*) "TestTimeToLive::setUp");
  37. BaseServerTest::setUp();
  38. }
  39. void TestTimeToLive::tearDown() {
  40. userlogc((char*) "TestTimeToLive::tearDown");
  41. BaseServerTest::tearDown();
  42. }
  43. void TestTimeToLive::testTTL() {
  44. int rc = tpadvertise((char*) "TTL", test_TTL_service);
  45. BT_ASSERT(tperrno == 0);
  46. BT_ASSERT(rc != -1);
  47. int cd;
  48. cd = callTTL();
  49. BT_ASSERT(cd == -1);
  50. BT_ASSERT(tperrno == TPETIME);
  51. userlogc((char*)"send first message");
  52. cd = callTTL();
  53. BT_ASSERT(cd == -1);
  54. BT_ASSERT(tperrno == TPETIME);
  55. userlogc((char*)"send second message");
  56. ACE_OS::sleep(30);
  57. long n = getTTLCounter();
  58. userlogc((char*)"TTL get message counter is %d", n);
  59. //BT_ASSERT(n == 1);
  60. }
  61. int TestTimeToLive::callTTL() {
  62. long  sendlen = strlen((char*)"test") + 1;
  63. char* sendbuf = tpalloc((char*) "X_OCTET", NULL, sendlen);
  64. strcpy(sendbuf, (char*) "test");
  65. char* recvbuf = tpalloc((char*) "X_OCTET", NULL, 1);
  66. long  recvlen = 1;
  67. int cd = ::tpcall((char*) "TTL", (char *) sendbuf, sendlen, (char**)&recvbuf, &recvlen, 0);
  68. return cd;
  69. }
  70. long TestTimeToLive::getTTLCounter() {
  71. long sendlen = strlen("counter,TTL,") + 1;
  72. char* sendbuf = tpalloc((char*) "X_OCTET", NULL, sendlen);
  73. strcpy(sendbuf, "counter,TTL,");
  74. char* recvbuf = tpalloc((char*) "X_OCTET", NULL, 1);
  75. long  recvlen = 1;
  76. int cd = ::tpcall((char*) "default_ADMIN_1", (char *) sendbuf, sendlen, (char**)&recvbuf, &recvlen, 0);
  77. BT_ASSERT(cd == 0);
  78. BT_ASSERT(tperrno == 0);
  79. BT_ASSERT(recvbuf[0] == '1');
  80. return (atol(&recvbuf[1]));
  81. }