Ejemplo n.º 1
0
class Test(unittest.TestCase):


    def testParseCreditHours(self):
        string = "3 or 4 credits"
        self.xmlreader = XMLReader()
        self.assertEqual(self.xmlreader.parse_credit_hours(string), [3, 4])

    def testParseCreditHoursRange(self):
        string = "0 TO 4 credits"
        self.xmlreader = XMLReader()
        self.assertEqual(self.xmlreader.parse_credit_hours(string), [0, 1, 2, 3, 4])
        
    def testParseTime(self):
        string = '12:50 PM'
        self.xmlreader = XMLReader()
        self.assertEqual(self.xmlreader.parse_time(string), 1250)
Ejemplo n.º 2
0
 def _reading_file(self, path):
     ls_price = XMLReader(path).get_list_of_dicts()
     if ls_price:
         return ls_price 
     else:
         raise Exception("File " + path + " is empty ")
Ejemplo n.º 3
0
    cell_ketercapaiancpl.text = str(round(nilaicpl, 1))


def writeDesc(cell, nilai, cpmk, fail_desc):
    cell.vertical_alignment = WD_ALIGN_VERTICAL.CENTER
    cell_desc = cell.paragraphs[0]
    cell_desc.alignment = WD_ALIGN_PARAGRAPH.CENTER
    if float(nilai) > 50:
        cell_desc.text = 'Lulus {}'.format(cpmk.split("\n")[0])
    else:
        cell_desc.text = fail_desc


try:
    doc = Document(sys.argv[1])
    xml_data = XMLReader(sys.argv[2]).getData()

    hapus_tabel_contoh(doc)

    table_cpl = tableNilaiCPL(doc)
    bobot_cpl = ambilBobotCPl(table_cpl)
    cpmk_cpl = CpmkCpl(table_cpl)

    # cari table rae
    table_table = doc.tables
    for table in table_table:
        if table.cell(0, 0).text == 'Mg ke\n(1)':
            rae_table = table

    cpmk = ambilCpmk(rae_table)
    mg_ke = ambilMinggu(rae_table)
Ejemplo n.º 4
0
    def run(self):
        self.fixSessionobj = FIXSession(self.host, self.port,
                                        "U_" + self.senderCompId)
        if (not self.fixSessionobj.connect()):
            return
        self.frameLogonMsg()
        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
        if (not self.recvLogonMsg()):
            self.printMsg("Failure in receiving Logon Msg")
            return

        self.removeTags(['141', '98', '108', '1137'])

        #Start the recv thread

        recvThread = threading.Thread(target=self.recvExecutionReport)
        recvThread.start()

        # For each Run. reload the properties from XML File
        run = 1
        for line in self.inputList:
            tmpList = line.split(',')
            numberOfSecondsToRun = int(tmpList[0])
            file = tmpList[1].strip('\n')
            try:
                xmlReaderobj = XMLReader(file)
            except Exception:
                self.printMsg(
                    "Exception while parsing XML File...Shutting down...")
                self.shutDown = True
                self.doCleanup()
                recvThread.join()
                self.closeFilePointers()
                return

            reloadList = xmlReaderobj.getDriverProperties(self.senderCompId)
            self.reloadProperties(reloadList)
            runStartTime = datetime.datetime.now()
            currentTime = datetime.datetime.now()
            totMsgSentInThisRun = 0

            while ((datetime.datetime.now() - runStartTime).seconds <
                   numberOfSecondsToRun):
                msgsPerSec = float(self.sendRate)
                msgSent = 0
                U10Msgs = round(msgsPerSec * float(self.U10Percent) * 0.01, 0)
                U12Msgs = round(msgsPerSec * float(self.U12Percent) * 0.01, 0)
                U14Msgs = round(msgsPerSec * float(self.U14Percent) * 0.01, 0)
                U16Msgs = round(msgsPerSec * float(self.U16Percent) * 0.01, 0)
                U18Msgs = round(msgsPerSec * float(self.U18Percent) * 0.01, 0)
                U20Msgs = round(msgsPerSec * float(self.U20Percent) * 0.01, 0)
                U22Msgs = round(msgsPerSec * float(self.U22Percent) * 0.01, 0)
                totalMsgToBeSent = U10Msgs + U12Msgs + U14Msgs + U16Msgs + U18Msgs + U20Msgs + U22Msgs
                sleepInterval = 1.0 / totalMsgToBeSent
                batchStartTime = datetime.datetime.now()
                while (msgSent < totalMsgToBeSent):
                    if (self.shutDown):
                        self.doCleanup()
                        self.printMsg("Received shutdown event")
                        recvThread.join()
                        self.closeFilePointers()
                        return

                    self.checkHeartBeatMsg()

                    currentTime = datetime.datetime.now()
                    if ((currentTime - batchStartTime).seconds > 1):
                        self.printMsg("Breaking out ")
                        break

                    if (U10Msgs > 0):
                        #print("Sending new order")
                        self.frameU10Msg()
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        U10Msgs = U10Msgs - 1
                        msgSent = msgSent + 1
                        self.fixMsgDict.clear()
                        time.sleep(sleepInterval)

                    if (U12Msgs > 0):
                        self.frameU12Msg()
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        U12Msgs = U12Msgs - 1
                        msgSent = msgSent + 1
                        self.fixMsgDict.clear()
                        time.sleep(sleepInterval)

                    if (U14Msgs > 0):
                        self.frameU14Msg()
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        self.removeTags(['110'])
                        U14Msgs = U14Msgs - 1
                        msgSent = msgSent + 1
                        self.fixMsgDict.clear()
                        time.sleep(sleepInterval)

                    if (U16Msgs > 0):
                        self.frameU16Msg()
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        self.removeTags(['110'])
                        U16Msgs = U16Msgs - 1
                        msgSent = msgSent + 1
                        self.fixMsgDict.clear()
                        time.sleep(sleepInterval)

                    if (U18Msgs > 0):
                        self.frameU18Msg()
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        self.removeTags(['110'])
                        U18Msgs = U18Msgs - 1
                        msgSent = msgSent + 1
                        self.fixMsgDict.clear()
                        time.sleep(sleepInterval)

                    if (U20Msgs > 0):
                        self.frameU20Msg()
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        self.removeTags(['110'])
                        U20Msgs = U20Msgs - 1
                        msgSent = msgSent + 1
                        self.fixMsgDict.clear()
                        time.sleep(sleepInterval)

                    if (U22Msgs > 0):
                        self.frameU22Msg(random.randint(0, 2))
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        self.removeTags(['110'])
                        U22Msgs = U22Msgs - 1
                        msgSent = msgSent + 1
                        self.fixMsgDict.clear()
                        time.sleep(sleepInterval)
                self.printMsg("Number of messages send in this batch is " +
                              str(msgSent))
                currentTime = datetime.datetime.now()
                if (currentTime - batchStartTime).seconds < 1:
                    microsecondsLeft = 1000000.0 - (
                        (currentTime - batchStartTime).microseconds)
                    if microsecondsLeft > 0:
                        self.printMsg("Sleeping before starting the next run")
                        time.sleep(float(microsecondsLeft / 1000000))
                currentTime = datetime.datetime.now()
                totMsgSentInThisRun = totMsgSentInThisRun + msgSent
            self.printMsg("Number of messages send in run-" + str(run) +
                          " is " + str(totMsgSentInThisRun))
            run = run + 1
        self.printMsg("Completed Runs..Going to shutdown..")
        self.shutDown = True
        self.doCleanup()
        recvThread.join()
        self.closeFilePointers()
        return
