blob: c6612060a4f15f384a352942a95b8893981e3047 [file] [log] [blame]
/*
* Copyright 2017, Data61
* Commonwealth Scientific and Industrial Research Organisation (CSIRO)
* ABN 41 687 119 230.
*
* This software may be distributed and modified according to the terms of
* the BSD 2-Clause license. Note that NO WARRANTY is provided.
* See "LICENSE_BSD2.txt" for details.
*
* @TAG(DATA61_BSD)
*/
#pragma once
/* Include Kconfig variables. */
#include <autoconf.h>
#include <sel4test/gen_config.h>
#include <stdbool.h>
typedef enum test_result {
/* test passed */
SUCCESS,
/* test failed */
FAILURE,
/* test corrupted environment, abort tests */
ABORT,
/* Start of the free slot/ID to be used to request
* operations from sel4test-test to sel4test-driver
* using the same end point
*/
SEL4TEST_RESULT_FREE
} test_result_t;
/* Communication codes/requests between a server and a client */
typedef enum _sel4test_communication_codes {
SEL4TEST_TIME_MIN = SEL4TEST_RESULT_FREE,
/* Client: requests a timeout from the server
* Server: Notify clients after the elapsed requested time.
* Previous timeout requests will be overwritten (if ongoing) with
* new timeout requests.
*/
SEL4TEST_TIME_TIMEOUT,
/* Client: requests a timer reset and cancel previous requests
* Server: Cleans up the resources used from previous requests
* and stop notifying clients.
*/
SEL4TEST_TIME_RESET,
SEL4TEST_TIME_TIMESTAMP,
SEL4TEST_TIME_MAX,
SEL4TEST_PROTOBUF_RPC = SEL4TEST_TIME_MAX,
SEL4TEST_OUTPUT_MAX
} sel4test_output_t;
/* A buffered printf to avoid corrupting xml output */
void sel4test_printf(const char *out);
/* enable printf buffering */
void sel4test_start_printf_buffer(void);
/* dump the current buffer and disable printf buffering */
void sel4test_end_printf_buffer(void);
/* reset the test environment for the next test */
void sel4test_reset(void);
/**
* Report an error in a test case.
* Can report multiple errors.
* This will fail a test case.
*/
void _sel4test_report_error(const char *error, const char *file, int line);
/*
* Mark the current test as failed. Should
* only be called once per test case
*/
void _sel4test_failure(const char *failure, const char *file, int line);
/*
* Mark the current test as fatally failed. The test will be terminated and
* will not proceed beyond this point.
*/
void _sel4test_abort(const char *failure, const char *file, int line);
/*
* Indicates if current test passed.
*/
test_result_t sel4test_get_result(void);
static inline bool sel4test_isTimerRPC(int output)
{
return (output > SEL4TEST_TIME_MIN && output < SEL4TEST_TIME_MAX);
}