Example #1
0
    def compare_vbucket_stats(prev_vbucket_stats, cur_vbucket_stats, compare_uuid=False, seqno_compare="=="):
        """
        Compares vbucket stats
        :param prev_vbucket_stats: old
        :param cur_vbucket_stats: new
        :param compare_uuid: bool to decide whether to compare uuid or not
        :param seqno_compare: comparator function
        :return: status and message
        """
        compare = "=="
        comp_map = {"abs_high_seqno": {'type': "long", 'operation': seqno_compare},
                    "purge_seqno": {'type': "string", 'operation': compare}}
        if compare_uuid:
            comp_map["uuid"] = {'type': "string", 'operation': "=="}
        else:
            comp_map["uuid"] = {'type': "string", 'operation': "filter"}
        data_analyzer = DataAnalyzer()
        result_analyzer = DataAnalysisResultAnalyzer()
        compare_vbucket_seqnos_result = data_analyzer.compare_stats_dataset(prev_vbucket_stats,
                                                                            cur_vbucket_stats,
                                                                            "vbucket_id",
                                                                            comparisonMap=comp_map)

        is_same, summary, result = result_analyzer.analyze_all_result(compare_vbucket_seqnos_result,
                                                                      addedItems=False,
                                                                      deletedItems=False,
                                                                      updatedItems=False)
        if not is_same:
            msg = "{0} is not true".format(summary)
            raise AssertionError(msg)
        return True, "End Verification for vbucket sequence numbers comparison "
    def compare_vbucket_stats(prev_vbucket_stats, cur_vbucket_stats, compare_uuid=False, seqno_compare="=="):
        """
        Compares vbucket stats
        :param prev_vbucket_stats: old
        :param cur_vbucket_stats: new
        :param compare_uuid: bool to decide whether to compare uuid or not
        :param seqno_compare: comparator function
        :return: status and message
        """
        compare = "=="
        comp_map = {"abs_high_seqno": {'type': "long", 'operation': seqno_compare},
                    "purge_seqno": {'type': "string", 'operation': compare}}
        if compare_uuid:
            comp_map["uuid"] = {'type': "string", 'operation': "=="}
        else:
            comp_map["uuid"] = {'type': "string", 'operation': "filter"}
        data_analyzer = DataAnalyzer()
        result_analyzer = DataAnalysisResultAnalyzer()
        compare_vbucket_seqnos_result = data_analyzer.compare_stats_dataset(prev_vbucket_stats,
                                                                            cur_vbucket_stats,
                                                                            "vbucket_id",
                                                                            comparisonMap=comp_map)

        is_same, summary, result = result_analyzer.analyze_all_result(compare_vbucket_seqnos_result,
                                                                      addedItems=False,
                                                                      deletedItems=False,
                                                                      updatedItems=False)
        if not is_same:
            msg = "{0} is not true".format(summary)
            raise AssertionError(msg)
        return True, "End Verification for vbucket sequence numbers comparison "
    def setUp(self):
        self.input = TestInputSingleton.input
        self.parse_params()
        self.nodes_init = self.input.param("nodes_init", 3)

        self.log = logger.Logger.get_logger()
        if self.log_level:
            self.log.setLevel(level=self.log_level)
    
        self.use_https = True
        CbServer.use_https = True
        if not hasattr(self, 'cluster'):
            self.cluster = Cluster()
        self.buckets = []
        self.collection_name = {}
        CbServer.rest_username = self.input.membase_settings.rest_username
        CbServer.rest_password = self.input.membase_settings.rest_password
        self.data_collector = DataCollector()
        self.data_analyzer = DataAnalyzer()
        self.result_analyzer = DataAnalysisResultAnalyzer()
        self.set_testrunner_client()

        self.pod = pod(self.input.capella["pod"])
        self.tenant = tenant(
            self.input.capella["tenant_id"],
            self.input.capella["capella_user"],
            self.input.capella["capella_pwd"],
        )
        self.project_id = self.input.capella["project_id"]
        self.tenant.project_id = self.project_id
        
        cluster_details = self.create_capella_config()

        cluster_id, _, _ = CapellaAPI.create_cluster(self.pod, self.tenant, cluster_details)

        self.cluster_id = cluster_id
        CbServer.cluster_id = cluster_id

        CapellaAPI.add_allowed_ip(self.pod, self.tenant, self.cluster_id)
        CapellaAPI.create_db_user(self.pod, self.tenant, self.cluster_id, self.input.membase_settings.rest_username, self.input.membase_settings.rest_password)

        CbServer.pod = self.pod
        CbServer.tenant = self.tenant
        CbServer.cluster_id = self.cluster_id

        servers = CapellaAPI.get_nodes_formatted(
            self.pod, self.tenant, self.cluster_id, self.input.membase_settings.rest_username, self.input.membase_settings.rest_password)

        self.cluster_config = ClusterConfig(self.input.membase_settings.rest_username, self.input.membase_settings.rest_password, self.create_input_servers())
        self.cluster_config.update_servers(servers)

        if not self.skip_buckets_handle:
            BucketOperationHelper.delete_all_buckets_or_assert(self.servers, self)

        self.bucket_base_params = {'membase': {}}
    
        shared_params = self._create_bucket_params(server=self.master, size=self.bucket_size,
                                                   replicas=self.num_replicas,
                                                   enable_replica_index=self.enable_replica_index,
                                                   eviction_policy=self.eviction_policy, bucket_priority=None,
                                                   lww=self.lww, maxttl=self.maxttl,
                                                   compression_mode=self.compression_mode)

        membase_params = copy.deepcopy(shared_params)
        membase_params['bucket_type'] = 'membase'
        self.bucket_base_params['membase']['non_ephemeral'] = membase_params

        membase_ephemeral_params = copy.deepcopy(shared_params)
        membase_ephemeral_params['bucket_type'] = 'ephemeral'
        self.bucket_base_params['membase']['ephemeral'] = membase_ephemeral_params

        self.bucket_base_params['membase']['non_ephemeral']['size'] = self.bucket_size
        self.bucket_base_params['membase']['ephemeral']['size'] = self.bucket_size

        self._bucket_creation()