@@ -126,21 +126,55 @@ static void test_alloc_failure(umf_memory_provider_handle_t provider,
126
126
127
127
// negative tests for umfMemoryProviderCreate()
128
128
129
- TEST_F (test, create_WRONG_NUMA_MODE) {
129
+ static umf_result_t create_os_provider_with_mode (umf_numa_mode_t mode,
130
+ unsigned long *nodemask,
131
+ unsigned long maxnode) {
130
132
umf_result_t umf_result;
131
133
umf_memory_provider_handle_t os_memory_provider = nullptr ;
132
134
umf_os_memory_provider_params_t os_memory_provider_params =
133
135
umfOsMemoryProviderParamsDefault ();
134
136
135
- // NUMA binding mode not supported for UMF_VISIBILITY_SHARED
136
- os_memory_provider_params.visibility = UMF_VISIBILITY_SHARED ;
137
- os_memory_provider_params.numa_mode = UMF_NUMA_MODE_BIND ;
137
+ os_memory_provider_params. numa_mode = mode;
138
+ os_memory_provider_params.nodemask = nodemask ;
139
+ os_memory_provider_params.maxnode = maxnode ;
138
140
139
141
umf_result = umfMemoryProviderCreate (umfOsMemoryProviderOps (),
140
142
&os_memory_provider_params,
141
143
&os_memory_provider);
142
- ASSERT_EQ (umf_result, UMF_RESULT_ERROR_INVALID_ARGUMENT);
143
- ASSERT_EQ (os_memory_provider, nullptr );
144
+ if (umf_result == UMF_RESULT_SUCCESS) {
145
+ EXPECT_NE (os_memory_provider, nullptr );
146
+ umfMemoryProviderDestroy (os_memory_provider);
147
+ } else {
148
+ EXPECT_EQ (os_memory_provider, nullptr );
149
+ }
150
+
151
+ return umf_result;
152
+ }
153
+
154
+ static unsigned long valid_nodemask = 0x1 ;
155
+ static unsigned long valid_maxnode = 2 ;
156
+
157
+ TEST_F (test, create_WRONG_NUMA_MODE_DEFAULT) {
158
+ auto ret = create_os_provider_with_mode (UMF_NUMA_MODE_DEFAULT,
159
+ &valid_nodemask, valid_maxnode);
160
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
161
+ }
162
+
163
+ TEST_F (test, create_WRONG_NUMA_MODE_LOCAL) {
164
+ auto ret = create_os_provider_with_mode (UMF_NUMA_MODE_LOCAL,
165
+ &valid_nodemask, valid_maxnode);
166
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
167
+ }
168
+
169
+ TEST_F (test, create_WRONG_NUMA_MODE_BIND) {
170
+ auto ret = create_os_provider_with_mode (UMF_NUMA_MODE_BIND, nullptr , 0 );
171
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
172
+ }
173
+
174
+ TEST_F (test, create_WRONG_NUMA_MODE_INTERLEAVE) {
175
+ auto ret =
176
+ create_os_provider_with_mode (UMF_NUMA_MODE_INTERLEAVE, nullptr , 0 );
177
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
144
178
}
145
179
146
180
// positive tests using test_alloc_free_success
0 commit comments