Esempio n. 1
0
 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)
Esempio n. 3
0
 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
Esempio n. 4
0
 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)