Skip to content

Commit

Permalink
Merge "Initial Checkin of Server Manager Upgrade test." into R2.20
Browse files Browse the repository at this point in the history
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Jul 14, 2015
2 parents 951c42f + 9cd777f commit 5fdf980
Show file tree
Hide file tree
Showing 9 changed files with 1,699 additions and 0 deletions.
1,352 changes: 1,352 additions & 0 deletions fixtures/smgr_common.py

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions scripts/smgr/__init__.py
@@ -0,0 +1 @@
"""Server Manager Tests."""
Binary file added scripts/smgr/__init__.pyc
Binary file not shown.
58 changes: 58 additions & 0 deletions scripts/smgr/base.py
@@ -0,0 +1,58 @@
import test
import fixtures
import sys
import os
from common.contrail_test_init import ContrailTestInit
from smgr_common import SmgrFixture


class ServerManagerTest(test.BaseTestCase):


@classmethod
def setUpClass(self):
super(ServerManagerTest, self).setUpClass()
if 'PARAMS_FILE' in os.environ:
self.ini_file = os.environ.get('PARAMS_FILE')
else:
self.ini_file = 'sanity_params.ini'

if 'TESTBED_FILE' in os.environ:
self.testbed_py = os.environ.get('TESTBED_FILE')
else:
self.testbed_py = 'testbed.py'

if 'SMGR_FILE' in os.environ:
self.smgr_file = os.environ.get('SMGR_FILE')
else:
self.smgr_file = 'smgr_input.ini'

self.inputs = '1'
self.logger.info("Configuring setup for smgr tests.")
self.smgr_fixture = SmgrFixture(self.inputs, \
testbed_py=self.testbed_py, \
smgr_config_ini=self.smgr_file, \
test_local=False,logger = self.logger)
self.logger.info("Adding Server to smgr DB")
self.smgr_fixture.svrmgr_add_all()
print "SKIRANH.................................................completed init..............."

# end setUpClass

@classmethod
def tearDownClass(self):
super(ServerManagerTest, self).tearDownClass()
#end tearDownClass

def verify(self):
"""verfiy common resources."""
self.logger.debug("Verify the common resources")
pass

def remove_from_cleanups(self, fix):
for cleanup in self._cleanups:
if fix.cleanUp in cleanup:
self._cleanups.remove(cleanup)
break
#end remove_from_cleanups

Binary file added scripts/smgr/base.pyc
Binary file not shown.
188 changes: 188 additions & 0 deletions scripts/smgr/smgr_upgrade_tests.py
@@ -0,0 +1,188 @@
import os
import sys
from base import ServerManagerTest
import test
import fixtures
from smgr_common import SmgrFixture
import time
import json
import pdb
import random
import string

# Build image id from the image name.
def image_name_to_id(self, image_name=None):
if image_name is None:
self.logger.error("No image name received...")
return False
release_major=image_name.split("/")[-1].split("_")[1].split("-")[0].split(".")[0]
release_minor=image_name.split("/")[-1].split("_")[1].split("-")[0].split(".")[1]
build=image_name.split("/")[-1].split("_")[1].split("-")[1].split("~")[0]
stack=image_name.split("/")[-1].split("_")[1].split("-")[1].split("~")[1]
image_id='r'+ release_major + release_minor + 'b' + build + stack
image_id=image_id + ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(3))
self.logger.info("Image id is :: %s" % image_id)
return image_id
#end image_name_to_id

# Check if the server-manager installer version is less than or equal to R2.1
def check_if_SM_base_img_is_leq_R21(self, image_name=None):
if image_name is None:
self.logger.error("No image name received...")
return False
release_major=image_name.split("/")[-1].split("_")[1].split("-")[0].split(".")[0]
release_minor=image_name.split("/")[-1].split("_")[1].split("-")[0].split(".")[1]
if((release_major == '2') and (int(release_minor) < 20)):
return True
return False
#end check_if_SM_base_img_is_leq_R21

# Accross release contrail upgrade with server-manager upgrade.
def AR_upgrade_test_with_SM_upgrade(self):
result = True
self.logger.info("Running AR_upgrade_test_with_SM_upgrade.....")
self.smgr_fixture.uninstall_sm()
self.smgr_fixture.install_sm(SM_installer_file_path=os.environ['SM_BASE_IMG'])

pkg_file=None
try:
pkg_file=self.smgr_fixture.params['pkg_file']
except:
self.logger.error("Package file information doesn't exist in smgr_input.ini file")
return result

