TestTPConversation.java
上传用户: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. package org.jboss.blacktie.jatmibroker.xatmi;
  19. import junit.framework.TestCase;
  20. import org.apache.log4j.LogManager;
  21. import org.apache.log4j.Logger;
  22. import org.jboss.blacktie.jatmibroker.RunServer;
  23. import org.jboss.blacktie.jatmibroker.core.conf.ConfigurationException;
  24. public class TestTPConversation extends TestCase {
  25. private static final Logger log = LogManager
  26. .getLogger(TestTPConversation.class);
  27. private RunServer server = new RunServer();
  28. private Connection connection;
  29. private int sendlen;
  30. private X_OCTET sendbuf;
  31. private Session cd;
  32. static int interationCount = 100;
  33. public void setUp() throws ConnectionException, ConfigurationException {
  34. server.serverinit();
  35. ConnectionFactory connectionFactory = ConnectionFactory
  36. .getConnectionFactory();
  37. connection = connectionFactory.getConnection();
  38. sendlen = 11;
  39. sendbuf = (X_OCTET) connection.tpalloc("X_OCTET", null);
  40. }
  41. public void tearDown() throws ConnectionException, ConfigurationException {
  42. connection.close();
  43. server.serverdone();
  44. }
  45. public void test_conversation() throws ConnectionException {
  46. log.info("test_conversation");
  47. server.tpadvertiseTestTPConversation();
  48. sendbuf.setByteArray("conversate".getBytes());
  49. cd = connection.tpconnect(server.getServiceNameTestTPConversation(),
  50. sendbuf, sendlen, Connection.TPRECVONLY);
  51. long revent = 0;
  52. log.info("Started conversation");
  53. for (int i = 0; i < interationCount; i++) {
  54. try {
  55. Buffer result = cd.tprecv(0);
  56. fail("Did not get sendonly event");
  57. } catch (ConnectionException e) {
  58. assertTrue(e.getTperrno() == Connection.TPEEVENT);
  59. assertTrue(e.getEvent() == Connection.TPEV_SENDONLY);
  60. Buffer rcvbuf = e.getReceived();
  61. String expectedResult = ("hi" + i);
  62. assertTrue(strcmp(expectedResult, rcvbuf) == 0);
  63. sendbuf.setByteArray(("yo" + i).getBytes());
  64. // userlogc((char*) "test_conversation:%s:", sendbuf);
  65. int result = cd.tpsend(sendbuf, sendlen, Connection.TPRECVONLY);
  66. assertTrue(result != -1);
  67. }
  68. }
  69. log.info("Conversed");
  70. Response rcvbuf = connection.tpgetrply(cd.getCd(), 0);
  71. String expectedResult = ("hi" + interationCount);
  72. log.info("Expected: " + expectedResult + " Received: "
  73. + new String(((X_OCTET) rcvbuf.getBuffer()).getByteArray()));
  74. assertTrue(strcmp(expectedResult, rcvbuf.getBuffer()) == 0);
  75. }
  76. public void test_short_conversation() throws ConnectionException {
  77. server.tpadvertiseTestTPConversa2();
  78. log.info("test_short_conversation");
  79. cd = connection.tpconnect(server.getServiceNameTestTPConversa2(), null,
  80. 0, Connection.TPRECVONLY);
  81. assertTrue(cd != null);
  82. Buffer rcvbuf = cd.tprecv(0);
  83. assertTrue(rcvbuf != null);
  84. assertTrue(strcmp("hi0", rcvbuf) == 0);
  85. rcvbuf = connection.tpgetrply(cd.getCd(), 0).getBuffer();
  86. assertTrue(strcmp("hi1", rcvbuf) == 0);
  87. }
  88. public static int strcmp(String string, Buffer buffer) {
  89. byte[] expected = string.getBytes();
  90. byte[] received = ((X_OCTET) buffer).getByteArray();
  91. if (received.length < expected.length) {
  92. return -1;
  93. }
  94. for (int i = 0; i < expected.length; i++) {
  95. if (expected[i] != received[i]) {
  96. return -1;
  97. }
  98. }
  99. for (int i = expected.length; i < received.length; i++) {
  100. if (received[i] != '') {
  101. return -1;
  102. }
  103. }
  104. return 0;
  105. }
  106. public static int strcmp(Buffer buffer, String string) {
  107. return strcmp(string, buffer);
  108. }
  109. }