def process(udp_clients):
    ring = NodeRing(nodes=NODES)
    hash_codes = set()
    # PUT all users.
    for u in USERS:
        data_bytes, key = serialize_PUT(u)
        # TODO: PART II - Instead of going to server 0, use Naive hashing to split data into multiple servers
        #fix_me_server_id = 0
        fix_me_server_id = NODES.index(ring.get_node(key))
        print(f"Server id: {fix_me_server_id}")
        response = udp_clients[fix_me_server_id].send(data_bytes)
        hash_codes.add(response)
        print(response)

    print(
        f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}"
    )

    # TODO: PART I
    # GET all users.
    for hc in hash_codes:
        print(f"GET:{hc}")
        data_bytes, key = serialize_GET(hc)
        fix_me_server_id = NODES.index(ring.get_node(key))
        response = udp_clients[fix_me_server_id].send(data_bytes)
        #print(deserialize(response))
        print(response)

        # DELETE all users
    for hc in hash_codes:
        # print(hc)
        data_bytes, key = serialize_DELETE(hc)
        fix_me_server_id = NODES.index(ring.get_node(key))
        response = udp_clients[fix_me_server_id].send(data_bytes)
        print(response)
Esempio n. 2
0
def process(udp_clients):
    client_ring = NodeRing(udp_clients)
    hash_codes = set()
    # PUT all users.
    for u in USERS:
        data_bytes, key = serialize_PUT(u)
        response = client_ring.get_node(key).send(data_bytes)
        print(response)
        hash_codes.add(str(response.decode()))

    print(
        f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}"
    )

    # GET all users.
    for hc in hash_codes:
        print(hc)
        data_bytes, key = serialize_GET(hc)
        response = client_ring.get_node(key).send(data_bytes)
        print(response)

    #DELETE
    for hc in hash_codes:
        data_bytes, key = serialize_DELETE(hc)
        response = client_ring.get_node(key).send(data_bytes)
        print(response)
        print("success")
Esempio n. 3
0
def process(udp_clients):
    client_ring = NodeRing(udp_clients)
    hash_codes = set()
    # PUT all users.
    for u in USERS:
        data_bytes, key = serialize_PUT(u)
        bloomfilter.add(key)
        response = client_ring.get_node(key).send(data_bytes)
        print(response)
        hash_codes.add(str(response.decode()))


    print(f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}")
    
    # GET all users.
    for hc in hash_codes:
        print(hc)
        data_bytes, key = serialize_GET(hc)
        if bloomfilter.is_member(key):
            response = client_ring.get_node(key).send(data_bytes)
        else:
            return None
        print(response)

    # DELETE all users.
    for hc in hash_codes:
        print(hc)
        data_bytes, key = serialize_DELETE(hc)
        if bloomfilter.is_member(key):
            response = client_ring.get_node(key).send(data_bytes)
        else:
            return None
        print(response)
Esempio n. 4
0
def process(udp_clients):
    client_ring = NodeRing(NODES)
    hash_codes = set()
    # PUT all users.
    for u in USERS:
        data_bytes, key = serialize_PUT(u)
        put(key, u)
        server = client_ring.get_node(key)
        response = udp_clients.send(data_bytes, server)
        print(response)
        hash_codes.add(str(response.decode()))

    print(
        f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}"
    )

    # GET all users.
    for hc in hash_codes:
        print(hc)
        data_bytes, key = serialize_GET(hc)
        response = get(key)
        if not (response):
            server = client_ring.get_node(key)
            response = udp_clients.send(data_bytes, server)
        print(response)
def process(udp_clients):
    client_ring = NodeRing(udp_clients)
    hash_codes = set()
    # PUT all users.
    for u in USERS:
        data_bytes, key = serialize_PUT(u)
        put(key, data_bytes)
        response = client_ring.get_node(key).send(data_bytes)
        print(response)
        hash_codes.add(str(response.decode()))

    print(
        f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}"
    )

    # GET all users.
    for hc in hash_codes:
        data_bytes, key = get(hc)
        if key is None:
            if data_bytes is None:
                response = None
            else:
                response = data_bytes
        else:
            response = client_ring.get_node(key).send(data_bytes)
            lru_cache_put(key, data_bytes)
        print(response)

    for hc in hash_codes:
        data_bytes, key = delete(hc)
        if data_bytes is not None:
            response = client_ring.get_node(key).send(data_bytes)
        else:
            response = "Key not Present"
        print(response)
