diff --git a/.travis.yml b/.travis.yml index 5ea775a..2bdf8ae 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: cpp install: - - sudo apt-get install g++ cmake gfortran libblas-dev liblapack-dev + - sudo apt-get install g++ cmake gfortran libblas-dev liblapack-dev openmpi-bin libopenmpi-dev - sudo pip install pytest pep8 script: - pep8 --ignore=E501 update.py diff --git a/test/fc_mpi/cmake/autocmake.cfg b/test/fc_mpi/cmake/autocmake.cfg new file mode 100644 index 0000000..142043a --- /dev/null +++ b/test/fc_mpi/cmake/autocmake.cfg @@ -0,0 +1,17 @@ +[project] +name: example + +[fc] +source: ../../../modules/fc.cmake + +[mpi] +source: ../../../modules/mpi.cmake + +[int64] +source: ../../../modules/int64.cmake + +[default_build_paths] +source: ../../../modules/default_build_paths.cmake + +[src] +source: ../../../modules/src.cmake diff --git a/test/fc_mpi/src/CMakeLists.txt b/test/fc_mpi/src/CMakeLists.txt new file mode 100644 index 0000000..00b794f --- /dev/null +++ b/test/fc_mpi/src/CMakeLists.txt @@ -0,0 +1,6 @@ +if (MPI_FOUND) + add_executable(example example.f90) +else() + message(FATAL "MPI not found!") +endif() + diff --git a/test/fc_mpi/src/example.f90 b/test/fc_mpi/src/example.f90 new file mode 100644 index 0000000..0c855ee --- /dev/null +++ b/test/fc_mpi/src/example.f90 @@ -0,0 +1,16 @@ +program example + use mpi + implicit none + integer :: ierr, rank, size + logical :: test_ok + call MPI_INIT(ierr) + call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr) + call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr) + call MPI_FINALIZE(ierr) + test_ok=(size==2.and.(rank==0.or.rank==1)) + if (test_ok) then + if (rank == 0) print *,'Test OK!' + else + stop "test fc_mpi failed!" + endif +end program diff --git a/test/test.py b/test/test.py index 829c27f..7e480f5 100644 --- a/test/test.py +++ b/test/test.py @@ -72,7 +72,7 @@ def exe(command): # ------------------------------------------------------------------------------ -def configure_build_and_exe(name, setup_command): +def configure_build_and_exe(name, setup_command, launcher=None): stamp = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d-%H-%M-%S') @@ -97,10 +97,16 @@ def configure_build_and_exe(name, setup_command): if sys.platform == 'win32': stdout, stderr = exe('mingw32-make') - stdout, stderr = exe('bin\\\example.exe') + if (launcher): + stdout, stderr = exe(launcher + ' bin\\\example.exe') + else: + stdout, stderr = exe('bin\\\example.exe') else: stdout, stderr = exe('make') - stdout, stderr = exe('./bin/example') + if (launcher): + stdout, stderr = exe(launcher + ' ./bin/example') + else: + stdout, stderr = exe('./bin/example') return stdout, stderr @@ -142,6 +148,14 @@ def test_fc_int64(): stdout, stderr = configure_build_and_exe('fc_int64', 'python setup.py --fc=gfortran --int64') assert 'test_int64 ok' in stdout + +def test_fc_mpi(): + if sys.platform != 'win32': + stdout, stderr = configure_build_and_exe('fc_mpi', 'python setup.py --mpi --fc=mpif90', 'mpirun -np 2') + assert 'Test OK!' in stdout + else: + pass + # ------------------------------------------------------------------------------