From 0f87903609e02e18f1d00400779818ab98dcaf86 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Wed, 26 Mar 2008 09:06:27 +0000
Subject: [PATCH] tests the performance of a form with proxy fields

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@20136 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Type/tests/testPerformance.py | 38 +++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/product/ERP5Type/tests/testPerformance.py b/product/ERP5Type/tests/testPerformance.py
index 573cc96cfb..a04deb12b5 100644
--- a/product/ERP5Type/tests/testPerformance.py
+++ b/product/ERP5Type/tests/testPerformance.py
@@ -30,6 +30,7 @@ import unittest
 from time import time
 import gc
 
+from DateTime import DateTime
 from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
 from zLOG import LOG
 from Products.CMFCore.tests.base.testcase import LogInterceptor
@@ -39,6 +40,8 @@ from Products.CMFCore.tests.base.testcase import LogInterceptor
 # (which has 31645.6 pystones/second)
 MIN_OBJECT_VIEW=0.112
 MAX_OBJECT_VIEW=0.122
+MIN_OBJECT_PROXYFIELD_VIEW=0.112
+MAX_OBJECT_PROXYFIELD_VIEW=0.122
 CURRENT_MIN_OBJECT_VIEW=0.1220
 CURRENT_MAX_OBJECT_VIEW=0.1280
 MIN_MODULE_VIEW=0.125
@@ -210,6 +213,41 @@ class TestPerformance(ERP5TypeTestCase, LogInterceptor):
                             MIN_TIC, tic_value, MAX_TIC))
         i += 1
 
+
+    def test_viewProxyField(self, quiet=quiet):
+      # render a form with proxy fields: Foo_viewProxyField
+      foo = self.portal.foo_module.newContent(
+                           portal_type='Foo',
+                           title='Bar Test',
+                           quantity=10000,
+                           price=32,
+                           start_date=DateTime(2008,1,1))
+      foo.newContent(portal_type='Foo Line',
+                     title='Line 1')
+      foo.newContent(portal_type='Foo Line',
+                     title='Line 2')
+      get_transaction().commit()
+      self.tic()
+      # Check performance
+      before_view = time()
+      for x in xrange(100):
+        foo.Foo_viewProxyField()
+      after_view = time()
+      req_time = (after_view - before_view)/100.
+
+      if not quiet:
+        print "time to view proxyfield form %.4f < %.4f < %.4f\n" % \
+              ( MIN_OBJECT_PROXYFIELD_VIEW,
+                req_time,
+                MAX_OBJECT_PROXYFIELD_VIEW )
+      if DO_TEST:
+        self.failUnless( MIN_OBJECT_PROXYFIELD_VIEW < req_time
+                                    < MAX_OBJECT_PROXYFIELD_VIEW,
+          '%.4f < %.4f < %.4f' % (
+              MIN_OBJECT_PROXYFIELD_VIEW,
+              req_time,
+              MAX_OBJECT_PROXYFIELD_VIEW))
+
 def test_suite():
   suite = unittest.TestSuite()
   suite.addTest(unittest.makeSuite(TestPerformance))
-- 
2.30.9