assert self.smgr_fixture.backup_file(pkg_file)
with open(pkg_file, 'r') as pkgf:
data = json.load(pkgf)
pkgf.close()
base_package_id=image_name_to_id(self, os.environ['AR_BASE_DEB'])
data['image'][0]['id']=base_package_id
data['image'][0]['version']=base_package_id
data['image'][0]['path']=os.environ['AR_BASE_DEB']
with open(pkg_file, 'w') as pkgf:
json.dump(data, pkgf)
pkgf.close()
self.smgr_fixture.add_pkg()

if check_if_SM_base_img_is_leq_R21(self, os.environ['SM_BASE_IMG']):
cluster_file=None
try:
cluster_file=self.smgr_fixture.params['cluster_file']
except:
self.logger.error("Cluster file information doesn't exist in smgr_input.ini file")
return result
assert self.smgr_fixture.backup_file(cluster_file)
with open(cluster_file, 'r') as clf:
data=json.load(clf)
clf.close()
data['cluster'][0]['parameters']['sequence_provisioning']='false'
with open(cluster_file, 'w') as clf:
json.dump(data, clf)
clf.close()

server_file=None
try:
server_file=self.smgr_fixture.params['server_file']
except:
self.logger.error("Server file information doesn't exist in smgr_input.ini file")
return result
with open(server_file, 'r') as sef:
data=json.load(sef)
sef.close()
for each_server in range(len(data['server'])):
self.smgr_fixture.delete_server_id_based(data['server'][each_server]['id'])
with open(cluster_file, 'r') as clf:
data=json.load(clf)
clf.close()
self.smgr_fixture.delete_cluster_id_based(data['cluster'][0]['id'])
self.smgr_fixture.add_cluster()
self.smgr_fixture.add_server()

#Reimage and Provision the servers with the base release for upgrade test to follow
assert self.smgr_fixture.setup_cluster()

self.smgr_fixture.uninstall_sm()
self.smgr_fixture.install_sm(SM_installer_file_path=os.environ['SM_UPGD_IMG'])

with open(pkg_file, 'r') as pkgf:
data = json.load(pkgf)
pkgf.close()
base_package_id=image_name_to_id(self, os.environ['AR_UPGD_DEB'])
data['image'][0]['id']=base_package_id
data['image'][0]['version']=base_package_id
data['image'][0]['path']=os.environ['AR_UPGD_DEB']
with open(pkg_file, 'w') as pkgf:
json.dump(data, pkgf)
pkgf.close()
self.smgr_fixture.add_pkg()

if check_if_SM_base_img_is_leq_R21(self, os.environ['SM_BASE_IMG']):
self.smgr_fixture.restore_file('cluster_file')
server_file=None
try:
server_file=self.smgr_fixture.params['server_file']
except:
self.logger.error("Server file information doesn't exist in smgr_input.ini file")
return result
with open(server_file, 'r') as sef:
data=json.load(sef)
sef.close()
for each_server in range(len(data['server'])):
self.smgr_fixture.delete_server_id_based(data['server'][each_server]['id'])
with open(cluster_file, 'r') as clf:
data=json.load(clf)
clf.close()
self.smgr_fixture.delete_cluster_id_based(data['cluster'][0]['id'])
self.smgr_fixture.add_cluster()
self.smgr_fixture.add_server()

#Provision to upgrade the servers with the target release for upgrade test to follow
assert self.smgr_fixture.setup_cluster(provision_only=True)

return result


# Accross release contrail upgrade without server-manager upgrade.
def AR_upgrade_test_without_SM_upgrade(self):
result = True
self.logger.info("Running AR_upgrade_test_with_SM_upgrade.....")

pkg_file=None
try:
pkg_file=self.smgr_fixture.params['pkg_file']
except:
self.logger.error("Package file information doesn't exist in smgr_input.ini file")
return result

assert self.smgr_fixture.backup_file(pkg_file)
with open(pkg_file, 'r') as pkgf:
data = json.load(pkgf)
pkgf.close()
base_package_id=image_name_to_id(self, os.environ['AR_BASE_DEB'])
data['image'][0]['id']=base_package_id
data['image'][0]['version']=base_package_id
data['image'][0]['path']=os.environ['AR_BASE_DEB']
with open(pkg_file, 'w') as pkgf:
json.dump(data, pkgf)
pkgf.close()
self.smgr_fixture.add_pkg()

