Skip to content

Commit 68c56c6

Browse files
authored
Merge pull request #1 from alblasco/master
Fix several problems:
2 parents 0c15593 + dd23390 commit 68c56c6

File tree

4 files changed

+51
-80
lines changed

4 files changed

+51
-80
lines changed

client.py

Lines changed: 11 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,27 @@
11
import asyncio
2-
import pickle
32

43
class SimpleClient:
54
def __init__(self):
6-
self.token = ''
7-
85
self.reader = None
96
self.writer = None
107

11-
self.run = True
12-
138
async def connect(self, sock):
149
self.reader, self.writer = await asyncio.open_unix_connection(sock)
10+
# self.reader, self.writer = await asyncio.open_connection(*sock)
1511

1612
async def send(self, data):
17-
if self.writer:
18-
binary = pickle.dumps(data)
19-
self.writer.write(binary)
13+
binary = data.encode()
14+
self.writer.write(binary)
15+
await self.writer.drain()
2016

2117
async def receive(self, size=1024):
22-
ret = None
23-
24-
if self.reader:
25-
tmp = await self.reader.read(size)
26-
ret = pickle.loads(tmp)
27-
28-
return ret
29-
30-
31-
32-
async def main():
33-
run = 0
34-
35-
client = SimpleClient()
36-
await client.connect('./server.sock')
18+
binary = await self.reader.read(size)
19+
if not binary:
20+
return None
21+
return binary.decode()
3722

38-
for i in range(10):
39-
await client.send(f'hello {i}')
40-
data = await client.receive()
41-
print(f'received: {data}')
42-
await asyncio.sleep(.1)
43-
i += 1
23+
async def close(self):
24+
self.writer.close()
25+
await self.writer.wait_closed()
4426

45-
await client.disconnect()
4627

47-
if __name__ == '__main__':
48-
asyncio.run(main())

conftest.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,22 @@
22
import asyncio
33
from client import SimpleClient
44

5-
def pytest_configure(config):
6-
pytest.client = None
7-
8-
def pytest_sessionstart(session):
9-
pass
10-
11-
12-
def pytest_sessionfinish(session):
13-
pass
14-
# if pytest.client:
15-
# pytest.client.close()
165

176
@pytest.fixture(scope='session')
18-
async def client(request):
7+
async def client():
198
print('client init')
209
client = SimpleClient()
2110
print('connecting')
22-
await client.connect('./server.sock')
11+
# await client.connect('./server.sock')
12+
await client.connect(('127.0.0.1',5062))
2313
print('connected, yielding')
24-
yield client
14+
yield client
15+
await client.close()
16+
17+
18+
@pytest.fixture(scope="session")
19+
def event_loop():
20+
"""Change event_loop fixture to module level."""
21+
loop = asyncio.get_event_loop_policy().new_event_loop()
22+
yield loop
23+
loop.close()

server.py

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,51 @@
11
import asyncio
2-
import pickle
2+
33

44
class SimpleServer:
55
def __init__(self, reader, writer):
6-
self.token = ''
7-
86
self.reader = reader
97
self.writer = writer
108

11-
self.run = True
12-
139
async def client_handler(self):
14-
print('client_handler')
1510
count = 0
16-
while self.run and count < 10:
17-
print('receiving')
11+
while True:
12+
print(f'receiving {count}')
1813
data= await self.receive()
19-
print(f"data: {data}")
20-
if data:
21-
print('client_handler', data)
22-
await self.send(f'{data} returned')
23-
count += 1
24-
else:
25-
print('await 0.1')
26-
await asyncio.sleep(.1)
14+
if not data:
15+
break
16+
await self.send(f'{data} returned')
17+
count += 1
2718

2819
async def send(self, data):
29-
if self.writer:
30-
binary = pickle.dumps(data)
31-
print(binary)
32-
self.writer.write(binary)
33-
print('sent')
20+
binary = data.encode()
21+
self.writer.write(binary)
22+
await self.writer.drain()
23+
print(f'{binary} sent')
3424

3525
async def receive(self, size=1024):
36-
ret = None
26+
binary = await self.reader.read(size)
27+
if not binary:
28+
return None
29+
return binary.decode()
3730

38-
if self.reader:
39-
tmp = await self.reader.read(size)
40-
ret = pickle.loads(tmp)
31+
async def close(self):
32+
self.writer.close()
33+
await self.writer.wait_closed()
4134

42-
return ret
4335

4436
async def handle_client(reader, writer):
4537
print('handle_client')
4638
server = SimpleServer(reader, writer)
4739
await server.client_handler()
40+
print('end of handle_client')
4841

4942

5043
async def main():
5144
server = await asyncio.start_unix_server(handle_client, './server.sock')
45+
# server = await asyncio.start_server(handle_client, '127.0.0.1', 5062)
46+
print("server waiting client connection")
5247
await server.serve_forever()
5348

54-
try:
55-
server.serve_forever()
56-
except KeyboardInterrupt:
57-
pass
58-
server.close()
59-
6049

6150
if __name__ == '__main__':
6251
asyncio.run(main())

test_1.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,28 @@
11
import pytest
22
import asyncio
33

4-
@pytest.mark.usefixtures('client')
54
@pytest.mark.asyncio
65
async def test_1(client):
76
for i in range(10):
87
await client.send(f'hello {i}')
98
data = await client.receive()
9+
if not data:
10+
print('connection closed')
11+
break
1012
print(f'received: {data}')
1113
await asyncio.sleep(.1)
1214
i += 1
1315
assert True
1416
print('hello world')
1517

16-
@pytest.mark.usefixtures('client')
1718
@pytest.mark.asyncio
1819
async def test_2(client):
1920
for i in range(10):
2021
await client.send(f'hello {i}')
2122
data = await client.receive()
23+
if not data:
24+
print('connection closed')
25+
break
2226
print(f'received: {data}')
2327
await asyncio.sleep(.1)
2428
i += 1

0 commit comments

Comments
 (0)