Test: Adding Initial XOS based test scenarios .
This checks for XOS containers launched , container status,
reach status and ports listening for particular services.

Change-Id: I4c491e4e7033afa84fab4f1c0b0324a236f864af
diff --git a/src/test/setup/cord-test.py b/src/test/setup/cord-test.py
index 5992eba..acb1fd3 100755
--- a/src/test/setup/cord-test.py
+++ b/src/test/setup/cord-test.py
@@ -48,7 +48,9 @@
     basename = 'cord-tester'
     switch_on_olt = False
     IMAGE = 'cord-test/nose'
-    ALL_TESTS = ('tls', 'dhcp', 'dhcprelay','igmp', 'subscriber', 'cordSubscriber', 'vrouter', 'flows', 'proxyarp', 'acl')
+    ALL_TESTS = ('tls', 'dhcp', 'dhcprelay','igmp', 'subscriber',
+    'cordSubscriber', 'vrouter', 'flows', 'proxyarp', 'acl', 'xos', 'fabric',
+    'cbench', 'cluster')
 
     def __init__(self, tests, instance = 0, num_instances = 1, ctlr_ip = None,
                  name = '', image = IMAGE, prefix = '', tag = 'candidate',
@@ -713,7 +715,6 @@
             Container.dckr.kill(onos)
             Container.dckr.remove_container(onos, force=True)
         Onos.cleanup_runtime()
-
     return 0
 
 def listTests(args):
@@ -842,6 +843,62 @@
 
     return 0
 
+def xosContainers(args):
+    update_map = {  'xos-base' : False, 'xos-synchronizer-openstack' : False, 'openvpn' : False, 'postgresql' :False,
+                    'xos' : False, 'syndicate-ms': False, 'xos-synchronizer-vtr' : False, 'xos-synchronizer-vsg' : False,
+                    'xos-synchronizer-onos' : False, 'xos-synchronizer-fabric' : False, 'xos-synchronizer-vtn' : False,
+                    'xos-synchronizer-onboarding' : False, }
+
+    if args.xosAllContainers == True or args.xosBase == True:
+        #Start xos base container. Builds container if required
+        xosBase = Xos_base(prefix = Container.IMAGE_PREFIX, update = update_map['xos-base'])
+
+    if args.xosAllContainers == True or args.xosSynOpenstack == True:
+        #Start xos base container. Builds container if required
+        xosSynOpenstack = Xos_sync_openstack(prefix = Container.IMAGE_PREFIX, update = update_map['xos-synchronizer-openstack'])
+    if args.xosAllContainers == True or args.xosOpenvpn == True:
+        #Start xos base container. Builds container if required
+        xosOpenvpn = Xos_openvpn(prefix = Container.IMAGE_PREFIX, update = update_map['openvpn'])
+
+    if args.xosAllContainers == True or args.xosPostgresql == True:
+        #Start xos postgresql container. Builds container if required
+        xosPostgresql = Xos_postgresql(prefix = Container.IMAGE_PREFIX, update = update_map['postgresql'])
+
+    if args.xosAllContainers == True or args.xosSynchronizer == True:
+        #Start xos synchronizer container. Builds container if required
+        xosSynchronizer = Xos_synchronizer(prefix = Container.IMAGE_PREFIX, update = update_map['xos'])
+
+    if args.xosAllContainers == True or args.xosSyndicateMs == True:
+        #Start xos syndicateMs container. Builds container if required
+        xosSyndicateMs = Xos_syndicate_ss(prefix = Container.IMAGE_PREFIX, update = update_map['syndicate-ms'])
+
+    if args.xosAllContainers == True or args.xosSynVtr == True:
+        #Start xos synchronizer vtr container. Builds container if required
+        xosSynVtr = Xos_syn_vtr(prefix = Container.IMAGE_PREFIX, update = update_map['xos-synchronizer-vtr'])
+
+    if args.xosAllContainers == True or args.xosSynVsg == True:
+        #Start xos synchronizer vsg container. Builds container if required
+        xosSynVsg = Xos_syn_vsg(prefix = Container.IMAGE_PREFIX, update = update_map['xos-synchronizer-vsg'])
+
+    if args.xosAllContainers == True or args.xosSynOnos == True:
+        #Start xos synchronizer Onos container. Builds container if required
+        xosSynOnos = Xos_syn_onos(prefix = Container.IMAGE_PREFIX, update = update_map['xos-synchronizer-onos'])
+
+    if args.xosAllContainers == True or args.xosSynFabric == True:
+        #Start xos synchronizer fabric container. Builds container if required
+        xosSynFabric = Xos_syn_fabric(prefix = Container.IMAGE_PREFIX, update = update_map['xos-synchronizer-fabric'])
+
+    if args.xosAllContainers == True or args.xosSynVtn == True:
+        #Start xos synchronizer vtn container. Builds container if required
+        xosSynVtn = Xos_syn_vtn(prefix = Container.IMAGE_PREFIX, update = update_map['xos-synchronizer-vtn'])
+
+    if args.xosAllContainers == True or args.xosSynOnboarding == True:
+        #Start xos synchronizer Onboarding container. Builds container if required
+        xosSynOnboarding = Xos_syn_onboarding(prefix = Container.IMAGE_PREFIX, update = update_map['xos-synchronizer-onboarding'])
+
+    print('Done building xos containers')
+    return 0
+
 if __name__ == '__main__':
     parser = ArgumentParser(description='Cord Tester')
     subparser = parser.add_subparsers()
@@ -898,6 +955,22 @@
                             help='Specify number of test onos instances to spawn')
     parser_setup.set_defaults(func=setupCordTester)
 
