GATEWAY_IP = ip.routes['default'].gateway
 PORT = 8086
 
-TEST_ACTION = ['runTestCase']
-
 TEST_CASE_PATH = '../tests/opnfv/test_cases/'
 
 SAMPLE_PATH = '../samples/'
 
 from sqlalchemy.orm import scoped_session, sessionmaker
 from sqlalchemy.ext.declarative import declarative_base
 
+from yardstick.common import constants as consts
+
 logger = logging.getLogger(__name__)
 logger.setLevel(logging.DEBUG)
 
-engine = create_engine('sqlite:////tmp/yardstick.db', convert_unicode=True)
+engine = create_engine(consts.SQLITE, convert_unicode=True)
 db_session = scoped_session(sessionmaker(autocommit=False,
                                          autoflush=False,
                                          bind=engine))
 
     Base.metadata.create_all(bind=engine)
 
 
-init_db()
 reduce(lambda a, b: a.add_resource(b.resource, b.url,
                                    endpoint=b.endpoint) or a, urlpatterns, api)
 
     _init_logging()
     logger.setLevel(logging.DEBUG)
     logger.info('Starting server')
+    init_db()
     app.run(host='0.0.0.0')
 
--- /dev/null
+from __future__ import absolute_import
+
+import os
+import unittest
+import tempfile
+
+from oslo_serialization import jsonutils
+
+from yardstick.common import constants as consts
+
+
+class APITestCase(unittest.TestCase):
+
+    def setUp(self):
+        self.db_fd, self.db_path = tempfile.mkstemp()
+        consts.SQLITE = 'sqlite:///{}'.format(self.db_path)
+        from api import server
+
+        server.app.config['TESTING'] = True
+        self.app = server.app.test_client()
+
+        server.init_db()
+
+    def tearDown(self):
+        os.close(self.db_fd)
+        os.unlink(self.db_path)
+
+    def _post(self, url, data):
+        headers = {'Content-Type': 'application/json'}
+        resp = self.app.post(url, data=jsonutils.dumps(data), headers=headers)
+        return jsonutils.loads(resp.data)
+
+    def _get(self, url):
+        resp = self.app.get(url)
+        return jsonutils.loads(resp.data)
 
--- /dev/null
+from __future__ import absolute_import
+
+import time
+import unittest
+
+from tests.unit.apiserver import APITestCase
+
+
+class EnvTestCase(APITestCase):
+
+    def test_create_grafana(self):
+        url = 'yardstick/env/action'
+        data = dict(action='createGrafanaContainer')
+        resp = self._post(url, data)
+
+        time.sleep(1)
+
+        task_id = resp['result']['task_id']
+        url = '/yardstick/asynctask?task_id={}'.format(task_id)
+        resp = self._get(url)
+
+        time.sleep(2)
+
+        self.assertTrue(u'status' in resp)
+
+
+def main():
+    unittest.main()
+
+
+if __name__ == '__main__':
+    main()
 
 BASE_URL = 'http://localhost:5000'
 ENV_ACTION_API = BASE_URL + '/yardstick/env/action'
 ASYNC_TASK_API = BASE_URL + '/yardstick/asynctask'
+
+SQLITE = 'sqlite:////tmp/yardstick.db'