[Erp5-report] r38831 gabriel - in /erp5/trunk/buildout: instance-profiles/ profiles/ softwa...
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Oct 1 14:17:42 CEST 2010
Author: gabriel
Date: Fri Oct 1 14:17:40 2010
New Revision: 38831
URL: http://svn.erp5.org?rev=38831&view=rev
Log:
add profiles to install cloudooo and one template to run your unit tests
Added:
erp5/trunk/buildout/instance-profiles/cloudooo.cfg
erp5/trunk/buildout/profiles/test-cloudooo.cfg
erp5/trunk/buildout/templates/runCloudOOoUnitTest.py.in
Modified:
erp5/trunk/buildout/software-profiles/cloudooo.cfg
Added: erp5/trunk/buildout/instance-profiles/cloudooo.cfg
URL: http://svn.erp5.org/erp5/trunk/buildout/instance-profiles/cloudooo.cfg?rev=38831&view=auto
==============================================================================
--- erp5/trunk/buildout/instance-profiles/cloudooo.cfg (added)
+++ erp5/trunk/buildout/instance-profiles/cloudooo.cfg [utf8] Fri Oct 1 14:17:40 2010
@@ -0,0 +1,49 @@
+[buildout]
+extends = ../profiles/software-definition.cfg
+parts =
+ cloudooo-instance-template
+ paster
+ create-log-directory
+
+[paster]
+recipe = zc.recipe.egg
+eggs =
+ PasteScript
+
+[create-log-directory]
+recipe = z3c.recipe.mkdir
+paths =
+ ${buildout:log-directory}
+ ${buildout:run-directory}
+
+[cloudooo-instance-template]
+recipe = erp5.recipe.cloudoooinstance
+daemon = true # only true or false
+conf-output = ${buildout:etc-directory}/cloudooo.conf
+ctl-output = ${buildout:data-bin-directory}/cloudoooctl
+log-directory = ${buildout:log-directory}
+run-directory = ${buildout:run-directory}
+bin-directory = ${buildout:bin-directory}
+start-timeout = 20
+hostname = localhost
+debug-mode = True
+working_path = ${buildout:run-directory}
+#
+## Monitor Settings
+#
+request-limit = 100
+monitor-interval = 10
+timeout-response = 180
+enable-memory-monitor = True
+memory-limit = 3000
+#
+## OpenOffice Settings
+#
+uno-path = ${software_definition:openoffice_software}/basis-link/program/
+office-binary-path = ${software_definition:openoffice_software}/program/
+openoffice-port = 4062
+virtual-display-port = 6077
+virtual-display-id = 77
+virtual-screen = 0
+server-hostname = 0.0.0.0
+server-port = 8011
Added: erp5/trunk/buildout/profiles/test-cloudooo.cfg
URL: http://svn.erp5.org/erp5/trunk/buildout/profiles/test-cloudooo.cfg?rev=38831&view=auto
==============================================================================
--- erp5/trunk/buildout/profiles/test-cloudooo.cfg (added)
+++ erp5/trunk/buildout/profiles/test-cloudooo.cfg [utf8] Fri Oct 1 14:17:40 2010
@@ -0,0 +1,20 @@
+[buildout]
+extends = ../instance-profiles/cloudooo.cfg
+parts +=
+ runUnitTest
+ chmod
+
+[runUnitTest]
+recipe = z3c.recipe.template
+input = ${buildout:directory}/templates/runCloudOOoUnitTest.py.in
+output = ${buildout:bin-directory}/runCloudOOoUnitTest.py.in
+tests-directory = ${software_definition:software_home}/src/cloudooo/cloudooo/tests
+cloudoooctl-path = ${cloudooo-instance-template:ctl-output}
+conf-path = ${cloudooo-instance-template:conf-output}
+timeout-limit = 60
+
+[chmod]
+recipe = plone.recipe.command
+command =
+ chmod a+x ${buildout:bin-directory}/runCloudOOoUnitTest.py.in
+update = {:command}
Modified: erp5/trunk/buildout/software-profiles/cloudooo.cfg
URL: http://svn.erp5.org/erp5/trunk/buildout/software-profiles/cloudooo.cfg?rev=38831&r1=38830&r2=38831&view=diff
==============================================================================
--- erp5/trunk/buildout/software-profiles/cloudooo.cfg [utf8] (original)
+++ erp5/trunk/buildout/software-profiles/cloudooo.cfg [utf8] Fri Oct 1 14:17:40 2010
@@ -1,14 +1,28 @@
[buildout]
-parts =
- openoffice-bin
- cloudooo
-
extends =
../software-profiles/python-2.6.cfg
../software-profiles/openoffice-bin.cfg
-[cloudooo]
-recipe = zc.recipe.egg
-eggs =
- PasteScript
- cloudooo
+parts =
+ openoffice-bin
+ python2.6
+ pythonbin2.6
+
+extensions = mr.developer
+sources = sources
+auto-checkout = cloudooo
+
+[sources]
+cloudooo = svn https://svn.erp5.org/repos/public/erp5/trunk/utils/cloudooo
+
+[pythonbin2.6]
+recipe = zc.recipe.egg:scripts
+python = python2.6
+eggs = ${eggs:eggs}
+ invokepython>=0.4
+scripts =
+ invokepython=python${python2.6:python_version_major}
+ ipython=ipython${python2.6:python_version_major}
+
+[eggs]
+eggs = cloudooo
Added: erp5/trunk/buildout/templates/runCloudOOoUnitTest.py.in
URL: http://svn.erp5.org/erp5/trunk/buildout/templates/runCloudOOoUnitTest.py.in?rev=38831&view=auto
==============================================================================
--- erp5/trunk/buildout/templates/runCloudOOoUnitTest.py.in (added)
+++ erp5/trunk/buildout/templates/runCloudOOoUnitTest.py.in [utf8] Fri Oct 1 14:17:40 2010
@@ -0,0 +1,107 @@
+#!${buildout:executable}
+
+import sys
+import unittest
+import psutil
+from psutil.error import AccessDenied
+from getopt import getopt, GetoptError
+from time import sleep
+from cloudooo.utils import socketStatus, waitStopDaemon
+from ConfigParser import ConfigParser
+from os import chdir
+from os.path import join, exists
+from os import remove
+from getpass import getuser
+from subprocess import Popen
+
+log_path = '${buildout:directory}/log/cloudooo.log'
+environment_path = '${tests-directory}'
+cloudooo_runner = '${cloudoooctl-path}'
+server_cloudooo_conf = '${conf-path}'
+timeout_limit = ${timeout-limit}
+sys.path.append(environment_path)
+chdir(environment_path)
+from cloudoooTestCase import loadConfig, startFakeEnvironment, stopFakeEnvironment
+
+def wait_liberate_port(hostname, port):
+ for n in range(timeout_limit):
+ if not socketStatus(hostname, port):
+ break
+ sleep(1)
+
+def wait_use_port(hostname, port):
+ for n in range(timeout_limit):
+ if socketStatus(hostname, port):
+ return
+ sleep(1)
+
+def get_partial_log():
+ if exists(log_path):
+ return '\n'.join(open(log_path).read().split('\n')[-30:])
+ return ''
+
+def exit(msg):
+ sys.stderr.write(msg)
+ sys.exit(0)
+
+def run_test(test_name):
+ module = __import__(test_name)
+ if not hasattr(module, "test_suite"):
+ exit("No test suite to run, exiting immediately")
+ TestRunner = unittest.TextTestRunner
+ suite = unittest.TestSuite()
+ suite.addTest(module.test_suite())
+ TestRunner(verbosity=2).run(suite)
+
+DAEMON = OPENOFFICE = XVFB = False
+
+config = ConfigParser()
+config.read(server_cloudooo_conf)
+openoffice_port = int(config.get("app:main", "openoffice_port"))
+xvfb_port = int(config.get("app:main", "virtual_display_port"))
+xvfb_display_id = int(config.get("app:main", "virtual_display_id"))
+hostname = config.get("app:main", "application_hostname")
+server_port = int(config.get("server:main", "port"))
+run_dir = config.get('app:main', 'working_path')
+
+try:
+ opt_list, arg_list = getopt(sys.argv[1:-1], "", ["with-daemon",
+ "with-openoffice",
+ "with-xvfb"])
+except GetoptError, msg:
+ exit(msg.msg)
+
+for opt, arg in opt_list:
+ if opt == "--with-daemon":
+ DAEMON = True
+ elif opt == "--with-openoffice":
+ OPENOFFICE = True
+ elif opt == "--with-xvfb":
+ XVFB = True
+
+test_name = sys.argv[-1]
+if not exists(join(environment_path, '%s.py' % test_name)):
+ exit("%s not exists\n" % test_name)
+
+if DAEMON:
+ loadConfig(server_cloudooo_conf)
+ Popen([cloudooo_runner, 'start']).communicate()
+ wait_use_port(hostname, server_port)
+ print get_partial_log()
+ try:
+ run_test(test_name)
+ finally:
+ Popen([cloudooo_runner, 'stop']).communicate()
+ wait_liberate_port(hostname, server_port)
+elif OPENOFFICE:
+ openoffice, xvfb = startFakeEnvironment(conf_path=server_cloudooo_conf)
+ run_test(test_name)
+ stopFakeEnvironment()
+elif XVFB:
+ xvfb = startFakeEnvironment(start_openoffice=False,
+ conf_path=server_cloudooo_conf)
+ run_test(test_name)
+ stopFakeEnvironment(stop_openoffice=False)
+else:
+ loadConfig(server_cloudooo_conf)
+ run_test(test_name)
More information about the Erp5-report
mailing list