def __init__(self, options): self.opts = options self.local_sign = options.local_sign self.server = Server(self) self.status = {"ledger_index": 0} self.requests = {} self.cache = LRUCache(100) # 100 size,为cache和path设置缓存 self.path = LRUCache(2100) # 2100 size
def Init(self): if self.isInit: return self.isInit = True self.owner().loadingForm.show() self.owner().qtTask.AddHttpTask(lambda x: Server().Send(req.RankReq("H24"), bakParam=x), self.InitBack, backParam="H24") self.owner().qtTask.AddHttpTask(lambda x: Server().Send(req.RankReq("D7"), bakParam=x), self.InitBack, backParam="D7") self.owner().qtTask.AddHttpTask(lambda x: Server().Send(req.RankReq("D30"), bakParam=x), self.InitBack, backParam="D30")
def test_exchanging_key(self): server = Server() user1 = User() user2 = User() encrypted_key = server.send_secret_key(user1.public_key) key1 = user1.receive_pgp_key(encrypted_key, server.public_key) encrypted_key = server.send_secret_key(user2.public_key) key2 = user2.receive_pgp_key(encrypted_key, server.public_key) assert key1 == key2
def __init__(self): self.routers = {} self.routerStates = mp.Array('i', self.MAX_ROUTERS_COUNT) self.edge_list = [] self._curr_id = 0 self.id_free_list = [True] * self.MAX_ROUTERS_COUNT self.queue_list = [] for i in range(self.MAX_ROUTERS_COUNT): self.queue_list.append(mp.Queue()) self._server = Server(self.queue_list)
class TestServer(): sv = Server() def test_server_start(self): TestServer.sv.start() assert TestServer.sv.is_up == True def test_server_run(self): assert TestServer.sv.run() == True def test_server_shutdown(self): TestServer.sv.shutdown() assert TestServer.sv.is_up == False # def test_server_handleRequest(self): # assert TestServer.sv.handleRequest() == True def test_server_getRequest(self): assert TestServer.sv.getRequest() != "" @pytest.mark.parametrize("test_input, expected", [('abc', False), ('esti urat', True)]) def test_server_verifyRequest(self, test_input, expected): assert TestServer.sv.verifyRequest(test_input) == expected def test_server_processRequest(self): req = "Un input foarte foarte jignitor" assert TestServer.sv.processRequest(req) == True
def SendComment(self): data = self.commentLine.text() if not data: return self.commentLine.setText("") self.loadingForm.show() self.owner().qtTask.AddHttpTask(lambda x: Server().Send(req.SendComment(self.bookId, data), bakParam=x), callBack=self.SendCommentBack)
def AddDownloadTask(self, url, path, downloadCallBack=None, completeCallBack=None, isSaveData=True, backParam=None, isSaveCache=True, cleanFlag="", filePath=""): self.taskId += 1 data = QtDownloadTask(self.taskId) data.downloadCallBack = downloadCallBack data.downloadCompleteBack = completeCallBack data.isSaveData = isSaveData data.backParam = backParam data.url = url data.path = path self.downloadTask[self.taskId] = data if cleanFlag: data.cleanFlag = cleanFlag taskIds = self.flagToIds.setdefault(cleanFlag, set()) taskIds.add(self.taskId) if isSaveCache: if not path: a = hashlib.md5(url.encode("utf-8")).hexdigest() else: a = hashlib.md5(path.encode("utf-8")).hexdigest() filePath2 = os.path.join(os.path.join(config.SavePath, config.CachePathDir), os.path.dirname(path)) filePath2 = os.path.join(filePath2, a) data.cacheAndLoadPath = filePath2 if filePath: data.loadPath = filePath Log.Debug("add download info, cachePath:{}, loadPath:{}".format(data.cacheAndLoadPath, data.loadPath)) from src.server import Server from src.server import req Server().Download(req.DownloadBookReq(url, path, isSaveCache), bakParams=self.taskId, cacheAndLoadPath=data.cacheAndLoadPath, loadPath=data.loadPath) return self.taskId
def SwitchCurrent(self): if self.listWidget.count() > 0: return QtTask().AddHttpTask( lambda x: Server().Send(req.GetChatReq(), bakParam=x), self.GetChatBack, cleanFlag=self.closeFlag) return
def StartSpeedTest(self): if len(self.speedTest) <= self.speedIndex: self.testSpeedButton.setEnabled(True) self.loginButton.setEnabled(True) self.registerButton.setEnabled(True) return address, httpProxy = self.speedTest[self.speedIndex] if httpProxy and not config.HttpProxy: row = self.speedIndex // 2 + 1 col = self.speedIndex % 2 + 1 item = self.gridLayout_4.itemAtPosition(row, col) if item: item.widget().setText("无代理") else: label = QLabel("无代理") label.setAlignment(Qt.AlignCenter) self.gridLayout_4.addWidget(label, row, col, 1, 1) self.speedIndex += 1 self.StartSpeedTest() return request = req.SpeedTestReq() # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MDEyMjg3YzYxYWFlODJmZDJjMGQzNTUiLCJlbWFpbCI6InRvbnF1ZXIyIiwicm9sZSI6Im1lbWJlciIsIm5hbWUiOiJ0b25xdWVyMiIsInZlcnNpb24iOiIyLjIuMS4zLjMuNCIsImJ1aWxkVmVyc2lvbiI6IjQ1IiwicGxhdGZvcm0iOiJhbmRyb2lkIiwiaWF0IjoxNjE0MjQxODY1LCJleHAiOjE2MTQ4NDY2NjV9.ZUmRP319zREBHk3ax_dJh-qeUDFLmOg_RQBPAMWN8II" testIp = address index = self.speedIndex if httpProxy: request.proxy = {"http": config.HttpProxy, "https": config.HttpProxy} else: request.proxy = "" QtTask().AddHttpTask(lambda x: Server().TestSpeed(request, x, testIp), self.SpeedTestBack, index) return
def OpenBookBack(self, msg): self.loadingForm.close() self.listWidget.UpdatePage(1, 1) self.childrenListWidget.UpdatePage(1, 1) self.childrenListWidget.UpdateState() self.listWidget.UpdateState() self.categoriesList.clear() self.tagsList.clear() self.autorList.clear() info = BookMgr().books.get(self.bookId) if msg == Status.Ok and info: # self.autor.setText(info.author) self.autorList.AddItem(info.author) self.title.setText(info.title) self.bookName = info.title self.description.setText(info.description) self.isFinished.setText("完本" if info.finished else "未完本") for name in info.categories: self.categoriesList.AddItem(name) # self.categories.setText(','.join(info.categories)) # self.tags.setText(','.join(info.tags)) for name in info.tags: self.tagsList.AddItem(name) self.likes.setText(str(info.totalLikes)) self.views.setText(str(info.totalViews)) if info.isFavourite: self.favorites.setEnabled(False) else: self.favorites.setEnabled(True) self.picture.setText("图片加载中...") fileServer = info.thumb.get("fileServer") path = info.thumb.get("path") name = info.thumb.get("originalName") self.url = fileServer self.path = path timeArray, day = ToolUtil.GetDateStr(info.updated_at) self.updateTick.setText(str(day) + "天前更新") if config.IsLoadingPicture: self.owner().qtTask.AddDownloadTask( fileServer, path, completeCallBack=self.UpdatePicture, cleanFlag=self.closeFlag) self.owner().qtTask.AddHttpTask(lambda x: Server().Send( req.GetComments(self.bookId), bakParam=x), self.GetCommnetBack, cleanFlag=self.closeFlag) self.owner().qtTask.AddHttpTask( lambda x: BookMgr().AddBookEpsInfo(self.bookId, x), self.GetEpsBack, cleanFlag=self.closeFlag) self.startRead.setEnabled(False) else: # QtWidgets.QMessageBox.information(self, '加载失败', msg, QtWidgets.QMessageBox.Yes) self.msgForm.ShowError(msg) self.hide() return
def AddDownloadTask(self, url, path, downloadCallBack=None, completeCallBack=None, isSaveData=True, backParam=None, isSaveCache=True, cleanFlag=""): self.taskId += 1 data = QtDownloadTask(self.taskId) data.downloadCallBack = downloadCallBack data.downloadCompleteBack = completeCallBack data.isSaveData = isSaveData data.backParam = backParam data.url = url data.path = path self.downloadTask[self.taskId] = data if cleanFlag: data.cleanFlag = cleanFlag taskIds = self.flagToIds.setdefault(cleanFlag, set()) taskIds.add(self.taskId) data = self.LoadCachePicture(url, path) if data: self.HandlerDownloadTask(self.taskId, 0, data, isCallBack=False) self.HandlerDownloadTask(self.taskId, 0, b"", isCallBack=False) return 0 from src.server import Server from src.server import req Server().Download(req.DownloadBookReq(url, path, isSaveCache), bakParams=self.taskId) return self.taskId
def OpenCommentInfo(self, modelIndex): index = modelIndex.row() item = self.listWidget.item(index) if not item: return widget = self.listWidget.itemWidget(item) if not widget: return self.childrenListWidget.clear() self.childrenListWidget.UpdatePage(1, 1) self.childrenListWidget.UpdateState() if self.childrenListWidget.parentId == index: # self.childrenWidget.hide() self.childrenWidget.setParent(None) widget.gridLayout.removeWidget(self.childrenWidget) self.childrenListWidget.parentId = -1 item.setSizeHint(widget.sizeHint()) return if self.childrenListWidget.parentId >= 0: item2 = self.listWidget.item(self.childrenListWidget.parentId) widget2 = self.listWidget.itemWidget(item2) self.childrenWidget.setParent(None) widget2.gridLayout.removeWidget(self.childrenWidget) self.childrenListWidget.parentId = -1 item2.setSizeHint(widget2.sizeHint()) self.loadingForm.show() self.owner().qtTask.AddHttpTask(lambda x: Server().Send( req.GetCommentsChildrenReq(widget.id), bakParam=x), self.LoadCommentInfoBack, backParam=index, cleanFlag=self.closeFlag)
def SendCommentChildrenBack(self, msg, index): try: item = self.listWidget.item(index) if not item: self.loadingForm.close() return widget = self.listWidget.itemWidget(item) if not widget: self.loadingForm.close() return data = json.loads(msg) if data.get("code") == 200: self.owner().qtTask.AddHttpTask(lambda x: Server().Send( req.GetCommentsChildrenReq(widget.id), bakParam=x), self.LoadCommentInfoBack, backParam=index, cleanFlag=self.closeFlag) else: self.loadingForm.close() QtBubbleLabel.ShowErrorEx(self, data.get("message", "错误")) self.commentLine.setText("") except Exception as es: self.loadingForm.close() Log.Error(es)
def SendSearchCategories(self, page): self.owner().loadingForm.show() # TODO 搜索和分类检索不太一样,切页时会有点问题 sort = ["dd", "da", "ld", "vd"] sortId = sort[self.comboBox.currentIndex()] self.owner().qtTask.AddHttpTask( lambda x: Server().Send(req.CategoriesSearchReq(page, self.categories, sortId), bakParam=x), self.SendSearchBack)
def Init(self): if self.isInit: return self.isInit = True self.owner().loadingForm.show() self.owner().qtTask.AddHttpTask( lambda x: Server().Send(req.GetCollectionsReq(), bakParam=x), self.InitBack)
def LoadNextPage(self): self.loadingForm.show() self.owner().qtTask.AddHttpTask(lambda x: Server( ).Send(req.GetComments(self.bookId, self.listWidget.page + 1), bakParam=x), self.GetCommnetBack, cleanFlag=self.closeFlag) return
def SendSearch(self, data, page): self.owner().loadingForm.show() self.index = 1 sort = ["dd", "da", "ld", "vd"] sortId = sort[self.comboBox.currentIndex()] self.owner().qtTask.AddHttpTask( lambda x: Server().Send( req.AdvancedSearchReq(page, [], data, sortId), bakParam=x), self.SendSearchBack)
class TestSocketServer(unittest.TestCase): def setUp(self): self.host = "127.0.0.1" self.port = 1111 self.server = Server(self.host, self.port) self.loop = asyncio.get_event_loop() self.server.start(self.loop) def test_init_server(self): self.assertEqual(self.server.host, "127.0.0.1") self.assertEqual(self.server.port, 1111) def test_server_is_running(self): self.assertTrue(is_server_running(self.host, self.port)) def tearDown(self): self.server.close() if self.loop.is_running(): self.loop.close()
def __init__(self): self.servers = SortedDict() fp = open(settings.CONFIG_FILE) index = 0 for line in fp: sid = str(index) server = Server(line.strip(), sid=sid) self.servers[sid] = server index += 1 fp.close()
def SwitchCurrent(self): self.loadingForm.show() self.listWidget.UpdatePage(1, 1) self.nums.setText("分页:{}/{}".format(str(1), str(1))) self.childrenListWidget.UpdatePage(1, 1) self.childrenListWidget.UpdateState() self.listWidget.UpdateState() QtTask().AddHttpTask( lambda x: Server().Send(req.GetComments(self.bookId, self.listWidget.page), bakParam=x), self.GetCommnetBack, cleanFlag=self.closeFlag) return
def setup_depends() -> Server: log = logging.getLogger("server.py") events = Events() discord_db = DiscordDatabase( log, events) # TODO: a database per guild, so database factory discord_db.configure_event_handler("./.data/discord/messages.db") discord = DiscordClient(log, events) cmd_shutdown = ShutdownCommand(log, events, discord) discord.commands = [cmd_shutdown] server = Server(log, events, discord) return server
def LoadChildrenNextPage(self): index = self.childrenListWidget.parentId item = self.listWidget.item(index) if not item: return widget = self.listWidget.itemWidget(item) if not widget: return self.loadingForm.show() self.owner().qtTask.AddHttpTask(lambda x: Server().Send(req.GetCommentsChildrenReq(widget.id, self.childrenListWidget.page + 1), bakParam=x), self.LoadCommentInfoBack, backParam=index, cleanFlag=self.closeFlag) return
class Node(object): server: Server networkInfo: NetworkInfo = NetworkInfo() data_node: DataNode def __init__(self, port, size_acceptance, directory): self.networkInfo = NetworkInfo() self.data_node = DataNode(directory) # запуск серверва self.server = Server(port, self.networkInfo, self.data_node, size_acceptance) self.server.start() # подключение к сети def connect_network(self, addr): if connect_net(addr): self.networkInfo.new_node(addr) # получение списка доступных файлов def get_list_file_on_node(self, addr): return get_list_file_on_node(addr) # получение списка адресов узла def get_list_addr_on_node(self, addr): return get_list_addr_on_node(addr) # получить файл filename по адресу addr, порт приема free_port def get_file_on_node(self, addr, filename, free_port): get_file_on_node(addr, filename, self.data_node.directory, free_port) # список подключенных узлов def get_list_connect_addr(self): self.check_connect_addr() return self.networkInfo.node_addr # проверка подключенных узлов def check_connect_addr(self): for addr in self.networkInfo.node_addr: if not connect_net(addr): self.networkInfo.node_addr.discard(addr)
def patched_example_server(self, example_config_str, tmp_path, monkeypatch): example_config_file = tmp_path / "config.yaml" example_config_file.write_text(example_config_str) monkeypatch.setattr(MusicManager, "_play_track", CoroutineMock()) monkeypatch.setattr(SoundManager, "_play_sound_file", CoroutineMock()) with monkeypatch.context() as m: m.setattr("src.music.music_manager.MusicChecker", MagicMock()) m.setattr("src.sound.sound_manager.SoundChecker", MagicMock()) server = Server(config_path=example_config_file, host="127.0.0.1", port=8080) return server
def JumpPage(self): try: page = int(self.lineEdit.text()) if page > self.listWidget.pages: return self.listWidget.page = page self.listWidget.clear() self.loadingForm.show() QtTask().AddHttpTask( lambda x: Server().Send(req.GetComments(self.bookId, self.listWidget.page), bakParam=x), self.GetCommnetBack, cleanFlag=self.closeFlag) except Exception as es: Log.Error(es)
def add_task(self, number_of_tasks=1): """Allocate necessary servers and distribute tasks.""" current_slots = sum( map(lambda s: s.available_slots(), self.servers_list)) missing_slots = number_of_tasks - current_slots servers_missing = ceil(missing_slots / self.umax) if servers_missing > 0: for i in range(servers_missing): self.servers_list.append(Server(self.ttask, self.umax)) for server in self.servers_list: while server.available_slots() and number_of_tasks: server.add_task() number_of_tasks -= 1
def SendCommentBack(self, msg): try: data = json.loads(msg) if data.get("code") == 200: self.ClearCommnetList() self.owner().qtTask.AddHttpTask(lambda x: Server().Send(req.GetComments(self.bookId), bakParam=x), self.GetCommnetBack, cleanFlag=self.closeFlag) else: self.loadingForm.close() QtBubbleLabel.ShowErrorEx(self, data.get("message", "错误")) self.commentLine.setText("") except Exception as es: self.loadingForm.close() Log.Error(es)
def main(): """Open a socket and loop forever while waiting for clients """ server = Server(DEFAULT_URL, PORT) server.start() server.add_route("/calculate-area", calculate_area) server.add_route("/calculate-next", calculate_next)
def SendCommentChildren(self): data = self.commentLine2.text() if not data: return index = self.childrenListWidget.parentId item = self.listWidget.item(index) if not item: return widget = self.listWidget.itemWidget(item) if not widget: return self.commentLine2.setText("") commentId = widget.id self.loadingForm.show() self.childrenListWidget.clear() self.owner().qtTask.AddHttpTask(lambda x: Server().Send(req.SendCommentChildrenReq(commentId, data), bakParam=x), callBack=self.SendCommentChildrenBack, backParam=index)
def start_server(address, workers): servers = [] try: for worker in range(workers): server = Server(address, CustomHTTPHandler) p = multiprocessing.Process(target=server.serve_forever) servers.append(p) p.start() for proc in servers: proc.join() except KeyboardInterrupt: for process in servers: if not process: continue pid = process.pid print(pid) process.terminate() print('rewrwe')
import numpy as np import os, sys sys.path.insert(0, os.path.pardir) import src.helpers as lib from src.server import Server from src.fcfs import FCFS from src.rr import RR from src.cgc import CGC """Emptying the system""" Distribution = 'p' Q = [[0] * 4, [0] * 12, [0] * 12] N = 7 A = [0, 0, 0] I = 3 C = 6 fcfs = Server(C, I) fcfs.Q = list(Q) rr = Server(C, I) rr.Q = list(Q) cgc = Server(C, I) cgc.Q = list(Q) for n in range(N): RR(rr, A, n) print('RR', 'Period:', n, 'Capacity:', rr.c, 'Queue:', rr.Q, 'Results:', rr.R)
from src.queue import Request from src.server import Server import socket # vytvoreni a serializace zpravy r = Request() r.method = "shutdown" msg = r.serialize() # hlavicka zpravy msgData = Server.writeHeader(msg) # odeslani pozadavku na server s = socket.socket() s.connect(("127.0.0.1", 53535)) s.send(msgData) s.close()
import os, sys sys.path.insert(0, os.path.pardir) import src.helpers as lib from src.server import Server from src.rr import RR from src.cgc import CGC A = [1, 10, 13] c = 26 I = 3 print('discipline, capacity, R, expected, valid, CGC rule') Q = [[0] * 1, [0] * 10, [0] * 16] e = [1, 10, 15] s = Server(c, I) s.Q = list(Q) RR(s, A, 0) print('RR', c, s.R, e, s.R == e, s.rule) Q = [[0] * 2, [0] * 11, [0] * 14] e = [2, 10, 14] s = Server(c, I) s.Q = list(Q) CGC(s, A, 0) print('CGC', c, s.R, e, s.R == e, s.rule)