スタンドアロンのjunitテストでApache Qpidを使用した例はありますか?
理想的には、テスト内でメッセージを送受信できるキューをオンザフライで作成できるようにしたいと考えています。そのため、テスト内で QPid をテストしていません。そのために統合テストを使用しますが、サービスの負荷をモックアウトする必要があるメッセージを処理するメソッドをテストするのに非常に役立ちます。
Qpid プロジェクトには、組み込みブローカーをテストに使用する多数のテストがあります。基本ケースを使用してスタートアップのシャットダウンを処理しますが、以下を実行して、テスト内にブローカーを簡単に統合できます。
public void setUp()
{
int port=1;
// Config is actually a Configuaration File App Registry object, or Configuration Application Registry.
ApplicationRegistry.initialise(config, port);
TransportConnection.createVMBroker(port);
}
public void test()
{...}
public void tearDown()
{
TransportConnection.killVMBroker(port);
ApplicationRegistry.remove(port);
}
次に、接続のために、ブローカーの conactionURL を指定する必要があります。すなわち、borkerlist='vm://1'
私が理解できた最高のものは:
PropertiesConfiguration properties = new PropertiesConfiguration();
properties.addProperty("virtualhosts.virtualhost.name", "test");
properties.addProperty("security.principal-databases.principal-database.name", "testPasswordFile");
properties.addProperty("security.principal-databases.principal-database.class", "org.apache.qpid.server.security.auth.database.PropertiesPrincipalDatabase");
ServerConfiguration config = new ServerConfiguration(properties);
ApplicationRegistry.initialise(new ApplicationRegistry(config) {
@Override
protected void createDatabaseManager(ServerConfiguration configuration) throws Exception {
Properties users = new Properties();
users.put("guest","guest");
users.put("admin","admin");
_databaseManager = new PropertiesPrincipalDatabaseManager("testPasswordFile", users);
}
});
TransportConnection.createVMBroker(ApplicationRegistry.DEFAULT_INSTANCE);
次のURLを使用:
amqp://admin:admin@/test?brokerlist='vm://:1?sasl_mechs='PLAIN''
大きな問題は、構成と承認にあります。走行距離は異なる場合があります。