You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ch...@apache.org on 2014/07/11 22:43:51 UTC
svn commit: r1609828 - in /qpid/trunk/qpid/cpp/src: qpid/acl/AclLexer.cpp
qpid/acl/AclLexer.h tests/Acl.cpp tests/CMakeLists.txt
Author: chug
Date: Fri Jul 11 20:43:51 2014
New Revision: 1609828
URL: http://svn.apache.org/r1609828
Log:
QPID-5890: Refactoring AclModule.h
* make single instances of strings associated with enums
* make more compact search functions
* make string definitions const
* return 'const string&' instead of copies of temporaries
* add self test as string defs sanity check
* export AclHelper to satisfy tests (!!)
Added:
qpid/trunk/qpid/cpp/src/tests/Acl.cpp
Modified:
qpid/trunk/qpid/cpp/src/qpid/acl/AclLexer.cpp
qpid/trunk/qpid/cpp/src/qpid/acl/AclLexer.h
qpid/trunk/qpid/cpp/src/tests/CMakeLists.txt
Modified: qpid/trunk/qpid/cpp/src/qpid/acl/AclLexer.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/acl/AclLexer.cpp?rev=1609828&r1=1609827&r2=1609828&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/acl/AclLexer.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/acl/AclLexer.cpp Fri Jul 11 20:43:51 2014
@@ -30,189 +30,107 @@
namespace qpid {
namespace acl {
+// ObjectType
+const std::string objectNames[OBJECTSIZE] = {
+ "queue", "exchange", "broker", "link", "method", "query" };
+
ObjectType AclHelper::getObjectType(const std::string& str) {
- if (str.compare("queue") == 0) return OBJ_QUEUE;
- if (str.compare("exchange") == 0) return OBJ_EXCHANGE;
- if (str.compare("broker") == 0) return OBJ_BROKER;
- if (str.compare("link") == 0) return OBJ_LINK;
- if (str.compare("method") == 0) return OBJ_METHOD;
- if (str.compare("query") == 0) return OBJ_QUERY;
+ for (int i=0; i< OBJECTSIZE; ++i) {
+ if (str.compare(objectNames[i]) == 0)
+ return ObjectType(i);
+ }
throw qpid::Exception(str);
}
-std::string AclHelper::getObjectTypeStr(const ObjectType o) {
- switch (o) {
- case OBJ_QUEUE: return "queue";
- case OBJ_EXCHANGE: return "exchange";
- case OBJ_BROKER: return "broker";
- case OBJ_LINK: return "link";
- case OBJ_METHOD: return "method";
- case OBJ_QUERY: return "query";
- default: assert(false); // should never get here
- }
- return "";
+
+const std::string& AclHelper::getObjectTypeStr(const ObjectType o) {
+ return objectNames[o];
}
+
+// Action
+const std::string actionNames[ACTIONSIZE] = {
+ "consume", "publish", "create", "access", "bind",
+ "unbind", "delete", "purge", "update", "move",
+ "redirect", "reroute" };
+
Action AclHelper::getAction(const std::string& str) {
- if (str.compare("consume") == 0) return ACT_CONSUME;
- if (str.compare("publish") == 0) return ACT_PUBLISH;
- if (str.compare("create") == 0) return ACT_CREATE;
- if (str.compare("access") == 0) return ACT_ACCESS;
- if (str.compare("bind") == 0) return ACT_BIND;
- if (str.compare("unbind") == 0) return ACT_UNBIND;
- if (str.compare("delete") == 0) return ACT_DELETE;
- if (str.compare("purge") == 0) return ACT_PURGE;
- if (str.compare("update") == 0) return ACT_UPDATE;
- if (str.compare("move") == 0) return ACT_MOVE;
- if (str.compare("redirect") == 0) return ACT_REDIRECT;
- if (str.compare("reroute") == 0) return ACT_REROUTE;
+ for (int i=0; i< ACTIONSIZE; ++i) {
+ if (str.compare(actionNames[i]) == 0)
+ return Action(i);
+ }
throw qpid::Exception(str);
}
-std::string AclHelper::getActionStr(const Action a) {
- switch (a) {
- case ACT_CONSUME: return "consume";
- case ACT_PUBLISH: return "publish";
- case ACT_CREATE: return "create";
- case ACT_ACCESS: return "access";
- case ACT_BIND: return "bind";
- case ACT_UNBIND: return "unbind";
- case ACT_DELETE: return "delete";
- case ACT_PURGE: return "purge";
- case ACT_UPDATE: return "update";
- case ACT_MOVE: return "move";
- case ACT_REDIRECT: return "redirect";
- case ACT_REROUTE: return "reroute";
- default: assert(false); // should never get here
- }
- return "";
+
+const std::string& AclHelper::getActionStr(const Action a) {
+ return actionNames[a];
}
+
+// Property
+// These are shared between broker and acl using code enums.
+const std::string propertyNames[PROPERTYSIZE] = {
+ "name", "durable", "owner", "routingkey", "autodelete", "exclusive", "type",
+ "alternate", "queuename", "exchangename", "schemapackage",
+ "schemaclass", "policytype", "paging",
+
+ "maxpages", "maxpagefactor",
+ "maxqueuesize", "maxqueuecount", "maxfilesize", "maxfilecount"};
+
Property AclHelper::getProperty(const std::string& str) {
- if (str.compare("name") == 0) return PROP_NAME;
- if (str.compare("durable") == 0) return PROP_DURABLE;
- if (str.compare("owner") == 0) return PROP_OWNER;
- if (str.compare("routingkey") == 0) return PROP_ROUTINGKEY;
- if (str.compare("autodelete") == 0) return PROP_AUTODELETE;
- if (str.compare("exclusive") == 0) return PROP_EXCLUSIVE;
- if (str.compare("type") == 0) return PROP_TYPE;
- if (str.compare("alternate") == 0) return PROP_ALTERNATE;
- if (str.compare("queuename") == 0) return PROP_QUEUENAME;
- if (str.compare("exchangename") == 0) return PROP_EXCHANGENAME;
- if (str.compare("schemapackage") == 0) return PROP_SCHEMAPACKAGE;
- if (str.compare("schemaclass") == 0) return PROP_SCHEMACLASS;
- if (str.compare("policytype") == 0) return PROP_POLICYTYPE;
- if (str.compare("paging") == 0) return PROP_PAGING;
- if (str.compare("maxpages") == 0) return PROP_MAXPAGES;
- if (str.compare("maxpagefactor") == 0) return PROP_MAXPAGEFACTOR;
- if (str.compare("maxqueuesize") == 0) return PROP_MAXQUEUESIZE;
- if (str.compare("maxqueuecount") == 0) return PROP_MAXQUEUECOUNT;
- if (str.compare("maxfilesize") == 0) return PROP_MAXFILESIZE;
- if (str.compare("maxfilecount") == 0) return PROP_MAXFILECOUNT;
+ for (int i=0; i< PROPERTYSIZE; ++i) {
+ if (str.compare(propertyNames[i]) == 0)
+ return Property(i);
+ }
throw qpid::Exception(str);
}
-std::string AclHelper::getPropertyStr(const Property p) {
- switch (p) {
- case PROP_NAME: return "name";
- case PROP_DURABLE: return "durable";
- case PROP_OWNER: return "owner";
- case PROP_ROUTINGKEY: return "routingkey";
- case PROP_AUTODELETE: return "autodelete";
- case PROP_EXCLUSIVE: return "exclusive";
- case PROP_TYPE: return "type";
- case PROP_ALTERNATE: return "alternate";
- case PROP_QUEUENAME: return "queuename";
- case PROP_EXCHANGENAME: return "exchangename";
- case PROP_SCHEMAPACKAGE: return "schemapackage";
- case PROP_SCHEMACLASS: return "schemaclass";
- case PROP_POLICYTYPE: return "policytype";
- case PROP_PAGING: return "paging";
- case PROP_MAXPAGES: return "maxpages";
- case PROP_MAXPAGEFACTOR: return "maxpagefactor";
- case PROP_MAXQUEUESIZE: return "maxqueuesize";
- case PROP_MAXQUEUECOUNT: return "maxqueuecount";
- case PROP_MAXFILESIZE: return "maxfilesize";
- case PROP_MAXFILECOUNT: return "maxfilecount";
- default: assert(false); // should never get here
- }
- return "";
+
+const std::string& AclHelper::getPropertyStr(const Property p) {
+ return propertyNames[p];
}
+
+// SpecProperty
+// These are shared between user acl files and acl using text.
+const std::string specPropertyNames[SPECPROPSIZE] = {
+ "name", "durable", "owner", "routingkey", "autodelete", "exclusive", "type",
+ "alternate", "queuename", "exchangename", "schemapackage",
+ "schemaclass", "policytype", "paging",
+
+ "queuemaxsizelowerlimit", "queuemaxsizeupperlimit",
+ "queuemaxcountlowerlimit", "queuemaxcountupperlimit",
+ "filemaxsizelowerlimit", "filemaxsizeupperlimit",
+ "filemaxcountlowerlimit", "filemaxcountupperlimit",
+ "pageslowerlimit", "pagesupperlimit",
+ "pagefactorlowerlimit", "pagefactorupperlimit" };
+
SpecProperty AclHelper::getSpecProperty(const std::string& str) {
- if (str.compare("name") == 0) return SPECPROP_NAME;
- if (str.compare("durable") == 0) return SPECPROP_DURABLE;
- if (str.compare("owner") == 0) return SPECPROP_OWNER;
- if (str.compare("routingkey") == 0) return SPECPROP_ROUTINGKEY;
- if (str.compare("autodelete") == 0) return SPECPROP_AUTODELETE;
- if (str.compare("exclusive") == 0) return SPECPROP_EXCLUSIVE;
- if (str.compare("type") == 0) return SPECPROP_TYPE;
- if (str.compare("alternate") == 0) return SPECPROP_ALTERNATE;
- if (str.compare("queuename") == 0) return SPECPROP_QUEUENAME;
- if (str.compare("exchangename") == 0) return SPECPROP_EXCHANGENAME;
- if (str.compare("schemapackage") == 0) return SPECPROP_SCHEMAPACKAGE;
- if (str.compare("schemaclass") == 0) return SPECPROP_SCHEMACLASS;
- if (str.compare("policytype") == 0) return SPECPROP_POLICYTYPE;
- if (str.compare("paging") == 0) return SPECPROP_PAGING;
- if (str.compare("queuemaxsizelowerlimit") == 0) return SPECPROP_MAXQUEUESIZELOWERLIMIT;
- if (str.compare("queuemaxsizeupperlimit") == 0) return SPECPROP_MAXQUEUESIZEUPPERLIMIT;
- if (str.compare("queuemaxcountlowerlimit") == 0) return SPECPROP_MAXQUEUECOUNTLOWERLIMIT;
- if (str.compare("queuemaxcountupperlimit") == 0) return SPECPROP_MAXQUEUECOUNTUPPERLIMIT;
- if (str.compare("filemaxsizelowerlimit") == 0) return SPECPROP_MAXFILESIZELOWERLIMIT;
- if (str.compare("filemaxsizeupperlimit") == 0) return SPECPROP_MAXFILESIZEUPPERLIMIT;
- if (str.compare("filemaxcountlowerlimit") == 0) return SPECPROP_MAXFILECOUNTLOWERLIMIT;
- if (str.compare("filemaxcountupperlimit") == 0) return SPECPROP_MAXFILECOUNTUPPERLIMIT;
- if (str.compare("pageslowerlimit") == 0) return SPECPROP_MAXPAGESLOWERLIMIT;
- if (str.compare("pagesupperlimit") == 0) return SPECPROP_MAXPAGESUPPERLIMIT;
- if (str.compare("pagefactorlowerlimit") == 0) return SPECPROP_MAXPAGEFACTORLOWERLIMIT;
- if (str.compare("pagefactorupperlimit") == 0) return SPECPROP_MAXPAGEFACTORUPPERLIMIT;
+ for (int i=0; i< SPECPROPSIZE; ++i) {
+ if (str.compare(specPropertyNames[i]) == 0)
+ return SpecProperty(i);
+ }
// Allow old names in ACL file as aliases for newly-named properties
- if (str.compare("maxqueuesize") == 0) return SPECPROP_MAXQUEUESIZEUPPERLIMIT;
- if (str.compare("maxqueuecount") == 0) return SPECPROP_MAXQUEUECOUNTUPPERLIMIT;
+ if (str.compare("maxqueuesize") == 0)
+ return SPECPROP_MAXQUEUESIZEUPPERLIMIT;
+ if (str.compare("maxqueuecount") == 0)
+ return SPECPROP_MAXQUEUECOUNTUPPERLIMIT;
throw qpid::Exception(str);
}
-std::string AclHelper::getPropertyStr(const SpecProperty p) {
- switch (p) {
- case SPECPROP_NAME: return "name";
- case SPECPROP_DURABLE: return "durable";
- case SPECPROP_OWNER: return "owner";
- case SPECPROP_ROUTINGKEY: return "routingkey";
- case SPECPROP_AUTODELETE: return "autodelete";
- case SPECPROP_EXCLUSIVE: return "exclusive";
- case SPECPROP_TYPE: return "type";
- case SPECPROP_ALTERNATE: return "alternate";
- case SPECPROP_QUEUENAME: return "queuename";
- case SPECPROP_EXCHANGENAME: return "exchangename";
- case SPECPROP_SCHEMAPACKAGE: return "schemapackage";
- case SPECPROP_SCHEMACLASS: return "schemaclass";
- case SPECPROP_POLICYTYPE: return "policytype";
- case SPECPROP_PAGING: return "paging";
- case SPECPROP_MAXQUEUESIZELOWERLIMIT: return "queuemaxsizelowerlimit";
- case SPECPROP_MAXQUEUESIZEUPPERLIMIT: return "queuemaxsizeupperlimit";
- case SPECPROP_MAXQUEUECOUNTLOWERLIMIT: return "queuemaxcountlowerlimit";
- case SPECPROP_MAXQUEUECOUNTUPPERLIMIT: return "queuemaxcountupperlimit";
- case SPECPROP_MAXFILESIZELOWERLIMIT: return "filemaxsizelowerlimit";
- case SPECPROP_MAXFILESIZEUPPERLIMIT: return "filemaxsizeupperlimit";
- case SPECPROP_MAXFILECOUNTLOWERLIMIT: return "filemaxcountlowerlimit";
- case SPECPROP_MAXFILECOUNTUPPERLIMIT: return "filemaxcountupperlimit";
- case SPECPROP_MAXPAGESLOWERLIMIT: return "pageslowerlimit";
- case SPECPROP_MAXPAGESUPPERLIMIT: return "pagesupperlimit";
- case SPECPROP_MAXPAGEFACTORLOWERLIMIT: return "pagefactorlowerlimit";
- case SPECPROP_MAXPAGEFACTORUPPERLIMIT: return "pagefactorupperlimit";
- default: assert(false); // should never get here
- }
- return "";
+
+const std::string& AclHelper::getPropertyStr(const SpecProperty p) {
+ return specPropertyNames[p];
}
+
+// AclResult
+const std::string resultNames[RESULTSIZE] = {
+ "allow", "allow-log", "deny", "deny-log" };
+
AclResult AclHelper::getAclResult(const std::string& str) {
- if (str.compare("allow") == 0) return ALLOW;
- if (str.compare("allow-log") == 0) return ALLOWLOG;
- if (str.compare("deny") == 0) return DENY;
- if (str.compare("deny-log") == 0) return DENYLOG;
+ for (int i=0; i< RESULTSIZE; ++i) {
+ if (str.compare(resultNames[i]) == 0)
+ return AclResult(i);
+ }
throw qpid::Exception(str);
}
-std::string AclHelper::getAclResultStr(const AclResult r) {
- switch (r) {
- case ALLOW: return "allow";
- case ALLOWLOG: return "allow-log";
- case DENY: return "deny";
- case DENYLOG: return "deny-log";
- default: assert(false); // should never get here
- }
- return "";
+
+const std::string& AclHelper::getAclResultStr(const AclResult r) {
+ return resultNames[r];
}
// This map contains the legal combinations of object/action/properties
Modified: qpid/trunk/qpid/cpp/src/qpid/acl/AclLexer.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/acl/AclLexer.h?rev=1609828&r1=1609827&r2=1609828&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/acl/AclLexer.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/acl/AclLexer.h Fri Jul 11 20:43:51 2014
@@ -21,6 +21,7 @@
#include "qpid/Exception.h"
+#include "qpid/broker/BrokerImportExport.h"
#include <boost/shared_ptr.hpp>
#include <iostream>
#include <map>
@@ -121,30 +122,34 @@ namespace acl {
SPECPROP_MAXPAGESLOWERLIMIT,
SPECPROP_MAXPAGESUPPERLIMIT,
SPECPROP_MAXPAGEFACTORLOWERLIMIT,
- SPECPROP_MAXPAGEFACTORUPPERLIMIT };
+ SPECPROP_MAXPAGEFACTORUPPERLIMIT,
+ SPECPROPSIZE // SPECPROPSIZE must be last
+ };
// AclResult shared between ACL spec and ACL authorise interface
enum AclResult {
ALLOW,
ALLOWLOG,
DENY,
- DENYLOG };
+ DENYLOG,
+ RESULTSIZE
+ };
- class AclHelper {
+ QPID_BROKER_CLASS_EXTERN class AclHelper {
private:
AclHelper(){}
public:
- static ObjectType getObjectType(const std::string& str);
- static std::string getObjectTypeStr(const ObjectType o);
- static Action getAction(const std::string& str);
- static std::string getActionStr(const Action a);
- static Property getProperty(const std::string& str);
- static std::string getPropertyStr(const Property p);
- static SpecProperty getSpecProperty(const std::string& str);
- static std::string getPropertyStr(const SpecProperty p);
- static AclResult getAclResult(const std::string& str);
- static std::string getAclResultStr(const AclResult r);
+ static QPID_BROKER_EXTERN ObjectType getObjectType(const std::string& str);
+ static QPID_BROKER_EXTERN const std::string& getObjectTypeStr(const ObjectType o);
+ static QPID_BROKER_EXTERN Action getAction(const std::string& str);
+ static QPID_BROKER_EXTERN const std::string& getActionStr(const Action a);
+ static QPID_BROKER_EXTERN Property getProperty(const std::string& str);
+ static QPID_BROKER_EXTERN const std::string& getPropertyStr(const Property p);
+ static QPID_BROKER_EXTERN SpecProperty getSpecProperty(const std::string& str);
+ static QPID_BROKER_EXTERN const std::string& getPropertyStr(const SpecProperty p);
+ static QPID_BROKER_EXTERN AclResult getAclResult(const std::string& str);
+ static QPID_BROKER_EXTERN const std::string& getAclResultStr(const AclResult r);
typedef std::set<Property> propSet;
typedef boost::shared_ptr<propSet> propSetPtr;
Added: qpid/trunk/qpid/cpp/src/tests/Acl.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/Acl.cpp?rev=1609828&view=auto
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/Acl.cpp (added)
+++ qpid/trunk/qpid/cpp/src/tests/Acl.cpp Fri Jul 11 20:43:51 2014
@@ -0,0 +1,157 @@
+/*
+ *
+ * Copyright (c) 2014 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+#include "unit_test.h"
+#include "test_tools.h"
+#include "qpid/acl/AclLexer.h"
+#include <boost/assign.hpp>
+
+using namespace std;
+using namespace qpid;
+using namespace qpid::acl;
+using namespace boost::assign;
+
+namespace qpid {
+namespace tests {
+
+QPID_AUTO_TEST_SUITE(AclTestSuite)
+
+#define OBJ_ENUMS(e, s) \
+ BOOST_CHECK_EQUAL(AclHelper::getObjectTypeStr((e)),(s)); \
+ BOOST_CHECK_EQUAL(AclHelper::getObjectType((s)),(e))
+
+QPID_AUTO_TEST_CASE(TestLexerObjectEnums) {
+ OBJ_ENUMS(OBJ_QUEUE, "queue");
+ OBJ_ENUMS(OBJ_EXCHANGE, "exchange");
+ OBJ_ENUMS(OBJ_BROKER, "broker");
+ OBJ_ENUMS(OBJ_LINK, "link");
+ OBJ_ENUMS(OBJ_METHOD, "method");
+ OBJ_ENUMS(OBJ_QUERY, "query");
+}
+
+#define ACT_ENUMS(e, s) \
+ BOOST_CHECK_EQUAL(AclHelper::getActionStr((e)),(s)); \
+ BOOST_CHECK_EQUAL(AclHelper::getAction((s)),(e))
+
+QPID_AUTO_TEST_CASE(TestLexerActionEnums) {
+ ACT_ENUMS(ACT_CONSUME, "consume");
+ ACT_ENUMS(ACT_PUBLISH, "publish");
+ ACT_ENUMS(ACT_CREATE, "create");
+ ACT_ENUMS(ACT_ACCESS, "access");
+ ACT_ENUMS(ACT_BIND, "bind");
+ ACT_ENUMS(ACT_UNBIND, "unbind");
+ ACT_ENUMS(ACT_DELETE, "delete");
+ ACT_ENUMS(ACT_PURGE, "purge");
+ ACT_ENUMS(ACT_UPDATE, "update");
+ ACT_ENUMS(ACT_MOVE, "move");
+ ACT_ENUMS(ACT_REDIRECT, "redirect");
+ ACT_ENUMS(ACT_REROUTE, "reroute");
+}
+
+#define PROP_ENUMS(e, s) \
+ BOOST_CHECK_EQUAL(AclHelper::getPropertyStr((e)),(s)); \
+ BOOST_CHECK_EQUAL(AclHelper::getProperty((s)),(e))
+
+QPID_AUTO_TEST_CASE(TestLexerPropertyEnums) {
+ PROP_ENUMS(PROP_NAME, "name");
+ PROP_ENUMS(PROP_DURABLE, "durable");
+ PROP_ENUMS(PROP_OWNER, "owner");
+ PROP_ENUMS(PROP_ROUTINGKEY, "routingkey");
+ PROP_ENUMS(PROP_AUTODELETE, "autodelete");
+ PROP_ENUMS(PROP_EXCLUSIVE, "exclusive");
+ PROP_ENUMS(PROP_TYPE, "type");
+ PROP_ENUMS(PROP_ALTERNATE, "alternate");
+ PROP_ENUMS(PROP_QUEUENAME, "queuename");
+ PROP_ENUMS(PROP_EXCHANGENAME, "exchangename");
+ PROP_ENUMS(PROP_SCHEMAPACKAGE, "schemapackage");
+ PROP_ENUMS(PROP_SCHEMACLASS, "schemaclass");
+ PROP_ENUMS(PROP_POLICYTYPE, "policytype");
+ PROP_ENUMS(PROP_PAGING, "paging");
+ PROP_ENUMS(PROP_MAXPAGES, "maxpages");
+ PROP_ENUMS(PROP_MAXPAGEFACTOR, "maxpagefactor");
+ PROP_ENUMS(PROP_MAXQUEUESIZE, "maxqueuesize");
+ PROP_ENUMS(PROP_MAXQUEUECOUNT, "maxqueuecount");
+ PROP_ENUMS(PROP_MAXFILESIZE, "maxfilesize");
+ PROP_ENUMS(PROP_MAXFILECOUNT, "maxfilecount");
+
+}
+
+#define SPECPROP_ENUMS(e, s) \
+ BOOST_CHECK_EQUAL(AclHelper::getPropertyStr((e)),(s)); \
+ BOOST_CHECK_EQUAL(AclHelper::getSpecProperty((s)),(e))
+
+QPID_AUTO_TEST_CASE(TestLexerSpecPropertyEnums) {
+ SPECPROP_ENUMS(SPECPROP_NAME, "name");
+ SPECPROP_ENUMS(SPECPROP_DURABLE, "durable");
+ SPECPROP_ENUMS(SPECPROP_OWNER, "owner");
+ SPECPROP_ENUMS(SPECPROP_ROUTINGKEY, "routingkey");
+ SPECPROP_ENUMS(SPECPROP_AUTODELETE, "autodelete");
+ SPECPROP_ENUMS(SPECPROP_EXCLUSIVE, "exclusive");
+ SPECPROP_ENUMS(SPECPROP_TYPE, "type");
+ SPECPROP_ENUMS(SPECPROP_ALTERNATE, "alternate");
+ SPECPROP_ENUMS(SPECPROP_QUEUENAME, "queuename");
+ SPECPROP_ENUMS(SPECPROP_EXCHANGENAME, "exchangename");
+ SPECPROP_ENUMS(SPECPROP_SCHEMAPACKAGE, "schemapackage");
+ SPECPROP_ENUMS(SPECPROP_SCHEMACLASS, "schemaclass");
+ SPECPROP_ENUMS(SPECPROP_POLICYTYPE, "policytype");
+ SPECPROP_ENUMS(SPECPROP_PAGING, "paging");
+ SPECPROP_ENUMS(SPECPROP_MAXQUEUESIZELOWERLIMIT, "queuemaxsizelowerlimit");
+ SPECPROP_ENUMS(SPECPROP_MAXQUEUESIZEUPPERLIMIT, "queuemaxsizeupperlimit");
+ SPECPROP_ENUMS(SPECPROP_MAXQUEUECOUNTLOWERLIMIT, "queuemaxcountlowerlimit");
+ SPECPROP_ENUMS(SPECPROP_MAXQUEUECOUNTUPPERLIMIT, "queuemaxcountupperlimit");
+ SPECPROP_ENUMS(SPECPROP_MAXFILESIZELOWERLIMIT, "filemaxsizelowerlimit");
+ SPECPROP_ENUMS(SPECPROP_MAXFILESIZEUPPERLIMIT, "filemaxsizeupperlimit");
+ SPECPROP_ENUMS(SPECPROP_MAXFILECOUNTLOWERLIMIT, "filemaxcountlowerlimit");
+ SPECPROP_ENUMS(SPECPROP_MAXFILECOUNTUPPERLIMIT, "filemaxcountupperlimit");
+ SPECPROP_ENUMS(SPECPROP_MAXPAGESLOWERLIMIT, "pageslowerlimit");
+ SPECPROP_ENUMS(SPECPROP_MAXPAGESUPPERLIMIT, "pagesupperlimit");
+ SPECPROP_ENUMS(SPECPROP_MAXPAGEFACTORLOWERLIMIT, "pagefactorlowerlimit");
+ SPECPROP_ENUMS(SPECPROP_MAXPAGEFACTORUPPERLIMIT, "pagefactorupperlimit");
+
+ BOOST_CHECK_EQUAL(AclHelper::getSpecProperty("maxqueuesize"), SPECPROP_MAXQUEUESIZEUPPERLIMIT);
+ BOOST_CHECK_EQUAL(AclHelper::getSpecProperty("maxqueuecount"), SPECPROP_MAXQUEUECOUNTUPPERLIMIT);
+}
+
+#define RESULT_ENUMS(e, s) \
+ BOOST_CHECK_EQUAL(AclHelper::getAclResultStr((e)),(s)); \
+ BOOST_CHECK_EQUAL(AclHelper::getAclResult((s)),(e))
+
+QPID_AUTO_TEST_CASE(TestLexerResultEnums) {
+ RESULT_ENUMS(ALLOW, "allow");
+ RESULT_ENUMS(ALLOWLOG, "allow-log");
+ RESULT_ENUMS(DENY, "deny");
+ RESULT_ENUMS(DENYLOG, "deny-log");
+}
+
+#define ENUM_ENUMS(enum, func, size) \
+ for (int i=0; i<(int)(size); i++) \
+ BOOST_CHECK((func)( (enum)(i) ).length() != 0 );
+
+QPID_AUTO_TEST_CASE(TextLexerEnumEnums) {
+ ENUM_ENUMS(ObjectType, AclHelper::getObjectTypeStr, OBJECTSIZE);
+ ENUM_ENUMS(Action, AclHelper::getActionStr, ACTIONSIZE);
+ ENUM_ENUMS(Property, AclHelper::getPropertyStr, PROPERTYSIZE);
+ ENUM_ENUMS(SpecProperty, AclHelper::getPropertyStr, SPECPROPSIZE);
+ ENUM_ENUMS(AclResult, AclHelper::getAclResultStr, RESULTSIZE);
+
+}
+
+QPID_AUTO_TEST_SUITE_END()
+
+}} // namespace qpid::tests
Modified: qpid/trunk/qpid/cpp/src/tests/CMakeLists.txt
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/CMakeLists.txt?rev=1609828&r1=1609827&r2=1609828&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/CMakeLists.txt (original)
+++ qpid/trunk/qpid/cpp/src/tests/CMakeLists.txt Fri Jul 11 20:43:51 2014
@@ -166,6 +166,7 @@ set (qpid_test_boost_libs
set(all_unit_tests
AccumulatedAckTest
+ Acl
Array
AsyncCompletion
AtomicValue
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org