You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2014/07/08 22:31:14 UTC

svn commit: r1608947 [2/2] - in /qpid/dispatch/trunk: ./ include/qpid/ include/qpid/dispatch/ python/qpid_dispatch_internal/management/ router/src/ src/ tests/ tests/management/ tools/

Added: qpid/dispatch/trunk/src/schema_c.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/schema_c.py?rev=1608947&view=auto
==============================================================================
--- qpid/dispatch/trunk/src/schema_c.py (added)
+++ qpid/dispatch/trunk/src/schema_c.py Tue Jul  8 20:31:13 2014
@@ -0,0 +1,108 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+
+"""
+Generate C code from the router schema.
+"""
+
+import sys
+from qpid_dispatch_internal.management import QdSchema
+
+copyright="""/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+
+"""
+
+import re
+from qpid_dispatch_internal.management import QdSchema, EnumType
+
+class Generator(object):
+
+    def __init__(self):
+        self.schema = QdSchema()
+        self.prefix = ['qd_schema']
+
+        self.generate_enums()
+
+    def header(self, name, text):
+        with open(name+'.h', 'w') as f:
+            f.write("#ifndef __%s_h__\n#define __%s_h__\n"%(name, name) + copyright + text + "\n#endif\n")
+
+    def source(self, name, text):
+        with open(name+'.c', 'w') as f:
+            f.write(copyright + text)
+
+    def identifier(self, name): return re.sub(r'\W','_', name)
+
+    def underscore(self, names): return '_'.join([self.identifier(name) for name in names])
+
+    def prefix_name(self, names): return self.underscore(self.prefix + names)
+
+    def type_name(self, names): return self.prefix_name(names + ['t'])
+
+    class EnumGenerator(object):
+        def __init__(self, generator, entity, attribute):
+            self.generator, self.entity, self.attribute = generator, entity, attribute
+            self.tags = attribute.atype.tags
+            self.type_name = generator.type_name([entity.name, attribute.name])
+            self.array = self.generator.prefix_name([entity.name, attribute.name, 'names'])
+            self.count = self.name('ENUM_COUNT')
+
+        def name(self, tag):
+            return self.generator.prefix_name([self.entity.name, self.attribute.name, tag]).upper()
+
+        def decl(self):
+            tags = self.tags + ['ENUM_COUNT']
+            return "typedef enum {\n" + \
+                ",\n".join(["    " + self.name(tag) for tag in tags]) + \
+                "\n} %s;\n\n" % self.type_name + \
+                "extern const char *%s[%s];\n\n" %  (self.array, self.count)
+
+        def defn(self):
+            return "const char *%s[%s] = {\n" % (self.array, self.count) + \
+                ",\n".join('    "%s"'%(self.name(tag)) for tag in self.tags) + \
+                "\n};\n\n"
+
+    def generate_enums(self):
+        enums = [self.EnumGenerator(self, entity, attribute)
+                 for entity in self.schema.entity_types.itervalues()
+                 for attribute in entity.attributes.itervalues()
+                 if isinstance(attribute.atype, EnumType)]
+        self.header('schema_enum', '\n'.join(e.decl() for e in enums))
+        self.source('schema_enum', '#include "schema_enum.h"\n\n' + '\n'.join(e.defn() for e in enums))
+
+if __name__ == '__main__':
+    Generator()

Modified: qpid/dispatch/trunk/src/static_assert.h
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/static_assert.h?rev=1608947&r1=1608946&r2=1608947&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/static_assert.h (original)
+++ qpid/dispatch/trunk/src/static_assert.h Tue Jul  8 20:31:13 2014
@@ -21,10 +21,12 @@
  */
 
 /** @file
-   STATIC_ASSERT allows you to do compile time assertions at file scope
-   or in a funciton.
+ * STATIC_ASSERT allows you to do compile time assertions at file scope or in a function.
+ * @param expr: a boolean expression that is valid at compile time.
+ * @param msg: a "message" that must also be a valid identifier, i.e. message_with_underscores
  */
 
