summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2007-09-20 15:55:05 -0400
committerBernard Normier <bernard@zeroc.com>2007-09-20 15:55:05 -0400
commitf185946cfbced2bf5e6bf8deb0993a18057664d5 (patch)
tree8a2de32151d5dc71bd0353feefa21de018e85f2f /cpp
parentfix for compilation errors with Python 2.5 (diff)
downloadice-f185946cfbced2bf5e6bf8deb0993a18057664d5.tar.bz2
ice-f185946cfbced2bf5e6bf8deb0993a18057664d5.tar.xz
ice-f185946cfbced2bf5e6bf8deb0993a18057664d5.zip
Squashed commit of the following:
commit 2eba3087584d54d3ba98ef50724710fd34d84e0b Author: Bernard Normier <bernard@zeroc.com> Date: Thu Sep 20 15:53:49 2007 -0400 New ice-version attribute, IceGrid now generates Ice.Admin.* properties
Diffstat (limited to 'cpp')
-rwxr-xr-xcpp/allTests.py2
-rw-r--r--cpp/demo/IceGrid/allocate/application-multiple.xml2
-rw-r--r--cpp/demo/IceGrid/allocate/application-single.xml2
-rw-r--r--cpp/demo/IceGrid/replication/application.xml2
-rw-r--r--cpp/demo/IceGrid/sessionActivation/application.xml2
-rw-r--r--cpp/demo/IceGrid/simple/application.xml2
-rw-r--r--cpp/demo/IceGrid/simple/application_with_replication.xml2
-rw-r--r--cpp/demo/IceGrid/simple/application_with_template.xml2
-rw-r--r--cpp/slice/IceGrid/Descriptor.ice11
-rw-r--r--cpp/src/IceGrid/DescriptorBuilder.cpp31
-rw-r--r--cpp/src/IceGrid/DescriptorBuilder.h1
-rw-r--r--cpp/src/IceGrid/DescriptorHelper.cpp33
-rw-r--r--cpp/src/IceGrid/IceGridNode.cpp6
-rw-r--r--cpp/src/IceGrid/NodeCache.cpp51
-rw-r--r--cpp/src/IceGrid/Util.cpp93
-rw-r--r--cpp/src/IceGrid/Util.h2
-rw-r--r--cpp/test/IceGrid/activation/Server.cpp2
-rw-r--r--cpp/test/IceGrid/activation/application.xml7
-rw-r--r--cpp/test/IceGrid/allocation/application.xml4
-rw-r--r--cpp/test/IceGrid/distribution/application.xml9
-rw-r--r--cpp/test/IceGrid/replicaGroup/application.xml3
-rw-r--r--cpp/test/IceGrid/replication/AllTests.cpp25
-rw-r--r--cpp/test/IceGrid/replication/application.xml2
-rw-r--r--cpp/test/IceGrid/session/AllTests.cpp7
-rw-r--r--cpp/test/IceGrid/session/application.xml5
-rw-r--r--cpp/test/IceGrid/simple/simple_server.xml2
-rw-r--r--cpp/test/IceGrid/update/AllTests.cpp14
27 files changed, 267 insertions, 57 deletions
diff --git a/cpp/allTests.py b/cpp/allTests.py
index e031e90c3ab..356f7728ebe 100755
--- a/cpp/allTests.py
+++ b/cpp/allTests.py
@@ -106,7 +106,7 @@ tests = [
"FreezeScript/dbmap",
"FreezeScript/evictor",
"IceGrid/simple",
- "IceGrid/deployer",
+ #"IceGrid/deployer",
"IceGrid/session",
"IceGrid/update",
"IceGrid/activation",
diff --git a/cpp/demo/IceGrid/allocate/application-multiple.xml b/cpp/demo/IceGrid/allocate/application-multiple.xml
index 65fbfe14349..82f794ed728 100644
--- a/cpp/demo/IceGrid/allocate/application-multiple.xml
+++ b/cpp/demo/IceGrid/allocate/application-multiple.xml
@@ -16,7 +16,7 @@
<server-template id="AllocateServer">
<parameter name="index"/>
<server id="AllocateServer-${index}" exe="./server" activation="on-demand">
- <adapter name="Hello" endpoints="tcp" register-process="true">
+ <adapter name="Hello" endpoints="tcp">
<allocatable identity="hello-${index}" type="::Demo::Hello" property="Identity"/>
</adapter>
</server>
diff --git a/cpp/demo/IceGrid/allocate/application-single.xml b/cpp/demo/IceGrid/allocate/application-single.xml
index dfc54904d80..2452dd4f6ec 100644
--- a/cpp/demo/IceGrid/allocate/application-single.xml
+++ b/cpp/demo/IceGrid/allocate/application-single.xml
@@ -15,7 +15,7 @@
<node name="localhost">
<server id="AllocateServer" exe="./server" activation="on-demand">
- <adapter name="Hello" endpoints="tcp" register-process="true">
+ <adapter name="Hello" endpoints="tcp">
<allocatable identity="hello" type="::Demo::Hello" property="Identity"/>
</adapter>
</server>
diff --git a/cpp/demo/IceGrid/replication/application.xml b/cpp/demo/IceGrid/replication/application.xml
index d3f6a22aa86..06d81c28d7f 100644
--- a/cpp/demo/IceGrid/replication/application.xml
+++ b/cpp/demo/IceGrid/replication/application.xml
@@ -15,7 +15,7 @@
<server-template id="SimpleServer">
<parameter name="index"/>
<server id="SimpleServer-${index}" exe="./server" activation="on-demand">
- <adapter name="Hello" endpoints="tcp" register-process="true" replica-group="ReplicatedHelloAdapter"/>
+ <adapter name="Hello" endpoints="tcp" replica-group="ReplicatedHelloAdapter"/>
<property name="Identity" value="hello"/>
</server>
</server-template>
diff --git a/cpp/demo/IceGrid/sessionActivation/application.xml b/cpp/demo/IceGrid/sessionActivation/application.xml
index 8affc428aca..67b1851da1c 100644
--- a/cpp/demo/IceGrid/sessionActivation/application.xml
+++ b/cpp/demo/IceGrid/sessionActivation/application.xml
@@ -15,7 +15,7 @@
<node name="localhost">
<server id="SessionServer" exe="./server" activation="session">
- <adapter name="Hello" endpoints="tcp" register-process="true">
+ <adapter name="Hello" endpoints="tcp">
<allocatable identity="hello" property="Identity"/>
</adapter>
</server>
diff --git a/cpp/demo/IceGrid/simple/application.xml b/cpp/demo/IceGrid/simple/application.xml
index b4218f02bf0..8c4d2b4a6cf 100644
--- a/cpp/demo/IceGrid/simple/application.xml
+++ b/cpp/demo/IceGrid/simple/application.xml
@@ -15,7 +15,7 @@
<node name="localhost">
<server id="SimpleServer" exe="./server" activation="on-demand">
- <adapter name="Hello" endpoints="tcp" register-process="true">
+ <adapter name="Hello" endpoints="tcp">
<object identity="hello" type="::Demo::Hello" property="Identity"/>
</adapter>
</server>
diff --git a/cpp/demo/IceGrid/simple/application_with_replication.xml b/cpp/demo/IceGrid/simple/application_with_replication.xml
index 7c0acf45b5c..b5c78d3840b 100644
--- a/cpp/demo/IceGrid/simple/application_with_replication.xml
+++ b/cpp/demo/IceGrid/simple/application_with_replication.xml
@@ -15,7 +15,7 @@
<server-template id="SimpleServer">
<parameter name="index"/>
<server id="SimpleServer-${index}" exe="./server" activation="on-demand">
- <adapter name="Hello" endpoints="tcp" register-process="true" replica-group="ReplicatedHelloAdapter"/>
+ <adapter name="Hello" endpoints="tcp" replica-group="ReplicatedHelloAdapter"/>
<property name="Identity" value="hello"/>
</server>
</server-template>
diff --git a/cpp/demo/IceGrid/simple/application_with_template.xml b/cpp/demo/IceGrid/simple/application_with_template.xml
index 8c031a72540..3ec107b1484 100644
--- a/cpp/demo/IceGrid/simple/application_with_template.xml
+++ b/cpp/demo/IceGrid/simple/application_with_template.xml
@@ -16,7 +16,7 @@
<server-template id="SimpleServer">
<parameter name="index"/>
<server id="SimpleServer-${index}" exe="./server" activation="on-demand">
- <adapter name="Hello" endpoints="tcp" register-process="true">
+ <adapter name="Hello" endpoints="tcp">
<object identity="hello-${index}" type="::Demo::Hello" property="Identity"/>
</adapter>
</server>
diff --git a/cpp/slice/IceGrid/Descriptor.ice b/cpp/slice/IceGrid/Descriptor.ice
index 9a3b0c75355..de4c4f95643 100644
--- a/cpp/slice/IceGrid/Descriptor.ice
+++ b/cpp/slice/IceGrid/Descriptor.ice
@@ -317,6 +317,17 @@ class ServerDescriptor extends CommunicatorDescriptor
*
**/
string exe;
+
+ /**
+ *
+ * The Ice version used by this server. This is only required if
+ * backward compatibility with servers using old Ice versions is
+ * needed (otherwise the registry will assume the server is using
+ * the same Ice version).
+ * For example "3.1.1", "3.2", "3.3.0".
+ *
+ **/
+ string iceVersion;
/**
*
diff --git a/cpp/src/IceGrid/DescriptorBuilder.cpp b/cpp/src/IceGrid/DescriptorBuilder.cpp
index f4eeae190cc..d105b3c3090 100644
--- a/cpp/src/IceGrid/DescriptorBuilder.cpp
+++ b/cpp/src/IceGrid/DescriptorBuilder.cpp
@@ -844,6 +844,17 @@ ServerDescriptorBuilder::init(const ServerDescriptorPtr& desc, const XmlAttribut
_descriptor->applicationDistrib = attrs.asBool("application-distrib", true);
_descriptor->allocatable = attrs.asBool("allocatable", false);
_descriptor->user = attrs("user", "");
+ _descriptor->iceVersion = attrs("ice-version", "");
+}
+
+void
+ServerDescriptorBuilder::finish()
+{
+ if(!isSet(_descriptor->propertySet.properties, "Ice.Admin.Enpoints"))
+ {
+ _hiddenProperties.push_back(createProperty("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"));
+ }
+ CommunicatorDescriptorBuilder::finish();
}
ServiceDescriptorBuilder*
@@ -913,22 +924,20 @@ IceBoxDescriptorBuilder::init(const IceBoxDescriptorPtr& desc, const XmlAttribut
void
IceBoxDescriptorBuilder::finish()
{
- if(getProperty(_descriptor->propertySet.properties, "IceBox.InstanceName").empty())
+ if(!isSet(_descriptor->propertySet.properties, "IceBox.InstanceName"))
{
_hiddenProperties.push_back(createProperty("IceBox.InstanceName", "${server}"));
}
- if(_descriptor->adapters.empty())
+
+ if(!isSet(_descriptor->propertySet.properties, "IceBox.ServiceManager.Endpoints"))
{
- if(getProperty(_descriptor->propertySet.properties, "IceBox.ServiceManager.Endpoints").empty())
- {
- _hiddenProperties.push_back(createProperty("IceBox.ServiceManager.Endpoints", "tcp -h 127.0.0.1"));
- }
- if(getProperty(_descriptor->propertySet.properties, "IceBox.ServiceManager.RegisterProcess").empty())
- {
- _hiddenProperties.push_back(createProperty("IceBox.ServiceManager.RegisterProcess", "1"));
- }
+ _hiddenProperties.push_back(createProperty("IceBox.ServiceManager.Endpoints", "tcp -h 127.0.0.1"));
}
-
+
+ //
+ // The NodeCache takes care of setting RegisterProcess for old IceBox servers
+ //
+
ServerDescriptorBuilder::finish();
}
diff --git a/cpp/src/IceGrid/DescriptorBuilder.h b/cpp/src/IceGrid/DescriptorBuilder.h
index 532df9e61df..af2928d71e3 100644
--- a/cpp/src/IceGrid/DescriptorBuilder.h
+++ b/cpp/src/IceGrid/DescriptorBuilder.h
@@ -258,6 +258,7 @@ public:
ServerDescriptorBuilder(const Ice::CommunicatorPtr&);
void init(const ServerDescriptorPtr&, const XmlAttributesHelper&);
+ virtual void finish();
virtual ServiceDescriptorBuilder* createService(const XmlAttributesHelper&);
virtual ServiceInstanceDescriptorBuilder* createServiceInstance(const XmlAttributesHelper&);
diff --git a/cpp/src/IceGrid/DescriptorHelper.cpp b/cpp/src/IceGrid/DescriptorHelper.cpp
index 1368294a5c5..36be70c44c9 100644
--- a/cpp/src/IceGrid/DescriptorHelper.cpp
+++ b/cpp/src/IceGrid/DescriptorHelper.cpp
@@ -1291,6 +1291,11 @@ ServerHelper::operator==(const CommunicatorHelper& h) const
return false;
}
+ if(_desc->iceVersion != helper->_desc->iceVersion)
+ {
+ return false;
+ }
+
if(_desc->pwd != helper->_desc->pwd)
{
return false;
@@ -1401,6 +1406,12 @@ ServerHelper::printImpl(const Ice::CommunicatorPtr& communicator, Output& out, c
out << nl << "session id = `" << info.sessionId << "'";
}
out << nl << "exe = `" << _desc->exe << "'";
+
+ if(!_desc->iceVersion.empty())
+ {
+ out << nl << "ice version = `" << _desc->iceVersion << "'";
+ }
+
if(!_desc->pwd.empty())
{
out << nl << "pwd = `" << _desc->pwd << "'";
@@ -1453,6 +1464,28 @@ ServerHelper::instantiateImpl(const ServerDescriptorPtr& instance,
instance->id = resolve.asId(_desc->id, "id", false);
instance->exe = resolve(_desc->exe, "executable", false);
+
+ instance->iceVersion = resolve(_desc->iceVersion, "ice version");
+ if(!instance->iceVersion.empty())
+ {
+ int version = getMMVersion(instance->iceVersion);
+ if(version < 0)
+ {
+ resolve.exception("invalid ice version: " + instance->iceVersion);
+ }
+ else if(version > ICE_INT_VERSION)
+ {
+ //resolve.exception("invalid ice version: " + instance->iceVersion + " is superior to the IceGrid \n"
+ //"registry version (" + ICE_STRING_VERSION + ")");
+ if(resolve.warningEnabled())
+ {
+ Ice::Warning out(resolve.getCommunicator()->getLogger());
+ out << "invalid ice version: " << instance->iceVersion << " is superior to the IceGrid ";
+ out << "registry version (" << ICE_STRING_VERSION << ")";
+ }
+ }
+ }
+
instance->pwd = resolve(_desc->pwd, "working directory path");
instance->activation = resolve(_desc->activation, "activation");
instance->applicationDistrib = _desc->applicationDistrib;
diff --git a/cpp/src/IceGrid/IceGridNode.cpp b/cpp/src/IceGrid/IceGridNode.cpp
index 4a2a6855847..f29fba8ca79 100644
--- a/cpp/src/IceGrid/IceGridNode.cpp
+++ b/cpp/src/IceGrid/IceGridNode.cpp
@@ -385,7 +385,7 @@ NodeService::start(int argc, char* argv[])
//
// Create the node object adapter.
//
- properties->setProperty("IceGrid.Node.RegisterProcess", "0");
+ properties->setProperty("IceGrid.Node.RegisterProcess", "");
properties->setProperty("IceGrid.Node.AdapterId", "");
_adapter = communicator()->createObjectAdapter("IceGrid.Node");
@@ -480,13 +480,13 @@ NodeService::start(int argc, char* argv[])
// Add a process servant to allow shutdown through the process
// interface if a server id is set on the node.
//
- if(!properties->getProperty("Ice.ServerId").empty() && communicator()->getDefaultLocator())
+ if(!properties->getProperty("Ice.Admin.ServerId").empty() && communicator()->getDefaultLocator())
{
try
{
ProcessPrx proxy = ProcessPrx::uncheckedCast(_adapter->addWithUUID(new ProcessI(_activator)));
LocatorRegistryPrx locatorRegistry = communicator()->getDefaultLocator()->getRegistry();
- locatorRegistry->setServerProcessProxy(properties->getProperty("Ice.ServerId"), proxy);
+ locatorRegistry->setServerProcessProxy(properties->getProperty("Ice.Admin.ServerId"), proxy);
}
catch(const ServerNotFoundException&)
{
diff --git a/cpp/src/IceGrid/NodeCache.cpp b/cpp/src/IceGrid/NodeCache.cpp
index c222c680cad..f88258488fc 100644
--- a/cpp/src/IceGrid/NodeCache.cpp
+++ b/cpp/src/IceGrid/NodeCache.cpp
@@ -824,6 +824,9 @@ NodeEntry::finishedRegistration(const Ice::Exception& ex)
InternalServerDescriptorPtr
NodeEntry::getInternalServerDescriptor(const ServerInfo& info) const
{
+ //
+ // Note that at this point all variables in info have been resolved
+ //
assert(_session);
InternalServerDescriptorPtr server = new InternalServerDescriptor();
@@ -846,7 +849,7 @@ NodeEntry::getInternalServerDescriptor(const ServerInfo& info) const
}
server->options = info.descriptor->options;
server->envs = info.descriptor->envs;
- server->processRegistered = false; // Assigned for each communicator (see below)
+
// server->logs: assigned for each communicator (see below)
// server->adapters: assigned for each communicator (see below)
// server->dbEnvs: assigned for each communicator (see below)
@@ -857,7 +860,30 @@ NodeEntry::getInternalServerDescriptor(const ServerInfo& info) const
//
PropertyDescriptorSeq& props = server->properties["config"];
props.push_back(createProperty("# Server configuration"));
- props.push_back(createProperty("Ice.ServerId", info.descriptor->id));
+
+ //
+ // For newer versions of Ice, we generate Ice.Admin properties:
+ //
+ int iceVersion = 0;
+ if(info.descriptor->iceVersion != "")
+ {
+ iceVersion = getMMVersion(info.descriptor->iceVersion);
+ }
+
+ if(iceVersion == 0 || iceVersion >= 30300)
+ {
+ props.push_back(createProperty("Ice.Admin.ServerId", info.descriptor->id));
+
+ server->processRegistered =
+ getProperty(info.descriptor->propertySet.properties, "Ice.Admin.Endpoints") != "";
+ }
+ else
+ {
+ props.push_back(createProperty("Ice.ServerId", info.descriptor->id));
+ server->processRegistered = false; // Assigned for each communicator (see below)
+ }
+
+ // props.push_back(createProperty("Ice.ServerId", info.descriptor->id));
props.push_back(createProperty("Ice.ProgramName", info.descriptor->id));
//
@@ -877,11 +903,22 @@ NodeEntry::getInternalServerDescriptor(const ServerInfo& info) const
}
props.push_back(createProperty("IceBox.LoadOrder", servicesStr));
- if(iceBox->adapters.empty() &&
- getProperty(iceBox->propertySet.properties, "IceBox.ServiceManager.RegisterProcess") != "0")
- {
- server->processRegistered = true;
- }
+
+ if(iceVersion != 0 && iceVersion < 30300)
+ {
+ if(isSet(iceBox->propertySet.properties, "IceBox.ServiceManager.RegisterProcess"))
+ {
+ if(getProperty(iceBox->propertySet.properties, "IceBox.ServiceManager.RegisterProcess") != "0")
+ {
+ server->processRegistered = true;
+ }
+ }
+ else
+ {
+ props.push_back(createProperty("IceBox.ServiceManager.RegisterProcess", "1"));
+ server->processRegistered = true;
+ }
+ }
}
//
diff --git a/cpp/src/IceGrid/Util.cpp b/cpp/src/IceGrid/Util.cpp
index 3d7bd18f961..dee6ef441a9 100644
--- a/cpp/src/IceGrid/Util.cpp
+++ b/cpp/src/IceGrid/Util.cpp
@@ -63,14 +63,31 @@ IceGrid::toString(const Ice::Exception& exception)
string
IceGrid::getProperty(const PropertyDescriptorSeq& properties, const string& name, const string& def)
{
+ string result = def;
+
for(PropertyDescriptorSeq::const_iterator q = properties.begin(); q != properties.end(); ++q)
{
if(q->name == name)
{
- return q->value;
+ result = q->value;
}
}
- return def;
+ return result;
+}
+
+bool
+IceGrid::isSet(const PropertyDescriptorSeq& properties, const string& name)
+{
+ bool result = false;
+
+ for(PropertyDescriptorSeq::const_iterator q = properties.begin(); q != properties.end(); ++q)
+ {
+ if(q->name == name)
+ {
+ result = (q->value != "");
+ }
+ }
+ return result;
}
PropertyDescriptor
@@ -82,3 +99,75 @@ IceGrid::createProperty(const string& name, const string& value)
return prop;
}
+
+int
+IceGrid::getMMVersion(const string& o)
+{
+ //
+ // Strip the version
+ //
+ string::size_type beg = o.find_first_not_of(' ');
+ string::size_type end = o.find_last_not_of(' ');
+ string version = o.substr(beg == string::npos ? 0 : beg, end == string::npos ? o.length() - 1 : end - beg + 1);
+
+ string::size_type minorPos = version.find('.');
+ string::size_type patchPos = version.find('.', minorPos + 1);
+
+ if(minorPos != 1 && minorPos != 2)
+ {
+ return -1;
+ }
+
+ if(patchPos != string::npos)
+ {
+ if((minorPos == 1 && patchPos != 3 && patchPos != 4) || (minorPos == 2 && patchPos != 4 && patchPos != 5))
+ {
+ return -1;
+ }
+ else if((version.size() - patchPos - 1) > 2)
+ {
+ return -1;
+ }
+ }
+ else if((version.size() - minorPos - 1) > 2)
+ {
+ return -1;
+ }
+
+ int v, ver;
+
+ istringstream major(version.substr(0, minorPos));
+ major >> v;
+ if(major.fail() || v > 99 || v < 1)
+ {
+ return -1;
+ }
+ ver = v;
+ ver *= 100;
+
+ istringstream minor(version.substr(minorPos + 1, patchPos != string::npos ? patchPos : version.size()));
+ minor >> v;
+ if(minor.fail() || v > 99 || v < 0)
+ {
+ return -1;
+ }
+ ver += v;
+ ver *= 100;
+
+ //
+ // No need to get the patch number, we're only interested in
+ // MAJOR.MINOR
+ //
+ // if(patchPos != string::npos)
+ // {
+ // istringstream patch(version.substr(patchPos + 1));
+ // patch >> v;
+ // if(patch.fail() || v > 99 || v < 0)
+ // {
+ // return -1;
+ // }
+ // ver += v;
+ // }
+
+ return ver;
+}
diff --git a/cpp/src/IceGrid/Util.h b/cpp/src/IceGrid/Util.h
index 918ac4011a9..d1386202df7 100644
--- a/cpp/src/IceGrid/Util.h
+++ b/cpp/src/IceGrid/Util.h
@@ -42,6 +42,8 @@ std::string toString(const std::vector<std::string>&, const std::string& = std::
std::string toString(const Ice::Exception&);
std::string getProperty(const PropertyDescriptorSeq&, const std::string&, const std::string& = std::string());
+bool isSet(const PropertyDescriptorSeq&, const std::string&);
+
PropertyDescriptor createProperty(const std::string&, const std::string& = std::string());
int getMMVersion(const std::string&);
diff --git a/cpp/test/IceGrid/activation/Server.cpp b/cpp/test/IceGrid/activation/Server.cpp
index 721c2132427..fe73297e8f7 100644
--- a/cpp/test/IceGrid/activation/Server.cpp
+++ b/cpp/test/IceGrid/activation/Server.cpp
@@ -36,7 +36,7 @@ Server::run(int argc, char* argv[])
Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("TestAdapter");
TestI* test = new TestI(adapter);
Ice::ObjectPtr obj = test;
- adapter->add(test, communicator()->stringToIdentity(properties->getProperty("Ice.ServerId")));
+ adapter->add(test, communicator()->stringToIdentity(properties->getProperty("Ice.Admin.ServerId")));
int delay = properties->getPropertyAsInt("ActivationDelay");
if(delay > 0)
diff --git a/cpp/test/IceGrid/activation/application.xml b/cpp/test/IceGrid/activation/application.xml
index 39d9f2f3aab..c1a892841e8 100644
--- a/cpp/test/IceGrid/activation/application.xml
+++ b/cpp/test/IceGrid/activation/application.xml
@@ -13,7 +13,7 @@
activation="${activation}"
activation-timeout="${activation-timeout}"
deactivation-timeout="${deactivation-timeout}">
- <adapter name="TestAdapter" endpoints="default" register-process="true">
+ <adapter name="TestAdapter" endpoints="default">
<object identity="${server}" type="Test"/>
<allocatable identity="${server}" type="Test"/>
</adapter>
@@ -30,6 +30,7 @@
<option>--nowarn</option>
<adapter name="IceGrid.Node" endpoints="default" register-process="true" server-lifetime="false"/>
<dbenv name="data"/>
+ <property name="Ice.Admin.Endpoints" value=""/>
<property name="IceGrid.Node.Name" value="${server}"/>
<property name="IceGrid.Node.Data" value="${node.datadir}/servers/${server}/dbs/data"/>
<property name="IceGrid.Node.PropertiesOverride"
@@ -52,12 +53,12 @@
<server-instance template="Server" id="fail-on-startup" fail-on-startup="1"/>
<server id="invalid-exe" exe="server2" activation="on-demand">
- <adapter name="TestAdapter" endpoints="default" register-process="true">
+ <adapter name="TestAdapter" endpoints="default">
<object identity="${server}" type="Test"/>
</adapter>
</server>
<server id="invalid-pwd" exe="./server" pwd="./bogus">
- <adapter name="TestAdapter" endpoints="default" register-process="true">
+ <adapter name="TestAdapter" endpoints="default">
<object identity="${server}" type="Test"/>
</adapter>
</server>
diff --git a/cpp/test/IceGrid/allocation/application.xml b/cpp/test/IceGrid/allocation/application.xml
index 8e68bcc2b3b..e48545892b6 100644
--- a/cpp/test/IceGrid/allocation/application.xml
+++ b/cpp/test/IceGrid/allocation/application.xml
@@ -11,9 +11,7 @@
<server id="${id}" exe="${ice.dir}/bin/glacier2router">
<property name="Glacier2.Client.Endpoints" value="${endpoints}"/>
<property name="Glacier2.Server.Endpoints" value="tcp -h 127.0.0.1"/>
- <property name="Glacier2.Admin.Endpoints" value="tcp -h 127.0.0.1"/>
- <property name="Glacier2.Admin.RegisterProcess" value="1"/>
-
+ <property name="Glacier2.Admin.Endpoints" value="tcp -h 127.0.0.1"/>
<property name="Glacier2.SessionManager" value="${manager}"/>
<property name="Glacier2.SSLSessionManager" value="IceGrid/SSLSessionManager"/>
<property name="Glacier2.PermissionsVerifier" value="${verifier}"/>
diff --git a/cpp/test/IceGrid/distribution/application.xml b/cpp/test/IceGrid/distribution/application.xml
index 1ca369759aa..dcdd5da7028 100644
--- a/cpp/test/IceGrid/distribution/application.xml
+++ b/cpp/test/IceGrid/distribution/application.xml
@@ -15,8 +15,7 @@
<adapter name="IcePatch2" endpoints="${endpoints}">
<object identity="${instance-name}/server" type="::IcePatch2::FileServer"/>
</adapter>
- <adapter name="IcePatch2.Admin" endpoints="tcp -h 127.0.0.1"
- register-process="true"/>
+ <adapter name="IcePatch2.Admin" endpoints="tcp -h 127.0.0.1"/>
<properties>
<property name="IcePatch2.InstanceName" value="${instance-name}"/>
<property name="IcePatch2.Directory" value="${directory}"/>
@@ -38,7 +37,7 @@
endpoints="default -p 12001"/>
<server id="server-all" exe="${test.dir}/server" activation="on-demand">
- <adapter name="Server" endpoints="default" register-process="true">
+ <adapter name="Server" endpoints="default">
<object identity="${server}"/>
</adapter>
<distrib/>
@@ -49,7 +48,7 @@
</server>
<server id="server-all-direct" exe="${test.dir}/server" activation="on-demand">
- <adapter name="Server" endpoints="default" register-process="true">
+ <adapter name="Server" endpoints="default">
<object identity="${server}"/>
</adapter>
<distrib icepatch="IcePatch2-Direct/server:default -p 12001"/>
@@ -60,7 +59,7 @@
</server>
<server id="server-dir1" exe="${test.dir}/server" activation="on-demand">
- <adapter name="Server" endpoints="default" register-process="true">
+ <adapter name="Server" endpoints="default">
<object identity="${server}"/>
</adapter>
<distrib>
diff --git a/cpp/test/IceGrid/replicaGroup/application.xml b/cpp/test/IceGrid/replicaGroup/application.xml
index f0739edbed6..ab33d88b2f1 100644
--- a/cpp/test/IceGrid/replicaGroup/application.xml
+++ b/cpp/test/IceGrid/replicaGroup/application.xml
@@ -62,8 +62,7 @@
<server-template id="IceBox">
<parameter name="id"/>
<parameter name="replicaGroup"/>
- <icebox id="${id}" exe="${icebox.exe}" activation="on-demand" pwd=".">
- <adapter name="IceBox.ServiceManager" endpoints="tcp -h 127.0.0.1" register-process="true"/>
+ <icebox id="${id}" exe="${icebox.exe}" activation="on-demand" pwd=".">
<service-instance template="Service" name="Service1" replicaGroup="${replicaGroup}" priority="3"/>
<service-instance template="Service" name="Service2" replicaGroup="${replicaGroup}" priority="2"/>
<service-instance template="Service" name="Service3" replicaGroup="${replicaGroup}" priority="1"/>
diff --git a/cpp/test/IceGrid/replication/AllTests.cpp b/cpp/test/IceGrid/replication/AllTests.cpp
index 3360ca70664..9be7f576f29 100644
--- a/cpp/test/IceGrid/replication/AllTests.cpp
+++ b/cpp/test/IceGrid/replication/AllTests.cpp
@@ -72,6 +72,15 @@ private:
};
typedef IceUtil::Handle<SessionKeepAliveThread> SessionKeepAliveThreadPtr;
+void
+addProperty(const CommunicatorDescriptorPtr& communicator, const string& name, const string& value)
+{
+ PropertyDescriptor prop;
+ prop.name = name;
+ prop.value = value;
+ communicator->propertySet.properties.push_back(prop);
+}
+
void
waitForServerState(const IceGrid::AdminPrx& admin, const std::string& server, bool up)
{
@@ -914,11 +923,12 @@ allTests(const Ice::CommunicatorPtr& comm)
server->id = "Server";
server->exe = comm->getProperties()->getProperty("TestDir") + "/server";
server->pwd = ".";
+ addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1");
server->activation = "on-demand";
AdapterDescriptor adapter;
adapter.name = "TestAdapter";
adapter.id = "TestAdapter.Server";
- adapter.registerProcess = true;
+ adapter.registerProcess = false;
PropertyDescriptor property;
property.name = "TestAdapter.Endpoints";
property.value = "default";
@@ -1086,11 +1096,12 @@ allTests(const Ice::CommunicatorPtr& comm)
server->id = "Server";
server->exe = comm->getProperties()->getProperty("TestDir") + "/server";
server->pwd = ".";
+ addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1");
server->activation = "on-demand";
AdapterDescriptor adapter;
adapter.name = "TestAdapter";
adapter.id = "TestAdapter.Server";
- adapter.registerProcess = true;
+ adapter.registerProcess = false;
PropertyDescriptor property;
property.name = "TestAdapter.Endpoints";
property.value = "default";
@@ -1170,10 +1181,20 @@ allTests(const Ice::CommunicatorPtr& comm)
}
cout << "ok" << endl;
+
+ cout << "Shutting down Node1... " << flush;
slave1Admin->shutdownNode("Node1");
+ cout << "ok" << endl;
+
+ cout << "Removing Node1 server... " << flush;
removeServer(admin, "Node1");
+ cout << "ok" << endl;
+ cout << "Removing Slave2 server..." << flush;
removeServer(admin, "Slave2");
+ cout << "ok" << endl;
+
+
slave1Admin->shutdown();
removeServer(admin, "Slave1");
masterAdmin->shutdown();
diff --git a/cpp/test/IceGrid/replication/application.xml b/cpp/test/IceGrid/replication/application.xml
index abcf5d4e1d4..c7647125629 100644
--- a/cpp/test/IceGrid/replication/application.xml
+++ b/cpp/test/IceGrid/replication/application.xml
@@ -17,6 +17,7 @@
<property name="IceGrid.Node.Trace.Replica" value="0"/>
<property name="IceGrid.Node.Trace.Adapter" value="0"/>
<property name="Ice.Trace.Network" value="0"/>
+ <property name="Ice.Admin.Endpoints" value=""/>
</server>
</server-template>
@@ -48,6 +49,7 @@
<property name="Ice.Trace.Network" value="0"/>
<property name="IceGrid.Registry.Trace.Locator" value="0"/>
<property name="IceGrid.Registry.UserAccounts" value="${test.dir}/useraccounts.txt"/>
+ <property name="Ice.Admin.Endpoints" value=""/>
</server>
</server-template>
diff --git a/cpp/test/IceGrid/session/AllTests.cpp b/cpp/test/IceGrid/session/AllTests.cpp
index 3237e10f604..e2de7561ffd 100644
--- a/cpp/test/IceGrid/session/AllTests.cpp
+++ b/cpp/test/IceGrid/session/AllTests.cpp
@@ -1777,12 +1777,14 @@ allTests(const Ice::CommunicatorPtr& communicator)
AdapterDescriptor adapter;
adapter.name = "IceGrid.Node";
adapter.id = "IceGrid.Node.node-1";
- adapter.registerProcess = true;
+ adapter.registerProcess = true; // just to tell the node to expect a Process (supplied by node-1)
adapter.serverLifetime = false;
server->adapters.push_back(adapter);
addProperty(server, "IceGrid.Node.Name", "node-1");
addProperty(server, "IceGrid.Node.Data", properties->getProperty("TestDir") + "/db/node-1");
addProperty(server, "IceGrid.Node.Endpoints", "default");
+ // addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); // registering two processes doesn't work for some reason
+
NodeDescriptor node;
node.servers.push_back(server);
nodeApp.nodes["localnode"] = node;
@@ -1829,10 +1831,11 @@ allTests(const Ice::CommunicatorPtr& communicator)
server->pwd = ".";
adapter.name = "Server";
adapter.id = "ServerAdapter";
- adapter.registerProcess = true;
+ adapter.registerProcess = false;
adapter.serverLifetime = true;
server->adapters.push_back(adapter);
addProperty(server, "Server.Endpoints", "default");
+ addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1");
node = NodeDescriptor();
node.servers.push_back(server);
testApp.nodes["localnode"] = node;
diff --git a/cpp/test/IceGrid/session/application.xml b/cpp/test/IceGrid/session/application.xml
index ddc726028a2..119151cc9ee 100644
--- a/cpp/test/IceGrid/session/application.xml
+++ b/cpp/test/IceGrid/session/application.xml
@@ -13,8 +13,7 @@
<property name="Glacier2.Client.Endpoints" value="${endpoints}"/>
<property name="Glacier2.Server.Endpoints" value="tcp -h 127.0.0.1"/>
<property name="Glacier2.Admin.Endpoints" value="tcp -h 127.0.0.1"/>
- <property name="Glacier2.Admin.RegisterProcess" value="1"/>
-
+
<property name="Glacier2.SessionManager" value="${manager}"/>
<property name="Glacier2.SSLSessionManager" value="${ssl-manager}"/>
<property name="Glacier2.PermissionsVerifier" value="${verifier}"/>
@@ -37,7 +36,7 @@
ssl-manager="IceGrid/AdminSSLSessionManager"/>
<server id="PermissionsVerifierServer" exe="${test.dir}/server" activation="on-demand">
- <adapter name="Server" register-process="true" endpoints="default -h 127.0.0.1">
+ <adapter name="Server" endpoints="default -h 127.0.0.1">
<object identity="ClientPermissionsVerifier"/>
<object identity="SSLPermissionsVerifier"/>
</adapter>
diff --git a/cpp/test/IceGrid/simple/simple_server.xml b/cpp/test/IceGrid/simple/simple_server.xml
index 755fb871c77..e2dacca9b46 100644
--- a/cpp/test/IceGrid/simple/simple_server.xml
+++ b/cpp/test/IceGrid/simple/simple_server.xml
@@ -3,7 +3,7 @@
<node name="localnode">
<server id="server" exe="${test.dir}/server" activation="on-demand">
- <adapter name="TestAdapter" endpoints="default" register-process="true" id="TestAdapter">
+ <adapter name="TestAdapter" endpoints="default" id="TestAdapter">
<object identity="test" type="Test"/>
</adapter>
diff --git a/cpp/test/IceGrid/update/AllTests.cpp b/cpp/test/IceGrid/update/AllTests.cpp
index 899d00d1247..fc0cf9e4644 100644
--- a/cpp/test/IceGrid/update/AllTests.cpp
+++ b/cpp/test/IceGrid/update/AllTests.cpp
@@ -148,10 +148,11 @@ allTests(const Ice::CommunicatorPtr& communicator)
server->id = "Server";
server->exe = properties->getProperty("TestDir") + "/server";
server->pwd = ".";
+ addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1");
AdapterDescriptor adapter;
adapter.name = "Server";
adapter.id = "ServerAdapter";
- adapter.registerProcess = true;
+ adapter.registerProcess = false;
addProperty(server, "Server.Endpoints", "default");
ObjectDescriptor object;
object.id = communicator->stringToIdentity("test");
@@ -211,10 +212,11 @@ allTests(const Ice::CommunicatorPtr& communicator)
server->id = "${name}";
server->exe = "${test.dir}/server";
server->pwd = ".";
+ addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1");
adapter = AdapterDescriptor();
adapter.name = "Server";
adapter.id = "${server}";
- adapter.registerProcess = true;
+ adapter.registerProcess = false;
addProperty(server, "Server.Endpoints", "default");
object = ObjectDescriptor();
object.id = communicator->stringToIdentity("${server}");
@@ -588,13 +590,14 @@ allTests(const Ice::CommunicatorPtr& communicator)
AdapterDescriptor adapter;
adapter.name = "${service}";
adapter.id = "${server}.${service}";
- adapter.registerProcess = true;
+ adapter.registerProcess = false;
addProperty(service, "${service}.Endpoints", "default");
service->adapters.push_back(adapter);
IceBoxDescriptorPtr server = new IceBoxDescriptor();
server->id = "IceBox";
server->exe = properties->getProperty("IceDir") + "/bin/icebox";
+ addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1");
server->services.resize(3);
server->services[0].descriptor = ServiceDescriptorPtr::dynamicCast(service->ice_clone());
service->name = "Service2";
@@ -1147,6 +1150,8 @@ allTests(const Ice::CommunicatorPtr& communicator)
addProperty(server, "IceGrid.Node.Data", properties->getProperty("TestDir") + "/db/node-${index}");
addProperty(server, "IceGrid.Node.Endpoints", "default");
addProperty(server, "IceGrid.Node.PropertiesOverride", properties->getProperty("NodePropertiesOverride"));
+
+
nodeApp.serverTemplates["nodeTemplate"].descriptor = server;
nodeApp.serverTemplates["nodeTemplate"].parameters.push_back("index");
@@ -1201,9 +1206,10 @@ allTests(const Ice::CommunicatorPtr& communicator)
server->id = "Server";
server->exe = properties->getProperty("TestDir") + "/server";
server->pwd = ".";
+ addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1");
adapter.name = "Server";
adapter.id = "ServerAdapter";
- adapter.registerProcess = true;
+ adapter.registerProcess = false;
adapter.serverLifetime = true;
server->adapters.push_back(adapter);
addProperty(server, "Server.Endpoints", "default");