def get_all_users_data(self): """Returns all the user's data for database table.""" metrics_table = [] # Create Stub to communicate with performance database server with perf_db_pb2.early_adopter_create_PerfDbTransfer_stub( self.hostname, self.port) as stub: all_users_retrieve_request = perf_db_pb2.AllUsersRetrieveRequest() timeouts_secs = 10 # Max waiting time before timeout, in seconds # Request data and receive data from performance database server # asynchronously all_users_data_future = stub.RetrieveAllUsersData.async( all_users_retrieve_request, timeouts_secs) all_users_data = all_users_data_future.result() for user_data in all_users_data.all_users_data: for data_detail in user_data.data_details: user_metrics_dict = { 'username': str(user_data.username), 'timestamp': str(data_detail.timestamp), 'test_name': str(data_detail.test_name), 'qps': str(self.valid_value(data_detail.metrics.qps)), 'qps_per_core': str( self.valid_value(data_detail.metrics.qps_per_core)), 'perc_lat_50': str( self.valid_value(data_detail.metrics.perc_lat_50)), 'perc_lat_90': str( self.valid_value(data_detail.metrics.perc_lat_90)), 'perc_lat_95': str( self.valid_value(data_detail.metrics.perc_lat_95)), 'perc_lat_99': str( self.valid_value(data_detail.metrics.perc_lat_99)), 'perc_lat_99_point_9': str( self.valid_value(data_detail.metrics.perc_lat_99_point_9)), 'server_system_time': str( self.valid_value(data_detail.metrics.server_system_time)), 'server_user_time': str( self.valid_value(data_detail.metrics.server_user_time)), 'client_system_time': str( self.valid_value(data_detail.metrics.client_system_time)), 'client_user_time': str( self.valid_value(data_detail.metrics.client_user_time)), 'server_config': self.get_server_config_dict( data_detail.server_config), 'client_config': self.get_client_config_dict( data_detail.client_config), 'sys_info': self.get_sys_info_dict(data_detail.sys_info), 'tag': str(data_detail.tag) } metrics_table.append(user_metrics_dict) return metrics_table
def get_all_users_single_metric_data(self, metric): """Returns a particular metric data for all the users.""" metric_list = [] # Create Stub to communicate with performance database server with perf_db_pb2.early_adopter_create_PerfDbTransfer_stub( self.hostname, self.port) as stub: all_users_retrieve_request = perf_db_pb2.AllUsersRetrieveRequest() timeouts_secs = 10 # Max waiting time before timeout, in seconds # Request data and receive data from performance database server # asynchronously all_users_data_future = stub.RetrieveAllUsersData. async ( all_users_retrieve_request, timeouts_secs) all_users_data = all_users_data_future.result() for user_data in all_users_data.all_users_data: for data_detail in user_data.data_details: value = { 'qps': round(data_detail.metrics.qps, 1), 'qpspercore': round(data_detail.metrics.qps_per_core, 1), 'perc50': round(data_detail.metrics.perc_lat_50, 1), 'perc90': round(data_detail.metrics.perc_lat_90, 1), 'perc95': round(data_detail.metrics.perc_lat_95, 1), 'perc99': round(data_detail.metrics.perc_lat_99, 1), 'perc99point9': round(data_detail.metrics.perc_lat_99_point_9, 1), 'serversystime': round(data_detail.metrics.server_system_time, 1), 'serverusertime': round(data_detail.metrics.server_user_time, 1), 'clientsystime': round(data_detail.metrics.client_system_time, 1), 'clientusertime': round(data_detail.metrics.client_user_time, 1) }[metric] user_metrics_dict = { 'timestamp': str(data_detail.timestamp), 'value': value } metric_list.append(user_metrics_dict) return metric_list
def get_all_users_single_metric_data(self, metric): """Returns a particular metric data for all the users.""" metric_list = [] # Create Stub to communicate with performance database server with perf_db_pb2.early_adopter_create_PerfDbTransfer_stub( self.hostname, self.port) as stub: all_users_retrieve_request = perf_db_pb2.AllUsersRetrieveRequest() timeouts_secs = 10 # Max waiting time before timeout, in seconds # Request data and receive data from performance database server # asynchronously all_users_data_future = stub.RetrieveAllUsersData.async( all_users_retrieve_request, timeouts_secs) all_users_data = all_users_data_future.result() for user_data in all_users_data.all_users_data: for data_detail in user_data.data_details: value = { 'qps': round(data_detail.metrics.qps, 1), 'qpspercore': round(data_detail.metrics.qps_per_core, 1), 'perc50': round(data_detail.metrics.perc_lat_50, 1), 'perc90': round(data_detail.metrics.perc_lat_90, 1), 'perc95': round(data_detail.metrics.perc_lat_95, 1), 'perc99': round(data_detail.metrics.perc_lat_99, 1), 'perc99point9': round(data_detail.metrics.perc_lat_99_point_9, 1), 'serversystime': round(data_detail.metrics.server_system_time, 1), 'serverusertime': round(data_detail.metrics.server_user_time, 1), 'clientsystime': round(data_detail.metrics.client_system_time, 1), 'clientusertime': round(data_detail.metrics.client_user_time, 1) }[metric] user_metrics_dict = { 'timestamp': str(data_detail.timestamp), 'value': value } metric_list.append(user_metrics_dict) return metric_list
def get_single_user_data(self, username): """Returns a single user's data.""" # Create Stub to communicate with performance database server with perf_db_pb2.early_adopter_create_PerfDbTransfer_stub( self.hostname, self.port) as stub: single_user_retrieve_request = perf_db_pb2.SingleUserRetrieveRequest( ) single_user_retrieve_request.username = username timeouts_secs = 10 # Max waiting time before timeout, in seconds # Request data and receive data from performance database server user_data_future = stub.RetrieveSingleUserData. async ( single_user_retrieve_request, timeouts_secs) user_data = user_data_future.result() # Sort the data sorted_user_data = sorted( user_data.single_user_data.data_details, key=lambda data_detail: data_detail.timestamp) # Lists for various metrics qps_list = [] qps_per_core_list = [] lat_list = [] times_list = [] for data_detail in sorted_user_data: # qps present if data_detail.metrics.qps != 0.0: single_data_dict = self.init_single_data_dict(data_detail) single_data_dict['qps'] = round(data_detail.metrics.qps, 1) qps_list.append(single_data_dict) # qps per core present if data_detail.metrics.qps_per_core != 0.0: single_data_dict = self.init_single_data_dict(data_detail) single_data_dict['qps_per_core'] = round( data_detail.metrics.qps_per_core, 1) qps_per_core_list.append(single_data_dict) # percentile latenices present if (data_detail.metrics.perc_lat_50 != 0.0 and data_detail.metrics.perc_lat_90 != 0.0 and data_detail.metrics.perc_lat_95 != 0.0 and data_detail.metrics.perc_lat_99 != 0.0 and data_detail.metrics.perc_lat_99_point_9 != 0.0): single_data_dict = self.init_single_data_dict(data_detail) lat_dict = { 'perc_lat_50': round(data_detail.metrics.perc_lat_50, 1), 'perc_lat_90': round(data_detail.metrics.perc_lat_90, 1), 'perc_lat_95': round(data_detail.metrics.perc_lat_95, 1), 'perc_lat_99': round(data_detail.metrics.perc_lat_99, 1), 'perc_lat_99_point_9': round(data_detail.metrics.perc_lat_99_point_9, 1) } single_data_dict['lat'] = lat_dict lat_list.append(single_data_dict) # Server and client times present if (data_detail.metrics.server_system_time != 0.0 and data_detail.metrics.server_user_time != 0.0 and data_detail.metrics.client_system_time != 0.0 and data_detail.metrics.client_user_time != 0.0): single_data_dict = self.init_single_data_dict(data_detail) times_dict = { 'server_system_time': round(data_detail.metrics.server_system_time, 1), 'server_user_time': round(data_detail.metrics.server_user_time, 1), 'client_system_time': round(data_detail.metrics.client_system_time, 1), 'client_user_time': round(data_detail.metrics.client_user_time, 1) } single_data_dict['times'] = times_dict times_list.append(single_data_dict) data_dict = defaultdict(list) data_dict = { 'qpsData': qps_list, 'qpsPerCoreData': qps_per_core_list, 'latData': lat_list, 'timesData': times_list } # Return user's personal details and user's data return [user_data.single_user_data.username, data_dict]
def get_all_users_data(self): """Returns all the user's data for database table.""" metrics_table = [] # Create Stub to communicate with performance database server with perf_db_pb2.early_adopter_create_PerfDbTransfer_stub( self.hostname, self.port) as stub: all_users_retrieve_request = perf_db_pb2.AllUsersRetrieveRequest() timeouts_secs = 10 # Max waiting time before timeout, in seconds # Request data and receive data from performance database server # asynchronously all_users_data_future = stub.RetrieveAllUsersData. async ( all_users_retrieve_request, timeouts_secs) all_users_data = all_users_data_future.result() for user_data in all_users_data.all_users_data: for data_detail in user_data.data_details: user_metrics_dict = { 'username': str(user_data.username), 'timestamp': str(data_detail.timestamp), 'test_name': str(data_detail.test_name), 'qps': str(self.valid_value(data_detail.metrics.qps)), 'qps_per_core': str(self.valid_value( data_detail.metrics.qps_per_core)), 'perc_lat_50': str(self.valid_value(data_detail.metrics.perc_lat_50)), 'perc_lat_90': str(self.valid_value(data_detail.metrics.perc_lat_90)), 'perc_lat_95': str(self.valid_value(data_detail.metrics.perc_lat_95)), 'perc_lat_99': str(self.valid_value(data_detail.metrics.perc_lat_99)), 'perc_lat_99_point_9': str( self.valid_value( data_detail.metrics.perc_lat_99_point_9)), 'server_system_time': str( self.valid_value( data_detail.metrics.server_system_time)), 'server_user_time': str( self.valid_value( data_detail.metrics.server_user_time)), 'client_system_time': str( self.valid_value( data_detail.metrics.client_system_time)), 'client_user_time': str( self.valid_value( data_detail.metrics.client_user_time)), 'server_config': self.get_server_config_dict(data_detail.server_config), 'client_config': self.get_client_config_dict(data_detail.client_config), 'sys_info': self.get_sys_info_dict(data_detail.sys_info), 'tag': str(data_detail.tag) } metrics_table.append(user_metrics_dict) return metrics_table
def get_single_user_data(self, username): """Returns a single user's data.""" # Create Stub to communicate with performance database server with perf_db_pb2.early_adopter_create_PerfDbTransfer_stub( self.hostname, self.port) as stub: single_user_retrieve_request = perf_db_pb2.SingleUserRetrieveRequest() single_user_retrieve_request.username = username timeouts_secs = 10 # Max waiting time before timeout, in seconds # Request data and receive data from performance database server user_data_future = stub.RetrieveSingleUserData.async( single_user_retrieve_request, timeouts_secs) user_data = user_data_future.result() # Sort the data sorted_user_data = sorted(user_data.single_user_data.data_details, key=lambda data_detail: data_detail.timestamp) # Lists for various metrics qps_list = [] qps_per_core_list = [] lat_list = [] times_list = [] for data_detail in sorted_user_data: # qps present if data_detail.metrics.qps != 0.0: single_data_dict = self.init_single_data_dict(data_detail) single_data_dict['qps'] = round(data_detail.metrics.qps, 1) qps_list.append(single_data_dict) # qps per core present if data_detail.metrics.qps_per_core != 0.0: single_data_dict = self.init_single_data_dict(data_detail) single_data_dict['qps_per_core'] = round( data_detail.metrics.qps_per_core, 1) qps_per_core_list.append(single_data_dict) # percentile latenices present if (data_detail.metrics.perc_lat_50 != 0.0 and data_detail.metrics.perc_lat_90 != 0.0 and data_detail.metrics.perc_lat_95 != 0.0 and data_detail.metrics.perc_lat_99 != 0.0 and data_detail.metrics.perc_lat_99_point_9 != 0.0): single_data_dict = self.init_single_data_dict(data_detail) lat_dict = { 'perc_lat_50': round(data_detail.metrics.perc_lat_50, 1), 'perc_lat_90': round(data_detail.metrics.perc_lat_90, 1), 'perc_lat_95': round(data_detail.metrics.perc_lat_95, 1), 'perc_lat_99': round(data_detail.metrics.perc_lat_99, 1), 'perc_lat_99_point_9': round( data_detail.metrics.perc_lat_99_point_9, 1) } single_data_dict['lat'] = lat_dict lat_list.append(single_data_dict) # Server and client times present if (data_detail.metrics.server_system_time != 0.0 and data_detail.metrics.server_user_time != 0.0 and data_detail.metrics.client_system_time != 0.0 and data_detail.metrics.client_user_time != 0.0): single_data_dict = self.init_single_data_dict(data_detail) times_dict = { 'server_system_time': round( data_detail.metrics.server_system_time, 1), 'server_user_time': round(data_detail.metrics.server_user_time, 1), 'client_system_time': round( data_detail.metrics.client_system_time, 1), 'client_user_time': round(data_detail.metrics.client_user_time, 1) } single_data_dict['times'] = times_dict times_list.append(single_data_dict) data_dict = defaultdict(list) data_dict = { 'qpsData': qps_list, 'qpsPerCoreData': qps_per_core_list, 'latData': lat_list, 'timesData': times_list } # Return user's personal details and user's data return [user_data.single_user_data.username, data_dict]