예제 #1
0
    def calc_imeis_to_export(self, param):
        """Method to calculate imeis that needs to be exported."""
        recs_to_export = []
        recs_to_update = []

        self.logger.info('calculating imeis for {0} registration list'.format(param))
        imei_records = ApprovedImeis.imei_to_export()
        self.logger.info('{0} imei records to analyze for export'.format(len(imei_records)))
        max_workers = app.config['DRS_CONFIG']['lists']['max_workers']
        self.logger.info('using {0} thread workers for calculation'.format(max_workers))
        self.logger.info('spliting imeis into {0} batches'.format(max_workers))
        imei_records = numpy.array_split(imei_records, max_workers)
        self.logger.info('splited imeis into {0} batches'.format(len(imei_records)))

        input_queue = Queue()
        output_queue = Queue()

        for worker in range(max_workers):  # pylint: disable=unused-variable
            imei_worker = IMEIWorker(in_queue=input_queue, out_queue=output_queue)
            imei_worker.daemon = True
            imei_worker.start()

        for imei_record in imei_records:
            input_queue.put((imei_record, param))

        input_queue.join()
        for i in range(max_workers):  # pylint: disable=unused-variable
            rec_update, rec_export = output_queue.get()
            if not rec_update:
                recs_to_update.extend(rec_update)
            if not rec_export:
                recs_to_export.extend(rec_export)
        ApprovedImeis.bulk_insert_imeis(recs_to_update)
        return recs_to_export
def test_imeis_to_export(db, session):  # pylint: disable=unused-argument
    """Verify that imeis_to_export() works as expected."""
    imei_norm1 = '67890000001234'
    imei_norm2 = '71111178906548'
    imei_norm3 = '54322333900000'
    request_id = 2376322
    status = 'status'
    delta_status = 'delta status'
    imeis = [
        ApprovedImeis(imei_norm1, request_id, status, delta_status),
        ApprovedImeis(imei_norm2, request_id, status, delta_status),
        ApprovedImeis(imei_norm3, request_id, status, delta_status)
    ]
    ApprovedImeis.bulk_insert_imeis(imeis)
    imeis_to_export = ApprovedImeis.imei_to_export()
    assert imeis_to_export
    for imei in imeis_to_export:
        assert imei.removed is False