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

中间件编程

开发平台:

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.jab;
  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. public class JABClientTestCase extends TestCase {
  25. private static final Logger log = LogManager
  26. .getLogger(JABClientTestCase.class);
  27. private RunServer runServer = new RunServer();
  28. // clean up any lingering transactions private void cleanThread() {
  29. JABTransaction tx = JABTransaction.current();
  30. if (tx != null) {
  31. try {
  32. tx.rollback();
  33. } catch (Exception e) {
  34. }
  35. }
  36. }
  37. public void setUp() throws InterruptedException {
  38. cleanThread();
  39. runServer.serverinit();
  40. runServer.tpadvertisetpcallXOctet();
  41. }
  42. public void tearDown() {
  43. cleanThread();
  44. runServer.serverdone();
  45. }
  46. public void test_tpcall_x_octet() throws Exception {
  47. JABSessionAttributes aJabSessionAttributes = new JABSessionAttributes();
  48. JABSession aJabSession = new JABSession(aJabSessionAttributes);
  49. JABTransaction transaction = new JABTransaction(aJabSession, 5000);
  50. JABRemoteService aJabService = new JABRemoteService("tpcall_x_octet",
  51. aJabSession, "X_OCTET", null);
  52. aJabService.getRequest().setByteArray("X_OCTET",
  53. "test_tpcall_x_octet".getBytes());
  54. log.debug("calling tpcall_x_octet with tx");
  55. aJabService.call(transaction);
  56. log.debug("called tpcall_x_octet with tx, commiting ...");
  57. transaction.commit();
  58. log.debug("tpcall_x_octet commit ok");
  59. byte[] expected = new byte[60];
  60. System.arraycopy("tpcall_x_octet".getBytes(), 0, expected, 0, 14);
  61. byte[] received = aJabService.getResponse().getByteArray("X_OCTET");
  62. assertTrue(Arrays.equals(expected, received));
  63. aJabSession.closeSession();
  64. }
  65. public void test_tpcall_x_octet_commit_tx_rollback_only() throws Exception {
  66. JABSessionAttributes aJabSessionAttributes = new JABSessionAttributes();
  67. JABSession aJabSession = new JABSession(aJabSessionAttributes);
  68. JABTransaction transaction = new JABTransaction(aJabSession, 5000);
  69. JABRemoteService aJabService = new JABRemoteService("tpcall_x_octet",
  70. aJabSession, "X_OCTET", null);
  71. transaction.rollback_only();
  72. aJabService.getRequest().setByteArray("X_OCTET",
  73. "test_tpcall_x_octet".getBytes());
  74. aJabService.call(null);
  75. try {
  76. transaction.commit();
  77. fail("committing a tx marked rollback only succeeded");
  78. } catch (JABException e) {
  79. // the exception is expected, but: // exception should be CORBA::CORBA::TRANSACTION_ROLLEDBACK but
  80. // JBossTM // returns CORBA::OBJECT_NOT_EXIST instead in which case we would
  81. // use presumed abort"); }
  82. byte[] expected = new byte[60];
  83. System.arraycopy("tpcall_x_octet".getBytes(), 0, expected, 0, 14);
  84. byte[] received = aJabService.getResponse().getByteArray("X_OCTET");
  85. assertTrue(Arrays.equals(expected, received));
  86. aJabSession.closeSession();
  87. }
  88. public void test_tpcall_x_octet_rollback_tx_rollback_only()
  89. throws Exception {
  90. JABSessionAttributes aJabSessionAttributes = new JABSessionAttributes();
  91. JABSession aJabSession = new JABSession(aJabSessionAttributes);
  92. JABTransaction transaction = new JABTransaction(aJabSession, 5000);
  93. JABRemoteService aJabService = new JABRemoteService("tpcall_x_octet",
  94. aJabSession, "X_OCTET", null);
  95. transaction.rollback_only();
  96. aJabService.getRequest().setByteArray("X_OCTET",
  97. "test_tpcall_x_octet".getBytes());
  98. aJabService.call(null);
  99. try {
  100. transaction.rollback();
  101. } catch (JABException e) {
  102. fail("rolling back a tx marked rollback through exception: "
  103. + e.getMessage());
  104. }
  105. byte[] expected = new byte[60];
  106. System.arraycopy("tpcall_x_octet".getBytes(), 0, expected, 0, 14);
  107. byte[] received = aJabService.getResponse().getByteArray("X_OCTET");
  108. assertTrue(Arrays.equals(expected, received));
  109. aJabSession.closeSession();
  110. }
  111. public void test_tpcall_x_octet_no_tx() throws Exception {
  112. JABSessionAttributes aJabSessionAttributes = new JABSessionAttributes();
  113. JABSession aJabSession = new JABSession(aJabSessionAttributes);
  114. JABRemoteService aJabService = new JABRemoteService("tpcall_x_octet",
  115. aJabSession, "X_OCTET", null);
  116. aJabService.getRequest().setByteArray("X_OCTET",
  117. "test_tpcall_x_octet".getBytes());
  118. aJabService.call(null);
  119. byte[] expected = new byte[60];
  120. System.arraycopy("tpcall_x_octet".getBytes(), 0, expected, 0, 14);
  121. byte[] received = aJabService.getResponse().getByteArray("X_OCTET");
  122. assertTrue(Arrays.equals(expected, received));
  123. aJabSession.closeSession();
  124. }
  125. public void test_tpcall_x_octet_suspend_tx() throws Exception {
  126. JABSessionAttributes aJabSessionAttributes = new JABSessionAttributes();
  127. JABSession aJabSession = new JABSession(aJabSessionAttributes);
  128. JABTransaction transaction = new JABTransaction(aJabSession, 5000);
  129. JABRemoteService aJabService = new JABRemoteService("tpcall_x_octet",
  130. aJabSession, "X_OCTET", null);
  131. aJabService.getRequest().setByteArray("X_OCTET",
  132. "test_tpcall_x_octet".getBytes());
  133. aJabService.call(null);
  134. transaction.commit();
  135. byte[] expected = new byte[60];
  136. System.arraycopy("tpcall_x_octet".getBytes(), 0, expected, 0, 14);
  137. byte[] received = aJabService.getResponse().getByteArray("X_OCTET");
  138. assertTrue(Arrays.equals(expected, received));
  139. aJabSession.closeSession();
  140. }
  141. // TODO /*
  142.  * public void xtest_tpcall_x_c_type() throws Exception {
  143.  * JABSessionAttributes aJabSessionAttributes = new JABSessionAttributes(
  144.  * null); JABSession aJabSession = new JABSession(aJabSessionAttributes);
  145.  * JABTransaction transaction = new JABTransaction(aJabSession, 5000);
  146.  * JABRemoteService aJabService = new JABRemoteService(aJabSession,
  147.  * "tpcall_x_c_type");
  148.  * 
  149.  * // Assemble the message ByteArrayOutputStream baos = new
  150.  * ByteArrayOutputStream(512); DataOutputStream dos = new
  151.  * DataOutputStream(baos); dos.writeInt(222); dos.writeShort((short) 33);
  152.  * dos.writeLong(11l); dos.writeChar('c'); dos.writeFloat(444.97f);
  153.  * dos.writeDouble(7.7d); dos.writeUTF("tpcall_x_c_type"); byte[] data =
  154.  * baos.toByteArray();
  155.  * 
  156.  * aJabService.setBuffer("X_C_TYPE", data, data.length);
  157.  * aJabService.call(transaction); transaction.commit();
  158.  * aJabSession.endSession();
  159.  * 
  160.  * byte[] response = aJabService.getResponseData(); ByteArrayInputStream
  161.  * bais = new ByteArrayInputStream(response); DataInputStream dis = new
  162.  * DataInputStream(bais); assertEquals(222, dis.readInt()); assertEquals(33,
  163.  * dis.readShort()); assertEquals(11, dis.readLong()); assertEquals('c',
  164.  * dis.readChar()); assertEquals(444.97, dis.readFloat()); assertEquals(7.7,
  165.  * dis.readDouble()); assertEquals("tpcall_x_c_type", dis.readUTF()); }
  166.  */
  167. }