Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge "Initial Checkin of Server Manager Upgrade test." into R2.20
- Loading branch information
Showing
9 changed files
with
1,699 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
"""Server Manager Tests.""" |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 not shown.