Ejemplo n.º 5
0
import socket, threading
from clienttelnet import chatServer
from XMLReader import XMLReader
import sys

config = XMLReader('../config/config.xml')

HOST = config.getTelnetIP()
PORT = int(config.getTelnetPort()) 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(4)

class mainServer(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
    	print "Starting Telnet"
    	sys.stdout.flush()

    def run(self):
		while True: 
			chatServer(s.accept()).start()
Ejemplo n.º 6
0
def main(filename):

        #Global Thread List
        threads=[];
        signalReceived=False;
        symList=[];
        driversList=[];
        driverObjects=[];
        threadName="Main"

        logObj=getLogObject();

        def printMsg(msg):
           #fmtString=str(datetime.datetime.now())+"\t"+threadName+"\t"+msg;
           logObj.info(msg);

        def signalhandler(signum,frame):
           printMsg("Signal Received:"+str(signum));
           signalReceived=True;
           for driver in driverObjects:
              driver.stopRunning();
           del driverObjects[:];


        #Add signal Handler
        signal.signal(signal.SIGINT,signalhandler);
        

        fileList=[]; 
        fileFp=open(filename,"r");
        for line in fileFp:
          fileList.append(line);

        # Read from the XML File
        tmpList=fileList[0].split(',');
        filename=tmpList[1].strip('\n');
        xmlReaderobj = XMLReader(filename);
        symList=xmlReaderobj.getSymbolList();
        driversList=xmlReaderobj.getDriversList();
        driverType=xmlReaderobj.getDriverType();

        for driver in driversList:
            if (driverType == "XStream"):
                driverObj=Driver(symList,driver,fileList);
            elif (driverType == "EqFIX"):
                driverObj=EqDriver(symList,driver,fileList);
            #driverObj.printProperties();
            driverObjects.append(driverObj);

        threads=[]

        for driver in driverObjects:
                t=threading.Thread(target=driver.run)
                threads.append(t);
                t.start();
        while(True):
                time.sleep(2);
                #Check if all threads are alive. Othersise shutdown
                numberOfThreadsDown=0;
                for thread in threads:
                 if(not thread.is_alive()):
                    numberOfThreadsDown=numberOfThreadsDown+1
                if (numberOfThreadsDown == len(threads)):
                    printMsg("All threads have shut down...Shutting down now. Bye !!");
                    return;
                #Check signal received status
                if (len(driverObjects) == 0):
                        printMsg("Received Shutdown Signal in Main. Shutting down now...");
                        for thread in threads:
                          thread.join();
                        print("All threads joined..Exiting..Bye !!");
                        return;
Ejemplo n.º 7
0
        def run(self):
                self.fixSessionobj=FIXSession(self.host,self.port,"U_"+self.senderCompId);
                if(not self.fixSessionobj.connect()):
                        return;
                self.frameLogonMsg();
                self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                if (not self.recvLogonMsg()):
                        self.printMsg("Failure in receiving Logon Msg")
                        return;


                self.removeTags(['141','98','108','1137']);

                #Start the recv thread

                recvThread=threading.Thread(target=self.recvExecutionReport)
                recvThread.start();

                # For each Run. reload the properties from XML File
                run=1;
                for line in self.inputList:
                   tmpList=line.split(',');
                   numberOfSecondsToRun=int(tmpList[0]);
                   file=tmpList[1].strip('\n');
                   try:
                       xmlReaderobj=XMLReader(file);
                   except Exception:
                      self.printMsg("Exception while parsing XML File...Shutting down...");
                      self.shutDown=True;
                      self.doCleanup();
                      recvThread.join();
                      self.closeFilePointers();
                      return;

                   reloadList=xmlReaderobj.getDriverProperties(self.senderCompId);
                   self.reloadProperties(reloadList);
                   runStartTime=datetime.datetime.now();
                   currentTime=datetime.datetime.now();
                   totMsgSentInThisRun=0;

                   while((datetime.datetime.now()-runStartTime).seconds < numberOfSecondsToRun):
                        msgsPerSec=float(self.sendRate);
                        msgSent=0;
                        U10Msgs=round(msgsPerSec*float(self.U10Percent)*0.01,0);
                        U12Msgs=round(msgsPerSec*float(self.U12Percent)*0.01,0);
                        U14Msgs=round(msgsPerSec*float(self.U14Percent)*0.01,0);
                        U16Msgs=round(msgsPerSec*float(self.U16Percent)*0.01,0);
                        U18Msgs=round(msgsPerSec*float(self.U18Percent)*0.01,0);
                        U20Msgs=round(msgsPerSec*float(self.U20Percent)*0.01,0);
                        U22Msgs=round(msgsPerSec*float(self.U22Percent)*0.01,0);
                        totalMsgToBeSent=U10Msgs+U12Msgs+U14Msgs+U16Msgs+U18Msgs+U20Msgs+U22Msgs;
                        sleepInterval=1.0/totalMsgToBeSent;
                        batchStartTime=datetime.datetime.now();
                        while(msgSent<totalMsgToBeSent):
                                if (self.shutDown):
                                        self.doCleanup();
                                        self.printMsg("Received shutdown event");
                                        recvThread.join();
                                        self.closeFilePointers();
                                        return;

                                self.checkHeartBeatMsg();

                                currentTime=datetime.datetime.now();
                                if ((currentTime-batchStartTime).seconds > 1):
                                        self.printMsg("Breaking out ");
                                        break;

                                if (U10Msgs>0):
                                        #print("Sending new order")
                                        self.frameU10Msg();
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        U10Msgs=U10Msgs-1;
                                        msgSent=msgSent+1;
                                        self.fixMsgDict.clear();
                                        time.sleep(sleepInterval);

                                if (U12Msgs>0):
                                        self.frameU12Msg();
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        U12Msgs=U12Msgs-1;
                                        msgSent=msgSent+1;
                                        self.fixMsgDict.clear();
                                        time.sleep(sleepInterval);

                                if (U14Msgs>0):
                                        self.frameU14Msg();
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        self.removeTags(['110']);
                                        U14Msgs=U14Msgs-1;
                                        msgSent=msgSent+1;
                                        self.fixMsgDict.clear();
                                        time.sleep(sleepInterval);

                                if (U16Msgs>0):
                                        self.frameU16Msg();
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        self.removeTags(['110']);
                                        U16Msgs=U16Msgs-1;
                                        msgSent=msgSent+1;
                                        self.fixMsgDict.clear();
                                        time.sleep(sleepInterval);

                                if (U18Msgs>0):
                                        self.frameU18Msg();
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        self.removeTags(['110']);
                                        U18Msgs=U18Msgs-1;
                                        msgSent=msgSent+1;
                                        self.fixMsgDict.clear();
                                        time.sleep(sleepInterval);

                                if (U20Msgs>0):
                                        self.frameU20Msg();
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        self.removeTags(['110']);
                                        U20Msgs=U20Msgs-1;
                                        msgSent=msgSent+1;
                                        self.fixMsgDict.clear();
                                        time.sleep(sleepInterval);

                                if (U22Msgs>0):
                                        self.frameU22Msg(random.randint(0,2));
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        self.removeTags(['110']);
                                        U22Msgs=U22Msgs-1;
                                        msgSent=msgSent+1;
                                        self.fixMsgDict.clear();
                                        time.sleep(sleepInterval);
                        self.printMsg("Number of messages send in this batch is "+str(msgSent));
                        currentTime=datetime.datetime.now();
                        if(currentTime-batchStartTime).seconds < 1:
                            microsecondsLeft=1000000.0-((currentTime-batchStartTime).microseconds);
                            if microsecondsLeft>0:
                                self.printMsg("Sleeping before starting the next run")
                                time.sleep(float(microsecondsLeft/1000000));
                        currentTime=datetime.datetime.now();
                        totMsgSentInThisRun=totMsgSentInThisRun+msgSent;
                   self.printMsg("Number of messages send in run-"+str(run)+" is "+str(totMsgSentInThisRun));
                   run=run+1;
                self.printMsg("Completed Runs..Going to shutdown..");
                self.shutDown=True;
                self.doCleanup();
                recvThread.join();
                self.closeFilePointers();
                return;
Ejemplo n.º 8
0
import time
from updateInfo import UpdateInfo
from updateRedis import UpdateRedis
from maintelnet import mainServer
import socket
from Temp import Temperature
from updateTemp import UpdateTemp
from XMLReader import XMLReader
from SetValue import SetValue

config = XMLReader('../config/config.xml')
ms = mainServer()
ms.start()
tempcontrol = Temperature(config.getSensorID())
setv = SetValue()
configurl = config.getConfigURL()
tempurl = config.getUpgradeTempURL()
while True:
	update = UpdateInfo(config.getUsername(),config.getPassword(), configurl)
	info = update.getDBInfo()
	redis = UpdateRedis(info, 'lastcommit')
	redis.update()
	grade=tempcontrol.getTempC();
	updtemp = UpdateTemp(grade, config.getUsername(), config.getPassword(), tempurl)
	updtemp.update()
	setv.check(grade,info)
	time.sleep(5)
Ejemplo n.º 9
0
    def run(self):
        self.fixSessionobj = FIXSession(self.host, self.port,
                                        self.senderCompId, self.Logging)
        if (not self.fixSessionobj.connect()):
            self.printMsg("Unable to connect to Server.. Exiting:")
            return
        self.frameLogonMsg()
        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
        if (not self.recvLogonMsg()):
            self.printMsg(
                "Failure in receiving Logon Msg...Exiting from Thread:")
            return

        self.removeTags(['141', '98', '108', '1137'])

        #Subscribe to Trading Session Status Request
        self.frameTradingSessionStatus()
        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
        self.removeTags(['335', '263'])

        #Start the recv thread

        recvThread = threading.Thread(target=self.recvExecutionReport)
        recvThread.start()

        # For each Run. reload the properties from XML File
        run = 1
        for line in self.inputList:
            tmpList = line.split(',')
            numberOfSecondsToRun = int(tmpList[0])
            file = tmpList[1].strip('\n')
            #self.printMsg(file);
            try:
                xmlReaderobj = XMLReader(file)
            except Exception:
                self.printMsg(
                    "Exception while parsing XML File...Shutting down...")
                self.shutDown = True
                self.doCleanup()
                recvThread.join()
                self.closeFilePointers()
                return

            reloadList = xmlReaderobj.getDriverProperties(self.senderCompId)
            self.reloadProperties(reloadList)
            runStartTime = datetime.datetime.now()
            currentTime = datetime.datetime.now()
            totMsgSentInThisRun = 0
            while ((datetime.datetime.now() - runStartTime).seconds <
                   numberOfSecondsToRun):
                msgSent = 0
                msgPerSec = float(self.sendRate)
                if (msgPerSec == 0):
                    time.sleep(2)
                    self.checkHeartBeatMsg()
                    continue
                if (msgPerSec < 1):
                    newOrders = 1
                else:
                    newOrders = round(msgPerSec * self.newOrderPercent * 0.01,
                                      0)
                cancelOrders = round(
                    msgPerSec * float(self.cancelOrderPercent) * 0.01, 0)
                modifyOrders = round(
                    msgPerSec * float(self.modifyOrderPercent) * 0.01, 0)
                hiddenOrders = round(
                    msgPerSec * float(self.hiddenOrderPercent) * 0.01, 0)
                marketOrders = round(
                    msgPerSec * float(self.marketOrderPercent) * 0.01, 0)
                GTDOrders = round(
                    msgPerSec * float(self.GTDOrderPercent) * 0.01, 0)
                expiryOrders = round(
                    msgPerSec * float(self.expiryOrderPercent) * 0.01,
                    0) + cancelOrders
                rejectOrders = round(
                    msgPerSec * float(self.rejectOrderPercent) * 0.01, 0)
                #self.printMsg("New="+str(newOrders)+";Cancel="+str(cancelOrders)+";Modifies="+str(modifyOrders)+";Hidden="+str(hiddenOrders)+";Market="+str(marketOrders)+";GTD="+str(GTDOrders)+";Expiry="+str(expiryOrders)+";Rejects="+str(rejectOrders));
                totalMsgToBeSent = newOrders + cancelOrders + modifyOrders + hiddenOrders + marketOrders + GTDOrders + expiryOrders + rejectOrders
                if (totalMsgToBeSent == 0):
                    time.sleep(1)
                    self.checkHeartBeatMsg()
                    continue
                sleepInterval = 1.0 / (totalMsgToBeSent * 2)
                #print(sleepInterval,msgPerSec,totalMsgToBeSent,newOrders,cancelOrders,modifyOrders,hiddenOrders,marketOrders);
                batchStartTime = datetime.datetime.now()
                while (msgSent < totalMsgToBeSent):
                    if (self.shutDown):
                        self.doCleanup()
                        self.printMsg("Received shutdown event")
                        recvThread.join()
                        self.closeFilePointers()
                        return
                    self.checkHeartBeatMsg()
                    currentTime = datetime.datetime.now()
                    if ((currentTime - batchStartTime).seconds > 1.0):
                        self.printMsg("Breaking out ")
                        break
                    if (newOrders > 0):
                        self.frameNewOrderSingleMsg()
                        self.alterNewOrderMsg()
                        self.removeTags(['41'])
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        newOrders = newOrders - 1
                        msgSent = msgSent + 1
                        time.sleep(sleepInterval)

                    if (marketOrders > 0):
                        self.frameNewOrderSingleMsg()
                        self.alterNewMarketOrderMsg()
                        self.removeTags(['41'])
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        marketOrders = marketOrders - 1
                        msgSent = msgSent + 1
                        time.sleep(sleepInterval)

                    if (hiddenOrders > 0):
                        self.frameNewOrderSingleMsg()
                        self.alterNewHiddenOrderMsg()
                        self.removeTags(['41'])
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        self.removeTags(['1138'])
                        hiddenOrders = hiddenOrders - 1
                        msgSent = msgSent + 1
                        time.sleep(sleepInterval)

                    if (GTDOrders > 0):
                        self.frameNewOrderSingleMsg()
                        self.alterNewGTDOrderMsg()
                        self.removeTags(['41'])
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        self.removeTags(['59'])
                        GTDOrders = GTDOrders - 1
                        msgSent = msgSent + 1
                        time.sleep(sleepInterval)

                    if (expiryOrders > 0):
                        self.frameNewOrderSingleMsg()
                        self.alterNewExpiryOrderMsg()
                        self.removeTags(['41'])
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        expiryOrders = expiryOrders - 1
                        msgSent = msgSent + 1
                        time.sleep(sleepInterval)

                    if (rejectOrders > 0):
                        self.frameNewOrderSingleMsg()
                        self.alterNewRejectOrderMsg()
                        self.removeTags(['41'])
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        rejectOrders = rejectOrders - 1
                        msgSent = msgSent + 1
                        time.sleep(sleepInterval)

                    if (cancelOrders > 0):
                        queuedOrderListSize = len(self.queuedCancelOrdersList)
                        if (queuedOrderListSize == 0):
                            continue
                        self.lockObj.acquire(True)
                        execReport = self.queuedCancelOrdersList.pop(
                            queuedOrderListSize - 1)
                        self.lockObj.release()
                        self.removeTags(['336', '386', '44', '1'])
                        self.frameCancelOrderMsg(execReport['11'],
                                                 execReport['54'],
                                                 execReport['38'],
                                                 execReport['55'])
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        cancelOrders = cancelOrders - 1
                        msgSent = msgSent + 1
                        time.sleep(sleepInterval)

                    if (modifyOrders > 0):
                        queuedOrderListSize = len(self.queuedModifyOrdersList)
                        if (queuedOrderListSize == 0):
                            continue
                        self.lockObj.acquire(True)
                        execReport = self.queuedModifyOrdersList.pop(
                            queuedOrderListSize - 1)
                        self.lockObj.release()
                        self.removeTags(['336', '386'])
                        qty = str(int(execReport['38']) + 1)
                        self.frameModifyOrderMsg(execReport['11'],
                                                 execReport['54'],
                                                 execReport['40'], qty,
                                                 execReport['44'],
                                                 execReport['55'],
                                                 execReport['1'])
                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict)
                        self.removeTags(['41'])
                        modifyOrders = modifyOrders - 1
                        msgSent = msgSent + 1
                        time.sleep(sleepInterval)

                self.printMsg("Number of messages send in this batch is " +
                              str(msgSent))
                self.checkHeartBeatMsg()
                #Clear of the queuedOrderList queus
                self.lockObj.acquire(True)
                nomodifyOrders = int(msgPerSec * int(self.modifyOrderPercent) *
                                     0.01)
                queueSize = len(self.queuedModifyOrdersList)
                #print(queueSize,nomodifyOrders,nocancelOrders);
                if (queueSize > nomodifyOrders):
                    for i in list(range(queueSize - nomodifyOrders)):
                        try:
                            execReport = self.queuedModifyOrdersList.pop(i)
                        except Exception:
                            #self.printMsg("Exception Occured while popping out element at "+str(i));
                            break
                self.lockObj.release()
                self.lockObj.acquire(True)
                nocancelOrders = int(msgPerSec * int(self.cancelOrderPercent) *
                                     0.01)
                queueSize = len(self.queuedCancelOrdersList)
                #print(queueSize,nomodifyOrders,nocancelOrders);
                if (queueSize > nocancelOrders):
                    for i in list(range(queueSize - nocancelOrders)):
                        try:
                            execReport = self.queuedCancelOrdersList.pop(i)
                        except Exception:
                            #self.printMsg("Exception Occured while popping out element at "+str(i));
                            break
                self.lockObj.release()
                currentTime = datetime.datetime.now()
                if (currentTime - batchStartTime).seconds < 1:
                    microsecondsLeft = 1000000.0 - (
                        (currentTime - batchStartTime).microseconds)
                    if microsecondsLeft > 0:
                        self.printMsg("Sleeping before starting the next run")
                        time.sleep(float(microsecondsLeft / 1000000))
                currentTime = datetime.datetime.now()
                totMsgSentInThisRun = totMsgSentInThisRun + msgSent
            self.printMsg("Number of messages send in run-" + str(run) +
                          " is " + str(totMsgSentInThisRun))
            run = run + 1
        self.printMsg("Completed Runs..Going to shutdown..")
        self.shutDown = True
        self.doCleanup()
        recvThread.join()
        self.closeFilePointers()
        return
