def test_merge_generators(self): generator_a = range(3, 10) generator_b = range(15, 20) test_generated_list = list(generator_a) + list(generator_b) generator = merge_generators.merge_generators(generator_a, generator_b) generated_list = list(generator) assert len(test_generated_list) == len(generated_list) assert all([item in generated_list for item in test_generated_list]) assert all([item in test_generated_list for item in generator])
def get_file_type_statistics(self): file_type_dict = {} for firmware_object in merge_generators( self.firmwares.find({}, {'processed_analysis.file_type.mime': 1, 'virtual_file_path': 1}), self.file_objects.find({}, {'processed_analysis.file_type.mime': 1, 'virtual_file_path': 1}) ): file_type = firmware_object['processed_analysis']['file_type']['mime'] if file_type in file_type_dict: # one file can appear multiple times in the same firmware or in different firmwares file_type_dict[file_type] += len(firmware_object['virtual_file_path']) else: file_type_dict[file_type] = len(firmware_object['virtual_file_path']) return dict_to_sorted_tuples(file_type_dict)
def get_data_for_nice_list(self, uid_list, root_uid): query = self._build_search_query_for_uid_list(uid_list) result = self.generate_nice_list_data( merge_generators(self.firmwares.find(query), self.file_objects.find(query)), root_uid) return result
def get_specific_fields_for_multiple_entries(self, uid_list, field_dict): query = self._build_search_query_for_uid_list(uid_list) file_object_iterator = self.file_objects.find(query, field_dict) firmware_iterator = self.firmwares.find(query, field_dict) return merge_generators(firmware_iterator, file_object_iterator)