예제 #1
0
def st_image_created(opts):
    test_handler, conn = opts['test_handler'], opts['conn']
    try:
        result = conn.image.get_image(test_handler.current_result)
        if not result:
            raise StateMonitorException('image result None')
        print('image %s created' % result.id)
        database.logs_add('st_image', 'image created', test_handler.test_id)
    except openstack.exceptions.InvalidRequest:
        database.logs_add('st_image', 'image invalid request',
                          test_handler.test_id)
        raise StateMonitorException('image invalid request')
예제 #2
0
def st_flavor_created(opts):
    test_handler, conn = opts['test_handler'], opts['conn']
    try:
        result = conn.compute.get_flavor(test_handler.current_result)
        if not result:
            raise StateMonitorException('flavor result None')
        print('flavor %s created' % result.id)
        database.logs_add('st_flavor', 'flavor created', test_handler.test_id)
    except openstack.exceptions.InvalidRequest:
        database.logs_add('st_flavor', 'flavor invalid request',
                          test_handler.test_id)
        raise StateMonitorException('flavor invalid request ')
예제 #3
0
def st_server_deleted(opts):
    test_handler, conn = opts['test_handler'], opts['conn']
    try:
        result = conn.compute.get_server(test_handler.instances['server_test'])
        print(_dump_invalid_server_status(result))
        database.logs_add('st_server', _dump_invalid_server_status(result),
                          test_handler.test_id)
        raise StateMonitorException('invalid server state')
    except openstack.exceptions.ResourceNotFound:
        print('server deleted')
        pass
    except openstack.exceptions.InvalidRequest:
        raise StateMonitorException('server deleting invalid request')
예제 #4
0
def st_server_started(opts):
    test_handler, conn = opts['test_handler'], opts['conn']
    try:
        result = conn.compute.get_server(test_handler.instances['server_test'])
        if result and result.status and result.status.lower() == 'error':
            raise ServerErrorStatusException()
        if result.status.lower() == 'active':
            print('server started %s' % result.id)
        else:
            print(_dump_invalid_server_status(result))
            database.logs_add('st_server', _dump_invalid_server_status(result),
                              test_handler.test_id)
            raise StateMonitorException('invalid server state')
    except openstack.exceptions.InvalidRequest:
        raise StateMonitorException('server starting invalid request')
예제 #5
0
def st_volume_created(opts):
    test_handler, conn = opts['test_handler'], opts['conn']
    try:
        result = conn.block_storage.get_volume(test_handler.current_result)
        if not result:
            raise StateMonitorException('volume result None')
        if result.status == 'available':
            print('volume %s created' % result.id)
            database.logs_add('st_volume', 'volume created',
                              test_handler.test_id)
        else:
            raise StateMonitorException('invalid volume status %s' %
                                        result.status)
    except openstack.exceptions.InvalidRequest:
        database.logs_add('st_volume', 'volume invalid request',
                          test_handler.test_id)
        raise StateMonitorException('volume invalid request')
예제 #6
0
 def run(self):
     while self._test_handler.status != TestHandler.STOPPED:
         print('[%02d] state-monitor waiting test execution' % self._test_handler.iteration_number)
         with self._test_handler.execution_cv:
             self._test_handler.statem_ev.set()
             self._test_handler.execution_cv.wait()
             if self._test_handler.status == TestHandler.STOPPED:
                 continue
             print('[%02d] state-monitor states' % self._test_handler.iteration_number)
             try:
                 result = self.func()
                 print('[%02d] state-monitor result = %s' % (self._test_handler.iteration_number, str(result)))
                 database.logs_add('state_monitor', 'result = %s' % str(result), self._test_handler.test_id)
             except Exception as monitor_exc:
                 self._test_handler.exceptions.append(monitor_exc)
             self._test_handler.execution_cv.notify()
             self._test_handler.execution_cv.wait()
     print('state-monitor stopped')
예제 #7
0
 def wrapped_function(*args, **kwargs):
     status_ok = False
     exc = None
     counter = 0
     prev_msg_list = []
     opts = kwargs['opts']
     opts['conn'] = openstack.connect(cloud=opts['cloud'])
     start_time = datetime.datetime.now()
     try:
         while not status_ok and counter < times:
             _st_try_log_states(opts, prev_msg_list)
             try:
                 function(*args, **kwargs)
                 status_ok = True
                 exc = None
             except StateMonitorException as state_exc:
                 status_ok = False
                 exc = state_exc
                 time.sleep(interval)
             except openstack.exceptions.SDKException as sdk_exception:
                 status_ok = False
                 exc = sdk_exception
                 time.sleep(interval)
             counter = counter + 1
     except ErrorStatusException as exc:
         status_ok = False
         exc = exc
         time.sleep(interval)
     except Exception as generic:
         status_ok = False
         exc = exc
         time.sleep(interval)
     if 'test_handler' in opts:
         end_time = datetime.datetime.now()
         secs = (end_time - start_time).total_seconds()
         msg = 'test status: %s, time: %s, error: %s' % (
             'PASS' if status_ok else 'FAIL', '%s secs' % secs,
             repr(exc) if not status_ok else 'NO_ERROR')
         database.logs_add('tests_events', msg,
                           opts['test_handler'].test_id)
         _st_try_log_states(opts, prev_msg_list)
     return status_ok, exc