Ejemplo n.º 10
0
        def run(self):
                self.fixSessionobj=FIXSession(self.host,self.port,self.senderCompId,self.Logging);
                if(not self.fixSessionobj.connect()):
                        self.printMsg("Unable to connect to Server.. Exiting:");
                        return;
                self.frameLogonMsg();
                self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                if (not self.recvLogonMsg()):
                        self.printMsg("Failure in receiving Logon Msg...Exiting from Thread:");
                        return;


                self.removeTags(['141','98','108','1137']);

		#Subscribe to Trading Session Status Request
		self.frameTradingSessionStatus();
                self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                self.removeTags(['335','263']);

                #Start the recv thread

                recvThread=threading.Thread(target=self.recvExecutionReport)
                recvThread.start();

                # For each Run. reload the properties from XML File
                run=1;
                for line in self.inputList:
                   tmpList=line.split(',');
                   numberOfSecondsToRun=int(tmpList[0]);
                   file=tmpList[1].strip('\n');
                   #self.printMsg(file);
                   try:
                       xmlReaderobj=XMLReader(file);
                   except Exception:
                      self.printMsg("Exception while parsing XML File...Shutting down...");
                      self.shutDown=True;
                      self.doCleanup();
                      recvThread.join();
                      self.closeFilePointers();
                      return;
                      
                   reloadList=xmlReaderobj.getDriverProperties(self.senderCompId);
                   self.reloadProperties(reloadList);
                   runStartTime=datetime.datetime.now();
                   currentTime=datetime.datetime.now();
                   totMsgSentInThisRun=0;
                   while((datetime.datetime.now()-runStartTime).seconds < numberOfSecondsToRun):
                        msgSent=0;
                        msgPerSec=float(self.sendRate);
                        if(msgPerSec == 0):
                          time.sleep(2); 
                          self.checkHeartBeatMsg();
                          continue;
                        if(msgPerSec<1):
                           newOrders=1;
                        else:
                           newOrders=round(msgPerSec*self.newOrderPercent*0.01,0);
                        cancelOrders=round(msgPerSec*float(self.cancelOrderPercent)*0.01,0);
                        modifyOrders=round(msgPerSec*float(self.modifyOrderPercent)*0.01,0);
                        hiddenOrders=round(msgPerSec*float(self.hiddenOrderPercent)*0.01,0);
                        marketOrders=round(msgPerSec*float(self.marketOrderPercent)*0.01,0);
                        GTDOrders=round(msgPerSec*float(self.GTDOrderPercent)*0.01,0);
                        expiryOrders=round(msgPerSec*float(self.expiryOrderPercent)*0.01,0)+cancelOrders;
                        rejectOrders=round(msgPerSec*float(self.rejectOrderPercent)*0.01,0);
                        #self.printMsg("New="+str(newOrders)+";Cancel="+str(cancelOrders)+";Modifies="+str(modifyOrders)+";Hidden="+str(hiddenOrders)+";Market="+str(marketOrders)+";GTD="+str(GTDOrders)+";Expiry="+str(expiryOrders)+";Rejects="+str(rejectOrders));
                        totalMsgToBeSent=newOrders+cancelOrders+modifyOrders+hiddenOrders+marketOrders+GTDOrders+expiryOrders+rejectOrders;
                        if(totalMsgToBeSent == 0):
                          time.sleep(1);
                          self.checkHeartBeatMsg();
                          continue;
                        sleepInterval=1.0/(totalMsgToBeSent*2);
                        #print(sleepInterval,msgPerSec,totalMsgToBeSent,newOrders,cancelOrders,modifyOrders,hiddenOrders,marketOrders);
                        batchStartTime=datetime.datetime.now();
                        while(msgSent<totalMsgToBeSent):
                                if (self.shutDown):
                                        self.doCleanup();
                                        self.printMsg("Received shutdown event");
                                        recvThread.join();
                                        self.closeFilePointers();
                                        return;
                                self.checkHeartBeatMsg();
                                currentTime=datetime.datetime.now();
                                if ((currentTime-batchStartTime).seconds > 1.0):
                                        self.printMsg("Breaking out ");
                                        break;
                                if (newOrders>0):
                                        self.frameNewOrderSingleMsg();
                                        self.alterNewOrderMsg();
                                        self.removeTags(['41']);
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        newOrders=newOrders-1;
                                        msgSent=msgSent+1;
                                        time.sleep(sleepInterval);

                                if (marketOrders>0):
                                        self.frameNewOrderSingleMsg();
                                        self.alterNewMarketOrderMsg();
                                        self.removeTags(['41']);
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        marketOrders=marketOrders-1;
                                        msgSent=msgSent+1;
                                        time.sleep(sleepInterval);

                                if (hiddenOrders>0):
                                        self.frameNewOrderSingleMsg();
                                        self.alterNewHiddenOrderMsg();
                                        self.removeTags(['41']);
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        self.removeTags(['1138']);
                                        hiddenOrders=hiddenOrders-1;
                                        msgSent=msgSent+1;
                                        time.sleep(sleepInterval);

                                if (GTDOrders>0):
                                        self.frameNewOrderSingleMsg();
                                        self.alterNewGTDOrderMsg();
                                        self.removeTags(['41']);
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        self.removeTags(['59']);
                                        GTDOrders=GTDOrders-1;
                                        msgSent=msgSent+1;
                                        time.sleep(sleepInterval);

                                if (expiryOrders>0):
                                        self.frameNewOrderSingleMsg();
                                        self.alterNewExpiryOrderMsg();
                                        self.removeTags(['41']);
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        expiryOrders=expiryOrders-1;
                                        msgSent=msgSent+1;
                                        time.sleep(sleepInterval);

                                if (rejectOrders>0):
                                        self.frameNewOrderSingleMsg();
                                        self.alterNewRejectOrderMsg();
                                        self.removeTags(['41']);
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        rejectOrders=rejectOrders-1;
                                        msgSent=msgSent+1;
                                        time.sleep(sleepInterval);

                                if (cancelOrders>0):
                                        queuedOrderListSize=len(self.queuedCancelOrdersList);
                                        if (queuedOrderListSize==0):
                                                continue;
                                        self.lockObj.acquire(True);
                                        execReport=self.queuedCancelOrdersList.pop(queuedOrderListSize-1);
                                        self.lockObj.release();
                                        self.removeTags(['336','386','44','1']);
                                        self.frameCancelOrderMsg(execReport['11'],execReport['54'],execReport['38'],execReport['55']);
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        cancelOrders=cancelOrders-1;
                                        msgSent=msgSent+1;
                                        time.sleep(sleepInterval);

                                if (modifyOrders>0):
                                        queuedOrderListSize=len(self.queuedModifyOrdersList);
                                        if (queuedOrderListSize==0):
                                                continue;
                                        self.lockObj.acquire(True);
                                        execReport=self.queuedModifyOrdersList.pop(queuedOrderListSize-1);
                                        self.lockObj.release();
                                        self.removeTags(['336','386']);
                                        qty=str(int(execReport['38'])+1);
                                        self.frameModifyOrderMsg(execReport['11'],execReport['54'],execReport['40'],qty,execReport['44'],execReport['55'],execReport['1']);
                                        self.fixSessionobj.sendFIXMsg(self.fixMsgDict);
                                        self.removeTags(['41']);
                                        modifyOrders=modifyOrders-1;
                                        msgSent=msgSent+1;
                                        time.sleep(sleepInterval);

          
                        self.printMsg("Number of messages send in this batch is "+str(msgSent) );
                        self.checkHeartBeatMsg();
                        #Clear of the queuedOrderList queus
                        self.lockObj.acquire(True);
                        nomodifyOrders=int(msgPerSec*int(self.modifyOrderPercent)*0.01);
                        queueSize=len(self.queuedModifyOrdersList);
                        #print(queueSize,nomodifyOrders,nocancelOrders);
                        if(queueSize > nomodifyOrders):
                            for i in list(range(queueSize-nomodifyOrders)):
                                 try:
                                     execReport=self.queuedModifyOrdersList.pop(i);
                                 except Exception:
                                     #self.printMsg("Exception Occured while popping out element at "+str(i));
                                     break;
                        self.lockObj.release();
                        self.lockObj.acquire(True);
                        nocancelOrders=int(msgPerSec*int(self.cancelOrderPercent)*0.01);
                        queueSize=len(self.queuedCancelOrdersList);
                        #print(queueSize,nomodifyOrders,nocancelOrders);
                        if(queueSize > nocancelOrders):
                            for i in list(range(queueSize-nocancelOrders)):
                                 try:
                                     execReport=self.queuedCancelOrdersList.pop(i);
                                 except Exception:
                                     #self.printMsg("Exception Occured while popping out element at "+str(i));
                                     break;
                        self.lockObj.release();
                        currentTime=datetime.datetime.now();
                        if(currentTime-batchStartTime).seconds < 1:
                           microsecondsLeft=1000000.0-((currentTime-batchStartTime).microseconds);
                           if microsecondsLeft>0:
                                self.printMsg("Sleeping before starting the next run");
                                time.sleep(float(microsecondsLeft/1000000));
                        currentTime=datetime.datetime.now();
                        totMsgSentInThisRun=totMsgSentInThisRun+msgSent;
                   self.printMsg("Number of messages send in run-"+str(run)+" is "+str(totMsgSentInThisRun));
                   run=run+1; 
                self.printMsg("Completed Runs..Going to shutdown..");
                self.shutDown=True;
                self.doCleanup();
                recvThread.join();
                self.closeFilePointers();
                return;
