diff --git a/wally/suits/omgbench/__init__.py b/wally/suits/omgbench/__init__.py
new file mode 100644
index 0000000..10a3151
--- /dev/null
+++ b/wally/suits/omgbench/__init__.py
@@ -0,0 +1,28 @@
+import os.path
+
+
+import texttable
+
+
+from ..itest import TwoScriptTest
+
+
+class OmgTest(TwoScriptTest):
+    root = os.path.dirname(__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):
+        results = []
+
+        for res in data[0]:
+            results.append(float(res.raw_result))
+
+        totalt = sum(results)
+        totalms = int(100 * 2 * len(results) / totalt)
+        tab = texttable.Texttable(max_width=120)
+        tab.set_deco(tab.HEADER | tab.VLINES | tab.BORDER)
+        tab.header(["Bandwidth total"])
+        tab.add_row([totalms])
+        return tab.draw()
diff --git a/wally/suits/omgbench/prepare.sh b/wally/suits/omgbench/prepare.sh
new file mode 100755
index 0000000..2b49545
--- /dev/null
+++ b/wally/suits/omgbench/prepare.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+set -e
+set -x
+#
+#OMGPATN=/tmp
+#
+#mkdir -p "$OMGPATN"
+#cd "$OMGPATN"
+#
+#git clone https://github.com/openstack/rally
+#git clone https://github.com/Yulya/omgbenchmark
+#
+#mkdir venv
+#cd rally
+#./install_rally.sh -d "$OMGPATN"/venv -y
+#
+#cd "$OMGPATN"
+#source venv/bin/activate
+#apt-get -y install python-scipy libblas-dev liblapack-dev libatlas-base-dev gfortran
+#pip install oslo.messaging petname scipy
+#
+#
+#
diff --git a/wally/suits/omgbench/run.sh b/wally/suits/omgbench/run.sh
new file mode 100755
index 0000000..390bf67
--- /dev/null
+++ b/wally/suits/omgbench/run.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+set -e
+
+
+while [[ $# > 1 ]]
+do
+key="$1"
+
+case $key in
+    url)
+    URL="$2"
+    shift
+    ;;
+    times)
+    TIMES="$2"
+    shift
+    ;;
+    *)
+    echo "Unknown option $key"
+    exit 1
+    ;;
+esac
+shift
+done
+
+OMGPATN=/tmp
+
+cd "$OMGPATN"
+source venv/bin/activate
+
+cd omgbenchmark/rally_plugin
+
+#sed -i -e "s,rabbit:\/\/guest:guest@localhost\/,$URL,g" deployment.json
+#sed -i -e "s,times\": 100,times\": $TIMES,g" task.json
+
+#rally --plugin-paths . deployment create --file=deployment.json --name=test2 &> /dev/null
+rally --plugin-paths . task start task.json &> ~/omg.log
+cat ~/omg.log | grep  "Load duration" | grep -o '[0-9,.]\+'
\ No newline at end of file
