Exemple #1
0
    def callback(self, ch, method, properties, body):
        global binding_keys, queueName, credentials, UNIT_ID
        ch.basic_ack(delivery_tag=method.delivery_tag)
        result = None
        try:
            logging.debug("Received " + str(body))
            message = pickle.loads(body)

            if not message.type == MessageType.Test:
                raise ValueError("Received message type " + str(message.type) +
                                 " instead of MessageType.Test=" +
                                 str(MessageType.Test))

            test = message.content
            result = TestResult(systemID=SYSTEM_NAME,
                                username=USERNAME,
                                testID=test.name,
                                executionID=test.executionID,
                                executorUnit=test.executorUnit,
                                targetUnit=test.targetUnit)
            testName = test.name
            logging.debug("META " + str(test.meta))
            logging.debug("TEST " + str(test.test))
            logging.debug("Delivery ACK. Defining test")

            exec("def " + testName + "(): \n" + test.test)

            possibles = globals().copy()
            possibles.update(locals())
            method = possibles.get(testName)

            method_result = method()
            result.successful = method_result.successful
            result.details = method_result.details
            result.meta = method_result.meta

        except Exception as e:
            logging.debug(e)
            if not result:
                result = TestResult(testID="GeneralFailure",
                                    executionID="0",
                                    executorUnit=None)
            result.meta["type"] = "Test Invocation Failure"
            result.successfull = False
            result.details = str(e)
        result.meta["origin.uuid"] = UNIT_UUID
        result.meta["origin.id"] = UNIT_ID

        message = Message(type=MessageType.TestResult, content=result)

        self.sendMessage(HEALTH_CENTRAL_QUEUE_IP, SYSTEM_NAME, UNIT_ID,
                         SYSTEM_NAME + "." + UNIT_UUID + ".results",
                         credentials, UNIT_UUID + "-Results",
                         pickle.dumps(message))
Exemple #2
0
 def exit_handler(self, HEALTH_CENTRAL_QUEUE_IP, SYSTEM_NAME, credentials, queueName, unitDetails):
     logging.debug("Shutting down...")
     iAmDeadMesssage = Message(type=MessageType.UnitInstanceInformation, content=unitDetails)
     stringMessage = pickle.dumps(iAmDeadMesssage)
     # send I am dead message
     self.sendMessage(HEALTH_CENTRAL_QUEUE_IP, SYSTEM_NAME, SYSTEM_NAME,SYSTEM_NAME+  ".lifecycle.dead", credentials, "dead",
                              stringMessage)
     # delete tests and results queues
     connection = pika.BlockingConnection(
         pika.ConnectionParameters(HEALTH_CENTRAL_QUEUE_IP, virtual_host=SYSTEM_NAME, credentials=credentials))
     channel = connection.channel()
     logging.debug("Deleting used queue " + queueName)
     channel.queue_delete(queue=queueName + "-Results")
     channel.queue_delete(queue=queueName + "-Tests")
     logging.debug("Deleted queue " + queueName)
     connection.close()
Exemple #3
0
    args = sys.argv

    logging.basicConfig(filename="./executor_" + UNIT_UUID + ".log", level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s')
    logging.info("Started test executor for " + UNIT_UUID)
    #remove pika chatter
    logging.getLogger('pika').setLevel(logging.WARNING)

    queueName = str(UNIT_UUID) + "-Tests"
    binding_keys = [SYSTEM_NAME + "." + UNIT_UUID + ".tests"]
    credentials = pika.PlainCredentials(USERNAME, PASSWORD)

    #start logging performance
    p = SimplePerformanceLogger("./performance_" + UNIT_UUID + ".csv")
    p.logPerformance(5)

    # send I am alive message
    unitDetails = UnitInstanceInfo(id=UNIT_ID, uuid=UNIT_UUID, type=UNIT_TYPE, system=SYSTEM_NAME, username=USERNAME, password=PASSWORD)
    iAmAliveMesssage = Message(type=MessageType.UnitInstanceInformation, content=unitDetails)
    stringMessage = pickle.dumps(iAmAliveMesssage)
    logging.debug("Sending I am alive message " + stringMessage)

    executor = TestExecutor(HEALTH_CENTRAL_QUEUE_IP, SYSTEM_NAME, UNIT_ID, binding_keys, credentials, queueName, unitDetails)

    executor.sendMessage(HEALTH_CENTRAL_QUEUE_IP, SYSTEM_NAME, SYSTEM_NAME, SYSTEM_NAME+ ".lifecycle.alive", credentials, "alive", stringMessage)
    # listen to messages
    # listen to messages
    signal.signal(signal.SIGTERM, executor.exit_sig_handler) #service stop
    signal.signal(signal.SIGINT, executor.exit_sig_handler)  # ctr-c
    executor.listenToMessages(HEALTH_CENTRAL_QUEUE_IP, SYSTEM_NAME, UNIT_ID, binding_keys, credentials, queueName)