+    parser_xos = subparser.add_parser('xos', help='Building xos into cord tester environment')
+    parser_xos.add_argument('-x', '--xosAllContainers', action='store_true',help='Provision all containers of XOS for CORD')
+    parser_xos.add_argument('-xb', '--xosBase',action='store_true',help='Provision xos base container')
+    parser_xos.add_argument('-xsos', '--xosSyncOpenstack',action='store_true',help='Provision xos synchronizer openstack container')
+    parser_xos.add_argument('-xo', '--xosOpenvpn',action='store_true',help='Provision xos openvpn container')
+    parser_xos.add_argument('-xp', '--xosPostgresql',action='store_true',help='Provision xos postgresql')
+    parser_xos.add_argument('-xs', '--xosSynchronizer',action='store_true',help='Provision xos synchronizer')
+    parser_xos.add_argument('-xsm', '--xosSyndicateMs',action='store_true',help='Provision xos syndicate-ms')
+    parser_xos.add_argument('-xsvtr', '--xosSyncVtr',action='store_true',help='Provision xos synchronizer vtr container')
+    parser_xos.add_argument('-xsvsg', '--xosSyncVsg',action='store_true',help='Provision xos synchronizer vsg container')
+    parser_xos.add_argument('-xsonos', '--xosSyncOnos',action='store_true',help='Provision xos synchronizer onos container')
+    parser_xos.add_argument('-xsfabric', '--xosSyncFabric',action='store_true',help='Provision xos synchronizer fabric container')
+    parser_xos.add_argument('-xsvtn', '--xosSyncVtn',action='store_true',help='Provision xos synchronizer vtn container')
+    parser_xos.add_argument('-xsonb', '--xosSyncOnboarding',action='store_true',help='Provision xos synchronizer onboarding container')
+    parser_xos.set_defaults(func=xosContainers)
+
     parser_list = subparser.add_parser('list', help='List test cases')
     parser_list.add_argument('-t', '--test', default='all', help='Specify test type to list test cases. '
                              'Eg: -t tls to list tls test cases.'
@@ -906,8 +979,8 @@
     parser_list.set_defaults(func=listTests)
 
     parser_build = subparser.add_parser('build', help='Build cord test container images')
-    parser_build.add_argument('image', choices=['quagga', 'radius', 'test', 'all'])
-    parser_build.add_argument('-p', '--prefix', default='', type=str, help='Provide container image prefix')
+    parser_build.add_argument('image', choices=['quagga', 'radius', 'test','all'])
+    parser_build.add_argument('-p', '--prefix', default='xosproject', type=str, help='Provide container image prefix')
     parser_build.set_defaults(func=buildImages)
 
     parser_metrics = subparser.add_parser('metrics', help='Info of container')