Skip to main content
summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorslewis2010-03-10 03:25:08 +0000
committerslewis2010-03-10 03:25:08 +0000
commit69d0329f32dfbb5c178c4bb9d371f8181a7e78f9 (patch)
tree73dd35917d62fad2ac0717c004042c1295fd1989 /tests
parent07cce2e2d0ca17ef2cf5c4102fa19cf2a4e4a93a (diff)
downloadorg.eclipse.ecf-69d0329f32dfbb5c178c4bb9d371f8181a7e78f9.tar.gz
org.eclipse.ecf-69d0329f32dfbb5c178c4bb9d371f8181a7e78f9.tar.xz
org.eclipse.ecf-69d0329f32dfbb5c178c4bb9d371f8181a7e78f9.zip
New localdiscovery-based osgi remote services test bundle
Diffstat (limited to 'tests')
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath7
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.project28
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.jdt.core.prefs73
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.pde.core.prefs4
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceHostApplication.launch32
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceProxyTest.launch45
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/META-INF/MANIFEST.MF24
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/build.properties12
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/genericmultiservicehost.xml17
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties11
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.xml17
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/internal/osgi/services/distribution/localdiscovery/Activator.java39
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/AbstractMultiServiceProxyTest.java97
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/DiscoveryCommandProviderServiceTracker.java40
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceHostApplication.java85
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java66
16 files changed, 597 insertions, 0 deletions
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
new file mode 100644
index 000000000..64c5e31b7
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.project b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.project
new file mode 100644
index 000000000..d8a4405a7
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..712f540b6
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,73 @@
+#Tue Mar 09 13:55:54 PST 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.pde.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 000000000..bbcd50bc3
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,4 @@
+#Tue Mar 09 13:32:16 PST 2010
+eclipse.preferences.version=1
+pluginProject.extensions=true
+resolve.requirebundle=false
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceHostApplication.launch b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceHostApplication.launch
new file mode 100644
index 000000000..8aca1c9f6
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceHostApplication.launch
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.GenericMultiServiceHost"/>
+<booleanAttribute key="askclear" value="true"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="false"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/GenericMultiServiceHostApplication"/>
+<booleanAttribute key="default" value="false"/>
+<stringAttribute key="deselected_workspace_plugins" value="org.eclipse.ecf.example.collab,org.apache.httpcomponents.httpcore.nio,ch.ethz.iks.r_osgi.remote,org.eclipse.ecf.provider.jgroups,org.eclipse.ecf.services.quotes.starwars,org.eclipse.ecf.examples.datashare.app,org.eclipse.ecf.tests.provider.datashare.nio,org.eclipse.team.ecf.ui,org.eclipse.ecf.mgmt.app,org.eclipse.ecf.presence.ui,org.eclipse.ecf.discovery.ui.browser,org.eclipse.ecf.provider.datashare.nio,org.eclipse.ecf.provider.bittorrent.ui,org.eclipse.ecf.provider.xmpp,org.eclipse.ecf.tests.mgmt.framework,org.eclipse.emf.ecore.change,org.eclipse.ecf.provider.filetransfer.scp,org.eclipse.ecf.examples.osgiservice.hello,org.eclipse.ecf.examples.provider.trivial,org.eclipse.ecf.provider.jms.activemq,com.skype,org.eclipse.ecf.remoteservice.eventadmin,org.eclipse.ecf.presence.collab.ui,org.eclipse.ecf.example.collab.editor,org.eclipse.ecf.provider.skype.ui,org.eclipse.ecf.tests.presence,org.eclipse.ecf.protocol.msn,org.eclipse.ecf.provider.irc.bot,org.apache.commons.httpclient,org.eclipse.ecf.provider.irc.ui,org.eclipse.ecf.doc,org.eclipse.ecf.tests.sync,org.eclipse.ecf.tests.provider.jslp,org.eclipse.ecf.tests.protocol.nntp.store.derby.tests,org.eclipse.ecf.tests.osgi.services.discovery,org.eclipse.ecf.tests.call,org.eclipse.ecf.provider.nntp.security,org.eclipse.ecf.salvo.application,org.eclipse.ecf.tests.protocol.msn,org.eclipse.ecf.tests.mgmt.ds,org.eclipse.ecf.discovery.ui.model,org.eclipse.ecf.remoteservice.rest,org.eclipse.ecf.provider.twitter.ui,org.eclipse.ecf.examples.remoteservices.hello.dm.consumer,org.eclipse.ecf.filetransfer,org.eclipse.ecf.examples.loadbalancing,org.eclipse.ecf.telephony.call,org.eclipse.ecf.salvo.ui.navigator,org.eclipse.ecf.ui.capabilities,org.eclipse.ecf.tests.filetransfer,org.eclipse.ecf.mgmt.ds,org.eclipse.ecf.provider.yahoo.ui,org.eclipse.ecf.tests.provider.jms.activemq,org.eclipse.ecf.ui,org.eclipse.ecf.protocol.nntp.model,org.eclipse.ecf.services.quotes,org.eclipse.ecf.mgmt.framework.host,org.eclipse.ecf.storage,org.eclipse.emf.ecore,org.eclipse.emf.edit.ui,org.eclipse.ecf.examples.updatesite.server,org.eclipse.ecf.provider.jms,org.eclipse.ecf.discovery.ui.properties.tabbed,org.eclipse.ecf.telephony.call.ui,org.eclipse.ecf.tests.provider.jgroups,org.eclipse.ecf.protocol.nntp.store.filesystem,org.eclipse.ecf.example.clients,org.eclipse.ecf.provider.ui,org.eclipse.helios.tests,org.eclipse.ecf.discovery.ui.edit,org.eclipse.ecf.provider.filetransfer.httpclient.ssl,org.eclipse.ecf.provider.jms.qpid,org.jivesoftware.smack,org.eclipse.ecf.discovery.ui.properties,org.eclipse.ecf.samples.nntp,org.eclipse.ecf.provider.datashare,org.eclipse.ecf.provider.twitter.ui.hub,org.eclipse.ecf.server.jgroups,org.eclipse.ecf.provider.irc,org.eclipse.ecf.examples.remoteservice.discovery.local,org.eclipse.ecf.mgmt.app.host,org.eclipse.ecf.datashare,org.eclipse.ecf.examples.remoteservices.hello.consumer,org.eclipse.ecf.examples.remoteservices.hello,org.eclipse.helios,org.eclipse.ecf.protocol.nntp.model.test,org.eclipse.ecf.provider.xmpp.ui,org.eclipse.ecf.tests.provider.jmdns,org.eclipse.ecf.provider.filetransfer.httpclient,org.eclipse.ecf.tests.filetransfer.jreprovider,org.eclipse.ecf.protocol.bittorrent,org.eclipse.ecf.examples.eventadmin.app,org.eclipse.ecf.examples.remoteservices.hello.ds.consumer,org.eclipse.ecf.provider.riena,org.eclipse.ecf.provider.jms.activemq.ui,org.eclipse.ecf.tests.remoteservice.rest,org.eclipse.ecf.remoteservice.ui.dosgi,org.eclipse.ecf.provider.filetransfer.efs,com.commonsense.backstop.client.axis,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2,org.eclipse.ecf.tests.sharedobject,org.eclipse.ecf.tests.provider.xmpp,org.eclipse.emf.common.ui,org.eclipse.ecf.tests.storage,org.eclipse.ecf.examples.remoteservices.dictionary.common,com.commonsense.backstop.tests.client.axis,org.eclipse.ecf.discovery.ui,org.eclipse.ecf.protocol.nntp.store.filesystem.tests,org.eclipse.ecf.tests.discovery,org.eclipse.ecf.tests.provider.filetransfer.scp,org.eclipse.ecf.protocol.nntp.core,org.eclipse.ecf.tests.provider.jms.weblogic,org.eclipse.ecf.provider.twitter,org.eclipse.ecf.provider.rss,org.eclipse.ecf.salvo.ui,org.eclipse.ecf.examples.loadbalancing.server,org.eclipse.ecf.examples.remoteservices.hello.dm.config.log4j,org.eclipse.ecf.provider.r_osgi,org.eclipse.ecf.tests.provider.nntp,org.eclipse.ecf.remoteservice.ui,org.eclipse.emf.edit,org.apache.mime4j,org.eclipse.emf.common,org.eclipse.ecf.tests.provider.filetransfer.efs,org.eclipse.ecf.springframework,org.eclipse.ecf.remoteservice.soap,org.eclipse.ecf.examples.remoteservices.hello.dm.host,org.eclipse.ecf.provider.filetransfer.sharedobject,org.eclipse.ecf.tests.provider.filetransfer.xmpp,org.eclipse.ecf.tests.provider.twitter,org.apache.commons.codec,org.eclipse.ecf.tests.apache.httpclient.server,org.eclipse.ecf.filetransfer.ui,org.eclipse.ecf.presence.bot,org.eclipse.ecf.tests.server.generic,org.eclipse.ecf.provider.jslp,org.eclipse.ecf.mgmt.framework,org.eclipse.ecf.tests.osgi.services.discovery.local,org.eclipse.helios.tools,org.eclipse.ecf.provider.aim,org.eclipse.ecf.protocol.nntp.store.derby,org.eclipse.ecf.examples.updatesite.client,ch.ethz.iks.slp,org.eclipse.ecf.provider.nntp.ui,org.eclipse.ecf.tests.filetransfer.httpserver,org.eclipse.ecf.examples.remoteservices.hello.host,org.eclipse.ecf.console,org.eclipse.ecf.provider.skype,org.eclipse.team.ecf.core,org.eclipse.ecf.examples.loadbalancing.consumer,org.eclipse.ecf.provider.filetransfer.ssl,org.eclipse.ecf.examples.tests.remoteservices.dictionary.soap.client,org.eclipse.ecf.tests.provider.discovery,org.apache.httpcomponents.httpcore,org.eclipse.ecf.provider.yahoo,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted,org.eclipse.ecf.examples.remoteservices.hello.ds.host,org.eclipse.ecf.services.quotes.eclipsetwitter,org.eclipse.ecf.client.jgroups,org.json,com.skype.win32.win32.x86,org.eclipse.ecf.server,org.eclipse.emf,org.eclipse.ecf.examples.remoteservice.rest.twitter,org.eclipse.ecf.tests.provider.skype,org.eclipse.ecf.provider.nntp,org.eclipse.ecf.examples.loadbalancing.servicehost,org.eclipse.ecf.mgmt.ds.host,org.eclipse.ecf.tests.mgmt.app,org.eclipse.ecf.tests.provider.jms,org.eclipse.ecf.docshare,org.eclipse.ecf.tests.datashare,org.eclipse.ecf.examples.provider.dictionary.soap.client,org.eclipse.ecf.examples.remoteservices.hello2,org.eclipse.ecf.services.quotes.oldskool,org.eclipse.ecf.provider.twitter.ui.hub.product,org.eclipse.ecf.provider.jms.weblogic,org.eclipse.ecf.provider.discovery,org.eclipse.ecf.presence,org.eclipse.ecf.sync,org.eclipse.ecf.provider.jmdns,com.skype.examples,org.eclipse.ecf.provider.msn,org.eclipse.ecf.provider.msn.ui,org.eclipse.ecf.provider.filetransfer,org.eclipse.ecf.provider.bittorrent,org.eclipse.ecf.provider.jms.weblogic.ui"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../GenericMultiServiceHostApplication"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx384m"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
+<stringAttribute key="selected_target_plugins" value="org.eclipse.equinox.preferences@default:default,org.hamcrest.core@default:default,org.eclipse.equinox.common@2:true,org.eclipse.core.runtime.compatibility.registry@default:false,org.junit*4.8.1.v4_8_1_v20100114-1600@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.runtime@default:true,org.eclipse.osgi@-1:true,org.eclipse.equinox.concurrent@default:default,javax.servlet@default:default,org.eclipse.osgi.services@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.equinox.app@default:default,org.eclipse.core.jobs@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.provider.localdiscovery@default:default,org.eclipse.ecf.tests.remoteservice@default:default,org.eclipse.ecf.osgi.services.discovery@default:default,org.eclipse.ecf@default:default,org.eclipse.ecf.tests.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.discovery.local@default:default,org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery@default:default,org.eclipse.ecf.server.generic@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.provider.remoteservice@default:default"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceProxyTest.launch b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceProxyTest.launch
new file mode 100644
index 000000000..b0426e16c
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceProxyTest.launch
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="false"/>
+<stringAttribute key="deselected_workspace_plugins" value="org.eclipse.ecf.example.collab,org.apache.httpcomponents.httpcore.nio,ch.ethz.iks.r_osgi.remote,org.eclipse.ecf.provider.jgroups,org.eclipse.ecf.services.quotes.starwars,org.eclipse.ecf.examples.datashare.app,org.eclipse.ecf.tests.provider.datashare.nio,org.eclipse.team.ecf.ui,org.eclipse.ecf.mgmt.app,org.eclipse.ecf.presence.ui,org.eclipse.ecf.discovery.ui.browser,org.eclipse.ecf.provider.datashare.nio,org.eclipse.ecf.provider.bittorrent.ui,org.eclipse.ecf.provider.xmpp,org.eclipse.ecf.tests.mgmt.framework,org.eclipse.emf.ecore.change,org.eclipse.ecf.provider.filetransfer.scp,org.eclipse.ecf.examples.osgiservice.hello,org.eclipse.ecf.examples.provider.trivial,org.eclipse.ecf.provider.jms.activemq,com.skype,org.eclipse.ecf.remoteservice.eventadmin,org.eclipse.ecf.presence.collab.ui,org.eclipse.ecf.example.collab.editor,org.eclipse.ecf.provider.skype.ui,org.eclipse.ecf.tests.presence,org.eclipse.ecf.protocol.msn,org.eclipse.ecf.provider.irc.bot,org.apache.commons.httpclient,org.eclipse.ecf.provider.irc.ui,org.eclipse.ecf.doc,org.eclipse.ecf.tests.sync,org.eclipse.ecf.tests.provider.jslp,org.eclipse.ecf.tests.protocol.nntp.store.derby.tests,org.eclipse.ecf.tests.osgi.services.discovery,org.eclipse.ecf.tests.call,org.eclipse.ecf.provider.nntp.security,org.eclipse.ecf.salvo.application,org.eclipse.ecf.tests.protocol.msn,org.eclipse.ecf.tests.mgmt.ds,org.eclipse.ecf.discovery.ui.model,org.eclipse.ecf.remoteservice.rest,org.eclipse.ecf.provider.twitter.ui,org.eclipse.ecf.examples.remoteservices.hello.dm.consumer,org.eclipse.ecf.examples.loadbalancing,org.eclipse.ecf.telephony.call,org.eclipse.ecf.salvo.ui.navigator,org.eclipse.ecf.ui.capabilities,org.eclipse.ecf.tests.filetransfer,org.eclipse.ecf.mgmt.ds,org.eclipse.ecf.provider.yahoo.ui,org.eclipse.ecf.tests.provider.jms.activemq,org.eclipse.ecf.ui,org.eclipse.ecf.protocol.nntp.model,org.eclipse.ecf.services.quotes,org.eclipse.ecf.mgmt.framework.host,org.eclipse.ecf.storage,org.eclipse.emf.ecore,org.eclipse.emf.edit.ui,org.eclipse.ecf.examples.updatesite.server,org.eclipse.ecf.provider.jms,org.eclipse.ecf.discovery.ui.properties.tabbed,org.eclipse.ecf.telephony.call.ui,org.eclipse.ecf.tests.provider.jgroups,org.eclipse.ecf.protocol.nntp.store.filesystem,org.eclipse.ecf.example.clients,org.eclipse.ecf.provider.ui,org.eclipse.helios.tests,org.eclipse.ecf.discovery.ui.edit,org.eclipse.ecf.provider.filetransfer.httpclient.ssl,org.eclipse.ecf.provider.jms.qpid,org.jivesoftware.smack,org.eclipse.ecf.discovery.ui.properties,org.eclipse.ecf.samples.nntp,org.eclipse.ecf.provider.datashare,org.eclipse.ecf.provider.twitter.ui.hub,org.eclipse.ecf.server.jgroups,org.eclipse.ecf.provider.irc,org.eclipse.ecf.examples.remoteservice.discovery.local,org.eclipse.ecf.mgmt.app.host,org.eclipse.ecf.datashare,org.eclipse.ecf.examples.remoteservices.hello.consumer,org.eclipse.ecf.examples.remoteservices.hello,org.eclipse.helios,org.eclipse.ecf.protocol.nntp.model.test,org.eclipse.ecf.provider.xmpp.ui,org.eclipse.ecf.tests.provider.jmdns,org.eclipse.ecf.provider.filetransfer.httpclient,org.eclipse.ecf.tests.filetransfer.jreprovider,org.eclipse.ecf.protocol.bittorrent,org.eclipse.ecf.examples.eventadmin.app,org.eclipse.ecf.examples.remoteservices.hello.ds.consumer,org.eclipse.ecf.provider.riena,org.eclipse.ecf.provider.jms.activemq.ui,org.eclipse.ecf.tests.remoteservice.rest,org.eclipse.ecf.remoteservice.ui.dosgi,org.eclipse.ecf.provider.filetransfer.efs,com.commonsense.backstop.client.axis,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2,org.eclipse.ecf.tests.sharedobject,org.eclipse.ecf.tests.provider.xmpp,org.eclipse.emf.common.ui,org.eclipse.ecf.tests.storage,org.eclipse.ecf.examples.remoteservices.dictionary.common,com.commonsense.backstop.tests.client.axis,org.eclipse.ecf.discovery.ui,org.eclipse.ecf.protocol.nntp.store.filesystem.tests,org.eclipse.ecf.tests.discovery,org.eclipse.ecf.tests.provider.filetransfer.scp,org.eclipse.ecf.protocol.nntp.core,org.eclipse.ecf.tests.provider.jms.weblogic,org.eclipse.ecf.provider.twitter,org.eclipse.ecf.provider.rss,org.eclipse.ecf.salvo.ui,org.eclipse.ecf.examples.loadbalancing.server,org.eclipse.ecf.examples.remoteservices.hello.dm.config.log4j,org.eclipse.ecf.provider.r_osgi,org.eclipse.ecf.tests.provider.nntp,org.eclipse.ecf.remoteservice.ui,org.eclipse.emf.edit,org.apache.mime4j,org.eclipse.emf.common,org.eclipse.ecf.tests.provider.filetransfer.efs,org.eclipse.ecf.springframework,org.eclipse.ecf.remoteservice.soap,org.eclipse.ecf.examples.remoteservices.hello.dm.host,org.eclipse.ecf.provider.filetransfer.sharedobject,org.eclipse.ecf.tests.provider.filetransfer.xmpp,org.eclipse.ecf.tests.provider.twitter,org.apache.commons.codec,org.eclipse.ecf.tests.apache.httpclient.server,org.eclipse.ecf.filetransfer.ui,org.eclipse.ecf.presence.bot,org.eclipse.ecf.tests.server.generic,org.eclipse.ecf.provider.jslp,org.eclipse.ecf.mgmt.framework,org.eclipse.ecf.tests.osgi.services.discovery.local,org.eclipse.helios.tools,org.eclipse.ecf.provider.aim,org.eclipse.ecf.protocol.nntp.store.derby,org.eclipse.ecf.examples.updatesite.client,ch.ethz.iks.slp,org.eclipse.ecf.provider.nntp.ui,org.eclipse.ecf.tests.filetransfer.httpserver,org.eclipse.ecf.examples.remoteservices.hello.host,org.eclipse.ecf.console,org.eclipse.ecf.provider.skype,org.eclipse.team.ecf.core,org.eclipse.ecf.examples.loadbalancing.consumer,org.eclipse.ecf.examples.tests.remoteservices.dictionary.soap.client,org.eclipse.ecf.tests.provider.discovery,org.apache.httpcomponents.httpcore,org.eclipse.ecf.provider.yahoo,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted,org.eclipse.ecf.examples.remoteservices.hello.ds.host,org.eclipse.ecf.services.quotes.eclipsetwitter,org.eclipse.ecf.client.jgroups,org.json,com.skype.win32.win32.x86,org.eclipse.ecf.server,org.eclipse.emf,org.eclipse.ecf.examples.remoteservice.rest.twitter,org.eclipse.ecf.tests.provider.skype,org.eclipse.ecf.provider.nntp,org.eclipse.ecf.examples.loadbalancing.servicehost,org.eclipse.ecf.mgmt.ds.host,org.eclipse.ecf.tests.mgmt.app,org.eclipse.ecf.tests.provider.jms,org.eclipse.ecf.docshare,org.eclipse.ecf.tests.datashare,org.eclipse.ecf.examples.provider.dictionary.soap.client,org.eclipse.ecf.examples.remoteservices.hello2,org.eclipse.ecf.services.quotes.oldskool,org.eclipse.ecf.provider.twitter.ui.hub.product,org.eclipse.ecf.provider.jms.weblogic,org.eclipse.ecf.provider.discovery,org.eclipse.ecf.presence,org.eclipse.ecf.sync,org.eclipse.ecf.provider.jmdns,com.skype.examples,org.eclipse.ecf.provider.msn,org.eclipse.ecf.provider.msn.ui,org.eclipse.ecf.provider.bittorrent,org.eclipse.ecf.provider.jms.weblogic.ui"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.generic.GenericMultiServiceProxyTest"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx384m"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.ecf.client.jgroups.jgClientProduct"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<stringAttribute key="selected_target_plugins" value="org.eclipse.core.databinding.property@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.ui.ide@default:default,org.hamcrest.core@default:default,org.eclipse.text@default:default,org.eclipse.equinox.common@2:true,org.eclipse.core.runtime.compatibility.registry@default:false,org.junit*4.8.1.v4_8_1_v20100114-1600@default:default,org.eclipse.jface@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.runtime@default:true,org.eclipse.osgi@-1:true,org.eclipse.equinox.p2.engine@default:default,org.eclipse.core.variables@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.core.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.net@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.core.filesystem@default:default,javax.servlet@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.ui.win32@default:false,org.eclipse.core.expressions@default:default,org.eclipse.osgi.services@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.help@default:default,org.eclipse.swt@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.eclipse.core.resources@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.ui.views@default:default,org.eclipse.core.resources.win32.x86@default:false,com.ibm.icu@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.jobs@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.provider.localdiscovery@default:default,org.eclipse.ecf.tests.remoteservice@default:default,org.eclipse.ecf.osgi.services.discovery@default:default,org.eclipse.ecf@default:default,org.eclipse.ecf.tests.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.discovery.local@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery@default:default,org.eclipse.ecf.server.generic@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.remoteservice@default:default"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..3a425f200
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Localdiscovery
+Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Import-Package: org.eclipse.osgi.framework.console,
+ org.osgi.framework;version="1.3.0",
+ org.osgi.util.tracker
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ecf.tests,
+ org.eclipse.ecf.osgi.services.distribution;bundle-version="1.0.0",
+ org.eclipse.ecf.remoteservice;bundle-version="3.0.0",
+ org.eclipse.ecf;bundle-version="3.0.0",
+ org.eclipse.ecf.tests.remoteservice;bundle-version="2.0.0",
+ org.eclipse.ecf.osgi.services.discovery;bundle-version="1.0.0",
+ org.junit,
+ org.eclipse.equinox.common,
+ org.eclipse.equinox.concurrent;bundle-version="1.0.0",
+ org.eclipse.ecf.tests.osgi.services.distribution;bundle-version="1.0.0",
+ org.eclipse.equinox.app;bundle-version="1.3.0",
+ org.eclipse.ecf.osgi.services.discovery.local;bundle-version="1.0.0"
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/build.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/build.properties
new file mode 100644
index 000000000..1b67e5a7e
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/build.properties
@@ -0,0 +1,12 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ plugin.xml,\
+ genericmultiservicehost.xml,\
+ GenericMultiServiceProxyTest.launch,\
+ GenericMultiServiceHostApplication.launch
+src.includes = GenericMultiServiceHostApplication.launch,\
+ GenericMultiServiceProxyTest.launch,\
+ genericmultiservicehost.xml
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/genericmultiservicehost.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/genericmultiservicehost.xml
new file mode 100644
index 000000000..19b8c77cc
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/genericmultiservicehost.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
+ <service-description>
+ <provide interface="org.eclipse.ecf.tests.remoteservice.IConcatService"/>
+ <property name="ecf.sp.cid">ecftcp://localhost:9655/server</property>
+ <property name="ecf.sp.cns">org.eclipse.ecf.core.identity.StringID</property>
+ <property name="ecf.sp.ect">ecf.generic.server</property>
+ </service-description>
+ <service-description>
+ <provide
+interface="org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1"/>
+ <property
+name="ecf.sp.cid">ecftcp://localhost:9655/server</property>
+ <property name="ecf.sp.cns">org.eclipse.ecf.core.identity.StringID</property>
+ <property name="ecf.sp.ect">ecf.generic.server</property>
+ </service-description>
+</service-descriptions>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
new file mode 100644
index 000000000..e649bf6d0
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
@@ -0,0 +1,11 @@
+############################################################################
+# Copyright (c) 2010 Composent and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+plugin.name=ECF Distribution Tests LocalDiscovery
+plugin.provider=Eclipse.org - ECF
+
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.xml
new file mode 100644
index 000000000..ca2f4c4c3
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ id="GenericMultiServiceHost"
+ point="org.eclipse.core.runtime.applications">
+ <application
+ cardinality="singleton-global"
+ thread="main"
+ visible="true">
+ <run
+ class="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.generic.GenericMultiServiceHostApplication">
+ </run>
+ </application>
+ </extension>
+
+</plugin>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/internal/osgi/services/distribution/localdiscovery/Activator.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/internal/osgi/services/distribution/localdiscovery/Activator.java
new file mode 100644
index 000000000..c72a46497
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/internal/osgi/services/distribution/localdiscovery/Activator.java
@@ -0,0 +1,39 @@
+package org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+ public static final String PLUGIN_ID = "org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery";
+
+ private static Activator plugin;
+ private BundleContext context;
+
+ public static final Activator getDefault() {
+ return plugin;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ plugin = this;
+ this.context = context;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ context = null;
+ plugin = null;
+ }
+
+ public BundleContext getContext() {
+ return context;
+ }
+
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/AbstractMultiServiceProxyTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/AbstractMultiServiceProxyTest.java
new file mode 100644
index 000000000..cf5e75967
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/AbstractMultiServiceProxyTest.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+* Copyright (c) 2010 Composent, Inc. and others. All rights reserved. This
+* program and the accompanying materials are made available under the terms of
+* the Eclipse Public License v1.0 which accompanies this distribution, and is
+* available at http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Composent, Inc. - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery;
+
+import java.net.URL;
+import java.util.Dictionary;
+
+import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.osgi.services.discovery.local.DiscoveryCommandProvider;
+import org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator;
+import org.eclipse.ecf.tests.osgi.services.distribution.AbstractDistributionTest;
+import org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.generic.DiscoveryCommandProviderServiceTracker;
+import org.eclipse.osgi.framework.console.CommandInterpreter;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+
+public abstract class AbstractMultiServiceProxyTest extends
+ AbstractDistributionTest {
+
+ protected DiscoveryCommandProvider discoveryCommandProvider;
+ protected URL serviceDescriptionURL;
+ protected IContainer clientContainer;
+
+ protected void setUp() throws Exception {
+ discoveryCommandProvider = getDiscoveryCommandProvider();
+ serviceDescriptionURL = getServiceDescriptionURL();
+ clientContainer = getContainerFactory().createContainer(getClientContainerName());
+ }
+
+ protected abstract URL getServiceDescriptionURL();
+
+ protected void tearDown() throws Exception {
+ discoveryCommandProvider = null;
+ serviceDescriptionURL = null;
+ clientContainer.dispose();
+ getContainerManager().removeAllContainers();
+ }
+
+ protected BundleContext getContext() {
+ return Activator.getDefault().getContext();
+ }
+
+ protected DiscoveryCommandProvider getDiscoveryCommandProvider() {
+ DiscoveryCommandProviderServiceTracker st = new DiscoveryCommandProviderServiceTracker();
+ st.open();
+ DiscoveryCommandProvider provider = st.getDiscoveryCommandProvider();
+ st.close();
+ return provider;
+ }
+
+ protected void publishServiceDescriptions(final URL url) {
+ publishServiceDescriptions(url.toString());
+ }
+
+ int argsAccessed = 0;
+
+ protected void publishServiceDescriptions(final String url) {
+ discoveryCommandProvider._publish(new CommandInterpreter() {
+ public String nextArgument() {
+ argsAccessed++;
+ return (argsAccessed == 1) ? url : null;
+ }
+
+ public Object execute(String cmd) {
+ return null;
+ }
+
+ public void print(Object o) {
+ }
+
+ public void println() {
+ }
+
+ public void println(Object o) {
+ }
+
+ public void printStackTrace(Throwable t) {
+ }
+
+ public void printDictionary(Dictionary dic, String title) {
+ }
+
+ public void printBundleResource(Bundle bundle, String resource) {
+ }
+ });
+
+ }
+
+
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/DiscoveryCommandProviderServiceTracker.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/DiscoveryCommandProviderServiceTracker.java
new file mode 100644
index 000000000..4a2039b0d
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/DiscoveryCommandProviderServiceTracker.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+* Copyright (c) 2010 Composent, Inc. and others. All rights reserved. This
+* program and the accompanying materials are made available under the terms of
+* the Eclipse Public License v1.0 which accompanies this distribution, and is
+* available at http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Composent, Inc. - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.generic;
+
+import org.eclipse.ecf.osgi.services.discovery.local.DiscoveryCommandProvider;
+import org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator;
+import org.eclipse.osgi.framework.console.CommandProvider;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class DiscoveryCommandProviderServiceTracker extends ServiceTracker {
+
+ private DiscoveryCommandProvider discoveryCommandProvider;
+
+ public DiscoveryCommandProviderServiceTracker() {
+ super(Activator.getDefault().getContext(), CommandProvider.class.getName(), null);
+ @SuppressWarnings("unused")
+ DiscoveryCommandProvider dcp = new DiscoveryCommandProvider(null);
+ }
+
+ public void open() {
+ super.open(true);
+ Object[] allCommandProviders = getServices();
+ for(int i=0; i < allCommandProviders.length; i++) {
+ if (allCommandProviders[i] instanceof DiscoveryCommandProvider) {
+ discoveryCommandProvider = (DiscoveryCommandProvider) allCommandProviders[i];
+ }
+ }
+ }
+
+ public DiscoveryCommandProvider getDiscoveryCommandProvider() {
+ return discoveryCommandProvider;
+ }
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceHostApplication.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceHostApplication.java
new file mode 100644
index 000000000..10b2449ac
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceHostApplication.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+* Copyright (c) 2010 Composent, Inc. and others. All rights reserved. This
+* program and the accompanying materials are made available under the terms of
+* the Eclipse Public License v1.0 which accompanies this distribution, and is
+* available at http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Composent, Inc. - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.generic;
+
+import java.util.Dictionary;
+import java.util.Properties;
+
+import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
+import org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator;
+import org.eclipse.ecf.tests.osgi.services.distribution.TestService1;
+import org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1;
+import org.eclipse.ecf.tests.remoteservice.AbstractConcatHostApplication;
+import org.eclipse.ecf.tests.remoteservice.IConcatService;
+import org.eclipse.equinox.app.IApplicationContext;
+
+public class GenericMultiServiceHostApplication extends AbstractConcatHostApplication implements IDistributionConstants {
+
+ private String containerId = "ecftcp://localhost:9655/server";
+ private String containerType = "ecf.generic.server";
+
+ public Object start(IApplicationContext context) throws Exception {
+ // First, create container of appropriate type
+ IContainer container = createContainer(containerId);
+ // Then, from container create remote service container
+ rsContainer = createRemoteServiceContainer(container);
+ // Now register IConcatService remote service
+ Activator.getDefault().getContext().registerService(IConcatService.class.getName(), createConcatService(), createRemoteServiceProperties(containerType,containerId));
+ System.out.println("registered concat remote service");
+ // Register ITestService
+ Activator.getDefault().getContext().registerService(TestServiceInterface1.class.getName(), createTestService(), createRemoteServiceProperties(containerType,containerId));
+ System.out.println("registered testserviceinterface1");
+
+ printStarted();
+ // And wait until we're explicitly stopped.
+ synchronized (this) {
+ while (!done)
+ wait();
+ }
+ return new Integer(0);
+ }
+
+ protected String getContainerId() {
+ return containerId;
+ }
+
+ protected Dictionary createRemoteServiceProperties(String containerType, String containerId) {
+ Dictionary props = new Properties();
+ // add OSGi service property indicated export of all interfaces exposed by service (wildcard)
+ props.put(SERVICE_EXPORTED_INTERFACES, SERVICE_EXPORTED_INTERFACES_WILDCARD);
+ // add OSGi service property specifying config
+ props.put(SERVICE_EXPORTED_CONFIGS, containerType);
+ // add ECF service property specifying container factory args
+ props.put(SERVICE_EXPORTED_CONTAINER_FACTORY_ARGUMENTS, containerId);
+ return props;
+ }
+
+ protected Object createTestService() {
+ return new TestService1();
+ }
+
+ protected Object createConcatService() {
+ return new IConcatService() {
+ public String concat(String string1, String string2) {
+ final String result = string1.concat(string2);
+ System.out.println("SERVICE.concat(" + string1 + "," + string2
+ + ") returning " + result);
+ return string1.concat(string2);
+ }
+ };
+ }
+
+ protected String getContainerType() {
+ return containerType;
+ }
+
+
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java
new file mode 100644
index 000000000..e3bae1f8e
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.generic;
+
+import java.net.URL;
+
+import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
+import org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator;
+import org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1;
+import org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.AbstractMultiServiceProxyTest;
+import org.eclipse.ecf.tests.remoteservice.IConcatService;
+import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
+
+// NOTE: running this test successfully depends upon having a GenericMultiServiceHost
+// server running
+public class GenericMultiServiceProxyTest extends AbstractMultiServiceProxyTest
+ implements IDistributionConstants {
+
+ private static final String SERVICE_DESCRIPTION_FILE = "/genericmultiservicehost.xml";
+
+ protected URL getServiceDescriptionURL() {
+ return Activator.getDefault().getContext().getBundle()
+ .getEntry(SERVICE_DESCRIPTION_FILE);
+ }
+
+ protected String getClientContainerName() {
+ return "ecf.generic.client";
+ }
+
+ public void testTestServiceInterface1Access() throws Exception {
+ publishServiceDescriptions(serviceDescriptionURL);
+ sleep(5000);
+ String classname = TestServiceInterface1.class.getName();
+ // Setup service tracker for client container
+ ServiceTracker st = createProxyServiceTracker(classname);
+ // Service Consumer - Get (remote) service references
+ ServiceReference[] remoteReferences = st.getServiceReferences();
+ assertReferencesValidAndFirstHasCorrectType(remoteReferences, classname);
+ // Spec requires that the 'service.imported' property be set
+ assertTrue(remoteReferences[0].getProperty(SERVICE_IMPORTED) != null);
+ st.close();
+ }
+
+ public void testConcatServiceInterfaceAccess() throws Exception {
+ publishServiceDescriptions(serviceDescriptionURL);
+ sleep(5000);
+ String classname = IConcatService.class.getName();
+ // Setup service tracker for client container
+ ServiceTracker st = createProxyServiceTracker(classname);
+ // Service Consumer - Get (remote) service references
+ ServiceReference[] remoteReferences = st.getServiceReferences();
+ assertReferencesValidAndFirstHasCorrectType(remoteReferences, classname);
+ // Spec requires that the 'service.imported' property be set
+ assertTrue(remoteReferences[0].getProperty(SERVICE_IMPORTED) != null);
+ st.close();
+ }
+
+}

Back to the top