/** * Copyright (C) Mellanox Technologies Ltd. 2001-2015. ALL RIGHTS RESERVED. * Copyright (c) UT-Battelle, LLC. 2015. ALL RIGHTS RESERVED. * * See file LICENSE for terms. */ #ifndef TEST_UCP_MEMHEAP_H #define TEST_UCP_MEMHEAP_H #include "ucp_test.h" class test_ucp_memheap : public ucp_test { public: /* * @param [in] max_size Maximal size of data to send. * @param [in] memheap_addr VA to perform the RMA operation to, * @param [in] rkey Memheap remote key. * @param [out] expected_data What should the memheap contain at the given * address after the operation (also can be used * as a source/destination data). */ typedef void (test_ucp_memheap::* blocking_send_func_t)(entity *e, size_t max_size, void *memheap_addr, ucp_rkey_h rkey, std::string& expected_data); /* * @param [in] max_size Maximal size of data to send. * @param [in] memheap_addr VA to perform the RMA operation to, * @param [in] rkey Memheap remote key. * @param [out] expected_data What should the memheap contain at the given * address after the operation (also can be used * as a source/destination data). */ typedef void (test_ucp_memheap::* nonblocking_send_func_t)(entity *e, size_t max_size, void *memheap_addr, ucp_rkey_h rkey, std::string& expected_data); static std::vector enum_test_params(const ucp_params_t& ctx_params, const std::string& name, const std::string& test_case_name, const std::string& tls); protected: const static size_t DEFAULT_SIZE = 0; const static int DEFAULT_ITERS = 0; void test_blocking_xfer(blocking_send_func_t send, size_t len, int max_iters, size_t alignment, bool malloc_allocate, bool is_ep_flush); void test_nonblocking_implicit_stream_xfer(nonblocking_send_func_t send, size_t len, int max_iters, size_t alignment, bool malloc_allocate, bool is_ep_flush); }; #endif