Beispiel #1
0
 def add_next_client(self):
     connection = self.nextPendingConnection()
     ip = connection.peerAddress().toString()[7:]
     port = connection.peerPort()
     client = Client(ip, port, connection, self)
     if ip in self.connections:
         connection.disconnectFromHost()
         return
     client.send(Message(self.get_ip(), self.online, Mode.Neighb))
     self.add_client(client)
Beispiel #2
0
def export(output_dir: str) -> None:
    """Export collections to csv."""

    mongo_client = Client()
    mongo_client.set_db()
    all_collections = mongo_client.collections()
    documents = mongo_client.fetch_documents(all_collections)
    df = mongo_client.convert_to_df(documents)
    mongo_client.export_to_csv(df, output_dir)
Beispiel #3
0
 def setUp(self):
     # arrange
     self.ip = '127.0.0.1'
     self.port = 666
     with patch('source.server.Server') as mock:
         self.server = Server('dude', 666, mock)
     self.client = Client(self.ip, self.port, QTcpSocket(), self.server)
     self.server.peer_manager.last_client = self.client
     self.online = {self.ip: self.server.client_info}
     self.message = Message(self.ip, self.online, Mode.Neighb)
Beispiel #4
0
class PeerManager:
    def __init__(self, server):
        self.server = server

    def update_connections(self, online):
        if len(self.server.connections) >= OPTIMAL_CONNECT_NUMBER:
            return
        online = list(map(lambda key: (key, online[key].incidents_cnt),
                          online))
        online.sort(key=lambda x: x[1])
        i = 0
        online_cnt = len(online)
        while i < online_cnt and len(
                self.server.connections) < OPTIMAL_CONNECT_NUMBER:
            ip = online[i][0]
            if ip != self.server.get_ip(
            ) and ip not in self.server.connections:
                self.set_connection(ip, self.server.port)
            i += 1
        self.server.update_client_info()

    def set_connection(self, ip, port):
        socket = QTcpSocket()
        self.last_client = Client(ip, port, socket, self.server)
        socket.connected.connect(self._share_data)
        self.last_client.connect()

    def add_client(self, message):
        if message.mode == Mode.Neighb and message.sender_ip not in self.server.connections:
            self.server.add_client(self.last_client)
            self.server.merge_online(message)

    def _share_data(self):
        self.last_client.socket.connected.disconnect(self._share_data)
        if len(self.server.connections) >= OPTIMAL_CONNECT_NUMBER:
            self.last_client.socket.disconnectFromHost()
            return
        if self.last_client.ip in self.server.connections:
            self.last_client.socket.disconnectFromHost()
            return
        message = Message(self.server.get_ip(), self.server.online,
                          Mode.Neighb)
        self.last_client.send(message)
Beispiel #5
0
    def test_add_client_to_connections(self):
        # arrange
        with patch('source.server.Server') as mock:
            server = Server('dude', 666, mock)
        client = Client('127.0.0.1', 666, QTcpSocket(), server)

        # act
        server.add_client(client)

        # assert
        self.assertEqual(server.connections[client.ip], client)
Beispiel #6
0
    def test_update_client_info(self):
        # arrange
        with patch('source.server.Server') as mock:
            server = Server('dude', 666, mock)
        client = Client('127.0.0.1', 666, QTcpSocket(), server)
        server.connections[client.ip] = client

        # act
        server.update_client_info()

        # assert
        self.assertEqual(server.client_info.incidents_cnt, 1)
Beispiel #7
0
def run(phrase: str) -> None:
    """Run scraper."""

    scrapper = Scrapper(phrase)
    scrapper.get_similar_words()
    scrapper.scrap_raw_data()

    mongo_client = Client()
    mongo_client.set_db()
    mongo_client.insert(data=scrapper.scrapped, collection=phrase)
    click.echo(f"{len(scrapper.scrapped)} records saved in database.")
Beispiel #8
0
from source.client import Client

client = Client()
client.start()
Beispiel #9
0
def show() -> None:
    """Show all collections."""

    mongo_client = Client()
    mongo_client.set_db()
    mongo_client.collections()
Beispiel #10
0
def delete(collection_name: str) -> None:
    """Delete collection from DB."""

    mongo_client = Client()
    mongo_client.set_db()
    mongo_client.delete_collection(collection_name)
Beispiel #11
0
 def set_connection(self, ip, port):
     socket = QTcpSocket()
     self.last_client = Client(ip, port, socket, self.server)
     socket.connected.connect(self._share_data)
     self.last_client.connect()