-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.py
157 lines (121 loc) · 4.86 KB
/
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
import configparser
import socket
import logging
import unittest
from threading import Thread
from telegram_server import TelegramServer
# logging
console_logging = logging.StreamHandler()
console_logging.setLevel(logging.NOTSET)
logging.basicConfig(level=logging.NOTSET,
handlers=[console_logging],
format='%(asctime)23s - %(levelname)8s - %(funcName)25s - %(message)s'
)
class ThreadTests(unittest.TestCase):
class TestThread(Thread):
def __init__(self):
Thread.__init__(self)
self.daemon = True
self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.client.connect(('127.0.0.1', 9999))
self.response = None
self.message = None
def run(self):
self.client.sendall(bytes('TestSender|Admin|Error|Test|Message', 'utf-8'))
response, message = self.client.recv(4096).strip().decode('utf-8').split('|', 1)
self.response = response
self.message = message
@classmethod
def setUpClass(cls):
bot_config = configparser.ConfigParser()
bot_config.read('bot.config')
cls.server = TelegramServer(token=bot_config['BOT']['TOKEN'])
cls.server.start()
cls.threads = list()
threads = 1000
for i in range(threads):
cls.threads.append(ThreadTests.TestThread())
def test_run(self):
for thread in self.threads:
thread.start()
for thread in self.threads:
thread.join()
for thread in self.threads:
self.assertEqual('Success', thread.response)
@classmethod
def tearDownClass(cls):
cls.server.stop()
class Tests(unittest.TestCase):
def sendData(self, data):
self.client.sendall(bytes(data, 'utf-8'))
def receiveData(self):
return self.client.recv(4096).strip().decode('utf-8')
@classmethod
def setUpClass(cls):
bot_config = configparser.ConfigParser()
bot_config.read('bot.config')
cls.server = TelegramServer(token=bot_config['BOT']['TOKEN'])
cls.server.start()
def setUp(self):
self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.client.connect(('127.0.0.1', 9999))
def test_send_invalid_structure(self):
self.sendData('|')
response, message = self.receiveData().split('|', 1)
self.assertEqual('Error', response)
def test_send_invalid_sender_name(self):
self.sendData('||||')
response, message = self.receiveData().split('|', 1)
self.assertEqual('Error', response)
def test_send_invalid_group(self):
self.sendData('TestSender|Group|Level|Text|Message')
response, message = self.receiveData().split('|', 1)
self.assertEqual('Error', response)
def test_send_invalid_level(self):
self.sendData('TestSender|Admin|Level|Text|Message')
response, message = self.receiveData().split('|', 1)
self.assertEqual('Error', response)
def test_send_invalid_data_type(self):
self.sendData('TestSender|Admin|Error|DataType|Message')
response, message = self.receiveData().split('|', 1)
self.assertEqual('Error', response)
def test_send_valid_data(self):
self.sendData('TestSender|Admin|Error|Test|Message|')
response, message = self.receiveData().split('|', 1)
self.assertEqual('Success', response)
def tearDown(self):
self.client.close()
@classmethod
def tearDownClass(cls):
cls.server.stop()
class TelegramTests(unittest.TestCase):
def sendData(self, data):
self.client.sendall(bytes(data, 'utf-8'))
def receiveData(self):
return self.client.recv(4096).strip().decode('utf-8')
@classmethod
def setUpClass(cls):
bot_config = configparser.ConfigParser()
bot_config.read('bot.config')
cls.server = TelegramServer(token=bot_config['BOT']['TOKEN'])
cls.server.start()
def setUp(self):
self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.client.connect(('127.0.0.1', 9999))
def test_error(self):
self.sendData('TestSender|Admin|Error|Text|error test message')
response, message = self.receiveData().split('|', 1)
self.assertEqual('Success', response)
def test_warning(self):
self.sendData('TestSender|Admin|Warning|Text|warning test message')
response, message = self.receiveData().split('|', 1)
self.assertEqual('Success', response)
def test_info(self):
self.sendData('TestSender|Admin|Info|Text|info test message')
response, message = self.receiveData().split('|', 1)
self.assertEqual('Success', response)
def tearDown(self):
self.client.close()
@classmethod
def tearDownClass(cls):
cls.server.stop()