import gzip import json import os import pytest import sys sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) from telemetry.TelemetryDataParse import * @pytest.fixture() def telemetry_v1_gz_path(): return os.path.join( os.path.dirname(os.path.abspath(__file__)), "test_data/telemetry_data_v1.gz", ) @pytest.fixture() def telemetry_v1_data(telemetry_v1_gz_path: str): with gzip.open(telemetry_v1_gz_path) as fp: raw_data = fp.readline() try: _ = util.json_to_pb(json.loads(raw_data)) print("RwaData matches the current schema ^_^") except Exception as e: print(e) print("RwaData doesn't match the current schema !") Telemetry_data = DataParse(raw_data) assert Telemetry_data != None return Telemetry_data class TestTelemetryV1: def test_get_app(self, telemetry_v1_data): assert telemetry_v1_data.get_app() == "tidb" def test_get_ip(self, telemetry_v1_data): assert telemetry_v1_data.get_ip() == "103.39.220.52" def test_get_host(self, telemetry_v1_data): assert telemetry_v1_data.get_host() == "pingcap-com-beijing-1" def test_get_cluster_index(self, telemetry_v1_data): assert telemetry_v1_data.get_cluster_index() == {'07ff5a': False, '098db4': True, '0b9cd4': False, '0fa0d7': False, '10613e': False} def test_get_cluster_index_usage(self, telemetry_v1_data): assert telemetry_v1_data.get_cluster_index_usage() == [{'07ff5a': False}, {'098db4': True}, {'0b9cd4': False}, {'0fa0d7': False}, {'10613e': False}] def test_get_cluster_index_pk(self, telemetry_v1_data): assert telemetry_v1_data.get_cluster_index_pk() == [{'07ff5a': "Unknown"}, {'098db4': "Unknown"}, {'0b9cd4': "Unknown"}, {'0fa0d7': "Unknown"}, {'10613e': "Unknown"}] def test_get_tracking_id(self, telemetry_v1_data): assert ( telemetry_v1_data.get_tracking_id() == "2fb74a50-f5b7-4089-b6c5-a4864d82dbd3" ) def test_get_report_timestamp(self, telemetry_v1_data): assert telemetry_v1_data.get_report_timestamp() == 1624953006 def test_get_cluster_index_cnt(self, telemetry_v1_data): assert telemetry_v1_data.get_cluster_index_cnt() == 5 def test_get_cluster_index_true_cnt(self, telemetry_v1_data): assert telemetry_v1_data.get_cluster_index_true_cnt() == 1 def test_get_cluster_index_false_cnt(self, telemetry_v1_data): assert telemetry_v1_data.get_cluster_index_false_cnt() == 4 def test_get_async_commit_used(self, telemetry_v1_data): assert telemetry_v1_data.get_async_commit_used() == True def test_get_async_commit_cnt(self, telemetry_v1_data): assert telemetry_v1_data.get_async_commit_cnt() == 1487737 def test_get_onePC_used(self, telemetry_v1_data): assert telemetry_v1_data.get_onePC_used() == True def test_get_onePC_cnt(self, telemetry_v1_data): assert telemetry_v1_data.get_onePC_cnt() == 8851 def test_get_twoPC_cnt(self, telemetry_v1_data): assert telemetry_v1_data.get_twoPC_cnt() == 2100 def test_get_execute_count(self, telemetry_v1_data): assert telemetry_v1_data.get_execute_count_sum() == 4850986 def test_get_copr_cache_usage(self, telemetry_v1_data): assert telemetry_v1_data.get_copr_cache_usage() == {'gte0': 410337, 'gte1': 931, 'gte10': 931, 'gte100': 927, 'gte20': 931, 'gte40': 931, 'gte80': 927} def test_get_tiflash_usage_pushdown(self, telemetry_v1_data): assert telemetry_v1_data.get_tiflash_pushdown() == 0 def test_get_tiflash_usage_exchange(self, telemetry_v1_data): assert telemetry_v1_data.get_tiflash_exchange_pushdown() == 0 def test_get_sql_usage(self, telemetry_v1_data): assert telemetry_v1_data.get_sql_usage() == None def test_get_slow_query_usage(self, telemetry_v1_data): assert telemetry_v1_data.get_slow_query_stats() == None def test_get_host_extra(self, telemetry_v1_data): assert isinstance(telemetry_v1_data.get_host_extra(), dict) or telemetry_v1_data.getHostExtra() == None def test_get_instances(self, telemetry_v1_data): assert isinstance(telemetry_v1_data.get_instances(), list) def test_get_hardware(self, telemetry_v1_data): assert isinstance(telemetry_v1_data.get_hardware(), list)