Example #1
0
File: mock.py Project: sys-git/PyRQ
 def closeClient(c):
     try:
         self._doResponse(c.request, marshaller.package(Messages.CLOSED(namespace=namespace)))
         PyRQTimeUtils.delayTime(1)
         c.request.shutdown(socket.SHUT_WR)
         c.request.close()
         del c
     except Exception, _e:
         pass
Example #2
0
File: RRQ.py Project: sys-git/PyRQ
 def _stall(self, where, clientData, quiet):
     if not quiet: self.logger.debug("STALL %(W)s.\r\n"%{"W":where})
     try:
         t = clientData["stall"][where]
         if not quiet: self.logger.info("STALL time: %(W)s\r\n"%{"W":t})
         debugger = self.getDebugger()
         if (t!=None) and (t>0):
             if debugger:
                 uu = debugger.delay_start(self.peerName, PyRQTimeUtils.getTime(), t, where)
         PyRQTimeUtils.delayTime(t)
         if (t!=None) and (t>0):
             if debugger:
                 uu = debugger.delay_end(self.peerName, PyRQTimeUtils.getTime(), uu=uu)
     except Exception, _e:
         pass
Example #3
0
 def get(self, block=True, timeout=None):
     data = None
     #    Calculate the maxTime:
     pollInterval = self._pollInterval
     timeStart = PyRQTimeUtils.getTime()
     maxTime = None
     if block==True:
         try:    maxTime = timeStart + timeout
         except: pass
         if not self._quiet: self._logger.debug("GET blocking, maxTime: %(MT)s, timeStart: %(TS)s"%{"MT":maxTime, "TS":timeStart, "TO":timeout})
     else:
         if not self._quiet: self._logger.debug("GET non-blocking")
     try:
         while True:
             timeDelay = None
             with self._lock:
                 if self._closed==True:
                     break
                 if block==False:
                     if len(self._data)==0:
                         raise Empty()
                     data = self._data.pop(0)
                     break
                 else:
                     if len(self._data)==0:
                         timeNow = PyRQTimeUtils.getTime()
                         #    Calculate the maxTime:
                         if maxTime==None:
                             remainingTime = pollInterval
                         else:
                             remainingTime = maxTime-timeNow
                         if not self._quiet: self._logger.debug("GET blocking, maxTime: %(MT)s, timeStart: %(TS)s, timeNow: %(TN)s, remainingTime: %(RT)s"%{"TN":timeNow, "MT":maxTime, "TS":timeStart, "TO":timeout, "RT":remainingTime})
                         if remainingTime<=0:
                             raise Empty()
                         else:
                             #    Wait for minPeriod and try again:
                             timeDelay = min(pollInterval, min(pollInterval, remainingTime))
                     else:
                         data = self._data.pop(0)
                         break
             if timeDelay!=None:
                 PyRQTimeUtils.delayTime(timeDelay)
     except Exception, _e:
         raise
Example #4
0
File: mock.py Project: sys-git/PyRQ
    def get(self, block=True, timeout=None):
        data = None
        #    Calculate the maxTime:
        pollInterval = self._pollInterval
        timeStart = PyRQTimeUtils.getTime()
        maxTime = None
        if block==True:
            try:    maxTime = timeStart + timeout
            except: pass
        try:
            while True:
                timeDelay = None
                with self._lock:
                    if self._closed==True:
                        break
                    if block==False:
                        if len(self._data)==0:
                            raise Empty()
                        data = self._data.pop(0)
                        break
                    else:
                        if len(self._data)==0:
                            timeNow = PyRQTimeUtils.getTime()
                            #    Calculate the maxTime:
                            if maxTime==None:
                                remainingTime = pollInterval
                            else:
                                remainingTime = maxTime-timeNow
                            if remainingTime<=0:
                                raise Empty()
                            else:
                                #    Wait for minPeriod and try again:
                                timeDelay = min(pollInterval, min(pollInterval, remainingTime))
                        else:
                            data = self._data.pop(0)
                            break
                if timeDelay!=None:
                    PyRQTimeUtils.delayTime(timeDelay)
        except Exception, _e:
#            self._logger.error("EEEEEEEERRRRRRRRROOOOOOOOORRRRRRRR.total: %(T)s.\r\n%(NS)s\r\n"%{"T":self._totalGot, "NS":traceback.format_exc()})
            raise
Example #5
0
                 self.logger.debug("PUT %(R)s OK from: %(W)s. "%{"R":ref, "W":iface.getLastSockDetails()})
             with plock:
                 ePuts.append(eData)
                 self.logger.info("PUT %(R)s now: %(RR)s."%{"R":ref, "RR":len(ePuts)})
     self.logger.error("PUT %(R)s COMPLETE."%{"R":ref})
     putters.release()
 #    Now create the data:
 for k in xrange(0, numData):
     J = k+1
     delay = self.random.random()
     eData = "hello.world...%(C)s"%{"C":J}
     allPutData.append(eData)
     dataQ.put((delay, eData))
 self.logger.debug("DATA contains %(D)s items...\r\n"%{"D":numData})
 while dataQ.qsize()!=numData:
     PyRQTimeUtils.delayTime(1)
 putterThreads = []
 for i in xrange(0, numPutters):
     k = i+1
     t = threading.Thread(target=doPut, args=[initialDelay, k, putTimeout, dataQ])
     t.setDaemon(True)
     t.setName("Parallel_PUT_%(C)s"%{"C":k})
     self._timers.append(t)
     t.start()
     putterThreads.append(t)
 for k in xrange(0, numPutters):
     putters.acquire()
 #    Now wait for all the data to be received:
 maxPutDelay = (1+(count*numGetters*1))*2
 self.logger.info("Now waiting for all data to be put and got for MAX: %(T)s seconds..."%{"T":maxPutDelay})
 gotData = []
Example #6
0
File: RRQ.py Project: sys-git/PyRQ
                     t.start()
             del self._clients[namespace]
         #    Now discard the buffer and queue:
         try:
             qData = clientData["queues"][namespace]
         except Exception, _e:
             pass
         else:
             #    Tell each GET client to close:
             q = qData.q()
             for _ in xrange(numClients):
                 try:
                     q.put(_CLOSE(), block=False)
                 except Exception, _e:
                     pass
             PyRQTimeUtils.delayTime(1)
             qData.close()
             del clientData["queues"][namespace]
             clientData["stale-queues"].append(namespace)
     if debugger:
         debugger.closeClients_end(self.peerName, PyRQTimeUtils.getTime(), uu=uu)
 def _getPeerName(self):
     name = self.request.getpeername()
     return ":".join([str(name[0]), str(name[1])])
 def setup(self):
     self.peerName = self._getPeerName()
     debugger = self.getDebugger(inst=RRQDebugger())
     if debugger:
         uu = debugger.setup_start(self.peerName, PyRQTimeUtils.getTime())
     quiet = self.getQuiet()
     self.logger = self.getNewLogger(self.peerName)