Пример #1
0
def clientMain(serverIP, serverPort):
    '''Starts the client
    
    Args:
        - serverIP -- ip address of server to connect to
        - serverPort -- port on which the server is listening
    
    '''

    #initialization of values
    #timeName = time.strftime("%d%b%Y%H%M%S", time.localtime()) # a unique id created from the time when the script starts 
    messageQueue = multiprocessing.Queue() # the queue where all log messages are written to.
    logControlValue = multiprocessing.Value('i',int(True)) #A boolean indicating the the logging process should continue to run. There is no type for bool, so we use int
    resultsDirectory, logsDirectory = UtilityFunctions.initializeClientFolderStructure() #directories where results and logs should be stored respectively
    UtilityFunctions.deleteContentsOfDirectory('./client/temp')
    #-------------start logging module
    loggingProcess = multiprocessing.Process(target = LoggingModule.log, args=(logControlValue,messageQueue,logsDirectory))
    loggingProcess.start()
    
    #communicate with server    
    
    handleConnection(messageQueue, serverIP,serverPort,resultsDirectory)
    
    
    #exit note that we only get here once the server closes the connection
    logControlValue.value = int(False)
    loggingProcess.join()
    sys.exit(0)
Пример #2
0
def handleClientTask(messageQueue, serverMessage,resultsDirectory):
    '''Processes a task received by the server
    
    Args:
        - messageQueue -- queue used for logging
        - serverMessge -- message received from server
    '''
    
    temporaryDirectory = './client/temp'
    
    if serverMessage['messageType'] == 'task':
        #write task to file
        clientScript = zlib.decompress(serverMessage['task'])#decompress the 
        clientScriptHandle = open(os.path.join(temporaryDirectory,'clientTask.py'),'w')
        clientScriptHandle.writelines(clientScript)
        clientScriptHandle.close()
        dataDirectory = None
        #if data exists, write data to file and extract it to ./temp/receivedData
        if not serverMessage['data'] == None:
            dataDirectory = os.path.join(temporaryDirectory,'receivedData')
            os.mkdir(dataDirectory)
            dataHandle = open(os.path.join(temporaryDirectory,'data.zip'),'w')
            dataHandle.writelines(serverMessage['data'])
            dataHandle.close()
            UtilityFunctions.unzipFile(os.path.join(temporaryDirectory,'data.zip'), dataDirectory)
            
        #execute received script
        subprocess.call(['python',os.path.join(temporaryDirectory,'clientTask.py'),os.path.abspath(dataDirectory)
                         ,os.path.abspath(resultsDirectory),])
        
        #cleanup temp folder
        UtilityFunctions.deleteContentsOfDirectory(temporaryDirectory)
        
    else:
        raise Exception('received an unknown Message type from the server. The type received was: '+serverMessage['task'])
Пример #3
0
def loadResult(resultsDirectory):
    '''Zips all data in the results directory in a zip file and returns that zip file loaded into memory. Also removes resultsData from disk '''
    temporaryDirectory = './client/temp'
    UtilityFunctions.zipDir(resultsDirectory,
                            os.path.join(temporaryDirectory, 'result.zip'))
    resultHandle = open(os.path.join(temporaryDirectory, 'result.zip'), 'r')
    resultData = resultHandle.readlines()
    resultHandle.close()
    UtilityFunctions.deleteContentsOfDirectory(temporaryDirectory)
    UtilityFunctions.deleteContentsOfDirectory(resultsDirectory)
    return resultData
Пример #4
0
def loadResult(resultsDirectory):
    '''Zips all data in the results directory in a zip file and returns that zip file loaded into memory. Also removes resultsData from disk '''
    temporaryDirectory = './client/temp'
    UtilityFunctions.zipDir(resultsDirectory, os.path.join(temporaryDirectory,'result.zip'))
    resultHandle = open(os.path.join(temporaryDirectory,'result.zip'),'r')
    resultData = resultHandle.readlines()
    resultHandle.close()
    UtilityFunctions.deleteContentsOfDirectory(temporaryDirectory)
    UtilityFunctions.deleteContentsOfDirectory(resultsDirectory)
    return resultData
    
        
Пример #5
0
def handleClientTask(messageQueue, serverMessage, resultsDirectory):
    '''Processes a task received by the server
    
    Args:
        - messageQueue -- queue used for logging
        - serverMessge -- message received from server
    '''

    temporaryDirectory = './client/temp'

    if serverMessage['messageType'] == 'task':
        #write task to file
        clientScript = zlib.decompress(serverMessage['task'])  #decompress the
        clientScriptHandle = open(
            os.path.join(temporaryDirectory, 'clientTask.py'), 'w')
        clientScriptHandle.writelines(clientScript)
        clientScriptHandle.close()
        dataDirectory = None
        #if data exists, write data to file and extract it to ./temp/receivedData
        if not serverMessage['data'] == None:
            dataDirectory = os.path.join(temporaryDirectory, 'receivedData')
            os.mkdir(dataDirectory)
            dataHandle = open(os.path.join(temporaryDirectory, 'data.zip'),
                              'w')
            dataHandle.writelines(serverMessage['data'])
            dataHandle.close()
            UtilityFunctions.unzipFile(
                os.path.join(temporaryDirectory, 'data.zip'), dataDirectory)

        #execute received script
        subprocess.call([
            'python',
            os.path.join(temporaryDirectory, 'clientTask.py'),
            os.path.abspath(dataDirectory),
            os.path.abspath(resultsDirectory),
        ])

        #cleanup temp folder
        UtilityFunctions.deleteContentsOfDirectory(temporaryDirectory)

    else:
        raise Exception(
            'received an unknown Message type from the server. The type received was: '
            + serverMessage['task'])
Пример #6
0
def cleanUp():
    '''Message to be called when server exits successfully, cleans up temporary Files'''
    
    UtilityFunctions.deleteContentsOfDirectory('./temp')
Пример #7
0
def cleanUp():
    '''Message to be called when server exits successfully, cleans up temporary Files'''
    
    UtilityFunctions.deleteContentsOfDirectory('./temp')