1 /**
2 * Copyright (C) Mellanox Technologies Ltd. 2001-2015. ALL RIGHTS RESERVED.
3 *
4 * See file LICENSE for terms.
5 */
6
7 #include "ucp_test.h"
8 extern "C" {
9 #include <ucs/sys/sys.h>
10 }
11
12
13 class test_ucp_context : public ucp_test {
14 public:
get_ctx_params()15 static ucp_params_t get_ctx_params() {
16 ucp_params_t params = ucp_test::get_ctx_params();
17 params.features |= UCP_FEATURE_TAG | UCP_FEATURE_WAKEUP;
18 return params;
19 }
20 };
21
UCS_TEST_P(test_ucp_context,minimal_field_mask)22 UCS_TEST_P(test_ucp_context, minimal_field_mask) {
23 ucs::handle<ucp_config_t*> config;
24 UCS_TEST_CREATE_HANDLE(ucp_config_t*, config, ucp_config_release,
25 ucp_config_read, NULL, NULL);
26
27 ucs::handle<ucp_context_h> ucph;
28 ucs::handle<ucp_worker_h> worker;
29
30 {
31 /* Features ONLY */
32 ucp_params_t params;
33 VALGRIND_MAKE_MEM_UNDEFINED(¶ms, sizeof(params));
34 params.field_mask = UCP_PARAM_FIELD_FEATURES;
35 params.features = get_ctx_params().features;
36
37 UCS_TEST_CREATE_HANDLE(ucp_context_h, ucph, ucp_cleanup,
38 ucp_init, ¶ms, config.get());
39 }
40
41 {
42 /* Empty set */
43 ucp_worker_params_t params;
44 VALGRIND_MAKE_MEM_UNDEFINED(¶ms, sizeof(params));
45 params.field_mask = 0;
46
47 UCS_TEST_CREATE_HANDLE(ucp_worker_h, worker, ucp_worker_destroy,
48 ucp_worker_create, ucph.get(), ¶ms);
49 }
50 }
51
52 UCP_INSTANTIATE_TEST_CASE_TLS(test_ucp_context, all, "all")
53
54 class test_ucp_aliases : public test_ucp_context {
55 };
56
UCS_TEST_P(test_ucp_aliases,aliases)57 UCS_TEST_P(test_ucp_aliases, aliases) {
58 create_entity();
59 }
60
61 UCP_INSTANTIATE_TEST_CASE_TLS(test_ucp_aliases, rcv, "rc_v")
62 UCP_INSTANTIATE_TEST_CASE_TLS(test_ucp_aliases, rcx, "rc_x")
63 UCP_INSTANTIATE_TEST_CASE_TLS(test_ucp_aliases, ud, "ud")
64 UCP_INSTANTIATE_TEST_CASE_TLS(test_ucp_aliases, ud_mlx5, "ud_mlx5")
65 UCP_INSTANTIATE_TEST_CASE_TLS(test_ucp_aliases, ugni, "ugni")
66 UCP_INSTANTIATE_TEST_CASE_TLS(test_ucp_aliases, shm, "shm")
67
68
69 class test_ucp_version : public test_ucp_context {
70 };
71
UCS_TEST_P(test_ucp_version,wrong_api_version)72 UCS_TEST_P(test_ucp_version, wrong_api_version) {
73
74 ucs::handle<ucp_config_t*> config;
75 UCS_TEST_CREATE_HANDLE(ucp_config_t*, config, ucp_config_release,
76 ucp_config_read, NULL, NULL);
77
78 ucp_params_t params = get_ctx_params();
79 ucp_context_h ucph;
80 ucs_status_t status;
81 size_t warn_count;
82 {
83 scoped_log_handler slh(hide_warns_logger);
84 warn_count = m_warnings.size();
85 status = ucp_init_version(99, 99, ¶ms, config.get(), &ucph);
86 }
87 if (status != UCS_OK) {
88 ADD_FAILURE() << "Failed to create UCP with wrong version";
89 } else {
90 if (m_warnings.size() == warn_count) {
91 ADD_FAILURE() << "Missing wrong version warning";
92 }
93 ucp_cleanup(ucph);
94 }
95 }
96
UCS_TEST_P(test_ucp_version,version_string)97 UCS_TEST_P(test_ucp_version, version_string) {
98
99 unsigned major_version, minor_version, release_number;
100
101 ucp_get_version(&major_version, &minor_version, &release_number);
102
103 char buffer[256];
104 snprintf(buffer, sizeof(buffer), "%d.%d.%d", major_version, minor_version,
105 release_number);
106
107 EXPECT_EQ(std::string(buffer), std::string(ucp_get_version_string()));
108 }
109
110 UCP_INSTANTIATE_TEST_CASE_TLS(test_ucp_version, all, "all")
111