Ejemplo n.º 1
0
def test_historical_check_percentage(subscribers_list_importer, logger,
                                     mocked_statsd, db_conn, metadata_db_conn,
                                     mocked_config, tmpdir):
    """Verify that the subscribers list data is not imported if it fails the historical check."""
    expect_success(subscribers_list_importer, 5, db_conn, logger)

    # size increased, importer succeeds
    with get_importer(
            SubscribersListImporter, db_conn, metadata_db_conn,
            mocked_config.db_config, tmpdir, logger, mocked_statsd,
            SubscribersListParams(
                filename='sample_subscribers_list_large.csv',
                import_size_variation_percent=mocked_config.
                subscribers_threshold_config.import_size_variation_percent,
                import_size_variation_absolute=mocked_config.
                subscribers_threshold_config.import_size_variation_absolute)
    ) as imp:
        expect_success(imp, 99, db_conn, logger)

    # importing file with drop in size greater then 5%
    with get_importer(
            SubscribersListImporter, db_conn, metadata_db_conn,
            mocked_config.db_config, tmpdir, logger, mocked_statsd,
            SubscribersListParams(
                filename=
                'sample_subscribers_list_large_drop_5_percent_greater.csv',
                import_size_variation_percent=mocked_config.
                subscribers_threshold_config.import_size_variation_percent,
                import_size_variation_absolute=mocked_config.
                subscribers_threshold_config.import_size_variation_absolute)
    ) as imp:
        expect_failure(imp, exc_message='Failed import size historic check')

    # importing file with drop in size greater then 5%
    with get_importer(
            SubscribersListImporter, db_conn, metadata_db_conn,
            mocked_config.db_config, tmpdir, logger, mocked_statsd,
            SubscribersListParams(
                filename=
                'sample_subscribers_list_large_drop_5_percent_less.csv',
                import_size_variation_percent=mocked_config.
                subscribers_threshold_config.import_size_variation_percent,
                import_size_variation_absolute=mocked_config.
                subscribers_threshold_config.import_size_variation_absolute)
    ) as imp:
        expect_success(imp, 95, db_conn, logger)
Ejemplo n.º 2
0
def test_repeat_import(subscribers_list_importer, logger, mocked_statsd,
                       db_conn, metadata_db_conn, mocked_config, tmpdir):
    """Verify that same import doesn't affect db."""
    expect_success(subscribers_list_importer, 5, db_conn, logger)

    # importing same file
    with get_importer(
            SubscribersListImporter, db_conn, metadata_db_conn,
            mocked_config.db_config, tmpdir, logger, mocked_statsd,
            SubscribersListParams(
                filename='sample_subscriberslist.csv')) as imp:
        expect_success(imp, 5, db_conn, logger)
Ejemplo n.º 3
0
def test_override_historical_check(subscribers_list_importer, logger,
                                   mocked_statsd, db_conn, metadata_db_conn,
                                   mocked_config, tmpdir):
    """Verify that the user can override historical checks when importing subscribers list data."""
    expect_success(subscribers_list_importer, 5, db_conn, logger)

    with get_importer(
            SubscribersListImporter, db_conn, metadata_db_conn,
            mocked_config.db_config, tmpdir, logger, mocked_statsd,
            SubscribersListParams(
                filename='sample_subscriberslist_historial_check.csv',
                perform_historic_check=False)) as imp:
        expect_success(imp, 0, db_conn, logger)
Ejemplo n.º 4
0
def test_historical_check_empty(subscribers_list_importer, logger,
                                mocked_statsd, db_conn, metadata_db_conn,
                                mocked_config, tmpdir):
    """Verify that subscribers list data is not imported if it fails historical check."""
    expect_success(subscribers_list_importer, 5, db_conn, logger)

    # attempting to import empty subscribers list
    with get_importer(
            SubscribersListImporter, db_conn, metadata_db_conn,
            mocked_config.db_config, tmpdir, logger, mocked_statsd,
            SubscribersListParams(
                filename='sample_subscriberslist_historial_check.csv')) as imp:
        expect_failure(imp, exc_message='Failed import size historic check')
Ejemplo n.º 5
0
def test_delta_file_prevalidation(logger, db_conn, metadata_db_conn,
                                  mocked_config, tmpdir, mocked_statsd,
                                  subscribers_list_importer):
    """Test delta file pre-validation schemas."""
    # update change-type is not allowed here
    expect_failure(
        subscribers_list_importer,
        exc_message=
        'Pre-validation failed: b\'Error:   regex("^(add|remove)$") fails for line: 2, '
        'column: change_type, value: "update"\\nFAIL')

    # change-type must be lower case
    with get_importer(
            SubscribersListImporter, db_conn, metadata_db_conn,
            mocked_config.db_config, tmpdir, logger, mocked_statsd,
            SubscribersListParams(content='uid,imsi,change_type\n'
                                  '12345678901234,11111111111111,ADD',
                                  delta=True)) as imp:
        expect_failure(
            imp,
            exc_message=
            'Pre-validation failed: b\'Error:   regex("^(add|remove)$") fails for line: '
            '1, column: change_type, value: "ADD"\\nFAIL')
Ejemplo n.º 6
0
    with db_conn.cursor() as cursor:
        cursor.execute(
            'SELECT uid, imsi FROM subscribers_registration_list ORDER BY uid, imsi'
        )  # noqa: Q440
        res = {(res.uid, res.imsi) for res in cursor.fetchall()}

    assert result.exit_code == 0
    assert len(res) == 3
    assert res == {('3536260220456285', '11108080805796'),
                   ('3541200302086361', '11108951160476'),
                   ('3567120606015081', '11108864102404')}


@pytest.mark.parametrize('subscribers_list_importer', [
    SubscribersListParams(filename='subscribers_list_insensitive_header.csv')
],
                         indirect=True)
def test_case_insensitive_headers(subscribers_list_importer, logger, db_conn):
    """Verify that the subscribers list file is accepted and imported if the headers have mixed cases."""
    expect_success(subscribers_list_importer, 1, db_conn, logger)


@pytest.mark.parametrize(
    'subscribers_list_importer',
    [SubscribersListParams(filename='subscribers_list_duplicate_record.csv')],
    indirect=True)
def test_duplicate_check_override(subscribers_list_importer, logger, db_conn):
    """Verify that if duplicate record exists in the file, only one record gets written to the db."""
    expect_success(subscribers_list_importer, 1, db_conn, logger)