def process(udp_clients):
    client_ring = NodeRing(udp_clients)
    hash_codes = set()
    # PUT all users.
    for u in USERS:
        data_bytes, key = serialize_PUT(u)
        get_ch_node = client_ring.get_ch_node(key)
        response = get_ch_node.send(data_bytes)
        replica = replica_map[get_ch_node]
        print("Replicating in next node")
        replica.send(data_bytes)
        print(response)
        hash_codes.add(str(response.decode()))

    print(
        f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}"
    )

    # GET all users.
    for hc in hash_codes:
        print(hc)
        data_bytes, key = serialize_GET(hc)
        get_ch_node = client_ring.get_ch_node(key)
        response = get_ch_node.send(data_bytes)
        replica = replica_map[get_ch_node]
        print("Response from corresponding node")
        print(response)
        print("Getting response from replica node")
        rep_response = replica.send(data_bytes)
        print(rep_response)
Esempio n. 7
0
def process(udp_clients, seed, weight):
    client_ring = NodeRing(udp_clients, seed, weight)
    client_ring = ConsistentHashing(udp_clients)
    hash_codes = set()

    # PUT all users.
    for u in USERS:
        data_bytes, key = serialize_PUT(u)

        response = client_ring.get_node(key).send(data_bytes)
        print(response)
        hash_codes.add(str(response.decode()))

    print(
        f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}"
    )

    # # GET all users
    # for u in USERS:
    #     data_bytes, key = serialize_GET(u)
    #     response = client_ring.get_node(key).send(data_bytes)
    #     print(response)

    # # DELETE all users.
    # for u in USERS:
    #     data_bytes, key = serialize_DELETE(u)
    #     response = client_ring.get_node(key).send(data_bytes)
    #     print(response)

    LB = client_ring.load_balanced()
    for index in LB:
        print(LB[index])
Esempio n. 8
0
def process(udp_clients):
    # create client ring of the udp client, actually the server sockets they connect to
    client_ring = NodeRing(udp_clients)
    hash_codes = set()
    # PUT all users.
    for u in USERS:
        # serialize the user data
        data_bytes, key = serialize_PUT(u)
        # first find out the nodes by the key, then send the data by that client
        response = client_ring.get_node(key).send(data_bytes)
        print(response)
        # add the response,
        hash_codes.add(str(response.decode()))

    print(
        f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}"
    )

    # GET all users.
    for hc in hash_codes:
        data_bytes, key = serialize_GET(hc)
        response = client_ring.get_node(key).send(data_bytes)
        print(response)

    # delete
    for hc in hash_codes:
        data_bytes, key = serialize_DELETE(hc)
        response = client_ring.get_node(key).send(data_bytes)
        print(response)
def put(udp_clients,obj):
    client_ring = NodeRing(udp_clients)
    global bloomfilter
    data_bytes, key = serialize_PUT(obj)
    bloomfilter.add(key)
    response = client_ring.get_node(key).send(data_bytes)
    return str(response.decode())
 def delete(self, key):
     client_ring = NodeRing(NODES)
     data_bytes, key = serialize_DELETE(key)
     server = client_ring.get_node(key)
     udp_client.host = server['host']
     udp_client.port = server['port']
     response = udp_client.send(data_bytes)
     return response
 def put(self, udp_clients, key, data_bytes):
     # PUT all users.
     ring = NodeRing(NODES)
     fix_me_server_id = NODES.index(ring.get_node(key))
     response = udp_clients[fix_me_server_id].send(data_bytes)
     hash_codes.add(response)
     print(f"Server--->Number of Users Cached={len(hash_codes)}")
     return "hi"
Esempio n. 12
0
def put(key, value):
    bloomfilter.add(key)
    client_ring = NodeRing(clients)
    data_bytes, key1 = serialize_PUT(value)
    response = client_ring.get_node(key1).send(data_bytes)
    print(response)
    hash_codes.add(str(response.decode()))
    return response
