#!/usr/bin/env python3 # -*- encoding: UTF8 -*- # test_Upgrade.py # Tests SDP (Server Deployment Package) UPGRADES on Docker Compose images # See documentation and run_tests.sh in /sdp/main/test/README.md from __future__ import print_function import logging import os import re import sys import unittest import P4 import test_SDP from test_SDP import SDPTest_base LOGGER_NAME = 'UpgradeSDPTest' logger = logging.getLogger(LOGGER_NAME) options = None def init_logging(): global logger logger.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s:%(name)s:%(levelname)s: %(message)s') fh = logging.FileHandler('/tmp/%s.log' % LOGGER_NAME, mode='w') fh.setLevel(logging.DEBUG) fh.setFormatter(formatter) logger.addHandler(fh) test_SDP.logger = logger class UpgradeSDPTest(SDPTest_base): "Tests for SDP upgrades" def setUp(self): self.setup_everything() def install_binaries(self, ver): for f in ["p4", "p4d", "p4broker"]: src = "/hxdepots/sdp/Server/Unix/p4/common/bin/%s-%s" % (f, ver) targ = "/hxdepots/sdp/Server/Unix/p4/common/bin/%s" % f self.run_cmd("cp %s %s" % (src,targ)) def testUpgrade(self): "Basic upgrade tests 18.1 -> 18.2" self.run_cmd("cp -R /sdp /hxdepots/sdp") self.install_binaries("18.1") self.sudo_cmd("rm -rf /tmp/p4") self.run_cmd("python3 /p4/test_SDP.py --instance 1 --setup") p4 = P4.P4() p4.port = "1667" p4.user = "perforce" p4.connect() p4.disconnect() for ver in ["18.2"]: self.install_binaries(ver) output = self.run_cmd("/p4/common/bin/upgrade.sh 1") self.assertLinePresent("/p4/common/bin/upgrade.sh: Finished p4_1 Upgrade", output) p4.connect() info = p4.run_info()[0] self.assertLinePresent('P4D/LINUX26X86_64/20%s/' % ver, info['serverVersion']) if __name__ == "__main__": init_logging() testrunner = None unittest.main(testRunner=testrunner, argv=sys.argv[:1])