Ejemplo n.º 1
0
def test_PushBody():
    message = Message('')
    ip = dotted_quad_to_num('127.0.0.1')
    port = 5000
    file_index = 2565
    servent_id = 'thisisservent_id'
    push = PushBody(message, servent_id, ip, port, file_index)
    assert_equal(push.message, message)
    assert_equal(push.ip, ip)
    assert_equal(push.port, 5000)
    assert_equal(push.file_index, 2565)
    assert_equal(push.servent_id, 'thisisservent_id')

    #test the serialize
    body = push.serialize()
    body_expected_str = "thisisservent_id\x00\x00\x0a\x05\x7f\x00\x00\x01\x13\x88"
    assert_equal(body, body_expected_str)

    # test the deserialize
    push_de = PushBody(message)
    push_de.deserialize(body_expected_str)
    assert_equal(push_de.ip, ip)
    assert_equal(push_de.port, 5000)
    assert_equal(push_de.file_index, 2565)
    assert_equal(push_de.servent_id, 'thisisservent_id')    
Ejemplo n.º 2
0
def test_PongBody():
    message = Message('')
    # convert decimal dotted quad string to long integer
    ip = dotted_quad_to_num('127.0.0.1') 
    port = 5000 
    num_of_files = 1 
    num_of_kb = 255 
    pong = PongBody(message, ip, port, num_of_files, num_of_kb)
    assert_equal(pong.message, message)
    assert_equal(pong.ip, ip)
    assert_equal(pong.port, 5000)
    assert_equal(pong.num_of_files, 1)
    assert_equal(pong.num_of_kb, 255)

    #test serialize
    body = pong.serialize()    
    body_expected_str = "\x13\x88\x01\x00\x00\x7f\x00\x00\x00\x01\x00\x00\x00\xff"
    assert_equal(body, body_expected_str)

    # test deserialize
    de_pong = PongBody(message)
    de_pong.deserialize(body_expected_str)
    assert_equal(de_pong.message, message)
    assert_equal(de_pong.ip, ip)
    assert_equal(de_pong.port, 5000)
    assert_equal(de_pong.num_of_files, 1)
    assert_equal(de_pong.num_of_kb, 255)
Ejemplo n.º 3
0
def test_QueryHitBody():
    message = Message('')
    ip = dotted_quad_to_num('127.0.0.1')
    port = 59850
    speed = 100 
    result_set = [{
            'file_index': 3435,
            'file_size': 100,
            'file_name': 'a_name'
        },
        {
            'file_index': 3535,
            'file_size': 200,
            'file_name': 'b_name'
        }]
    servent_id = 'thisisservent_id'
    query_hit = QueryHitBody(message, ip, port, speed, result_set, servent_id)
    assert_equal(query_hit.message, message)
    assert_equal(query_hit.ip, ip)
    assert_equal(query_hit.port, 59850)
    assert_equal(query_hit.speed, 100)
    assert_equal(query_hit.result_set, result_set)
    assert_equal(query_hit.servent_id, servent_id)

    #test the serialize
    body = query_hit.serialize()
    body_expected_str = "\x02\xe9\xca\x7f\x00\x00\x01\x00\x00\x00\x64\x00\x00\x0d\x6b\x00\x00\x00\x64a_name\x00\x00\x00\x00\x0d\xcf\x00\x00\x00\xc8b_name\x00\x00thisisservent_id"
    assert_equal(body, body_expected_str)
    
    #test the deserialize
    de_queryhit = QueryHitBody(message)
    de_queryhit.deserialize(body_expected_str)
    assert_equal(de_queryhit.ip, ip)
    assert_equal(de_queryhit.port, 59850)
    assert_equal(de_queryhit.speed, 100)
    assert_equal(de_queryhit.result_set, result_set)
    assert_equal(de_queryhit.servent_id, servent_id)
Ejemplo n.º 4
0
def test_cache():
    test_servent = CacheServent()

    ip = dotted_quad_to_num('127.0.0.1')
    port = 59850
    speed = 100 
    result_set = [{
            'file_index': 3435,
            'file_size': 100,
            'file_name': 'A'
        },
        {
            'file_index': 3535,
            'file_size': 200,
            'file_name': 'B'
        }]
    servent_id = 'thisisservent_id'
    
    fake_queryhit = create_message(GnutellaBodyId.QUERYHIT,
                                   ip = ip,
                                   port = port,
                                   result_set = result_set,
                                   servent_id = servent_id,
                                   speed = 1)

    test_servent.save_queryhit(fake_queryhit)
    cache_result = test_servent.search_queryhit("A")
    # test the result
    assert_equal(len(cache_result), 1)
    assert_equal(cache_result[0][3][0]['file_index'], 3435)
    
    # test the merge
    result_set2 = [{
            'file_index': 3435,
            'file_size': 100,
            'file_name': 'A'
        },
        {
            'file_index': 35345,
            'file_size': 200,
            'file_name': 'C'
        }]    
    fake_queryhit2 = create_message(GnutellaBodyId.QUERYHIT,
                                   ip = ip,
                                   port = port,
                                   result_set = result_set2,
                                   servent_id = servent_id,
                                   speed = 1)
    
    test_servent.save_queryhit(fake_queryhit2)
    # check if it actually merge
    assert_equal(len(test_servent.queryhit_cache), 1)
    
    cache_result = test_servent.search_queryhit("C")
    # test the result
    assert_equal(len(cache_result), 1)
    assert_equal(cache_result[0][3][0]['file_index'], 35345)
    # complex test, use two servent
    servent_id2 = 'thisisserventid1'
    fake_queryhit3 = create_message(GnutellaBodyId.QUERYHIT,
                                   ip = ip,
                                   port = port,
                                   result_set = result_set,
                                   servent_id = servent_id2,
                                   speed = 1)
    test_servent.save_queryhit(fake_queryhit3)
    # test if it does not merge
    assert_equal(len(test_servent.queryhit_cache), 2)
    # test the result
    cache_result = test_servent.search_queryhit("A")
    assert_equal(len(cache_result), 2)