Skip to content

Commit 018db6d

Browse files
committed
Simplified the test set-up in the top-level CMakeLists.txt and refactored and renamed several tests to have more descriptive names or names that indicate we need to a assign more descriptive names.
1 parent c025d65 commit 018db6d

File tree

8 files changed

+70
-110
lines changed

8 files changed

+70
-110
lines changed

CMakeLists.txt

+10-22
Original file line numberDiff line numberDiff line change
@@ -65,29 +65,11 @@ target_link_libraries(OpenCoarrays INTERFACE caf_mpi)
6565

6666
enable_testing()
6767

68-
# Name each test and indicate the corresponding executable
69-
add_test(NAME hello_world COMMAND hello_multiverse)
70-
add_test(NAME distributed_transpose COMMAND coarray_distributed_transpose)
71-
add_test(NAME burgers_pde COMMAND coarray_burgers_pde)
72-
add_test(NAME heat_equation COMMAND co_heat)
73-
add_test(NAME sync_images COMMAND sync_images)
74-
add_test(NAME is_there_a_better_name COMMAND is_there_a_better_name)
75-
add_test(NAME increment_my_neighbor COMMAND increment_my_neighbor)
76-
add_test(NAME co_broadcast COMMAND co_broadcast)
77-
add_test(NAME atomics COMMAND atomics)
78-
add_test(NAME C_hello_world COMMAND C_hello_world)
79-
add_test(NAME C_sync_images COMMAND C_sync_images)
80-
81-
if ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux" )
82-
add_test(navier-stokes src/tests/integration/pde_solvers/navier-stokes/coarray_navier_stokes)
83-
set_property(TEST navier-stokes PROPERTY PASS_REGULAR_EXPRESSION "Test passed.")
84-
endif()
85-
8668
set(tests_to_build
87-
hello_world
88-
distributed_transpose
89-
burgers_pde
90-
heat_equation
69+
hello_multiverse
70+
coarray_distributed_transpose
71+
coarray_burgers_pde
72+
co_heat
9173
sync_images
9274
is_there_a_better_name
9375
increment_my_neighbor
@@ -99,5 +81,11 @@ set(tests_to_build
9981

10082
# Define the string that each test output must contain to indicate passing
10183
foreach(tests ${tests_to_build})
84+
add_test(NAME ${tests} COMMAND ${tests})
10285
set_property(TEST ${tests} PROPERTY PASS_REGULAR_EXPRESSION "Test passed.")
10386
endforeach()
87+
88+
if ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux" )
89+
add_test(NAME navier-stokes COMMAND coarray_navier_stokes)
90+
set_property(TEST navier-stokes PROPERTY PASS_REGULAR_EXPRESSION "Test passed.")
91+
endif()

src/tests/integration/coarrayHelloWorld/hello_multiverse.F90

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ program hello_multiverse
5151
block
5252
integer, parameter :: expected_location=23,max_single_digit=9
5353
do image=2,min(num_images(),max_single_digit)
54-
! Verify that the greetings have their image number at the expected location:
54+
! Verify that the greetings of images 1-9 have their image number at the expected location:
5555
if (scan(greeting[image],set="123456789")/=expected_location) error stop "Test failed."
5656
end do
5757
end block

src/tests/unit/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
add_subdirectory(simple)
22
add_subdirectory(send-get)
3+
add_subdirectory(init_register)
+8-8
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
add_executable(initmpi1 initmpi1.f90)
2-
target_link_libraries(initmpi1 OpenCoarrays)
1+
add_executable(initialize_mpi initialize_mpi.f90)
2+
target_link_libraries(initialize_mpi OpenCoarrays)
33

4-
add_executable(register1 register1.f90)
5-
target_link_libraries(register1 OpenCoarrays)
4+
add_executable(register register.f90)
5+
target_link_libraries(register OpenCoarrays)
66

7-
add_executable(register2 register2.f90)
8-
target_link_libraries(register2 OpenCoarrays)
7+
add_executable(register_rename_me register_rename_me.f90)
8+
target_link_libraries(register_rename_me OpenCoarrays)
99

10-
add_executable(register3 register3.f90)
11-
target_link_libraries(register3 OpenCoarrays)
10+
add_executable(register_rename_me_too register_rename_me_too.f90)
11+
target_link_libraries(register_rename_me_too OpenCoarrays)
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
! Unit test for register procedure. Testing static coarrays.
1+
! Unit test for initializion of MPI by LIBCAF_MPI.
22
!
33
! Copyright (c) 2012-2014, Sourcery, Inc.
44
! All rights reserved.
@@ -24,38 +24,23 @@
2424
! ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2525
! (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
2626
! SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27-
28-
program register1
27+
!
28+
program initialize_mpi
29+
use mpi, only : MPI_COMM_SIZE,MPI_COMM_WORLD
2930
implicit none
30-
include 'mpif.h'
31-
integer :: np,ierr,me_next
32-
33-
np = -2
34-
np = num_images()
3531

36-
call image()
37-
38-
if(this_image() == 1) then
39-
call image(me_next)
40-
if(me_next == 2) then
41-
write(*,*) 'Test passed.'
42-
else
43-
write(*,*) 'Test failed.'
44-
end if
45-
endif
32+
! Set invalid default image number and number of ranks
33+
integer :: me=-1,np=-1,ierr
4634

47-
contains
35+
! Get image number
36+
me = this_image()
4837

49-
subroutine image(me_next)
50-
implicit none
51-
integer,intent(out),optional :: me_next
52-
integer,save :: me[*] = -1
53-
if(me == -1) then
54-
me = this_image()
55-
end if
56-
if(present(me_next) .and. me == 1) then
57-
me_next = me[2]
58-
end if
59-
end subroutine image
38+
! Get number of ranks (np)
39+
call MPI_COMM_SIZE(MPI_COMM_WORLD,np,ierr)
6040

61-
end program register1
41+
! Everybody verifies that they have a valid image number and rank
42+
if(me < 1 .or. np < 1) error stop "Test failed."
43+
44+
! Image 1 reports test success
45+
if(me==1) print *,"Test passed."
46+
end program

src/tests/unit/init_register/initmpi1.f90 src/tests/unit/init_register/register.f90

+14-12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
! Unit test for init procedure. MPI is initialized by LIBCAF_MPI.
1+
! Unit test for register procedure. Testing static coarrays.
22
!
33
! Copyright (c) 2012-2014, Sourcery, Inc.
44
! All rights reserved.
@@ -25,20 +25,22 @@
2525
! (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
2626
! SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2727

28-
program initmpi1
28+
program register
2929
implicit none
30-
include 'mpif.h'
30+
integer, parameter :: invalid_image_number=-1
31+
integer, save :: me[*] = invalid_image_number
32+
33+
if (num_images()<2) error stop "This test requires at least 2 images."
3134

32-
integer :: me,np,ierr
33-
me = -1
34-
np = -2
3535
me = this_image()
36-
call MPI_COMM_SIZE(MPI_COMM_WORLD,np,ierr)
3736

38-
if(me /= -1 .and. np /= -2) then
39-
if(me==1) write(*,*) 'Test passed.'
40-
else
41-
write(*,*) 'Test failed.'
37+
if(me == 1) then
38+
block
39+
integer :: image2number
40+
image2number = me[2]
41+
if (image2number/= 2) error stop "Test failed."
42+
print *,"Test passed."
43+
end block
4244
end if
4345

44-
end program initmpi1
46+
end program

src/tests/unit/init_register/register2.f90 src/tests/unit/init_register/register_rename_me.f90

+5-10
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,17 @@
2727

2828
program register2
2929
implicit none
30-
include 'mpif.h'
31-
integer :: np,ierr
32-
integer,dimension(10),codimension[*] :: arr1
30+
integer, parameter :: array_size=10
31+
integer :: np, arr1(array_size)[*]
3332

34-
np = -2
3533
np = num_images()
3634
arr1 = this_image()
3735

3836
sync all
3937

4038
if(this_image() == 1) then
41-
if(size(arr1) == 10) then
42-
write(*,*) 'Test passed.'
43-
else
44-
write(*,*) 'Test failed.'
45-
end if
39+
if(size(arr1) /= array_size) error stop 'Test failed.'
40+
print *,'Test passed.'
4641
endif
4742

48-
end program register2
43+
end program

src/tests/unit/init_register/register3.f90 src/tests/unit/init_register/register_rename_me_too.f90

+15-26
Original file line numberDiff line numberDiff line change
@@ -27,34 +27,23 @@
2727

2828
program register3
2929
implicit none
30-
include 'mpif.h'
31-
integer :: np,ierr
32-
integer,allocatable :: arr1(:)[:]
33-
logical :: res = .true.
30+
integer, parameter :: invalid_rank=-2
31+
integer :: np=invalid_rank,array_size=10
32+
integer,allocatable :: array(:)[:]
3433

35-
np = -2
3634
np = num_images()
35+
allocate(array(array_size)[*],source=this_image())
3736

38-
allocate(arr1(10)[*])
37+
block
38+
logical :: res = .true.
39+
if(this_image() == 1) then
40+
if(size(array) /= array_size) error stop "Test failed."
41+
endif
3942

40-
arr1 = this_image()
41-
42-
if(this_image() == 1) then
43-
if(size(arr1) == 10) then
44-
res = res .and. .true.
45-
else
46-
res = res .and. .false.
47-
end if
48-
endif
49-
50-
deallocate(arr1)
51-
52-
if(this_image() == 1) then
53-
if(.not.allocated(arr1) .and. res.eqv..true.) then
54-
write(*,*) 'Test passed.'
55-
else
56-
write(*,*) 'Test failed.'
57-
end if
58-
end if
43+
deallocate(array)
44+
45+
if(allocated(array)) error stop "Test failed."
46+
if(this_image() == 1) print *,"Test passed."
47+
end block
5948

60-
end program register3
49+
end program

0 commit comments

Comments
 (0)