Mysql tests
diff --git a/wally/suits/itest.py b/wally/suits/itest.py
index bd98dee..c3848a7 100644
--- a/wally/suits/itest.py
+++ b/wally/suits/itest.py
@@ -7,6 +7,7 @@
 import datetime
 
 from paramiko import SSHException, SFTPError
+import texttable
 
 from wally.utils import (ssize_to_b, open_for_append_or_create,
                          sec_to_str, StopTestError)
@@ -17,6 +18,7 @@
                              connect, read_from_remote, Local)
 
 from . import postgres
+from . import mysql
 from .io import agent as io_agent
 from .io import formatter as io_formatter
 from .io.results_loader import parse_output
@@ -78,30 +80,26 @@
     def __init__(self, *dt, **mp):
         IPerfTest.__init__(self, *dt, **mp)
 
-        if 'run_script' in self.options:
+        if 'scripts_path' in self.options:
+            self.root = self.options['scripts_path']
             self.run_script = self.options['run_script']
-            self.prepare_script = self.options['prepare_script']
+            self.prerun_script = self.options['prerun_script']
 
     def get_remote_for_script(self, script):
-        return os.path.join(self.tmp_dir, script.rpartition('/')[2])
+        return os.path.join(self.remote_dir, script.rpartition('/')[2])
 
-    def copy_script(self, src):
-        remote_path = self.get_remote_for_script(src)
-        copy_paths(self.node.connection, {src: remote_path})
-        return remote_path
 
     def pre_run(self):
-        remote_script = self.copy_script(self.node.connection,
-                                         self.pre_run_script)
-        cmd = remote_script
-        self.run_over_ssh(cmd)
+        copy_paths(self.node.connection, {self.root: self.remote_dir})
+        cmd = self.get_remote_for_script(self.pre_run_script)
+        self.run_over_ssh(cmd, timeout=2000)
 
     def run(self, barrier):
-        remote_script = self.copy_script(self.node.connection, self.run_script)
+        remote_script = self.get_remote_for_script(self.run_script)
         cmd_opts = ' '.join(["%s %s" % (key, val) for key, val
                              in self.options.items()])
         cmd = remote_script + ' ' + cmd_opts
-        out_err = self.run_over_ssh(cmd)
+        out_err = self.run_over_ssh(cmd, timeout=6000)
         self.on_result(out_err, cmd)
 
     def parse_results(self, out):
@@ -117,13 +115,31 @@
             msg_templ = "Error during postprocessing results: {0!s}. {1}"
             raise RuntimeError(msg_templ.format(exc, out_err))
 
+    def merge_results(self, results):
+        tpcm = sum([val[1] for val in results])
+        return {"res": {"TpmC": tpcm}}
+
 
 class PgBenchTest(TwoScriptTest):
     root = os.path.dirname(postgres.__file__)
-    prepare_script = os.path.join(root, "prepare.sh")
+    pre_run_script = os.path.join(root, "prepare.sh")
     run_script = os.path.join(root, "run.sh")
 
 
+class MysqlTest(TwoScriptTest):
+    root = os.path.dirname(mysql.__file__)
+    pre_run_script = os.path.join(root, "prepare.sh")
+    run_script = os.path.join(root, "run.sh")
+
+    @classmethod
+    def format_for_console(cls, data):
+        tab = texttable.Texttable(max_width=120)
+        tab.set_deco(tab.HEADER | tab.VLINES | tab.BORDER)
+        tab.header(["TpmC"])
+        tab.add_row([data['res']['TpmC']])
+        return tab.draw()
+
+
 class IOPerfTest(IPerfTest):
     tcp_conn_timeout = 30
     max_pig_timeout = 5