diff --git a/test/test_openvim_inf.py b/test/test_openvim_inf.py
new file mode 100644
index 0000000..8e9bd3a
--- /dev/null
+++ b/test/test_openvim_inf.py
@@ -0,0 +1,194 @@
+import pytest
+import time
+from fixtures.pre.pre_fixtures_create import *
+from fixtures.post.post_fixtures_delete import *
+from lib.ssh import *
+from lib.test_utils import *
+
+
+@pytest.mark.usefixtures('pre_init_db', 'pre_create_host', 'pre_create_tenant', 'pre_create_net', 'pre_create_image',
+                         'pre_create_flavor', 'post_delete_net', 'post_delete_host')
+def test_osm_01_create_vm(request, pre_init_db,
+                          pre_create_host,
+                          pre_create_tenant,
+                          pre_create_net,
+                          pre_create_image,
+                          pre_create_flavor,
+                          post_delete_image,
+                          post_delete_flavor,
+                          post_delete_vm,
+                          post_delete_net,
+                          post_delete_host):
+    """
+    Create a vm and check network connection btw qrouter namespace and vm, evaluate using ping againt the ip given by
+    ovs dhcp server. Openvim is launched as a service by pre_launch_openvim_service before regresion start, is stopped
+    by  post_stop_openvim_service after test regresion ends.
+
+    :param request: Users argument --config=<test yaml>
+    :param pre_init_db: initialize the openvim db
+    :param pre_create_host: Create hosts
+    :param pre_create_tenant: Create tenant
+    :param pre_create_net: Create a mgmt net
+    :param pre_create_image: Create an image
+    :param pre_create_flavor: Create a flavor
+    :param post_delete_image: Delete the image declare by the test
+    :param post_delete_flavor: Delete the flavor declare by the test
+    :param post_delete_vm: Delete the vm declare by the test
+    :param post_delete_net: Delete the mgmt net declare by the test
+    :param post_delete_host: remove the host attached by the test
+    :return:
+    """
+    config_path = request.config.getoption('config')
+    config = get_config(config_path)
+    if not config['fake_mode']:
+        vm_id = create_vm_per_host(config, 1)
+        assert vm_id
+        # get vlan id
+        vlan_id = os.environ['OPENVIM_TEST_MGMT_NET_VLAN']
+        assert vlan_id
+        # get vm ip
+        ip = get_vm_ip(vm_id)
+        assert ip
+        # check ping against the vm
+        result = ping_ok(vlan_id, ip)
+        assert result
+
+
+@pytest.mark.usefixtures('pre_init_db', 'pre_create_host', 'pre_create_tenant', 'pre_create_net', 'pre_create_image',
+                         'pre_create_flavor', 'post_delete_net','post_delete_host')
+def test_osm_02_create_2_vm_ping_btw(request, pre_init_db,
+                                     pre_create_host,
+                                     pre_create_tenant,
+                                     pre_create_net,
+                                     pre_create_image,
+                                     pre_create_flavor,
+                                     post_delete_flavor,
+                                     post_delete_image,
+                                     post_delete_vm,
+                                     post_delete_net,
+                                     post_delete_host):
+    """
+    Create 2 vms and check network connection btw qrouter namespace and vms, after ssh ready check ping btw both vms
+    to validate the vlxan mesh btw computes is ok. The vms ips are handle by ovs dhcp server. Openvim is launched as a
+    service by pre_launch_openvim_service before regresion start, is stopped by  post_stop_openvim_service after
+    test regresion ends.
+
+    :param request: Users argument --config=<test yaml>
+    :param pre_init_db: initialize the openvim db
+    :param pre_create_host: Create hosts
+    :param pre_create_tenant: Create tenant
+    :param pre_create_net: Create a mgmt net
+    :param pre_create_image: Create an image
+    :param pre_create_flavor: Create a flavor
+    :param post_delete_image: Delete the image declare by the test
+    :param post_delete_flavor: Delete the flavor declare by the test
+    :param post_delete_vm: Delete the vm declare by the test
+    :param post_delete_net: Delete the mgmt net declare by the test
+    :param post_delete_host: remove the host attached by the test
+    :return:
+    """
+    config_path = request.config.getoption('config')
+    config = get_config(config_path)
+
+    if not config['fake_mode']:
+        vm_id_1 = create_vm_per_host(config, 0)
+        assert vm_id_1
+
+        vm_id_2 = create_vm_per_host(config, 1)
+        assert vm_id_2
+
+        # get vlan id
+        vlan_id = os.environ['OPENVIM_TEST_MGMT_NET_VLAN']
+        assert vlan_id
+
+        # get vm ip
+        ip_1 = get_vm_ip(vm_id_1)
+        ip_2 = get_vm_ip(vm_id_2)
+        assert ip_2
+
+        # check ping against the vms
+        result = ping_ok(vlan_id, ip_1)
+        assert result
+        result = ping_ok(vlan_id, ip_2)
+        assert result
+
+        # Wait for ssh to be ready
+        print "Wait for ssh to be ready"
+        time.sleep(90)
+        result = ping_ok_btw_2_vms(vlan_id, ip_1, ip_2)
+        assert result
+
+
+@pytest.mark.usefixtures('pre_init_db', 'pre_create_host', 'pre_create_tenant', 'pre_create_net', 'pre_create_image',
+                         'pre_create_flavor', 'post_delete_net','post_delete_host')
+def test_osm_03_test_service_openvim(request, pre_init_db,
+                                     pre_create_host,
+                                     pre_create_tenant,
+                                     pre_create_net,
+                                     pre_create_image,
+                                     pre_create_flavor,
+                                     post_delete_flavor,
+                                     post_delete_image,
+                                     post_delete_net,
+                                     post_delete_host):
+    """
+    Create a net, restart openvim service and check net status to avoid issues with preexisting nets during openvim
+    startup. Openvim is launched as a service by pre_launch_openvim_service before regresion start, is stopped by
+    post_stop_openvim_service after test regresion ends.
+
+    :param request: Users argument --config=<test yaml>
+    :param pre_init_db: initialize the openvim db
+    :param pre_create_host: Create hosts
+    :param pre_create_tenant: Create tenant
+    :param pre_create_net: Create a mgmt net
+    :param pre_create_image: Create an image
+    :param pre_create_flavor: Create a flavor
+    :param post_delete_image: Delete the image declare by the test
+    :param post_delete_flavor: Delete the flavor declare by the test
+    :param post_delete_net: Delete the mgmt net declare by the test
+    :param post_delete_host: remove the host attached by the test
+    :return:
+    """
+
+    net_id = os.environ['OPENVIM_TEST_MGMT_NET']
+    status = get_net_status(net_id)
+    if 'ACTIVE' in status:
+        service_path = os.path.join(os.environ['OPENVIM_ROOT_FOLDER'], 'scripts', 'service-openvim')
+        execute_local('{} restart'.format(service_path))
+    else:
+        # force test fail if net status is not ACTIVE
+        assert None
+
+    status = get_net_status(net_id)
+    if 'ACTIVE' not in status:
+        assert None
+
+
+def create_vm_per_host(config, host_number=0):
+    """
+    Create a vm in an specific compute.
+    :param config: test config
+    :param host_number: compute number to be depolyed. 
+    :return: 
+    """
+    # get env var for server descriptor
+    tenant_id = os.environ['OPENVIM_TENANT']
+    image_id = os.environ['OPENVIM_TEST_IMAGE']
+    flavor_id = os.environ['OPENVIM_TEST_FLAVOR']
+    net_id = os.environ['OPENVIM_TEST_MGMT_NET']
+
+    values = {'OPENVIM_TENANT': tenant_id,
+              'OPENVIM_TEST_IMAGE': image_id,
+              'OPENVIM_TEST_FLAVOR': flavor_id,
+              'OPENVIM_TEST_MGMT_NET': net_id,
+              'HOST_ID': os.environ['OPENVIM_TEST_HOST_' + str(host_number)]
+              }
+
+    descriptor = template_substitute(config['server'], values)
+    save_tmp_yaml('tmp.yaml', descriptor)
+    # create vm
+    openvim_path = os.path.join(os.environ['OPENVIM_ROOT_FOLDER'], 'openvim')
+    vm_id = execute_local("{} vm-create {}".format(openvim_path, 'tmp.yaml'))
+    vm_id = parse_uuid(vm_id)
+    delete_tmp_yaml('tmp.yaml')
+    return vm_id