Ejemplo n.º 11
0
 def testParseTime(self):
     string = '12:50 PM'
     self.xmlreader = XMLReader()
     self.assertEqual(self.xmlreader.parse_time(string), 1250)
Ejemplo n.º 12
0
 def testParseCreditHoursRange(self):
     string = "0 TO 4 credits"
     self.xmlreader = XMLReader()
     self.assertEqual(self.xmlreader.parse_credit_hours(string), [0, 1, 2, 3, 4])
Ejemplo n.º 13
0
 def testParseCreditHours(self):
     string = "3 or 4 credits"
     self.xmlreader = XMLReader()
     self.assertEqual(self.xmlreader.parse_credit_hours(string), [3, 4])
Ejemplo n.º 14
0
def main(filename):

    #Global Thread List
    threads = []
    signalReceived = False
    symList = []
    driversList = []
    driverObjects = []
    threadName = "Main"

    logObj = getLogObject()

    def printMsg(msg):
        #fmtString=str(datetime.datetime.now())+"\t"+threadName+"\t"+msg;
        logObj.info(msg)

    def signalhandler(signum, frame):
        printMsg("Signal Received:" + str(signum))
        signalReceived = True
        for driver in driverObjects:
            driver.stopRunning()
        del driverObjects[:]

    #Add signal Handler
    signal.signal(signal.SIGINT, signalhandler)

    fileList = []
    fileFp = open(filename, "r")
    for line in fileFp:
        fileList.append(line)

    # Read from the XML File
    tmpList = fileList[0].split(',')
    filename = tmpList[1].strip('\n')
    xmlReaderobj = XMLReader(filename)
    symList = xmlReaderobj.getSymbolList()
    driversList = xmlReaderobj.getDriversList()
    driverType = xmlReaderobj.getDriverType()

    for driver in driversList:
        if (driverType == "XStream"):
            driverObj = Driver(symList, driver, fileList)
        elif (driverType == "EqFIX"):
            driverObj = EqDriver(symList, driver, fileList)
        #driverObj.printProperties();
        driverObjects.append(driverObj)

    threads = []

    for driver in driverObjects:
        t = threading.Thread(target=driver.run)
        threads.append(t)
        t.start()
    while (True):
        time.sleep(2)
        #Check if all threads are alive. Othersise shutdown
        numberOfThreadsDown = 0
        for thread in threads:
            if (not thread.is_alive()):
                numberOfThreadsDown = numberOfThreadsDown + 1
        if (numberOfThreadsDown == len(threads)):
            printMsg("All threads have shut down...Shutting down now. Bye !!")
            return
        #Check signal received status
        if (len(driverObjects) == 0):
            printMsg("Received Shutdown Signal in Main. Shutting down now...")
            for thread in threads:
                thread.join()
            print("All threads joined..Exiting..Bye !!")
            return