[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