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

中间件编程

开发平台:

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 java.util.Arrays;
  20. import junit.framework.TestCase;
  21. import org.apache.log4j.LogManager;
  22. import org.apache.log4j.Logger;
  23. import org.jboss.blacktie.jatmibroker.RunServer;
  24. import org.jboss.blacktie.jatmibroker.core.conf.ConfigurationException;
  25. public class TestTPCall extends TestCase {
  26. private static final Logger log = LogManager.getLogger(TestTPCall.class);
  27. private RunServer server = new RunServer();
  28. private Connection connection;
  29. public void setUp() throws ConnectionException, ConfigurationException {
  30. server.serverinit();
  31. ConnectionFactory connectionFactory = ConnectionFactory
  32. .getConnectionFactory();
  33. connection = connectionFactory.getConnection();
  34. }
  35. public void tearDown() throws ConnectionException, ConfigurationException {
  36. connection.close();
  37. server.serverdone();
  38. }
  39. public void test_tpcall_unknown_service() throws ConnectionException {
  40. log.info("test_tpcall_unknown_service");
  41. String message = "test_tpcall_unknown_service";
  42. int sendlen = message.length() + 1;
  43. X_OCTET sendbuf = (X_OCTET) connection.tpalloc("X_OCTET", null);
  44. sendbuf.setByteArray("test_tpcall_unknown_service".getBytes());
  45. try {
  46. Response rcvbuf = connection.tpcall("UNKNOWN_SERVICE", sendbuf,
  47. sendlen, 0);
  48. fail("Expected TPENOENT, got a buffer with rval: "
  49. + rcvbuf.getRval());
  50. } catch (ConnectionException e) {
  51. if (e.getTperrno() != Connection.TPENOENT) {
  52. fail("Expected TPENOENT, got: " + e.getTperrno());
  53. }
  54. }
  55. }
  56. public void test_tpcall_x_octet() throws ConnectionException {
  57. log.info("test_tpcall_x_octet");
  58. server.tpadvertisetpcallXOctet();
  59. String toSend = "test_tpcall_x_octet";
  60. int sendlen = toSend.length() + 1;
  61. X_OCTET sendbuf = (X_OCTET) connection.tpalloc("X_OCTET", null);
  62. sendbuf.setByteArray(toSend.getBytes());
  63. Response rcvbuf = connection.tpcall(
  64. server.getServiceNametpcallXOctet(), sendbuf, sendlen, 0);
  65. assertTrue(rcvbuf != null);
  66. assertTrue(rcvbuf.getBuffer() != null);
  67. assertTrue(((X_OCTET) rcvbuf.getBuffer()).getByteArray() != null);
  68. byte[] received = ((X_OCTET) rcvbuf.getBuffer()).getByteArray();
  69. byte[] expected = new byte[received.length];
  70. System.arraycopy("tpcall_x_octet".getBytes(), 0, expected, 0,
  71. "tpcall_x_octet".getBytes().length);
  72. assertTrue(Arrays.equals(received, expected));
  73. }
  74. public void test_tpcall_x_common() throws ConnectionException {
  75. log.info("test_tpcall_x_common");
  76. server.tpadvertisetpcallXCommon();
  77. X_COMMON dptr = (X_COMMON) connection.tpalloc("X_COMMON", "deposit");
  78. dptr.setLong("acct_no", 12345678);
  79. dptr.setShort("amount", (short) 50);
  80. Response rcvbuf = connection.tpcall(server
  81. .getServiceNametpcallXCommon(), dptr, 0, 0);
  82. assertTrue(rcvbuf.getRcode() == 22);
  83. byte[] received = ((X_OCTET) rcvbuf.getBuffer()).getByteArray();
  84. byte[] expected = new byte[received.length];
  85. System.arraycopy("tpcall_x_common".getBytes(), 0, expected, 0,
  86. "tpcall_x_common".getBytes().length);
  87. assertTrue(Arrays.equals(received, expected));
  88. }
  89. public void test_tpcall_x_c_type() throws ConnectionException {
  90. log.info("test_tpcall_x_c_type");
  91. server.tpadvertisetpcallXCType();
  92. X_C_TYPE aptr = (X_C_TYPE) connection.tpalloc("X_C_TYPE", "acct_info");
  93. aptr.setLong("acct_no", 12345678);
  94. aptr.setByteArray("name", "TOM".getBytes());
  95. float[] foo = new float[2];
  96. foo[0] = 1.1F;
  97. foo[1] = 2.2F;
  98. aptr.setFloatArray("foo", foo);
  99. double[] balances = new double[2];
  100. balances[0] = 1.1;
  101. balances[1] = 2.2;
  102. aptr.setDoubleArray("balances", balances);
  103. Response rcvbuf = connection.tpcall(
  104. server.getServiceNametpcallXCType(), aptr, 0,
  105. Connection.TPNOCHANGE);
  106. assertTrue(rcvbuf.getRcode() == 23);
  107. byte[] received = ((X_OCTET) rcvbuf.getBuffer()).getByteArray();
  108. byte[] expected = new byte[received.length];
  109. System.arraycopy("tpcall_x_c_type".getBytes(), 0, expected, 0,
  110. "tpcall_x_c_type".getBytes().length);
  111. assertTrue(Arrays.equals(received, expected));
  112. }
  113. }