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

中间件编程

开发平台:

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 "TestAtmiBrokerXml.h"
  20. #include "AtmiBrokerEnvXml.h"
  21. #include "AtmiBrokerEnv.h"
  22. #include "ace/OS_NS_stdlib.h"
  23. #include "ace/OS_NS_stdio.h"
  24. #include "userlogc.h"
  25. #include "malloc.h"
  26. #include <string.h>
  27. void TestAtmiBrokerXml::setUp() {
  28. init_ace();
  29. // Perform global set up
  30. TestFixture::setUp();
  31. }
  32. void TestAtmiBrokerXml::tearDown() {
  33. ACE_OS::putenv("BLACKTIE_CONFIGURATION_DIR=.");
  34. ACE_OS::putenv("BLACKTIE_CONFIGURATION=");
  35. // Perform global clean up
  36. TestFixture::tearDown();
  37. }
  38. void TestAtmiBrokerXml::test_env() {
  39. userlogc((char*) "RUNNING");
  40. ACE_OS::putenv("BLACKTIE_CONFIGURATION_DIR=xmltest");
  41. ACE_OS::putenv("BLACKTIE_CONFIGURATION=xmltest");
  42. AtmiBrokerEnv* env = AtmiBrokerEnv::get_instance();
  43. char* value;
  44. value = env->getenv((char*) "MYLIBTEST");
  45. BT_ASSERT(strcmp(value, "xmltestfoo.xmltest") == 0);
  46. value = orbConfig.opt;
  47. BT_ASSERT(strncmp(value, "-ORBInitRef NameService=corbaloc::", 34)
  48. == 0);
  49. BT_ASSERT(strcmp(domain, "fooapp") == 0);
  50. BT_ASSERT(xarmp != 0);
  51. BT_ASSERT(servers.size() == 2);
  52. ServerInfo* server = servers[1];
  53. BT_ASSERT(server != NULL);
  54. BT_ASSERT(strcmp(server->serverName, "foo") == 0);
  55. std::vector<ServiceInfo>* services = &server->serviceVector;
  56. BT_ASSERT(strcmp((*services)[0].serviceName, "BAR") == 0);
  57. BT_ASSERT(strcmp((*services)[1].serviceName, "ECHO") == 0);
  58. #ifdef WIN32
  59. BT_ASSERT(strcmp((*services)[0].transportLib, "atmibroker-hybrid.dll") == 0);
  60. BT_ASSERT(strcmp((*services)[1].transportLib, "atmibroker-hybrid.dll") == 0);
  61. #else
  62. BT_ASSERT(strcmp((*services)[0].transportLib,
  63. "libatmibroker-hybrid.so") == 0);
  64. BT_ASSERT(strcmp((*services)[1].transportLib,
  65. "libatmibroker-hybrid.so") == 0);
  66. #endif
  67. BT_ASSERT((*services)[0].poolSize == 5);
  68. BT_ASSERT(strcmp((*services)[0].function_name, "BAR") == 0);
  69. BT_ASSERT(strcmp((*services)[0].library_name, "libXMLTESTSERVICE.so") == 0);
  70. BT_ASSERT((*services)[0].advertised == false);
  71. char* transport = env->getTransportLibrary((char*) "BAR");
  72. #ifdef WIN32
  73. BT_ASSERT(strcmp(transport, "atmibroker-hybrid.dll") == 0);
  74. #else
  75. BT_ASSERT(strcmp(transport, "libatmibroker-hybrid.so") == 0);
  76. #endif
  77. BT_ASSERT(buffers.size() == 2);
  78. char* foo = (char*) "foo";
  79. Buffer* foob = buffers[foo];
  80. BT_ASSERT(strcmp(foob->name, "foo") == 0);
  81. BT_ASSERT(foob->wireSize == ((4 * 3) + 8 + (1 * 2 * 10)));
  82. BT_ASSERT(foob->memSize == sizeof(FOO));
  83. BT_ASSERT(foob->attributes.size() == 3);
  84. char* Balance2 = (char*) "Balance2";
  85. char* Balance = (char*) "Balance";
  86. char* accountName = (char*) "accountName";
  87. BT_ASSERT(strcmp(foob->attributes[Balance2]->id, "Balance2") == 0);
  88. BT_ASSERT(strcmp(foob->attributes[Balance2]->type, "float[]") == 0);
  89. BT_ASSERT(foob->attributes[Balance2]->length == 3);
  90. BT_ASSERT(foob->attributes[Balance2]->count == 0);
  91. BT_ASSERT(strcmp(foob->attributes[accountName]->id, "accountName")
  92. == 0);
  93. BT_ASSERT(strcmp(foob->attributes[accountName]->type, "char[][]") == 0);
  94. BT_ASSERT(foob->attributes[accountName]->length == 10);
  95. BT_ASSERT(foob->attributes[accountName]->count == 2);
  96. BT_ASSERT(strcmp(foob->attributes[Balance]->id, "Balance") == 0);
  97. BT_ASSERT(strcmp(foob->attributes[Balance]->type, "long") == 0);
  98. BT_ASSERT(foob->attributes[Balance]->count == 0);
  99. BT_ASSERT(foob->attributes[Balance]->length == 0);
  100. char* bar = (char*) "bar";
  101. Buffer* barb = buffers[bar];
  102. BT_ASSERT(strcmp(barb->name, "bar") == 0);
  103. BT_ASSERT(barb->wireSize == ((4 * 4) + (2) + (4 * 4) + (2)));
  104. BT_ASSERT(barb->memSize == sizeof(BAR));
  105. BT_ASSERT(barb->attributes.size() == 4);
  106. char* barlance = (char*) "barlance";
  107. char* barbq = (char*) "barbq";
  108. char* barlance1 = (char*) "barlance1";
  109. char* barbq2 = (char*) "barbq2";
  110. BT_ASSERT(strcmp(barb->attributes[barlance]->id, "barlance") == 0);
  111. BT_ASSERT(strcmp(barb->attributes[barlance]->type, "int[]") == 0);
  112. BT_ASSERT(barb->attributes[barlance]->length == 4);
  113. BT_ASSERT(barb->attributes[barlance]->count == 0);
  114. BT_ASSERT(strcmp(barb->attributes[barbq]->id, "barbq") == 0);
  115. BT_ASSERT(strcmp(barb->attributes[barbq]->type, "short") == 0);
  116. BT_ASSERT(barb->attributes[barbq]->count == 0);
  117. BT_ASSERT(barb->attributes[barbq]->length == 0);
  118. BT_ASSERT(strcmp(barb->attributes[barlance1]->id, "barlance1") == 0);
  119. BT_ASSERT(strcmp(barb->attributes[barlance1]->type, "int[]") == 0);
  120. BT_ASSERT(barb->attributes[barlance1]->length == 4);
  121. BT_ASSERT(barb->attributes[barlance1]->count == 0);
  122. BT_ASSERT(strcmp(barb->attributes[barbq2]->id, "barbq2") == 0);
  123. BT_ASSERT(strcmp(barb->attributes[barbq2]->type, "short") == 0);
  124. BT_ASSERT(barb->attributes[barbq2]->count == 0);
  125. BT_ASSERT(barb->attributes[barbq2]->length == 0);
  126. Buffers::iterator it;
  127. for (it = buffers.begin(); it != buffers.end(); ++it) {
  128. Buffer* buffer = it->second;
  129. userlogc((char*) "Buffer name: %s", buffer->name);
  130. }
  131. AtmiBrokerEnv::discard_instance();
  132. }
  133. void TestAtmiBrokerXml::test_define_adminservice() {
  134. ACE_OS::putenv("BLACKTIE_CONFIGURATION_DIR=wrongtest");
  135. try {
  136. AtmiBrokerEnv::get_instance();
  137. AtmiBrokerEnv::discard_instance();
  138. BT_FAIL("CAN NOT DEFINE ADMIN SERVICE");
  139. } catch (std::exception& e) {
  140. userlogc((char*) "define admin services test ok");
  141. }
  142. }
  143. void TestAtmiBrokerXml::test_same_service() {
  144. ACE_OS::putenv("BLACKTIE_CONFIGURATION_DIR=sametest");
  145. try {
  146. AtmiBrokerEnv::get_instance();
  147. AtmiBrokerEnv::discard_instance();
  148. BT_FAIL("CAN NOT DEFINE SAME SERVICE IN DIFFERENT SERVER");
  149. } catch (std::exception& e) {
  150. userlogc((char*) "same services test ok");
  151. }
  152. }