[Erp5-report] r12589 - in /erp5/trunk/products/ERP5Type/tests: ./ skel/ skel/bin/ skel/etc/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Feb 9 06:36:43 CET 2007


Author: kazuhiko
Date: Fri Feb  9 06:35:46 2007
New Revision: 12589

URL: http://svn.erp5.org?rev=12589&view=rev
Log:
* support --save and --load option.
* in --save mode, all test_* methods are skipped.
* in --load mode, use a DemoStorage based on a Data.fs made by --save mode.
* install bin/zopectl, bin/runzope and etc/zope.conf to the unit_test
  directory to make possible to run real zope server on it.

Added:
    erp5/trunk/products/ERP5Type/tests/skel/
    erp5/trunk/products/ERP5Type/tests/skel/bin/
    erp5/trunk/products/ERP5Type/tests/skel/bin/runzope.in   (with props)
    erp5/trunk/products/ERP5Type/tests/skel/bin/zopectl.in   (with props)
    erp5/trunk/products/ERP5Type/tests/skel/etc/
    erp5/trunk/products/ERP5Type/tests/skel/etc/zope.conf.in   (with props)
Modified:
    erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py
    erp5/trunk/products/ERP5Type/tests/custom_zodb.py
    erp5/trunk/products/ERP5Type/tests/runUnitTest.py

Modified: erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py?rev=12589&r1=12588&r2=12589&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py (original)
+++ erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py Fri Feb  9 06:35:46 2007
@@ -26,9 +26,15 @@
 from Testing import ZopeTestCase
 from Testing.ZopeTestCase.PortalTestCase import PortalTestCase, user_name
 from Products.CMFCore.utils import getToolByName
-from Products.ERP5Type.Utils import getLocalPropertySheetList, removeLocalPropertySheet
-from Products.ERP5Type.Utils import getLocalDocumentList, removeLocalDocument
-from Products.ERP5Type.Utils import getLocalConstraintList, removeLocalConstraint
+from Products.ERP5Type.Utils import getLocalPropertySheetList, \
+                                    removeLocalPropertySheet, \
+                                    importLocalPropertySheet
+from Products.ERP5Type.Utils import getLocalDocumentList, \
+                                    removeLocalDocument, \
+                                    importLocalDocument
+from Products.ERP5Type.Utils import getLocalConstraintList, \
+                                    removeLocalConstraint, \
+                                    importLocalConstraint
 from zLOG import LOG, DEBUG
 
 try:
@@ -37,7 +43,7 @@
   pass
 
 # Quiet messages when installing products
-install_product_quiet = 0
+install_product_quiet = 1
 # Quiet messages when installing business templates
 install_bt5_quiet = 0
 
@@ -142,6 +148,7 @@
 from cStringIO import StringIO
 from urllib import urlretrieve
 from glob import glob
+import pysvn
 
 from Products.ERP5.ERP5Site import ERP5Site
 
@@ -175,6 +182,15 @@
   return connection_string_dict
 
 class ERP5TypeTestCase(PortalTestCase):
