Skip to content

Commit 7c80fad

Browse files
authored
Merge pull request #2977 from shamisp/topic/v140/2968_backport
#2968 backport
2 parents 1c759a1 + 74d811c commit 7c80fad

File tree

3 files changed

+38
-27
lines changed

3 files changed

+38
-27
lines changed

contrib/test_jenkins.sh

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -712,9 +712,12 @@ run_coverity() {
712712

713713
#
714714
# Run the test suite (gtest)
715+
# Arguments: <compiler-name> [configure-flags]
715716
#
716717
run_gtest() {
717-
../contrib/configure-devel --prefix=$ucx_inst
718+
compiler_name=$1
719+
shift
720+
../contrib/configure-devel --prefix=$ucx_inst $@
718721
$MAKE clean
719722
$MAKE
720723

@@ -739,11 +742,11 @@ run_gtest() {
739742

740743
mkdir -p $GTEST_REPORT_DIR
741744

742-
echo "==== Running unit tests ===="
745+
echo "==== Running unit tests, $compiler_name compiler ===="
743746
$AFFINITY $TIMEOUT make -C test/gtest test
744747
(cd test/gtest && rename .tap _gtest.tap *.tap && mv *.tap $GTEST_REPORT_DIR)
745748

746-
echo "==== Running malloc hooks mallopt() test ===="
749+
echo "==== Running malloc hooks mallopt() test, $compiler_name compiler ===="
747750
# gtest returns with non zero exit code if there were no
748751
# tests to run. As a workaround run a single test on every
749752
# shard.
@@ -757,7 +760,7 @@ run_gtest() {
757760
make -C test/gtest test
758761
(cd test/gtest && rename .tap _mallopt_gtest.tap malloc_hook_cplusplus.tap && mv *.tap $GTEST_REPORT_DIR)
759762

760-
echo "==== Running malloc hooks mmap_ptrs test with MMAP_THRESHOLD=16384 ===="
763+
echo "==== Running malloc hooks mmap_ptrs test with MMAP_THRESHOLD=16384, $compiler_name compiler ===="
761764
$AFFINITY $TIMEOUT \
762765
env MALLOC_MMAP_THRESHOLD_=16384 \
763766
GTEST_SHARD_INDEX=0 \
@@ -768,7 +771,7 @@ run_gtest() {
768771

769772
if ! [[ $(uname -m) =~ "aarch" ]] && ! [[ $(uname -m) =~ "ppc" ]]
770773
then
771-
echo "==== Running valgrind tests ===="
774+
echo "==== Running valgrind tests, $compiler_name compiler ===="
772775

773776
# Load newer valgrind if naative is older than 3.10
774777
if ! (echo "valgrind-3.10.0"; valgrind --version) | sort -CV
@@ -782,12 +785,29 @@ run_gtest() {
782785
(cd test/gtest && rename .tap _vg.tap *.tap && mv *.tap $GTEST_REPORT_DIR)
783786
module unload tools/valgrind-latest
784787
else
785-
echo "==== Not running valgrind tests ===="
788+
echo "==== Not running valgrind tests with $compiler_name compiler ===="
786789
echo "1..1" > vg_skipped.tap
787790
echo "ok 1 - # SKIP because running on $(uname -m)" >> vg_skipped.tap
788791
fi
789792
}
790793

794+
run_gtest_default() {
795+
run_gtest "default"
796+
}
797+
798+
run_gtest_armclang() {
799+
if module_load arm-compiler/arm-hpc-compiler && armclang -v
800+
then
801+
run_gtest "armclang" CC=armclang CXX=armclang++
802+
else
803+
echo "==== Not running with armclang compiler ===="
804+
echo "1..1" > armclang_skipped.tap
805+
echo "ok 1 - # SKIP because armclang not found" >> armclang_skipped.tap
806+
fi
807+
module unload arm-compiler/arm-hpc-compiler
808+
}
809+
810+
791811
#
792812
# Run the test suite (gtest) in release configuration
793813
#
@@ -857,7 +877,8 @@ run_tests() {
857877
do_distributed_task 0 4 test_unused_env_var
858878

859879
# all are running gtest
860-
run_gtest
880+
run_gtest_default
881+
run_gtest_armclang
861882

862883
do_distributed_task 3 4 run_coverity
863884
do_distributed_task 0 4 run_gtest_release

src/ucs/datastruct/queue.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ static inline void ucs_queue_splice(ucs_queue_head_t *queue,
196196
#define ucs_queue_for_each(elem, queue, member) \
197197
for (*(queue)->ptail = NULL, \
198198
elem = ucs_container_of((queue)->head, typeof(*elem), member); \
199-
&elem->member != NULL; \
199+
(elem) != ucs_container_of(NULL, typeof(*elem), member); \
200200
elem = ucs_container_of(elem->member.next, typeof(*elem), member))
201201

202202
/**

test/gtest/ucs/test_datatype.cc

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -147,27 +147,17 @@ UCS_TEST_F(test_datatype, queue) {
147147

148148
UCS_TEST_F(test_datatype, queue_iter) {
149149

150+
const int num_elems = 4;
150151
ucs_queue_head_t head;
151-
elem_t *elem1, *elem2, *elem3, *elem4;
152+
std::vector<elem_t> elems(num_elems);
152153

153154
ucs_queue_head_init(&head);
154155
EXPECT_TRUE(ucs_queue_is_empty(&head));
155156

156-
elem1 = (elem_t*)malloc(sizeof(elem_t));
157-
elem2 = (elem_t*)malloc(sizeof(elem_t));
158-
elem3 = (elem_t*)malloc(sizeof(elem_t));
159-
elem4 = (elem_t*)malloc(sizeof(elem_t));
160-
161-
elem1->i = 1;
162-
elem2->i = 2;
163-
elem3->i = 3;
164-
elem4->i = 4;
165-
166-
ucs_queue_push(&head, &elem1->queue);
167-
ucs_queue_push(&head, &elem2->queue);
168-
ucs_queue_push(&head, &elem3->queue);
169-
ucs_queue_push(&head, &elem4->queue);
170-
157+
for (int i = 0; i < num_elems; ++i) {
158+
elems[i].i = i + 1;
159+
ucs_queue_push(&head, &elems[i].queue);
160+
}
171161

172162
{
173163
std::vector<int> vec;
@@ -176,7 +166,7 @@ UCS_TEST_F(test_datatype, queue_iter) {
176166
ucs_queue_for_each(elem, &head, queue) {
177167
vec.push_back(elem->i);
178168
}
179-
ASSERT_EQ(4u, vec.size());
169+
ASSERT_EQ(static_cast<size_t>(num_elems), vec.size());
180170
EXPECT_EQ(1, vec[0]);
181171
EXPECT_EQ(2, vec[1]);
182172
EXPECT_EQ(3, vec[2]);
@@ -192,15 +182,15 @@ UCS_TEST_F(test_datatype, queue_iter) {
192182
{
193183
if (elem->i == 3 || elem->i == 4) {
194184
ucs_queue_del_iter(&head, iter);
195-
free(elem);
185+
memset(elem, 0xff, sizeof(*elem));
196186
}
197187
}
198188
ASSERT_EQ((unsigned long)2, ucs_queue_length(&head));
199189

200190
ucs_queue_for_each_safe(elem, iter, &head, queue) {
201191
vec.push_back(elem->i);
202192
ucs_queue_del_iter(&head, iter);
203-
free(elem);
193+
memset(elem, 0xff, sizeof(*elem));
204194
}
205195
ASSERT_EQ(2u, vec.size());
206196
EXPECT_EQ(1, vec[0]);

0 commit comments

Comments
 (0)