def upgrade_to_version(self, version_meta, partial=False, nodes=None): """ Upgrade Nodes - if *partial* is True, only upgrade those nodes that are specified by *nodes*, otherwise ignore *nodes* specified and upgrade all nodes. """ debug('Upgrading {nodes} to {version}'.format(nodes=[n.name for n in nodes] if nodes is not None else 'all nodes', version=version_meta.version)) switch_jdks(version_meta.java_version) debug("JAVA_HOME: " + os.environ.get('JAVA_HOME')) if not partial: nodes = self.cluster.nodelist() for node in nodes: debug('Shutting down node: ' + node.name) node.drain() node.watch_log_for("DRAINED") node.stop(wait_other_notice=False) for node in nodes: node.set_install_dir(version=version_meta.version) debug("Set new cassandra dir for %s: %s" % (node.name, node.get_install_dir())) # hacky? yes. We could probably extend ccm to allow this publicly. # the topology file needs to be written before any nodes are started # otherwise they won't be grouped into dc's properly for multi-dc tests self.cluster._Cluster__update_topology_files() # Restart nodes on new version for node in nodes: debug('Starting %s on new version (%s)' % (node.name, version_meta.version)) # Setup log4j / logback again (necessary moving from 2.0 -> 2.1): node.set_log_level("INFO") node.start(wait_other_notice=True, wait_for_binary_proto=True) node.nodetool('upgradesstables -a')
def setUp(self): debug("Upgrade test beginning, setting CASSANDRA_VERSION to {}, and jdk to {}. (Prior values will be restored after test)." .format(self.test_version_metas[0].version, self.test_version_metas[0].java_version)) os.environ['CASSANDRA_VERSION'] = self.test_version_metas[0].version switch_jdks(self.test_version_metas[0].java_version) super(UpgradeTester, self).setUp() debug("Versions to test (%s): %s" % (type(self), str([v.version for v in self.test_version_metas])))
def setUp(self): super(UpgradeTester, self).setUp() debug("Versions to test (%s): %s" % (type(self), str([v for v in self.test_versions]))) switch_jdks(self.test_versions[0]) self.cluster.set_install_dir(version=self.test_versions[0])