+
+    def dummy_test(self):
+      ZopeTestCase._print('All tests are skipped with --save option.')
+
+    def getRevision(self):
+      try:
+        return pysvn.Client().info('%s/Products/ERP5' % os.environ['INSTANCE_HOME']).revision.number
+      except:
+        return None
 
     def getTitle(self):
       """Returns the title of the test, for test reports.
@@ -515,18 +531,29 @@
           get_transaction().commit()
           portal = app[portal_name]
 
-          # Remove all local PropertySheets, Documents
-          for id_ in getLocalPropertySheetList():
-            removeLocalPropertySheet(id_)
-          for id_ in getLocalDocumentList():
-            removeLocalDocument(id_)
-          for id_ in getLocalConstraintList():
-            removeLocalConstraint(id_)
+          if os.environ.get('erp5_load_data_fs'):
+            # Import local PropertySheets, Documents
+            for id_ in getLocalPropertySheetList():
+              importLocalPropertySheet(id_)
+            for id_ in getLocalDocumentList():
+              importLocalDocument(id_)
+            for id_ in getLocalConstraintList():
+              importLocalConstraint(id_)
+          else:
+            # Remove all local PropertySheets, Documents
+            for id_ in getLocalPropertySheetList():
+              removeLocalPropertySheet(id_)
+            for id_ in getLocalDocumentList():
+              removeLocalDocument(id_)
+            for id_ in getLocalConstraintList():
+              removeLocalConstraint(id_)
 
           # Disable reindexing before adding templates
           # VERY IMPORTANT: Add some business templates
           for url, id_ in business_template_list:
             start = time.time()
+            if id_ in portal.portal_templates.objectIds():
+              continue
             if not quiet:
               ZopeTestCase._print('Adding %s business template ... ' % id_)
             portal.portal_templates.download(url, id=id_)
@@ -562,6 +589,26 @@
           from Products.ERP5Type.Base import _aq_reset
           _aq_reset()
           
+          if os.environ.get('erp5_save_data_fs'):
+            # Quit the test in order to get a clean site
+            if not quiet:
+              ZopeTestCase._print('done (%.3fs)\n' % (time.time()-_start,))
+            get_transaction().commit()
+            ZopeTestCase.close(app)
+            if not quiet:
+              ZopeTestCase._print('Data.fs created\n')
+            get_transaction().commit()
+            ZopeTestCase.close(app)
+            if not quiet:
+              ZopeTestCase._print('Dumping MySQL database ... ')
+            instance_home = os.environ['INSTANCE_HOME']
+            os.system('mysqldump -u test test > %s/dump.sql' % instance_home)
+            if not quiet:
+              ZopeTestCase._print('Dumping static files ... ')
+            for dir in ('Constraint', 'Document', 'PropertySheet'):
+              os.system('rm -rf %s/%s.bak' % (instance_home, dir))
+              os.system('cp -ar %s/%s %s/%s.bak' % (instance_home, dir, instance_home, dir))
+
           # Log out
           if not quiet:
             ZopeTestCase._print('Logout ... \n')
@@ -585,6 +632,11 @@
                           % title) # run_unit_test depends on this string.
       raise
 
+from unittest import _makeLoader, TestSuite
+
+def dummy_makeSuite(testCaseClass, prefix='dummy_test', sortUsing=cmp, suiteClass=TestSuite):
+  return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromTestCase(testCaseClass)
+
 def optimize():
   '''Significantly reduces portal creation time.'''
   def __init__(self, text):

Modified: erp5/trunk/products/ERP5Type/tests/custom_zodb.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/custom_zodb.py?rev=12589&r1=12588&r2=12589&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/custom_zodb.py (original)
+++ erp5/trunk/products/ERP5Type/tests/custom_zodb.py Fri Feb  9 06:35:46 2007
@@ -3,9 +3,27 @@
 from ZODB.DemoStorage import DemoStorage
 from ZODB.FileStorage import FileStorage
 
+instance_home = os.environ.get('INSTANCE_HOME')
 data_fs_path = os.environ.get('erp5_tests_data_fs_path')
-if data_fs_path:
+new_data_fs_path = os.path.join(instance_home, 'Data.fs')
+
+if os.environ.get('erp5_save_data_fs'):
+  if os.path.exists(new_data_fs_path):
+    os.remove(new_data_fs_path)
+  Storage = FileStorage(new_data_fs_path)
+elif os.environ.get('erp5_load_data_fs'):
+  if os.environ.get('erp5_force_data_fs'):
+    Storage = FileStorage(new_data_fs_path)
+  else:
+    Storage = DemoStorage(base=FileStorage(new_data_fs_path), quota=(1<<20))
+  print("Restoring MySQL database ... ")
+  os.system("mysql -u test test < %s/dump.sql" % instance_home)
+  print("Restoring static files ... ")
+  for dir in ('Constraint', 'Document', 'PropertySheet'):
+    if os.path.exists('%s/%s.bak' % (instance_home, dir)):
+      os.system('rm -rf %s/%s' % (instance_home, dir))
+      os.system('cp -ar %s/%s.bak %s/%s' % (instance_home, dir, instance_home, dir))
+elif data_fs_path:
   Storage = DemoStorage(base=FileStorage(data_fs_path), quota=(1<<20))
 else:
   Storage = DemoStorage(quota=(1<<20))
-

Modified: erp5/trunk/products/ERP5Type/tests/runUnitTest.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/runUnitTest.py?rev=12589&r1=12588&r2=12589&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/runUnitTest.py (original)
+++ erp5/trunk/products/ERP5Type/tests/runUnitTest.py Fri Feb  9 06:35:46 2007
@@ -19,6 +19,11 @@
                              only
   --recreate_catalog=0 or 1  recreate the content of the sql catalog. Defaults
                              is to recreate, when using an existing Data.fs
+  
+  --save                     add erp5 sites and business templates in Data.fs
+                             and exit without invoking any tests
+  --load                     load Data.fs and skip adding erp5 sites and
+                             business templates
   
   --erp5_sql_connection_string=STRING
                              ZSQL Connection string for erp5_sql_connection, by
@@ -52,11 +57,11 @@
                            instance_home):
   if not os.path.exists(instance_home):
     os.mkdir(instance_home)
-  for d in ('Constraint', 'Document', 'PropertySheet', 'tests', 'var'):
+  for d in ('Constraint', 'Document', 'PropertySheet', 'bin', 'etc', 'tests', 'var', 'log'):
     path = os.path.join(instance_home, d)
     if not os.path.exists(path):
       os.mkdir(path)
-  for d in ('Extensions', 'Products', 'bt5'):
+  for d in ('Extensions', 'Products', 'bt5', 'svn'):
     src = os.path.join(real_instance_home, d)
     dst = os.path.join(instance_home, d)
     if not os.path.exists(dst):
@@ -69,13 +74,25 @@
     if os.path.lexists(dst):
       raise RuntimeError, '%s is a broken symlink' % dst
     os.symlink(src, dst)
+  sys.path.append(os.path.join(zope_home, "bin"))
+  import copyzopeskel
+  kw = {
+    "PYTHON":sys.executable,
+    "INSTANCE_HOME": instance_home,
+    "SOFTWARE_HOME": software_home,
+    "ZOPE_HOME": zope_home,
+    }
+  skelsrc = os.path.abspath(os.path.join(os.path.dirname(__file__), "skel"))
+  copyzopeskel.copyskel(skelsrc, instance_home, None, None, **kw)
 
 # site specific variables
 # handle 64bit architecture
 if os.path.isdir('/usr/lib64/zope/lib/python'):
   software_home = '/usr/lib64/zope/lib/python'
+  zope_home = '/usr/lib64/zope'
 else:
   software_home = '/usr/lib/zope/lib/python'
+  zope_home = '/usr/lib/zope'
 
 tests_framework_home = os.path.dirname(os.path.abspath(__file__))
 # handle 'system global' instance
@@ -152,7 +169,12 @@
   # this allows to bypass psyco by creating a dummy psyco module
   # it is then possible to run the debugger by "import pdb; pdb.set_trace()"
   sys.path.insert(0, tests_framework_home)
- 
+
+  # override unittest.makeSuite to skip all tests in save mode
+  if os.environ.get('erp5_save_data_fs'):
+    from Products.ERP5Type.tests.ERP5TypeTestCase import dummy_makeSuite
+    unittest.makeSuite = dummy_makeSuite
+
   filtered_tests_class_names = 0
   for test in test_list:
     if ':' in test:
@@ -196,6 +218,8 @@
         "cmf_activity_sql_connection_string=",
         "erp5_sql_deferred_connection_string=",
         "erp5_catalog_storage=",
+        "save",
+        "load",
         "email_from_address="] )
   except getopt.GetoptError, msg:
     usage(sys.stderr, msg)
@@ -232,6 +256,10 @@
       os.environ["erp5_sql_deferred_connection_string"] = arg
     elif opt == "--email_from_address":
       os.environ["email_from_address"] = arg
+    elif opt == "--save":
+      os.environ["erp5_save_data_fs"] = "1"
+    elif opt == "--load":
+      os.environ["erp5_load_data_fs"] = "1"
     elif opt == "--erp5_catalog_storage":
       os.environ["erp5_catalog_storage"] = arg
 
@@ -239,7 +267,7 @@
   if not test_list:
     print "No test to run, exiting immediately."
     sys.exit(1)
-  
+
   result = runUnitTestList(test_list=test_list)
   from Testing.ZopeTestCase import profiler
   profiler.print_stats()

Added: erp5/trunk/products/ERP5Type/tests/skel/bin/runzope.in
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/skel/bin/runzope.in?rev=12589&view=auto
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/skel/bin/runzope.in (added)
+++ erp5/trunk/products/ERP5Type/tests/skel/bin/runzope.in Fri Feb  9 06:35:46 2007
@@ -1,0 +1,15 @@
+#! /bin/sh
+
+PYTHON="<<PYTHON>>"
+ZOPE_HOME="<<ZOPE_HOME>>"
+INSTANCE_HOME="<<INSTANCE_HOME>>"
+CONFIG_FILE="<<INSTANCE_HOME>>/etc/zope.conf"
+SOFTWARE_HOME="<<SOFTWARE_HOME>>"
+PYTHONPATH="$SOFTWARE_HOME"
+export PYTHONPATH INSTANCE_HOME SOFTWARE_HOME
+
+export erp5_load_data_fs="1"
+
+ZOPE_RUN="$SOFTWARE_HOME/Zope/Startup/run.py"
+
+exec "$PYTHON" "$ZOPE_RUN" -C "$CONFIG_FILE" "$@"

Propchange: erp5/trunk/products/ERP5Type/tests/skel/bin/runzope.in
------------------------------------------------------------------------------
    svn:executable = *

Added: erp5/trunk/products/ERP5Type/tests/skel/bin/zopectl.in
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/skel/bin/zopectl.in?rev=12589&view=auto
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/skel/bin/zopectl.in (added)
+++ erp5/trunk/products/ERP5Type/tests/skel/bin/zopectl.in Fri Feb  9 06:35:46 2007
@@ -1,0 +1,15 @@
+#! /bin/sh
+
+PYTHON="<<PYTHON>>"
+ZOPE_HOME="<<ZOPE_HOME>>"
+INSTANCE_HOME="<<INSTANCE_HOME>>"
+CONFIG_FILE="<<INSTANCE_HOME>>/etc/zope.conf"
+SOFTWARE_HOME="<<SOFTWARE_HOME>>"
+PYTHONPATH="$SOFTWARE_HOME"
+export PYTHONPATH INSTANCE_HOME SOFTWARE_HOME
+
+export erp5_load_data_fs="1"
+
+ZDCTL="$SOFTWARE_HOME/Zope/Startup/zopectl.py"
+
+exec "$PYTHON" "$ZDCTL" -C "$CONFIG_FILE" "$@"

Propchange: erp5/trunk/products/ERP5Type/tests/skel/bin/zopectl.in
------------------------------------------------------------------------------
    svn:executable = *

Added: erp5/trunk/products/ERP5Type/tests/skel/etc/zope.conf.in
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/skel/etc/zope.conf.in?rev=12589&view=auto
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/skel/etc/zope.conf.in (added)
+++ erp5/trunk/products/ERP5Type/tests/skel/etc/zope.conf.in Fri Feb  9 06:35:46 2007
@@ -1,0 +1,950 @@
+###############################################################################
+# Welcome to Zope 2.
+###############################################################################
+#
+# This is the Zope configuration file.  The Zope configuration file
+# shows what the default configuration directives are, and show
+# examples for each directive.  To declare a directive, make sure that
+# you add it to a line that does not begin with '#'.  Note that comments 
+# are only allowed at the beginning of a line: you may not add comments
+# after directive text on the same line.
+
+# ZConfig "defines" used for later textual substitution
+
+%define INSTANCE <<INSTANCE_HOME>>
+%define ZOPE <<ZOPE_HOME>>
+
+# Directive: instancehome
+#
+# Description:
+#     The path to the data files, local product files, import directory,
+#     and Extensions directory used by Zope.
+#
+# Required (no default)
+#
+# Example:
+#
+#    instancehome /home/chrism/projects/sessions
+
+instancehome $INSTANCE
+
+# Directive: clienthome
+#
+# Description:
+#     The directory in which a running Zope's process identifier files are
+#     placed.
+#
+# Default: $INSTANCE/var
+#
+# Example:
+#
+#    clienthome /home/chrism/projects/sessions/var
+
+
+# Directive: path
+#
+# Description:
+#     Name of a directory which should be inserted into the
+#     the beginning of Python's module search path.  This directive
+#     may be specified as many times as needed to insert additional
+#     directories.  The set of directories specified is inserted into the
+#     beginning of the module search path in the order which they are specified
+#     here.  Note that the processing of this directive may happen too late
+#     under some circumstances; it is recommended that you use the PYTHONPATH
+#     environment variable if using this directive doesn't work for you.
+#
+# Default: $INSTANCE/lib/python
+#
+# Example:
+#
+#    path $INSTANCE/mypymodules
+
+
+# Directive: products
+#
+# Description:
+#     Name of a directory that contains additional Product packages.  This
+#     directive may be used as many times as needed to add additional
+#     collections of products.  Each directory identified will be
+#     added to the __path__ of the Products package.  All Products are
+#     initialized in ascending alphabetical order by product name.  If
+#     two products with the same name exist in two Products directories,
+#     the order in which the packages appear here defines the load
+#     order.  The master Products directory exists in Zope's software home,
+#     and cannot be removed from the products path (and should not be added
+#     to it here).
+#
+# Default: $INSTANCE/Products
+#
+# Example:
+#
+#    products /home/chrism/projects/myproducts
+
+
+# Directive: environment
+#
+# Description:
+#     A section which can be used to define arbitrary key-value pairs
+#     for use as environment variables during Zope's run cycle.  It
+#     is not recommended to set system-related environment variables such as
+#     PYTHONPATH within this section.
+#
+# Default: unset
+#
+# Example:
+#
+#    <environment>
+#      MY_PRODUCT_ENVVAR foobar
+#    </environment>
+
+# Directive: debug-mode
+#
+# Description:
+#     A switch which controls several aspects of Zope operation useful for
+#     developing under Zope.  When debug mode is on:
+#
+#     - The process will not detach from the controlling terminal
+#
+#     - Errors in product initialization will cause startup to fail
+#       (instead of writing error messages to the event log file).
+#
+#     - Filesystem-based scripts such as skins, PageTemplateFiles, and
+#       DTMLFiles can be edited while the server is running and the server
+#       will detect these changes in real time.  When this switch is
+#       off, you must restart the server to see the changes.
+#
+#     Setting this to 'off' when Zope is in a
+#     production environment is encouraged, as it speeds execution (sometimes
+#     dramatically).
+#
+# Default: on
+#
+# Example:
+#
+#    debug-mode on
+
+
+# Directive: effective-user
+#
+# Description:
+#     If you intend to run Zope as the "root" user, you must supply this
+#     directive with an effective username or userid number to which Zope
+#     will 'suid' after the server ports are bound. This directive only
+#     has effect under UNIX and if Zope is started as the root user.
+#
+# Default: unset
+#
+# Example:
+#
+#    effective-user chrism
+
+
+# Directive: enable-product-installation
+#
+# Description:
+#     If this directive is turned on, Zope performs 'product installation'
+#     (the registration of Python modules in various Products directories)
+#     at startup. Turning this off can speed Zope/ZEO startup time,
+#     but it can also cause your Control_Panel Product list to become
+#     desynchronized with the contents of your Products
+#     directories.   NOTE: Zope *must* be started at least once with
+#     this directive set to "on" or you will receive an error.  If using ZEO,
+#     at least one ZEO client must be run with this directive set to "on"
+#     once, the others can have it turned off.  
+#     NOTE: If your main storage is mounted read-only, 
+#     you must set this directive to "off".
+# 
+# Default: on
+#
+# Example:
+#
+#    enable-product-installation off
+
+# Directive: locale
+#
+# Description:
+#     Enable locale (internationalization) support by supplying a locale
+#     name to be used. See your operating system documentation for locale
+#     information specific to your system. If your Python module does not
+#     support the locale module, or if the requested locale is not
+#     supported by your system, an error will be raised and Zope will not
+#     start.
+#
+# Default: unset
+#
+# Example:
+#
+#    locale fr_FR
+
+
+# Directive: datetime-format
+#
+# Description:
+#     Set this variable either to "us" or "international" to force the
+#     DateTime module to parse date strings either with
+#     month-before-days-before-year ("us") or
+#     days-before-month-before-year ("international").  The default
+#     behaviour of DateTime (when this setting is left unset) is to
+#     parse dates as US dates.
+#
+# Default: us
+#
+# Example:
+#
+#    datetime-format international
+
+
+# Directive: zserver-threads
+#
+# Description:
+#     Specify the number of threads that Zope's ZServer web server will use
+#     to service requests. The default is 4.
+#
+# Default: 4
+#
+# Example:
+#
+#    zserver-threads 10
+
+
+# Directive: python-check-interval
+#
+# Description:
+#     Specify an integer representing the Python interpreter "check
+#     interval" This interval determines how often the interpreter checks
+#     for periodic things such as thread switches and signal handlers. The
+#     Zope default is 500, but you may want to experiment with other values
+#     in order to attempt to increae performance in your particular
+#     environment.
+#
+# Default: 500
+#
+# Example:
+#
+#    python-check-interval 1000
+
+
+# Directive: zserver-read-only-mode
+#
+# Description:
+#     If this directive is set to 'on', it will cause Zope to inhibit the
+#     creation of log files and pid files. Access and event log files will
+#     be presented on standard output. Setting this directive 'on' causes
+#     pcgi, fastcgi, and daemon-related directives to have no effect.
+#
+# Default: off
+#
+# Example:
+#
+#    zserver-read-only-mode on
+
+
+# Directive: pid-filename
+#
+# Description:
+#     The path to the file in which the Zope process id(s) will be written.
+#     This defaults to client-home/Z2.pid.
+#
+# Default: CLIENT_HOME/Z2.pid
+#
+# Example:
+#
+#    pid-filename /home/chrism/projects/sessions/var/Z2.pid
+
+
+# Directive: lock-filename
+#
+# Description:
+#     The path to a "lock file" which will be locked by Zope while it's
+#     running.  This file is used by zopectl.py to determine if Zope is
+#     currently running.  This defaults to CLIENT_HOME/Z2.lock.
+#
+# Default: CLIENT_HOME/Z2.lock
+#
+# Example:
+#
+#    lock-filename /home/chrism/projects/sessions/var/Z2.lock
+
+
+# Directive: mime-types
+#
+# Description:
+#     Tells Zope about additional mime.types files that should be
+#     loaded.  The files have the same format as the mime.types file
+#     distributed with Apache.  The "mime-types" setting may be given
+#     more than once in the configuration file.
+#
+# Example:
+#
+#     mime-types  $INSTANCE/etc/mime.types
+
+
+# Directive: structured-text-header-level
+#
+# Description:
+#     Set the default starting HTML header level for structured text
+#     documents. The default is 3, which implies that top-level headers
+#     will be created with an <H3> tag.
+#
+# Default: 3
+#
+# Example:
+#
+#    structured-text-header-level 1
+
+# Directive: rest-input-encoding
+#
+# Description:
+#    Specifies the input encoding of re-StructuredText documents
+#    (e.g. 'utf-8', 'iso-8859-15' or any other valid encoding recognized
+#    by Python).  The default is your Python's default encoding.
+#
+# Default: unset (uses system default)
+#
+# Example:
+#
+#    rest-input-encoding iso-8859-15
+
+# Directive: rest-output-encoding
+#
+# Description:
+#    Specifies the output encoding of re-StructuredText documents
+#    (e.g. 'utf-8', 'iso-8859-15' or any other valid encoding recognized
+#    by Python).  The default is your Python's default encoding.
+#
+# Default: unset (uses system default)
+#
+# Example:
+#
+#    rest-output-encoding iso-8859-15
+
+# Directive: rest-header-level
+#
+# Description:
+#     Set the default starting HTML header level for restructured text
+#     documents. The default is 3, which implies that top-level headers
+#     will be created with an <H3> tag.
+#
+# Default: 3
+#
+# Example:
+#
+#    rest-header-level 2
+
+# Directive: rest-language-code 
+#
+# Description:
+#    Language code used for some internal translations inside of the docutils
+#    package and for DTD bibliographic elements mapping. See
+#    lib/python/docutils/languages/ for a list of supported language codes.
+#
+# Default: en
+#
+# Example:
+#
+#    rest-language-code de
+
+# Directive: cgi-environment
+#
+# Description:
+#     A section which allows a user to define arbitrary key-value pairs for
+#     use as the initial CGI environment variables. This is useful
+#     when you want to proxy requests from another web server to Zserver,
+#     and would like Zserver's CGI environment to reflect the CGI
+#     environment of the other web server.
+#
+# Default: unset
+#
+# Example:
+#
+# <cgi-environment>
+#   HTTPS_SERVER Foobar Server 1.0
+#   HTTPS_PORT 443
+# </cgi-environment>
+
+
+
+# Directive: dns-server
+#
+# Description:
+#     Specify the IP address of your DNS server in order to cause resolved
+#     hostnames to be written to Zope's access log. By default, Zope will
+#     not resolve hostnames unless this is set.
+#
+# Default: unset
+#
+# Example:
+#
+#    dns-server 127.0.0.1
+
+
+# Directive: ip-address
+#
+# Description:
+#     The default IP address on which Zope's various server protocol
+#     implementations will listen for requests. If this is unset, Zope
+#     will listen on all IP addresses supported by the machine. This
+#     directive can be overridden on a per-server basis in the servers
+#     section.
+#
+# Default: unset
+#
+# Example:
+#
+#    ip-address 127.0.0.1
+
+
+# Directive: http-realm
+#
+# Description:
+#     The HTTP "Realm" header value sent by this Zope instance. This value
+#     often shows up in basic authentication dialogs.
+#
+# Default: Zope
+#
+# Example:
+#
+#    http-realm Slipknot
+
+
+# Directive: cgi-maxlen
+#
+# Description:
+#     Set this value to limit the amount of form data being processed 
+#     by Zope to prevent DoS attacks.
+#
+# Default: 0 (= no restrictions)
+#
+# Example:
+#
+#    cgi-maxlen 10000
+
+
+# Directive: http-header-max-length
+#
+# Description:
+#     Maximum number of bytes allowed within a HTTP request header. The request
+#     is discarded and considered as a DoS attack if the header size exceeds
+#     this limit.
+#
+# Default: 8192
+#
+# Example:
+#
+#     http-header-max-length 16384
+
+
+# Directive: automatically-quote-dtml-request-data
+#
+# Description:
+#     Set this directive to 'off' in order to disable the autoquoting of
+#     implicitly retrieved REQUEST data by DTML code which contains a '<'
+#     when used in <dtml-var> construction. When this directive is 'on',
+#     all data implicitly retrieved from the REQUEST in DTML (as opposed to
+#     addressing REQUEST.somevarname directly) that contains a '<' will be
+#     HTML-quoted when interpolated via a <dtml-var> or &dtml- construct. This
+#     mitigates the possibility that DTML programmers will leave their
+#     sites open to a "client-side trojan" attack.
+#
+# Default: on
+#
+# Example:
+#
+#    automatically-quote-dtml-request-data on
+
+# Directive: trusted-proxy
+#
+# Description:
+#     Define one or more 'trusted-proxies' directives, each of which is a
+#     hostname or an IP address.  The set of definitions comprises a list
+#     of front-end proxies that are trusted to supply an accurate
+#     X-Forwarded-For header to Zope.  If a connection comes from
+#     a trusted proxy, Zope will trust any X-Forwarded header to contain
+#     the user's real IP address for the purposes of address-based
+#     authentication restriction.
+#
+# Default: unset
+#
+# Example:
+#
+#    trusted-proxy www.example.com
+#    trusted-proxy 192.168.1.1
+
+# Directive: publisher-profile-file
+#
+# Description:
+#    Names a file on the filesystem which causes Zope's Python
+#    profiling capabilities to be enabled.  For more information, see
+#    the Debug Information - > Profiling tab of Zope's Control_Panel
+#    via the Zope Management Interface.  IMPORTANT: setting this
+#    filename will cause Zope code to be executed much more slowly
+#    than normal.  This should not be enabled in production.
+#
+# Default: unset
+#
+# Example:
+#
+#    publisher-profile-file $INSTANCE/var/profile.dat
+
+
+# Directive: security-policy-implementation
+#
+# Description:
+#     The default Zope security machinery is implemented in C.
+#     Change this to "python" to use the Python version of the
+#     Zope security machinery.  This impacts performance but
+#     is useful for debugging purposes and required by Products such as
+#     VerboseSecurity, which need to "monkey-patch" the security
+#     machinery.
+#
+# Default: C
+#
+# Example:
+#
+#    security-policy-implementation python
+
+# Directive: skip-authentication-checking
+#
+# Description:
+#     Set this directive to 'on' to cause Zope to skip checks related
+#     to authentication, for servers which serve only anonymous content.
+#     Only works if security-policy-implementation is 'C'.
+#
+# Default: off
+#
+# Example:
+#
+#    skip-authentication-checking on
+
+
+# Directive: skip-ownership-checking
+#
+# Description:
+#     Set this directive to 'on' to cause Zope to ignore ownership checking
+#     when attempting to execute "through the web" code. By default, this
+#     directive is on in order to prevent 'trojan horse' security problems
+#     whereby a user with less privilege can cause a user with more
+#     privilege to execute dangerous code.
+#
+# Default: off
+#
+# Example:
+#
+#    skip-ownership-checking on
+
+
+# Directive: maximum-number-of-session-objects
+#
+# Description:
+#     An integer value representing the number of items to use as a
+#     "maximum number of subobjects" value of the
+#     '/temp_folder/session_data' transient object container.
+#
+# Default: 1000
+#
+# Example:
+#
+#    maximum-number-of-session-objects 10000
+
+
+# Directive: session-add-notify-script-path
+#
+# Description:
+#     An optional fill Zope path name of a callable object to be set as the
+#     "script to call on object addition" of the sessioN_data transient
+#     object container created in the /temp_folder folder at startup.
+#
+# Default: unset
+#
+# Example:
+#
+#    session-add-notify-script-path /scripts/add_notifier
+
+
+# Directive: session-delete-notify-script-path
+#
+# Description:
+#     An optional fill Zope path name of a callable object to be set as the
+#     "script to call on object deletion" of the sessioN_data transient
+#     object container created in the /temp_folder folder at startup.
+#
+# Default: unset
+#
+# Example:
+#
+#    session-delete-notify-script-path /scripts/del_notifier
+
+
+# Directive: session-timeout-minutes
+#
+# Description:
+#     An integer value representing the number of minutes to be used as the
+#     "data object timeout" of the '/temp_folder/session_data' transient
+#     object container.
+#
+# Default: 20
+#
+# Example:
+#
+#    session-timeout-minutes 30
+
+
+# Directive: session-resolution-seconds
+#
+# Description:
+#    An integer value representing the number of seconds to be used as the
+#    "timeout resolution" of the '/temp_folder/session_data' transient
+#    object container.
+#
+# Default: 20
+#
+# Example:
+#
+#    session-resolution-seconds 60
+
+
+# Directive: suppress-all-access-rules
+#
+# Description:
+#     If this directive is set to on, no access rules in your Zope site
+#     will be executed. This is useful if you "lock yourself out" of a
+#     particular part of your site by setting an improper access rule.
+#
+# Default: off
+#
+# Example:
+#
+#    suppress-all-access-rules on
+
+
+# Directive: suppress-all-site-roots
+#
+# Description:
+#     If this directive is set to on, no site roots in your Zope site will
+#     be effective. This is useful if you "lock yourself out" of a
+#     particular part of your site by setting an improper site root.
+#
+# Default: off
+#
+# Example:
+#
+#    suppress-all-site-roots on
+
+
+# Directive: database-quota-size
+#
+# Description:
+#     Set this directive to an integer in bytes in order to place a hard
+#     limit on the size which the default FileStorage-backed Zope database
+#     can grow. Additions to the database will not be permitted once this
+#     filesize is exceeded.
+#
+# Default: unset
+#
+# Example:
+#
+#    database-quota-size 1000000
+
+
+# Directive: read-only-database
+#
+# Description:
+#     This causes the main Zope FileStorage-backed ZODB to be opened in
+#     read-only mode.
+#
+# Default: off
+#
+# Example:
+#
+#    read-only-database on
+
+
+# Directive: zeo-client-name
+#
+# Description:
+#     If you want a persistent ZEO client cache which retains cache
+#     contents across ClientStorage restarts, you need to define a
+#     zeo-client-name.  If you use ZEO and you don't set a
+#     zeo-client-name, the client cache is stored in temporary files
+#     which are removed when the ClientStorage shuts down.  The value
+#     of zeo-client-name is used to uniquely identify the local cache
+#     files created if this Zope is a ZEO client.
+#
+# Default: unset
+#
+# Example:
+#
+#    zeo-client-name zeo1
+
+
+# Directives: logger
+#
+# Description:
+#     This area should define one or more "logger" sections of the
+#     names "access", "event", and "trace".  The "access" logger logs
+#     Zope server access.  The "event" logger logs Zope event
+#     information.  The "trace" logger logs detailed server request
+#     information (for debugging purposes only).  Each logger section
+#     may contain a "level" name/value pair which indicates the level
+#     of logging detail to capture for this logger.  The default level
+#     is INFO.  Level may be any of "CRITICAL", 'ERROR", WARN", "INFO",
+#     "DEBUG", and "ALL".  Each logger section may additionally contain
+#     one or more "handler" sections which indicates a types of log
+#     "handlers" (file, syslog, NT event log, etc) to be used for the
+#     logger being defined.  There are 5 types of handlers: logfile,
+#     syslog, win32-eventlog, http-handler, email-notifier.  Each
+#     handler type has its own set of allowable subkeys which define
+#     aspects of the handler.  All handler sections also allow for the
+#     specification of a "format" (the log message format string), a
+#     "dateformat" (the log message format for date strings), and a
+#     "level", which has the same semantics of the overall logger
+#     level but overrides the logger's level for the handler it's
+#     defined upon.  XXXX much more detail necessary here
+#
+# Default:
+#
+#     The access log will log to the file <instancehome>/log/Z2.log at
+#     level INFO, the event log will log to the file
+#     <instancehome>/log/event.log at level INFO, and the trace log
+#     will not be written anywhere.
+
+<eventlog>
+  level INFO
+  <logfile>
+    path $INSTANCE/log/event.log
+    level info
+  </logfile>
+</eventlog>
+
+<logger access>
+  level WARN
+  <logfile>
+    path $INSTANCE/log/Z2.log
+    format %(message)s
+  </logfile>
+</logger>
+
+# <logger trace>
+#   level WARN
+#   <logfile>
+#     path $INSTANCE/log/trace.log
+#     format %(message)s
+#   </logfile>
+# </logger>
+
+# Directive: warnfilter
+#
+# Description:
+#     A section that allows you to define a warning filter.
+#     The following keys are valid within a warnfilter section:
+#
+#      action:  one of the following strings:
+#
+#           "error"   turn matching warnings into exceptions
+#           "ignore"  never print matching warnings
+#           "always"  always print matching warnings
+#           "default" print the first occurrence of matching warnings
+#                     for each location where the warning is issued
+#           "module"  print the first occurrence of matching warnings
+#                     for each module where the warning is issued
+#           "once"    print only the first occurrence of matching
+#                     warnings, regardless of location
+#
+#      message:  a string containing a regular expression that the
+#                warning message must match (the match is compiled to
+#                always be case-insensitive)
+#
+#      category: a Python dotted-path classname (must be a subclass of
+#                Warning) of which the warning category must be a subclass in
+#                order to match
+#
+#      module:   a string containing a regular expression that the
+#                module name must match (the match is compiled to be
+#                case-sensitive)
+#
+#      lineno:   an integer that the line number where the warning
+#                occurred must match, or 0 to match all line numbers
+#
+#     All keys within a warnfilter section are optional.  More than
+#     one warnfilter section may be specified.
+#
+# Default: unset
+#
+# Example:
+#
+#    <warnfilter>
+#       action ignore
+#       category exceptions.DeprecationWarning
+#    </warnfilter>
+
+
+# Directive: max-listen-sockets
+#
+# Description:
+#     The maximum number of sockets that ZServer will attempt to open
+#     in order to service incoming connections.
+#
+# Default: 1000
+#
+# Example:
+#
+#    max-listen-sockets 500
+
+
+# Directives: port-base
+#
+# Description:
+#     Offset applied to the port numbers used for ZServer
+#     configurations.  For example, if the http-server port is 8080 and
+#     the port-base is 1000, the HTTP server will listen on port 9080.
+#     This makes it easy to change the complete set of ports used by a
+#     Zope server process
+#
+# Default:
+#
+#     0
+#
+# Example:
+#
+#     port-base 1000
+
+# Directive: large-file-threshold
+#
+# Description:
+#     Requests bigger than this size get saved into a temporary file
+#     instead of being read completely into memory.
+#
+# Default: 512K
+#
+# Example:
+#
+#    large-file-threshold 1Mb
+
+# Directive: default_zpublisher_encoding
+#
+# Description:
+#     This controls what character set is used to encode unicode
+#     data that reaches ZPublisher without any other specified encoding.
+#
+# Default: iso-8859-15
+#
+# Example:
+#
+#    default_zpublisher_encoding utf-8
+
+# Directives: servers
+#
+# Description:
+#     A set of sections which allow the specification of Zope's various
+#     ZServer servers.  7 different server types may be defined:
+#     http-server, ftp-server, webdav-source-server, persistent-cgi,
+#     fast-cgi, monitor-server, and icp-server.  If no servers are
+#     defined, the default servers are used.
+#
+#     Ports may be specified using the 'address' directive either in simple
+#     form (80) or in complex form including hostname 127.0.0.1:80.  If the
+#     hostname is "left off", the default-ip-address is used as the hostname.
+#
+#     To run the monitor-server an emergency user must be defined 
+#     (through an 'access' file).
+#
+#     Port numbers are offset by the setting of port-base.
+#
+# Default:
+#
+#     An HTTP server starts on port 8080, an FTP server starts on port
+#     8021.
+
+<http-server>
+  # valid keys are "address" and "force-connection-close"
+  address 8080
+  # force-connection-close on
+</http-server>
+
+<ftp-server>
+  # valid key is "address"
+  address 8021
+</ftp-server>
+
+# Examples:
+#
+#  <webdav-source-server>
+#    # valid keys are "address" and "force-connection-close"
+#    address 1980
+#    force-connection-close off
+#  </webdav-source-server>
+#
+#  <persistent-cgi>
+#    # valid key is "path"
+#    path somefile
+#  </persistent-cgi>
+#
+#  <fast-cgi>
+#    # valid key is "address"; the address may be hostname:port, port,
+#    # or a path for a Unix-domain socket
+#    address somefile
+#  </fast-cgi>
+#
+#  <monitor-server>
+#    # valid keys are "address"
+#    address 99
+#  </monitor-server>
+#
+#  <icp-server>
+#    # valid key is "address"
+#    address 888
+#  </icp-server>
+
+
+# Database (zodb_db) section
+#
+# Description:
+#     A database section allows the definition of custom database and
+#     storage types.  More than one zodb_db section can be defined.
+#
+# Default: unset.
+#          IMPORTANT: At least one database with a mount-point of "/"
+#          must be specified for Zope to start properly.
+
+<zodb_db main>
+    # Main FileStorage database
+    <filestorage>
+      path $INSTANCE/Data.fs
+    </filestorage>
+    mount-point /
+</zodb_db>
+
+<zodb_db temporary>
+    # Temporary storage database (for sessions)
+    <temporarystorage>
+      name temporary storage for sessioning
+    </temporarystorage>
+    mount-point /temp_folder
+    container-class Products.TemporaryFolder.TemporaryContainer
+</zodb_db>
+
+# Other storage examples
+#
+# ZEO client storage:
+#
+# <zodb_db main>
+#   mount-point /
+#   # ZODB cache, in number of objects
+#   cache-size 5000
+#   <zeoclient>
+#     server localhost:8100
+#     storage 1
+#     name zeostorage
+#     var $INSTANCE/var
+#     # ZEO client cache, in bytes
+#     cache-size 20MB
+#     # Uncomment to have a persistent disk cache
+#     #client zeo1
+#   </zeoclient>
+# </zodb_db>
+
+# The Timer Server replace the ERP5 zope_tic_loop script
+%import timerserver
+<timer-server>
+  interval 5
+</timer-server>

Propchange: erp5/trunk/products/ERP5Type/tests/skel/etc/zope.conf.in
------------------------------------------------------------------------------
    svn:executable = *




More information about the Erp5-report mailing list