diff options
author | Benoit Foucher <benoit@zeroc.com> | 2012-10-05 17:26:44 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2012-10-05 17:26:44 +0200 |
commit | 44c8fc867ecb65daeddc5aa121ccb4baad16007d (patch) | |
tree | d778cff1613749c372f612927c0d02086a68ee0a /cpp | |
parent | Update IceGridGUI requirements in java/README (diff) | |
download | ice-44c8fc867ecb65daeddc5aa121ccb4baad16007d.tar.bz2 ice-44c8fc867ecb65daeddc5aa121ccb4baad16007d.tar.xz ice-44c8fc867ecb65daeddc5aa121ccb4baad16007d.zip |
Fixed property validations, added C# metrics test
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/include/Ice/MetricsAdminI.h | 4 | ||||
-rw-r--r-- | cpp/src/Ice/MetricsAdminI.cpp | 59 | ||||
-rw-r--r-- | cpp/src/slice2cs/Gen.cpp | 10 | ||||
-rw-r--r-- | cpp/src/slice2java/Gen.cpp | 2 | ||||
-rw-r--r-- | cpp/test/Ice/admin/AllTests.cpp | 24 | ||||
-rw-r--r-- | cpp/test/Ice/metrics/AllTests.cpp | 2 |
6 files changed, 50 insertions, 51 deletions
diff --git a/cpp/include/Ice/MetricsAdminI.h b/cpp/include/Ice/MetricsAdminI.h index f7bcb28fce6..aa330e41188 100644 --- a/cpp/include/Ice/MetricsAdminI.h +++ b/cpp/include/Ice/MetricsAdminI.h @@ -87,7 +87,6 @@ public: virtual MetricsMapI* clone() const = 0; - void validateProperties(const std::string&, const Ice::PropertiesPtr&, const std::vector<std::string>&); const Ice::PropertyDict& getProperties() const; protected: @@ -286,7 +285,6 @@ public: std::make_pair(p->second.first, p->second.second->create(subMapPrefix, properties)))); } - validateProperties(mapPrefix, properties, subMapNames); } MetricsMapT(const MetricsMapT& other) : MetricsMapI(other) @@ -404,7 +402,7 @@ public: key = os.str(); } } - catch(const std::exception&) + catch(const std::exception& ex) { return 0; } diff --git a/cpp/src/Ice/MetricsAdminI.cpp b/cpp/src/Ice/MetricsAdminI.cpp index 74b84487842..3e371db2a32 100644 --- a/cpp/src/Ice/MetricsAdminI.cpp +++ b/cpp/src/Ice/MetricsAdminI.cpp @@ -26,7 +26,7 @@ using namespace IceMX; namespace { -const string viewSuffixes[] = +const string suffixes[] = { "Disabled", "GroupBy", @@ -36,23 +36,15 @@ const string viewSuffixes[] = "Map.*", }; -const string mapSuffixes[] = -{ - "GroupBy", - "Accept.*", - "Reject.*", - "RetainDetached", -}; - void -validateProperties(const string& prefix, const PropertiesPtr& properties, const string* suffixes, int cnt) +validateProperties(const string& prefix, const PropertiesPtr& properties) { vector<string> unknownProps; PropertyDict props = properties->getPropertiesForPrefix(prefix); for(PropertyDict::const_iterator p = props.begin(); p != props.end(); ++p) { bool valid = false; - for(int i = 0; i < cnt; ++i) + for(int i = 0; i < sizeof(suffixes) / sizeof(*suffixes); ++i) { string prop = prefix + suffixes[i]; if(IceUtilInternal::match(p->first, prop)) @@ -135,6 +127,8 @@ MetricsMapI::MetricsMapI(const std::string& mapPrefix, const PropertiesPtr& prop _accept(parseRule(properties, mapPrefix + "Accept")), _reject(parseRule(properties, mapPrefix + "Reject")) { + validateProperties(mapPrefix, properties); + string groupBy = properties->getPropertyWithDefault(mapPrefix + "GroupBy", "id"); vector<string>& groupByAttributes = const_cast<vector<string>&>(_groupByAttributes); vector<string>& groupBySeparators = const_cast<vector<string>&>(_groupBySeparators); @@ -189,25 +183,6 @@ MetricsMapI::MetricsMapI(const MetricsMapI& map) : { } -void -MetricsMapI::validateProperties(const string& prefix, const Ice::PropertiesPtr& props, const vector<string>& subMaps) -{ - if(subMaps.empty()) - { - ::validateProperties(prefix, props, mapSuffixes, sizeof(mapSuffixes) / sizeof(*mapSuffixes)); - return; - } - - vector<string> suffixes(mapSuffixes, mapSuffixes + sizeof(mapSuffixes) / sizeof(*mapSuffixes)); - for(vector<string>::const_iterator p = subMaps.begin(); p != subMaps.end(); ++p) - { - const string suffix = "Map." + *p + "."; - ::validateProperties(prefix + suffix, props, mapSuffixes, sizeof(mapSuffixes) / sizeof(*mapSuffixes)); - suffixes.push_back(suffix + '*'); - } - ::validateProperties(prefix, props, &suffixes[0], suffixes.size()); -} - const Ice::PropertyDict& MetricsMapI::getProperties() const { @@ -249,8 +224,13 @@ MetricsViewI::addOrUpdateMap(const PropertiesPtr& properties, const string& mapN if(mapProps.empty()) { // This map isn't configured for this view. - _maps.erase(mapName); - return true; + map<string, MetricsMapIPtr>::iterator q = _maps.find(mapName); + if(q != _maps.end()) + { + _maps.erase(q); + return true; + } + return false; } } else @@ -259,6 +239,18 @@ MetricsViewI::addOrUpdateMap(const PropertiesPtr& properties, const string& mapN mapProps = properties->getPropertiesForPrefix(mapPrefix); } + if(properties->getPropertyAsInt(mapPrefix + "Disabled") > 0) + { + // This map is disabled for this view. + map<string, MetricsMapIPtr>::iterator q = _maps.find(mapName); + if(q != _maps.end()) + { + _maps.erase(q); + return true; + } + return false; + } + map<string, MetricsMapIPtr>::iterator q = _maps.find(mapName); if(q != _maps.end() && q->second->getProperties() == mapProps) { @@ -384,8 +376,7 @@ MetricsAdminI::updateViews() continue; // View already configured. } - validateProperties(viewsPrefix + viewName + ".", _properties, viewSuffixes, sizeof(viewSuffixes) / - sizeof(*viewSuffixes)); + validateProperties(viewsPrefix + viewName + ".", _properties); if(_properties->getPropertyAsIntWithDefault(viewsPrefix + viewName + ".Disabled", 0) > 0) { diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp index 1671d887252..7554ad7de0b 100644 --- a/cpp/src/slice2cs/Gen.cpp +++ b/cpp/src/slice2cs/Gen.cpp @@ -4841,6 +4841,8 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p) _out << nl << "Ice.Instrumentation.InvocationObserver observer__ = IceInternal.ObserverHelper.get(this, __"; _out << op->name() << "_name, context__);"; _out << nl << "int cnt__ = 0;"; + _out << nl << "try"; + _out << sb; _out << nl << "while(true)"; _out << sb; _out << nl << "Ice.ObjectDel_ delBase__ = null;"; @@ -4879,6 +4881,14 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p) _out << nl << "handleException__(delBase__, ex__, true, ref cnt__, observer__);"; _out << eb; _out << eb; + _out << eb; + _out << nl << "finally"; + _out << sb; + _out << nl << "if(observer__ != null)"; + _out << sb; + _out << nl << "observer__.detach();"; + _out << eb; + _out << eb; _out << eb; } diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp index b3769e3310d..d0c4be1a61f 100644 --- a/cpp/src/slice2java/Gen.cpp +++ b/cpp/src/slice2java/Gen.cpp @@ -4368,7 +4368,7 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p) out << nl << "__ctx = _emptyContext;"; out << eb; out << nl << "final Ice.Instrumentation.InvocationObserver __observer = IceInternal.ObserverHelper.get(this, "; - out << "\"" << opName << "\");"; + out << "\"" << opName << "\", __ctx);"; out << nl << "int __cnt = 0;"; out << nl << "try"; out << sb; diff --git a/cpp/test/Ice/admin/AllTests.cpp b/cpp/test/Ice/admin/AllTests.cpp index 8e0cac56bfe..3a87c4c62bf 100644 --- a/cpp/test/Ice/admin/AllTests.cpp +++ b/cpp/test/Ice/admin/AllTests.cpp @@ -78,7 +78,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // Ice::InitializationData init; init.properties = Ice::createProperties(); - init.properties->setProperty("Ice.Admin.Endpoints", "tcp"); + init.properties->setProperty("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); init.properties->setProperty("Ice.Admin.InstanceName", "Test"); Ice::CommunicatorPtr com = Ice::initialize(init); testFacets(com); @@ -90,7 +90,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // Ice::InitializationData init; init.properties = Ice::createProperties(); - init.properties->setProperty("Ice.Admin.Endpoints", "tcp"); + init.properties->setProperty("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); init.properties->setProperty("Ice.Admin.InstanceName", "Test"); init.properties->setProperty("Ice.Admin.Facets", "Properties"); Ice::CommunicatorPtr com = Ice::initialize(init); @@ -111,7 +111,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // Ice::InitializationData init; init.properties = Ice::createProperties(); - init.properties->setProperty("Ice.Admin.Endpoints", "tcp"); + init.properties->setProperty("Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); init.properties->setProperty("Ice.Admin.InstanceName", "Test"); init.properties->setProperty("Ice.Admin.DelayCreation", "1"); Ice::CommunicatorPtr com = Ice::initialize(init); @@ -132,7 +132,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // Test: Verify that Process::shutdown() operation shuts down the communicator. // Ice::PropertyDict props; - props["Ice.Admin.Endpoints"] = "tcp"; + props["Ice.Admin.Endpoints"] = "tcp -h 127.0.0.1"; props["Ice.Admin.InstanceName"] = "Test"; RemoteCommunicatorPrx com = factory->createCommunicator(props); Ice::ObjectPrx obj = com->getAdmin(); @@ -146,7 +146,7 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "testing properties facet... " << flush; { Ice::PropertyDict props; - props["Ice.Admin.Endpoints"] = "tcp"; + props["Ice.Admin.Endpoints"] = "tcp -h 127.0.0.1"; props["Ice.Admin.InstanceName"] = "Test"; props["Prop1"] = "1"; props["Prop2"] = "2"; @@ -166,7 +166,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // Ice::PropertyDict pd = pa->getPropertiesForPrefix(""); test(pd.size() == 5); - test(pd["Ice.Admin.Endpoints"] == "tcp"); + test(pd["Ice.Admin.Endpoints"] == "tcp -h 127.0.0.1"); test(pd["Ice.Admin.InstanceName"] == "Test"); test(pd["Prop1"] == "1"); test(pd["Prop2"] == "2"); @@ -210,7 +210,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // Test: Verify that the custom facet is present. // Ice::PropertyDict props; - props["Ice.Admin.Endpoints"] = "tcp"; + props["Ice.Admin.Endpoints"] = "tcp -h 127.0.0.1"; props["Ice.Admin.InstanceName"] = "Test"; RemoteCommunicatorPrx com = factory->createCommunicator(props); Ice::ObjectPrx obj = com->getAdmin(); @@ -227,7 +227,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // meaning no other facet is available. // Ice::PropertyDict props; - props["Ice.Admin.Endpoints"] = "tcp"; + props["Ice.Admin.Endpoints"] = "tcp -h 127.0.0.1"; props["Ice.Admin.InstanceName"] = "Test"; props["Ice.Admin.Facets"] = "Properties"; RemoteCommunicatorPrx com = factory->createCommunicator(props); @@ -244,7 +244,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // meaning no other facet is available. // Ice::PropertyDict props; - props["Ice.Admin.Endpoints"] = "tcp"; + props["Ice.Admin.Endpoints"] = "tcp -h 127.0.0.1"; props["Ice.Admin.InstanceName"] = "Test"; props["Ice.Admin.Facets"] = "Process"; RemoteCommunicatorPrx com = factory->createCommunicator(props); @@ -261,7 +261,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // meaning no other facet is available. // Ice::PropertyDict props; - props["Ice.Admin.Endpoints"] = "tcp"; + props["Ice.Admin.Endpoints"] = "tcp -h 127.0.0.1"; props["Ice.Admin.InstanceName"] = "Test"; props["Ice.Admin.Facets"] = "TestFacet"; RemoteCommunicatorPrx com = factory->createCommunicator(props); @@ -278,7 +278,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // facet names. // Ice::PropertyDict props; - props["Ice.Admin.Endpoints"] = "tcp"; + props["Ice.Admin.Endpoints"] = "tcp -h 127.0.0.1"; props["Ice.Admin.InstanceName"] = "Test"; props["Ice.Admin.Facets"] = "Properties TestFacet"; RemoteCommunicatorPrx com = factory->createCommunicator(props); @@ -297,7 +297,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // facet names. // Ice::PropertyDict props; - props["Ice.Admin.Endpoints"] = "tcp"; + props["Ice.Admin.Endpoints"] = "tcp -h 127.0.0.1"; props["Ice.Admin.InstanceName"] = "Test"; props["Ice.Admin.Facets"] = "TestFacet, Process"; RemoteCommunicatorPrx com = factory->createCommunicator(props); diff --git a/cpp/test/Ice/metrics/AllTests.cpp b/cpp/test/Ice/metrics/AllTests.cpp index 7b644ef383e..85129a81b55 100644 --- a/cpp/test/Ice/metrics/AllTests.cpp +++ b/cpp/test/Ice/metrics/AllTests.cpp @@ -172,7 +172,7 @@ testAttribute(const IceMX::MetricsAdminPrx& metrics, test(false); } } - else if(view[map][0]->id != value) + else if(view[map].size() != 1 || view[map][0]->id != value) { cerr << "invalid attribute value: " << attr << " = " << value << " got " << view[map][0]->id << endl; test(false); |