Esempio n. 13
0
def put(key, value):
    global globalclient
    ring = NodeRing(nodes=NODES)
    node = ring.get_node(key)
    fix_me_server_id = node['port'] - 4000
    #fix_me_server_id=0
    response = globalclient[fix_me_server_id].send(value)
    bloomfilter.add(response)
    return response
    def put(self, value):

        client_ring = NodeRing(NODES)
        data_bytes, key = serialize_PUT(value)
        server = client_ring.get_node(key)
        udp_client.host = server['host']
        udp_client.port = server['port']
        response = udp_client.send(data_bytes)
        return key
 def getAll(self, udp_clients):
     for hc in hash_codes:
         data_bytes, key = serialize_GET(hc)
         ring = NodeRing(NODES)
         fix_me_server_id = NODES.index(ring.get_node(key))
         print(data_bytes)
         response = udp_clients[fix_me_server_id].send(data_bytes)
         print(f"Server GETALL--->{response}")
     return response
def delete(udp_clients,id):
    client_ring = NodeRing(udp_clients)
    data_bytes, key = serialize_DELETE(id)
    global bloomfilter
    if not bloomfilter.is_member(key):
         print("Not found in bloom filter")
         return None
    response = client_ring.get_node(key).send(data_bytes)
    return response
Esempio n. 17
0
def delete(key):
    if (bloomfilter.is_member(key)):
        data_bytes, key1 = serialize_DELETE(key)
        client_ring = NodeRing(clients)
        server_details = client_ring.get_node(key1)
        response = server_details.send(data_bytes)
        print(response)
        return response
    else:
        return None
Esempio n. 18
0
def get(key):
    if (bloomfilter.is_member(key)):
        print("Found in bloom filter, fetching from server")
        data_bytes, key1 = serialize_GET(key)
        client_ring = NodeRing(clients)
        response = client_ring.get_node(key1).send(data_bytes)
        #print(response)
        return response
    else:
        return None
Esempio n. 19
0
def get_users(hc):
    myOb = NodeRing(NODES)
    data_bytes, key = serialize_GET(hc)
    print(f'In GET {data_bytes},{key}')
    if bf.is_member(key):
        node = myOb.get_node(key)
        response = UDPClient(node['host'], node['port']).send(data_bytes)
    else:
        print("Data not in bloom filter and probably not in server")
    return response
def process(udp_clients):
    hash_codes = set()
    # PUT all users.
    for u in USERS:
        data_bytes, key = serialize_PUT(u)
        ring = NodeRing(NODES)
        server_index = NODES.index(ring.get_node(key))
        response = udp_clients[server_index].put(key, data_bytes)
        hash_codes.add(response.decode())
        print(response)

    print(
        f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}"
    )

    # GET all users.
    for hc in hash_codes:
        print(hc)
        data_bytes, key = serialize_GET(hc)
        ring = NodeRing(NODES)
        server_index = NODES.index(ring.get_node(key))
        response = udp_clients[server_index].get_request(hc, data_bytes)
        print(response)

    # Delete all Users
    for hc in hash_codes:
        print(hc)
        data_bytes, key = serialize_DELETE(hc)
        ring = NodeRing(NODES)
        server_index = NODES.index(ring.get_node(key))
        response = udp_clients[server_index].delete(key, data_bytes)
        print(response)
 def get(self, udp_clients, key):
     k = key.encode()
     for hc in hash_codes:
         if (hc == k):
             data_bytes, key = serialize_GET(hc)
             ring = NodeRing(NODES)
             fix_me_server_id = NODES.index(ring.get_node(key))
             response = udp_clients[fix_me_server_id].send(data_bytes)
             print(f"Server GET--->{response}")
             return response
     return None
Esempio n. 22
0
def delete_users(hc):
    myOb = NodeRing(NODES)
    data_bytes, key = serialize_DELETE(hc)
    node = myOb.get_node(key)
    if bf.is_member(key):
        response = UDPClient(node['host'], node['port']).send(data_bytes)
        if (response.decode() == 'Success'):
            print('Deleted Succesfully')
            # bf.delete(key)
    else:
        print("Data not in bloom filter and probably not in server")
Esempio n. 23
0
def post_users():
    hash_codes = set()
    myOb = NodeRing(NODES)
    # PUT all users.
    for u in USERS:
        data_bytes, key = serialize_PUT(u)
        # TODO: PART II - Instead of going to server 0, use Naive hashing to split data into multiple servers
        node = myOb.get_node(key)
        response = UDPClient(node['host'], node['port']).send(data_bytes)
        hash_codes.add(response)
        bf.add(response)
    return hash_codes
