示例#1
0
def test_it_rejects_malformatted_and_mistyped_key_value_pairs():
    identifier = 'LOG'
    timestamp = datetime.utcnow()

    malformatted_key_value_pairs = [('hey', 'you'), ("i'm", "one", "too many")]

    with raises(ValueError):
        serialize(identifier, timestamp, malformatted_key_value_pairs)

    mistyped_key_value_pair = [("here's a boolean", False)]

    with raises(TypeError):
        serialize(identifier, timestamp, mistyped_key_value_pair)
示例#2
0
def test_it_formats_event_data_fields_with_funky_chars_in():
    identifier = 'LOG'
    timestamp = '1554930194'
    key_value_pairs = [
        ('_model', 'moto z3'),
        ('display', 'olson_vzw-userdebug 9 PDV29.178 06fda cfg,test-keys'),
        ('event0_data', 'attract_started_intent'),
        ('event33_data', 'Played: 92127-01.01.mp3'),
        ('event33_time', '1554927685047'),
        ('event34_data', 'Stopped: Sicko Mode (Extra Clean Radio Edit) by '
                         'Travis Scott Featuring Drake, Juicy J And Swae Lee'),
        ('event34_time', '1554927722941')
    ]

    qs_row = serialize(identifier, timestamp, key_value_pairs)

    assert qs_row == (
        'LOG,1554930194,_model=moto z3,'
        'display=olson_vzw-userdebug 9 PDV29.178 06fda cfg,test-keys,'
        'event0_data=attract_started_intent,'
        'event33_data=Played: 92127-01.01.mp3,'
        'event33_time=1554927685047,'
        'event34_data=Stopped: Sicko Mode (Extra Clean Radio Edit) by '
        'Travis Scott Featuring Drake, Juicy J And Swae Lee,'
        'event34_time=1554927722941\n'
    )
示例#3
0
def test_it_formats_level2_nested_tuple_content_scenario_1():
    identifier = 'LOG'
    timestamp = '1554930014'
    key_value_pairs = [
        ('_model', 'SM-N960U'),
        ('event6_data', 'connectivity'),
        ('event6_time', '1554907386248'),
        ('event6_vars', [
            ('isDocked', 'true'),
            ('reason', 'radioTurnedOff'),
            ('networkInfo', [
                ('type', 'MOBILE[LTE] - MOBILE[LTE]'),
                ('state', 'DISCONNECTED/DISCONNECTED'),
                ('roaming', 'false')
            ]),
            ('noConnect', 'true'),
            ('networkType', '0'),
            ('extraInfo', '')
        ]),
        ('fw_inc', 'N960USS1ARJ9'),
        ('fw_int', '27')
    ]

    qs_row = serialize(identifier, timestamp, key_value_pairs)

    assert qs_row == (
        'LOG,1554930014,_model=SM-N960U,event6_data=connectivity,'
        'event6_time=1554907386248,event6_vars={isDocked=true, '
        'reason=radioTurnedOff, networkInfo=[type: MOBILE[LTE] - MOBILE[LTE], '
        'state: DISCONNECTED/DISCONNECTED, roaming: false], noConnect=true, '
        'networkType=0, extraInfo=},fw_inc=N960USS1ARJ9,fw_int=27\n'
    )
示例#4
0
def test_each_output_records_ends_with_newline():
    identifier = 'FOO'
    timestamp = datetime.utcnow()
    some_key_value_pairs = [('theOnly', 'One')]

    qs_row = serialize(identifier, timestamp, some_key_value_pairs)

    assert qs_row.endswith(',theOnly=One\n')
示例#5
0
def test_it_formats_null_values_as_funky_strings():
    identifier = 'LOG'
    timestamp = datetime.utcnow()
    key_value_pairs_with_none_values = [
        ('good_ideas', None), ('bad ideas', 'plenty'), ('newType', None)]

    qs_row = serialize(identifier, timestamp, key_value_pairs_with_none_values)

    assert ',good_ideas=(null),bad ideas=plenty,newType=(null)' in qs_row
