From 0b43d63e5a8ed62cac87b1eea1ac833859655e72 Mon Sep 17 00:00:00 2001
From: Sebastien Robin <seb@nexedi.com>
Date: Wed, 27 Feb 2013 18:37:22 +0100
Subject: [PATCH] add a test to print sql bench result (cloud performance
 testing)

---
 product/ERP5Type/tests/_testSQLBench.py | 61 +++++++++++++++++++++++++
 tests/__init__.py                       |  2 +-
 2 files changed, 62 insertions(+), 1 deletion(-)
 create mode 100644 product/ERP5Type/tests/_testSQLBench.py

diff --git a/product/ERP5Type/tests/_testSQLBench.py b/product/ERP5Type/tests/_testSQLBench.py
new file mode 100644
index 0000000000..44a331375e
--- /dev/null
+++ b/product/ERP5Type/tests/_testSQLBench.py
@@ -0,0 +1,61 @@
+##############################################################################
+#
+# Copyright (c) 2013 Nexedi SA and Contributors. All Rights Reserved.
+#          Sebastien Robin <seb@nexedi.com>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+##############################################################################
+
+import os
+import subprocess
+import unittest
+
+class TestSQLBench(unittest.TestCase):
+  """Tests to get sqlbench values
+  """
+  def test_sqlbench(self):
+    """
+    launch sql bench test to check speed of hardware. There is quite dirty
+    launch of bench depending on many environ variables. However this allows
+    to get a quick solution
+    """
+    home = os.environ['REAL_INSTANCE_HOME']
+    sql_connection_string = os.environ['erp5_sql_connection_string']
+    database_and_server, user, password = sql_connection_string.split(' ')
+    database, host = database_and_server.split('@')
+    software_home = os.environ['OPENSSL_BINARY'].replace(
+      "parts/openssl/bin/openssl", "")
+    mariadb_folder = software_home + '/parts/mariadb'
+    perl_command = software_home + "/parts/perl/bin/perl"
+    command_list = [perl_command,
+       mariadb_folder + '/sql-bench/test-alter-table',
+      '--database', database,
+      '--host', host, '--user', user, '--password', password]
+    print command_list
+    process = subprocess.Popen(command_list,
+      cwd = mariadb_folder + '/sql-bench/',
+      stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    output, error = process.communicate()
+    self.assertEquals(0, len(error))
+    self.assertTrue(output.find("Total time: ")>=0)
+    print output
diff --git a/tests/__init__.py b/tests/__init__.py
index ae16d80275..f0b592bbb8 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -55,7 +55,7 @@ class PERF(_ERP5):
 class CloudPERF(_ERP5):
 
   def getTestList(self):
-    return ['_testPystone']
+    return ['_testPystone', '_testSQLBench']
 
 class ERP5(_ERP5):
   mysql_db_count = 3
-- 
2.30.9