#Reimage and Provision the servers with the base release for upgrade test to follow
assert self.smgr_fixture.setup_cluster()

with open(pkg_file, 'r') as pkgf:
data = json.load(pkgf)
pkgf.close()
base_package_id=image_name_to_id(self, os.environ['AR_UPGD_DEB'])
data['image'][0]['id']=base_package_id
data['image'][0]['version']=base_package_id
data['image'][0]['path']=os.environ['AR_UPGD_DEB']
with open(pkg_file, 'w') as pkgf:
json.dump(data, pkgf)
pkgf.close()
self.smgr_fixture.add_pkg()

#Provision to upgrade the servers with the target release for upgrade test to follow
assert self.smgr_fixture.setup_cluster(provision_only=True)

return result
Binary file added scripts/smgr/smgr_upgrade_tests.pyc
Binary file not shown.
100 changes: 100 additions & 0 deletions scripts/smgr/test_smgr_regression.py
@@ -0,0 +1,100 @@
from tcutils.wrappers import preposttest_wrapper
import os
import sys
from base import ServerManagerTest
import test
import fixtures
import unittest
import testtools
from common.contrail_test_init import ContrailTestInit
from smgr_common import SmgrFixture
import smgr_upgrade_tests
from fabric.api import settings, run
import time
import pdb

class SmgrRegressionTests(ServerManagerTest):

@classmethod
def setUpClass(self):
super(SmgrRegressionTests, self).setUpClass()
#end setUpClass

@classmethod
def tearDownClass(self):
super(SmgrRegressionTests, self).setUpClass()
#end tearDownClass

def runTest(self):
pass

def test_setup_cluster(self):
"""Verify setup cluster using server Manager"""
self.logger.info("Verify setup cluster using server manager ")
assert self.smgr_fixture.setup_cluster()
return True

def test_setup_cluster_with_no_pkg_during_reimage(self):
"""Verify setup cluster using server manager. Reimage with base os only."""
self.logger.info("Verify setup cluster using server manager. Reimage with base os only. ")
assert self.smgr_fixture.setup_cluster(no_reimage_pkg=True)
return True

def test_restart(self):
"""Verify restart server using server Manager"""
self.logger.info("Verify cluster_restart using server manager ")
assert self.smgr_fixture.reimage(no_pkg=True, restart_only=True)
return True

def test_node_add_delete(self):
"""Verify node add delete using server Manager"""
self.logger.info("Verify setup cluster using server manager ")
assert self.smgr_fixture.verify_node_add_delete(no_reimage_pkg=True)
return True

def test_accross_release_upgrade(self):
"""Verify accross release upgrade using Server Manager"""
self.logger.info("Verify accross release upgrade using Server Manager.")
result=False
SM_base_img=None
SM_upgd_img=None
AR_base_img=None
AR_upgd_img=None
try:
SM_base_img=os.environ['SM_BASE_IMG']
self.logger.info("%s" % SM_base_img)
except:
self.logger.error("SM_BASE_IMG is not specified as environment variable.")
self.logger.error("Exiting test")
return False
try:
SM_upgd_img=os.environ['SM_UPGD_IMG']
self.logger.info("%s" % SM_upgd_img)
except:
self.logger.error("SM_UPGD_IMG is not specified as environment variable.")
self.logger.error("Exiting test")
return False

try:
AR_base_img=os.environ['AR_BASE_DEB']
self.logger.info("%s" % AR_base_img)
except:
self.logger.error("AR_BASE_DEB is not specified as environment variable.")
self.logger.error("Exiting test")
return False
try:
AR_upgd_img=os.environ['AR_UPGD_DEB']
self.logger.info("%s" % AR_upgd_img)
except:
self.logger.error("AR_UPGD_DEB is not specified as environment variable.")
self.logger.error("Exiting test")
return False

if((SM_base_img is None) or (SM_base_img == SM_upgd_img)):
self.logger.info("Running Across release test without SM upgrade")
result=smgr_upgrade_tests.AR_upgrade_test_without_SM_upgrade(self)
else:
self.logger.info("Running Across release test with SM upgrade")
result=smgr_upgrade_tests.AR_upgrade_test_with_SM_upgrade(self)
return True

Binary file added scripts/smgr/test_smgr_regression.pyc
Binary file not shown.

0 comments on commit 5fdf980

Please sign in to comment.