示例#6
0
def test_it_formats_identifier_and_timestamp_as_unix_epoch():
    identifier = 'LOG'
    some_key_value_pairs = [("It's Caturday?", 'YES')]

    dt_timestamp = datetime(2019, 3, 23, 1, 2, 3, tzinfo=timezone.utc)
    str_timestamp = "1553302923"
    int_timestamp = int(str_timestamp)

    for timestamp in (dt_timestamp, str_timestamp, int_timestamp):
        qs_row = serialize(identifier, timestamp, some_key_value_pairs)

        assert qs_row.startswith("LOG,1553302923,It's Caturday?=")
示例#7
0
def test_it_does_the_nested_key_value_formatting_on_root_level_dict_values():
    identifier = 'LOG'
    timestamp = datetime.utcnow()
    key_value_pairs_with_dict_values = [
        ('howdy', None),
        ('empty', {}),
        ('nest3', OrderedDict([('k31', 2.0), ('k32', 0)])),
        ('nest4', {'y': 3, 'x': 1}),
        ('moarStuff', '!')
    ]

    qs_row = serialize(identifier, timestamp, key_value_pairs_with_dict_values)

    assert ',empty={},nest3={"k31":2.0,"k32":0},nest4={"y":3,"x":1},m' in qs_row
示例#8
0
def test_it_does_the_nested_key_value_formatting_on_root_level_list_values():
    identifier = 'LOG'
    timestamp = datetime.utcnow()
    key_value_pairs_with_list_values = [
        ('howdy', None),
        ('empty', []),
        ('my_nest', [('sub_key1', 'foo'), ('sk2', 'bar')]),
        ('nest2', [('a', '1')]),
        ('otherStuff', 'ok')
    ]

    qs_row = serialize(identifier, timestamp, key_value_pairs_with_list_values)

    assert ',empty={},my_nest={sub_key1=foo, sk2=bar},nest2={a=1},oth' in qs_row
示例#9
0
def test_it_rejects_future_and_far_past_and_mistyped_timestamps():
    identifier = 'GOL'

    far_past_timestamp = datetime(1999, 12, 31, 0, 0, 0, tzinfo=timezone.utc)
    with raises(AssertionError):
        serialize(identifier, far_past_timestamp, [])

    future_timestamp = int(datetime.utcnow().timestamp() + 30)
    with raises(AssertionError):
        serialize(identifier, future_timestamp, [])

    text_timestamp = 'First day of April, 2015'
    with raises(ValueError):
        serialize(identifier, text_timestamp, [])

    mistyped_timestamp = [2019, 1, 3, 16, 1, 30]
    with raises(TypeError):
        serialize(identifier, mistyped_timestamp, [])
示例#10
0
def test_it_formats_level2_nested_tuple_content_scenario_3():
    identifier = 'LOG'
    timestamp = '1554930014'
    key_value_pairs = [
        ('event6_data', 'connect'),
        ('event6_time', '1554907386248'),
        ('event6_vars', [
            ('networkInfo', [('type', 'MOBILE[LTE]'), ('roaming', 'false')])
        ])
    ]

    qs_row = serialize(identifier, timestamp, key_value_pairs)

    assert qs_row == (
        'LOG,1554930014,event6_data=connect,event6_time=1554907386248,'
        'event6_vars={networkInfo=[type: MOBILE[LTE], roaming: false]}\n'
    )
示例#11
0
def test_it_formats_level2_nested_tuple_content_scenario_5():
    identifier = 'LOG'
    timestamp = '1554930014'
    key_value_pairs = [
        ('event6_data', 'connect'),
        ('event6_time', '1554907386248'),
        ('event6_vars', [
            ('networkInfo', [('roaming', 'false'),
                             ('network type', '28'),
                             ('apn type', 'ims,ia,tim,'),
                             ('subtype', '13')])
        ])
    ]

    qs_row = serialize(identifier, timestamp, key_value_pairs)

    assert qs_row == (
        'LOG,1554930014,event6_data=connect,event6_time=1554907386248,'
        'event6_vars={networkInfo=[roaming: false, network type: 28, '
        'apn type: ims,ia,tim,, subtype: 13]}\n'
    )