diff options
Diffstat (limited to 'java/test/Ice/plugin/Client.java')
-rw-r--r-- | java/test/Ice/plugin/Client.java | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/java/test/Ice/plugin/Client.java b/java/test/Ice/plugin/Client.java new file mode 100644 index 00000000000..db43197209c --- /dev/null +++ b/java/test/Ice/plugin/Client.java @@ -0,0 +1,197 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +package test.Ice.plugin; + +import java.io.PrintWriter; + +public class Client extends test.Util.Application +{ + public int run(String[] args) + { + Ice.Communicator communicator = communicator(); + PrintWriter printWriter = getWriter(); + printWriter.print("testing a simple plug-in... "); + printWriter.flush(); + try + { + Ice.InitializationData initData = new Ice.InitializationData(); + initData.properties = Ice.Util.createProperties(); + initData.properties.setProperty("Ice.Plugin.Test", + "../../../lib/IceTestPlugins.jar:test.Ice.plugin.plugins.PluginFactory " + + "'C:\\Program Files\\' --DatabasePath 'C:\\Program Files\\Application\\db'"); + communicator = Ice.Util.initialize(args, initData); + communicator.destroy(); + } + catch(Ice.LocalException ex) + { + ex.printStackTrace(); + test(false); + } + printWriter.println("ok"); + + printWriter.print("testing a simple plug-in that fails to initialize... "); + printWriter.flush(); + communicator = null; + try + { + Ice.InitializationData initData = new Ice.InitializationData(); + initData.properties = Ice.Util.createProperties(); + initData.properties.setProperty("Ice.Plugin.Test", + "../../../lib/:test.Ice.plugin.plugins.PluginInitializeFailFactory"); + communicator = Ice.Util.initialize(args, initData); + test(false); + } + catch(RuntimeException ex) + { + test(ex.getMessage().equals("PluginInitializeFailException")); + } + test(communicator == null); + printWriter.println("ok"); + + printWriter.print("testing plug-in load order... "); + printWriter.flush(); + try + { + Ice.InitializationData initData = new Ice.InitializationData(); + initData.properties = Ice.Util.createProperties(); + initData.properties.setProperty("Ice.Plugin.PluginOne", + "../../../lib/:test.Ice.plugin.plugins.PluginOneFactory"); + initData.properties.setProperty("Ice.Plugin.PluginTwo", + "../../../lib/:test.Ice.plugin.plugins.PluginTwoFactory"); + initData.properties.setProperty("Ice.Plugin.PluginThree", + "../../../lib/:test.Ice.plugin.plugins.PluginThreeFactory"); + initData.properties.setProperty("Ice.PluginLoadOrder", "PluginOne, PluginTwo"); // Exclude PluginThree + communicator = Ice.Util.initialize(args, initData); + communicator.destroy(); + } + catch(Ice.LocalException ex) + { + ex.printStackTrace(); + test(false); + } + printWriter.println("ok"); + + printWriter.print("testing plug-in manager... "); + printWriter.flush(); + try + { + Ice.InitializationData initData = new Ice.InitializationData(); + initData.properties = Ice.Util.createProperties(); + initData.properties.setProperty("Ice.Plugin.PluginOne", + "../../../lib/:test.Ice.plugin.plugins.PluginOneFactory"); + initData.properties.setProperty("Ice.Plugin.PluginTwo", + "../../../lib/:test.Ice.plugin.plugins.PluginTwoFactory"); + initData.properties.setProperty("Ice.Plugin.PluginThree", + "../../../lib/:test.Ice.plugin.plugins.PluginThreeFactory"); + initData.properties.setProperty("Ice.PluginLoadOrder", "PluginOne, PluginTwo"); + initData.properties.setProperty("Ice.InitPlugins", "0"); + communicator = Ice.Util.initialize(args, initData); + + Ice.PluginManager pm = communicator.getPluginManager(); + test(pm.getPlugin("PluginOne") != null); + test(pm.getPlugin("PluginTwo") != null); + test(pm.getPlugin("PluginThree") != null); + + MyPlugin p4 = new MyPlugin(); + pm.addPlugin("PluginFour", p4); + test(pm.getPlugin("PluginFour") != null); + + pm.initializePlugins(); + + test(p4.isInitialized()); + + communicator.destroy(); + + test(p4.isDestroyed()); + } + catch(Ice.LocalException ex) + { + ex.printStackTrace(); + test(false); + } + printWriter.println("ok"); + + printWriter.print("testing destroy when a plug-in fails to initialize... "); + printWriter.flush(); + communicator = null; + try + { + Ice.InitializationData initData = new Ice.InitializationData(); + initData.properties = Ice.Util.createProperties(); + initData.properties.setProperty("Ice.Plugin.PluginOneFail", + "../../../lib/:test.Ice.plugin.plugins.PluginOneFailFactory"); + initData.properties.setProperty("Ice.Plugin.PluginTwoFail", + "../../../lib/:test.Ice.plugin.plugins.PluginTwoFailFactory"); + initData.properties.setProperty("Ice.Plugin.PluginThreeFail", + "../../../lib/:test.Ice.plugin.plugins.PluginThreeFailFactory"); + initData.properties.setProperty("Ice.PluginLoadOrder", "PluginOneFail, PluginTwoFail, PluginThreeFail"); + communicator = Ice.Util.initialize(args, initData); + } + catch(RuntimeException ex) + { + test(ex.getMessage().equals("PluginInitializeFailException")); + } + test(communicator == null); + printWriter.println("ok"); + + System.gc(); + System.runFinalization(); + return 0; + } + + protected Ice.InitializationData getInitData(Ice.StringSeqHolder argsH) + { + Ice.InitializationData initData = new Ice.InitializationData(); + initData.properties = Ice.Util.createProperties(argsH); + return initData; + } + + private static void test(boolean b) + { + if(!b) + { + throw new RuntimeException(); + } + } + + public static void main(String[] args) + { + Client app = new Client(); + int result = app.main("Client", args); + System.gc(); + System.exit(result); + } + + static class MyPlugin implements Ice.Plugin + { + public boolean isInitialized() + { + return _initialized; + } + + public boolean isDestroyed() + { + return _destroyed; + } + + public void initialize() + { + _initialized = true; + } + + public void destroy() + { + _destroyed = true; + } + + private boolean _initialized = false; + private boolean _destroyed = false; + } +} |