+
 #ifdef __GNUC__
 #define STATIC_ASSERT_HELPER(expr, msg) \
     (!!sizeof(struct { unsigned int STATIC_ASSERTION__##msg: (expr) ? 1 : -1; }))

Modified: qpid/dispatch/trunk/tests/management/schema.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/management/schema.py?rev=1608947&r1=1608946&r2=1608947&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/management/schema.py (original)
+++ qpid/dispatch/trunk/tests/management/schema.py Tue Jul  8 20:31:13 2014
@@ -21,7 +21,7 @@
 #pylint: disable=wildcard-import,missing-docstring,too-many-public-methods
 
 import unittest, json, sys
-from qpid_dispatch_internal.management import Schema, Entity, EntityType, BooleanType, EnumType, AttributeType, schema_file, ValidationError
+from qpid_dispatch_internal.management import Schema, Entity, EntityType, BooleanType, EnumType, AttributeType, schema_file, ValidationError, EnumValue
 import collections
 
 def replace_od(thing):
@@ -78,11 +78,13 @@ class SchemaTest(unittest.TestCase):
         e = EnumType(['a', 'b', 'c'])
         self.assertEqual(e.validate('a'), 'a')
         self.assertEqual(e.validate(1), 'b')
-        self.assertEqual(e.validate('c', enum_as_int=True), 2)
-        self.assertEqual(e.validate(2, enum_as_int=True), 2)
+        self.assertEqual(e.validate('c'), 2)
+        self.assertEqual(e.validate(2), 2)
         self.assertRaises(ValidationError, e.validate, 'foo')
         self.assertRaises(ValidationError, e.validate, 3)
 
+        self.assertEqual('["x"]', json.dumps([EnumValue('x',3)]))
+
     def test_attribute_def(self):
         a = AttributeType('foo', 'String', default='FOO')
         self.assertEqual('FOO', a.missing_value())

Modified: qpid/dispatch/trunk/tests/run.py.in
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/run.py.in?rev=1608947&r1=1608946&r2=1608947&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/run.py.in (original)
+++ qpid/dispatch/trunk/tests/run.py.in Tue Jul  8 20:31:13 2014
@@ -63,7 +63,8 @@ env_vars = {
                                   os.environ['PATH'].split(os.pathsep))),
     'SOURCE_DIR': "${CMAKE_SOURCE_DIR}",
     'BUILD_DIR': "${CMAKE_BINARY_DIR}",
-    'QPID_DISPATCH_HOME': "${CMAKE_SOURCE_DIR}"
+    'QPID_DISPATCH_HOME': "${CMAKE_SOURCE_DIR}",
+    'QPID_DISPATCH_LIB': "${CMAKE_BINARY_DIR}/src/libqpid-dispatch.so.${SO_VERSION_MAJOR}"
 }
 os.environ.update(env_vars)
 
@@ -117,22 +118,26 @@ def run_path(file_path, run_name=None):
         os.execvp(sys.executable, [sys.executable]+sys.argv)
 
 if __name__ == "__main__":
-    if len(sys.argv) == 1:
-        print usage
-    elif sys.argv[1] == '-m':
-        sys.argv = sys.argv[2:]
-        runpy.run_module(sys.argv[0], alter_sys=True, run_name="__main__")
-    elif sys.argv[1] == '-s':
-        sys.argv = sys.argv[2:]
-        run_path(sys.argv[0], run_name="__main__")
-    elif sys.argv[1] == '--sh':
-        for name, value in env_vars.iteritems(): print "%s=%s"%(name, value)
-        print "export %s"%' '.join(env_vars.keys())
-    elif sys.argv[1] == '--vg':
-        args = with_valgrind(sys.argv[2:])
-        os.execvp(args[0], args)
-    elif sys.argv[1].startswith('-'):
-        print usage
-    else:
-        args = sys.argv[1:]
-        os.execvp(args[0], args)
+    try:
+        if len(sys.argv) == 1:
+            print usage
+        elif sys.argv[1] == '-m':
+            sys.argv = sys.argv[2:]
+            runpy.run_module(sys.argv[0], alter_sys=True, run_name="__main__")
+        elif sys.argv[1] == '-s':
+            sys.argv = sys.argv[2:]
+            run_path(sys.argv[0], run_name="__main__")
+        elif sys.argv[1] == '--sh':
+            for name, value in env_vars.iteritems(): print "%s=%s"%(name, value)
+            print "export %s"%' '.join(env_vars.keys())
+        elif sys.argv[1] == '--vg':
+            args = with_valgrind(sys.argv[2:])
+            os.execvp(args[0], args)
+        elif sys.argv[1].startswith('-'):
+            print usage
+        else:
+            args = sys.argv[1:]
+            os.execvp(args[0], args)
+    except Exception, e:
+        raise Exception, "Error in %s: %s"%(" ".join(sys.argv), e), sys.exc_info()[2]
+        sys.exit(1)

Modified: qpid/dispatch/trunk/tests/run_unit_tests.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/run_unit_tests.c?rev=1608947&r1=1608946&r2=1608947&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/run_unit_tests.c (original)
+++ qpid/dispatch/trunk/tests/run_unit_tests.c Tue Jul  8 20:31:13 2014
@@ -6,9 +6,9 @@
  * to you 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
@@ -35,10 +35,8 @@ int main(int argc, char** argv)
         exit(1);
     }
 
