Exemple #1
0
def try_elimination():
    import random
    random.seed(1)
    set2 = swif.FullSymbolSet().alloc_set()
    N = 10
    packet_list = []
    for i in range(N):
        header = [0] * (N + 2)
        header[i + 1] = 1
        P = swif.FullSymbol().from_coefs_and_symbol(
            123, bytes(header),
            bytes([((i + j)**2) & 0xff for j in range(10)]))
        packet_list.append(P)
        P.dump()

    symbol_list = []
    for i in range(N):
        Q = swif.FullSymbol().from_coefs_and_symbol(1, bytes([0]), b"")
        #Q = packet_list[0].clone()
        for j in range(N):
            P = packet_list[j].clone()
            Q = Q.add(P._scale(random.randint(0, 255)))
        Q.dump()
        symbol_list.append(Q)

    for i in range(N):
        set2.add_with_elimination(symbol_list[i])
    set2.dump()
Exemple #2
0
def try_full_symbol_add():
    symbol1 = swif.FullSymbol().from_coefs_and_symbol(
        6, bytes([1, 0, 0, 1, 0, 0]), b"azeu")
    symbol2 = swif.FullSymbol().from_coefs_and_symbol(8, bytes([0, 0, 1, 0]),
                                                      b"aaeuyo")
    symbol3 = symbol1.add(symbol2)
    print(symbol3)
    assert symbol3.get_coefs() == (6, b'\x01\x00\x00\x01\x01')
    assert symbol3.get_data() == b'\x00\x1b\x00\x00yo'
    print(symbol3.get_coefs())
    print(symbol3.get_data())
Exemple #3
0
def test_full_symbol_set_add_previous_id():
    set1 = swif.FullSymbolSet().alloc_set()
    symbol1 = swif.FullSymbol().from_coefs_and_symbol(10, bytes([1, 1, 1, 1]),
                                                      b"azerty")
    symbol2 = swif.FullSymbol().from_coefs_and_symbol(1, bytes([0, 0, 1, 2]),
                                                      b"querty")
    symbol3 = swif.FullSymbol().from_coefs_and_symbol(1, bytes([1, 1, 2, 0]),
                                                      b"test")
    set1.set_add(symbol1)
    set1.set_add(symbol2)
    set1.set_add(symbol3)
    set1.dump()
Exemple #4
0
def try_remove_each_pivot():

    set2 = swif.FullSymbolSet().alloc_set()
    P1 = swif.FullSymbol().from_coefs_and_symbol(1, bytes([1, 3, 0, 0, 0, 0]),
                                                 b"azeu")
    P2 = swif.FullSymbol().from_coefs_and_symbol(1, bytes([0, 5, 0, 0, 0, 0]),
                                                 b"aaeuyo")
    Q1 = P1.add(P2)
    Q2 = P1.add(P2._scale(2))
    set2.add_with_elimination(Q1)
    set2.add_with_elimination(Q2)
    set2.dump()
Exemple #5
0
def test_add_with_elimination():
    set1 = swif.FullSymbolSet().alloc_set()
    symbol1 = swif.FullSymbol().from_coefs_and_symbol(1, bytes([1, 1, 1, 1]),
                                                      b"azerty")
    symbol2 = swif.FullSymbol().from_coefs_and_symbol(1, bytes([0, 0, 1, 2]),
                                                      b"querty")
    new_symbol = swif.FullSymbol().from_coefs_and_symbol(
        1, bytes([1, 1, 2, 0]), b"test")
    #set1.set_add(symbol1)
    #set1.set_add(symbol2)
    set1.dump()
    set1.add_with_elimination(new_symbol)
    set1.dump()
Exemple #6
0
def try_alloc_add_set():
    set1 = swif.FullSymbolSet().alloc_set()
    symbol1 = swif.FullSymbol().from_coefs_and_symbol(
        6, bytes([1, 0, 0, 1, 0, 0]), b"azeu")
    symbol2 = swif.FullSymbol().from_coefs_and_symbol(7, bytes([0, 0, 0, 0]),
                                                      b"")
    symbol3 = swif.FullSymbol().from_coefs_and_symbol(3, bytes([1, 0, 1, 0]),
                                                      b"aaeuyo")
    symbol4 = swif.FullSymbol().from_coefs_and_symbol(7, bytes([9, 0, 1, 0]),
                                                      b"aaeuyo")
    set1.set_add(symbol1)
    set1.set_add(symbol2)
    set1.set_add(symbol3)
    set1.set_add(symbol4)
    set1.dump()
    print(set1)
Exemple #7
0
def try_full_symbol_scale():
    symbol1 = swif.FullSymbol().from_coefs_and_symbol(
        6, bytes([1, 0, 0, 1, 0, 0]), b"azeu")
    coef = 2
    print(symbol1._scale(coef))
    symbol1.dump()
    symbol1.get_coefs()
    assert list(bytearray(symbol1.get_coefs()[1])) == [2, 0, 0, 2]
    assert symbol1.get_data() == bytearray([2 * x for x in b"azeu"])
Exemple #8
0
def try_full_symbol_add_base():
    symbol1 = swif.FullSymbol().from_coefs_and_symbol(
        6, bytes([1, 0, 0, 1, 0, 0]), b"azeu")
    symbol2 = swif.FullSymbol().from_coefs_and_symbol(8, bytes([0, 0, 1, 0]),
                                                      b"aaeuyo")
    symbol_result = swif.FullSymbol().from_coefs_and_symbol(
        5, bytes([0, 0, 0, 0, 0, 1, 1, 1]), b"azeyui")
    symbol1.dump()
    symbol2.dump()
    #print(symbol_result.dump())
    print(symbol_result._add_base(symbol1, symbol2))
    symbol_result.dump()
    #assert symbol_result.first_nonzero_id == 10
    #assert symbol_result.last_nonzero_id == 12
    assert symbol_result.get_coefs() == (6, b'\x01\x00\x00\x01\x01')
    #assert symbol_result->first_nonzero_id == 6
    #assert symbol_result->last_nonzero_id == 10
    assert symbol_result.get_data() == b'\x00\x1b\x00\x00yo'