예제 #8
0
def st_server_created(opts):
    test_handler, conn = opts['test_handler'], opts['conn']
    try:
        result = conn.compute.get_server(test_handler.current_result)
        if not result:
            raise StateMonitorException('server result None')
        if result.status and result.status.lower() == 'error':
            raise ServerErrorStatusException()
        if result.status and result.status.lower() == 'active':
            print('server state %s' % result.status.lower())
            database.logs_add(
                'st_server', 'correct server state %s' % result.status.lower(),
                test_handler.test_id)
        else:
            print(
                'invalid server state (status=%s, task=%s, power=%s, vm=%s)' %
                (result.status.lower(), result.task_state,
                 str(result.power_state), result.vm_state))
            database.logs_add(
                'st_server',
                'invalid server state (status=%s, task_state=%s, power_state=%s, vm_state=%s)'
                % (result.status, result.task_state, result.power_state,
                   result.vm_state), test_handler.test_id)
            raise StateMonitorException('invalid server state')
    except openstack.exceptions.InvalidRequest:
        database.logs_add('st_server', 'invalid server request',
                          test_handler.test_id)
        raise StateMonitorException('server invalid request')
예제 #9
0
 def run(self):
     self._test_handler.status = TestHandler.STARTED
     self._test_handler.start_iteration_counting()
     for test, index in zip(self._test_handler.tests, range(len(self._test_handler.tests))):
         it_id = database.it_add(self._test_handler.test_id, test.event)
         if index in self._test_handler.targets:
             mode = 'injection'
         else:
             mode = 'classic'
         database.test_change_mode(self._test_handler.test_id, mode)
         database.it_register_mode(it_id, mode)
         self._test_handler.statem_ev.wait()
         self._test_handler.statem_ev.clear()
         print('[%02d] run test' % self._test_handler.iteration_number)
         database.logs_add('test_runner', 'running input of number %d' % self._test_handler.iteration_number,
                           self._test_handler.test_id)
         self._test_handler.current_test = test
         try:
             database.logs_add('tests_events', 'run event %s' % test.event, self._test_handler.test_id)
             self._test_handler.current_result = test.func()
         except Exception as func_exc:
             self._test_handler.exceptions.append(func_exc)
             self._test_handler.status = TestHandler.STOPPED
             with self._test_handler.execution_cv:
                 self._test_handler.execution_cv.notify()
             break
         with self._test_handler.execution_cv:
             self._test_handler.execution_cv.notify()
             print('[%02d] execution waiting states completion' % self._test_handler.iteration_number)
             self._test_handler.execution_cv.wait()
             self._test_handler.status = TestHandler.STARTED if test != self._test_handler.tests[-1] and not \
                 self._test_handler.has_errors else TestHandler.STOPPED
             self._test_handler.execution_cv.notify()
         self._test_handler.increment_iteration_by_one()
     print('test-execution finished')
     database.test_set_errors(self._test_handler.test_id, len(self._test_handler.exceptions) > 0)
     with self._test_handler.completion_cv:
         self._test_handler.completion_cv.notify()
     self._test_handler.stop_iteration_counting()
예제 #10
0
def _st_try_log_states(opts, prev_msg_list):
    if 'test_handler' in opts:
        test_handler = opts['test_handler']
        if 'server_test' in test_handler.instances:
            server_test = test_handler.instances['server_test']
            test_id = test_handler.test_id
            conn = opts['conn']
            try:
                result = conn.compute.get_server(server_test)
                if result:
                    msg = _tests_events_log_state(
                        result, test_id,
                        prev_msg_list[-1] if prev_msg_list else None)
                    prev_msg_list.append(msg)
            except openstack.exceptions.InvalidRequest:
                pass
            except openstack.exceptions.HttpException:
                pass
            except openstack.exceptions.ResourceNotFound:
                msg = 'server not found'
                if not prev_msg_list or msg != prev_msg_list[-1]:
                    database.logs_add('tests_events', msg, test_id)
                    prev_msg_list.append(msg)
예제 #11
0
def _tests_events_log_state(result, test_id, last_msg=None):
    msg = 'power=%s, vm=%s, task=%s, status=%s' % (
        result.power_state, result.vm_state, result.task_state, result.status)
    if msg != last_msg:
        database.logs_add('tests_events', msg, test_id)
    return msg