-    qd_dispatch_t *qd = qd_dispatch(0);
+    qd_dispatch_t *qd = qd_dispatch(0, 0);
     qd_dispatch_load_config(qd, argv[1]);
-    qd_dispatch_configure_container(qd);
-    qd_dispatch_prepare(qd);
 
     int result = 0;
     result += tool_tests();
@@ -50,4 +48,3 @@ int main(int argc, char** argv)
     result += timer_tests();
     return result;
 }
-

Modified: qpid/dispatch/trunk/tests/system_test.py
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_test.py?rev=1608947&r1=1608946&r2=1608947&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_test.py (original)
+++ qpid/dispatch/trunk/tests/system_test.py Tue Jul  8 20:31:13 2014
@@ -275,7 +275,9 @@ class Qdrouterd(Process):
     """Run a Qpid Dispatch Router Daemon"""
 
     class Config(list, Config):
-        """List of ('section', {'name':'value', ...}).
+        """
+        List of ('section', {'name':'value', ...}).
+
         Fills in some default values automatically, see Qdrouterd.DEFAULTS
         """
 
@@ -310,6 +312,8 @@ class Qdrouterd(Process):
         @keyword wait: wait for router to be ready (call self.wait_ready())
         """
         self.config = copy(config)
+        if not [l for l in config if l[0] == 'log']:
+            config.append(('log', {'module':'DEFAULT', 'level':'info', 'output':name+'.log'}))
         if not pyinclude and os.environ['QPID_DISPATCH_HOME']:
             pyinclude = os.path.join(os.environ['QPID_DISPATCH_HOME'], 'python')
         super(Qdrouterd, self).__init__(

Modified: qpid/dispatch/trunk/tests/threads4.conf
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/threads4.conf?rev=1608947&r1=1608946&r2=1608947&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/threads4.conf (original)
+++ qpid/dispatch/trunk/tests/threads4.conf Tue Jul  8 20:31:13 2014
@@ -24,3 +24,7 @@
 container {
     worker-threads: 4
 }
+log {
+    module: DEFAULT
+    level: debug
+}

Modified: qpid/dispatch/trunk/tools/qdstat
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/tools/qdstat?rev=1608947&r1=1608946&r2=1608947&view=diff
==============================================================================
--- qpid/dispatch/trunk/tools/qdstat (original)
+++ qpid/dispatch/trunk/tools/qdstat Tue Jul  8 20:31:13 2014
@@ -26,11 +26,13 @@ import locale
 import socket
 import re
 from proton import Messenger, Message, Timeout
-from qpid_dispatch_internal.management import Url, Node, Entity
 
-home = os.environ.get("QPID_DISPATCH_HOME", os.path.normpath(os.path.dirname(__file__)))
-sys.path.append(os.path.join(home, "python"))
+home = os.environ.get("QPID_DISPATCH_HOME")
+if not home:
+    home = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'lib', 'qpid-dispatch')
+sys.path.insert(0, os.path.join(home, "python"))
 
+from qpid_dispatch_internal.management import Url, Node, Entity
 from qpid_dispatch_internal.tools import Display, Header, Sorter, YN, Commas, TimeLong
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org