Exemple #9
0
def test_add_as_pivot2():
    set1 = swif.FullSymbolSet().alloc_set()
    symbol1 = swif.FullSymbol().from_coefs_and_symbol(1, bytes([1, 0, 0]),
                                                      b"azerty")
    symbol2 = swif.FullSymbol().from_coefs_and_symbol(1, bytes([0, 1, 0]),
                                                      b"querty")
    #new_symbol = swif.FullSymbol().from_coefs_and_symbol(
    #    1, bytes([1,1,2,0]), b"test")
    v1 = symbol1.clone()
    v2 = symbol1.add(symbol2)

    #set1.set_add(v1)
    #set1.set_add(v2)
    #set1.dump()
    set1.add_with_elimination(v1)
    set1.add_with_elimination(v2)

    set1.dump()
Exemple #10
0
def try_alloc_add_set_expl2():
    set2 = swif.FullSymbolSet().alloc_set()
    symbol1 = swif.FullSymbol().from_coefs_and_symbol(9, bytes([1, 0, 0, 0]),
                                                      b"dddd")
    symbol2 = swif.FullSymbol().from_coefs_and_symbol(
        10, bytes([1, 0, 0, 0, 3, 5]), b"aaaa")
    symbol3 = swif.FullSymbol().from_coefs_and_symbol(
        100, bytes([0, 0, 0, 8, 1, 7]), b"bbbb")
    symbol4 = swif.FullSymbol().from_coefs_and_symbol(
        100, bytes([0, 1, 0, 0, 4, 2]), b"cccc")

    set2.set_add(symbol1)
    set2.set_add(symbol2)
    set2.set_add(symbol3)
    set2.set_add(symbol4)
    set2.dump()
    print(set2.get_pivot(104))
    print(set2.get_pivot(103))
Exemple #11
0
def test_full_symbol_wrapper():
    symbol_id = 10
    content = b"AZERTY"
    symbol = swif.FullSymbol().from_source_symbol(symbol_id, content)
    assert symbol.get_size() == len(content)
    assert symbol.get_min_symbol_id() == symbol_id
    assert symbol.get_max_symbol_id() == symbol_id
    assert symbol.get_data() == content
    assert symbol.get_coefs() == (symbol_id, bytes([1]))
    assert symbol.count_coefs() == 1
Exemple #12
0
def make_random_symbol(start, nb_coef, zero_list, possible_coefs=None):
    if possible_coefs is None:
        possible_coefs = list(range(1, 256))
    coefs = [
        possible_coefs[i]
        for i in np.random.randint(0, len(possible_coefs), size=nb_coef)
    ]
    if nb_coef == 1:
        coefs[0] = 1
    for zero_pos in zero_list:
        coefs[zero_pos - start] = 0
    return swif.FullSymbol((start, coefs, b""))
Exemple #13
0
def test_with_2_packets():
    symbol1 = swif.FullSymbol().from_coefs_and_symbol(
        1, bytes([1,0,0]), b"azertyazertyasdf")
    symbol2 = swif.FullSymbol().from_coefs_and_symbol(
        1, bytes([0,1,0]), b"quertyquertyasdf")
    print("dump 2 ")
    symbol2.dump()
    src1 = symbol1.clone()
    src1._scale(0x27)
    src2 = symbol2.clone()
    src2._scale(0x2a)
    repair = src1.add(src2)

    decoder = swif.RlcDecoder(SYMBOL_SIZE, MAX_CODING_WINDOW_SIZE)
    decoder.decoder_reset_coding_window()
    decoder.decode_with_new_source_symbol(symbol1.get_data(), symbol1.get_min_symbol_id())
    #decoder.decode_with_new_source_symbol(symbol2.get_data(), symbol2.get_min_symbol_id())
    decoder.add_source_symbol_to_coding_window(1)
    decoder.add_source_symbol_to_coding_window(2)
    decoder.decoder_generate_coding_coefs(key=0, add_param=0)
    decoder.decode_with_new_repair_symbol(repair.get_data(),repair.get_min_symbol_id())    
Exemple #14
0
def try_full_symbol_wrapper():
    #symbol = swif.FullSymbol().from_source_symbol(6, b"azertyuiop")
    symbol = swif.FullSymbol().from_coefs_and_symbol(6,
                                                     bytes([0, 0, 1, 1, 0, 0]),
                                                     b"azertyuiop")
    print(symbol.is_zero())
    print(symbol.get_info())
    print(symbol.get_min_symbol_id())
    print(symbol.get_max_symbol_id())
    print(symbol.get_coefs())
    print(symbol.get_size())
    print(symbol.count_coefs())
    print(symbol.get_data())
    print(symbol.clone().get_info())
    symbol.dump()
    print()
    sys.stdout.flush()
Exemple #15
0
def test_full_symbol_get_coef():
    symbol = swif.FullSymbol().from_coefs_and_symbol(1, bytes([4, 3, 2, 1,
                                                               10]), b"azerty")
    print(symbol.get_coef(5))
Exemple #16
0
def try_full_symbol_scale_inverted():
    symbol1 = swif.FullSymbol().from_coefs_and_symbol(
        6, bytes([1, 0, 0, 1, 0, 0]), b"azeu")
    coef = 5
    print(symbol1._scale_inv(coef))