for is_upgraded, cursor in self.do_upgrade(cursor, row_factory=dict_factory, use_thrift=True): logger.debug("Querying {} node".format("upgraded" if is_upgraded else "old")) is_version_4_or_greater = node.get_cassandra_version() >= CASSANDRA_4_0 if not is_version_4_or_greater: client = get_thrift_client(host, port) _validate_sparse_thrift(client, cf='sparse_super_2') _validate_sparse_cql(cursor, cf='sparse_super_2', is_version_4_or_greater=is_version_4_or_greater) topology_specs = [ {'NODES': 3, 'RF': 3, 'CL': ConsistencyLevel.ALL}, {'NODES': 2, 'RF': 1}, ] specs = [dict(s, UPGRADE_PATH=p, __test__=True) for s, p in itertools.product(topology_specs, build_upgrade_pairs())] for spec in specs: suffix = 'Nodes{num_nodes}RF{rf}_{pathname}'.format(num_nodes=spec['NODES'], rf=spec['RF'], pathname=spec['UPGRADE_PATH'].name) gen_class_name = TestThrift.__name__ + suffix assert gen_class_name not in globals() upgrade_applies_to_env = RUN_STATIC_UPGRADE_MATRIX or spec['UPGRADE_PATH'].upgrade_meta.matches_current_env_version_family cls = type(gen_class_name, (TestThrift,), spec) if not upgrade_applies_to_env: add_skip(cls, 'test not applicable to env.') globals()[gen_class_name] = cls
session.execute("CREATE TABLE schema_agreement_test_2 ( id int PRIMARY KEY, value text )") session.cluster.control_connection.wait_for_schema_agreement(wait_time=30) validate_schema_agreement(node, is_upgraded) def compact_sstable(self, node, sstable): mbean = make_mbean('db', type='CompactionManager') with JolokiaAgent(node) as jmx: jmx.execute_method(mbean, 'forceUserDefinedCompaction', [sstable]) def get_all_sstables(self, node): # note that node.get_sstables(...) only returns current version sstables keyspace_dirs = [os.path.join(node.get_path(), "data{0}".format(x), "test13294") for x in range(0, node.cluster.data_dir_count)] files = [] for d in keyspace_dirs: for f in glob.glob(d + "/*/*Data*"): files.append(f) return files for path in build_upgrade_pairs(): gen_class_name = TestForRegressions.__name__ + path.name assert gen_class_name not in globals() spec = {'UPGRADE_PATH': path, '__test__': True} upgrade_applies_to_env = RUN_STATIC_UPGRADE_MATRIX or path.upgrade_meta.matches_current_env_version_family cls = type(gen_class_name, (TestForRegressions,), spec) if not upgrade_applies_to_env: add_skip(cls, 'test not applicable to env.') globals()[gen_class_name] = cls