Esempio n. 24
0
def delete(hc):
    global globalclient
    if bloomfilter.is_member(hc):
        data_bytes, key = serialize_DELETE(hc)
        ring = NodeRing(nodes=NODES)
        node = ring.get_node(key)
        fix_me_server_id = node['port'] - 4000
        #fix_me_server_id=0
        response = globalclient[fix_me_server_id].send(data_bytes)
        return response
    else:
        return None
 def delete(self, udp_clients, key):
     k = key.encode()
     for hc in hash_codes:
         print(hash_codes)
         if (hc == k):
             data_bytes, key = serialize_DELETE(hc)
             ring = NodeRing(NODES)
             fix_me_server_id = NODES.index(ring.get_node(key))
             response = udp_clients[fix_me_server_id].send(data_bytes)
             hash_codes.remove(hc)
             #print(hash_codes)
             break
     print(f"Server DELETE--->Number of Users Cached={len(hash_codes)}")
def process_consis_hash(udp_clients):
    print("parameter: ", udp_clients)
    hash_codes = set()
    client_ring = NodeRing(udp_clients)
    for u in USERS:
        data_bytes, key = serialize_PUT(u)
        print("####")
        print(key)
        print("User" + str(u))  # users
        cons_hash(key, [
            "127.0.0.1:4000", "127.0.0.1:4001", "127.0.0.1:4002",
            "127.0.0.1:4003"
        ])
        response = client_ring.get_consis_node(key).send(data_bytes)
Esempio n. 27
0
def process(udp_clients):
    client_ring = NodeRing(udp_clients)
    hash_codes = set()
    
    # PUT all users.
    for u in USERS:
        data_bytes, key = serialize_PUT(u)
        response = put([key, data_bytes, client_ring])
        print(response)
        hash_codes.add(str(response.decode()))


    print(f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}")
    
    # GET all users
    for u in USERS:
        data_bytes, key = serialize_GET(u)
        response = get([key, data_bytes, client_ring])
        print(response)

    # DELETE all users.
    for u in USERS:
        data_bytes, key = serialize_DELETE(u)
        response = delete([key, data_bytes, client_ring])
        print(response)
def process(udp_clients):
    udp_client = udp_clients
    hash_codes = set()
    client_ring = NodeRing(udp_client)

    # PUT all users.
    for u in USERS:
        data_bytes, key = serialize_PUT(u)
        response = put(key, data_bytes, client_ring)
        hash_codes.add(response)
    print(hash_codes)

    print(
        f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}"
    )

    for hc in hash_codes:
        # print(hc)
        data_bytes, key = serialize_GET(hc)
        response = get(key, data_bytes, client_ring)
        # print(response)

    for hc in hash_codes:
        data_bytes, key = serialize_DELETE(hc)
        print("keys from DELETE OPERATAIONS:", data_bytes, key)
        response = delete(key, data_bytes, client_ring)
        print(response)
def process(udp_clients):
    client_ring = NodeRing(udp_clients)
    # weightList = [500,501,502,503]
    # seedList = [100, 200, 300, 400]
    # client_ring = NodeRing(udp_clients,mode='Rendezvous Hashing',weights=weightList, seeds=seedList)
    hash_codes = set()
    # PUT all users.
    for u in USERS:
        response = put(u, client_ring)
        print(response)
        hash_codes.add(str(response.decode()))

    print(
        f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}"
    )

    # GET all users.
    for i in range(0, 3):
        for hc in hash_codes:
            print(hc)
            response = get(hc, client_ring)
            print(response)

    for hc in hash_codes:
        out = delete(hc, client_ring)
        print(out)

    for hc in hash_codes:
        print(hc)
        response = get(hc, client_ring)
        print(response)
Esempio n. 30
0
def process(udp_clients):
    client_ring = NodeRing(udp_clients)
    hash_codes = set()

    # PUT all users.
    for u in USERS:
        response = put(u, client_ring)
        print(response)
        hash_codes.add(str(response.decode()))

    print(
        f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}"
    )

    # GET all users.
    for hc in hash_codes:
        print(hc)
        response = get(hc, client_ring)
        print(response)

    # DELETE all users
    for hc in hash_codes:
        print(hc)
        response = delete(hc, client_ring)
        print(response)