Skip to content

Commit 1a3295a

Browse files
authored
Merge pull request #5 from yanagibashi/pr/add-tests-for-missing-methods
Add tests for missing methods
2 parents 694d0c0 + 1790879 commit 1a3295a

File tree

8 files changed

+519
-2
lines changed

8 files changed

+519
-2
lines changed

environment/CommErrhandler.java

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/*
2+
*
3+
* File: FileAll.java Author: Fujitsu
4+
*
5+
*/
6+
7+
import mpi.Errhandler;
8+
import mpi.MPI;
9+
import mpi.MPIException;
10+
11+
class CommErrhandler{
12+
private final static boolean DEBUG = false;
13+
14+
public static void main (String[] args) throws MPIException {
15+
16+
MPI.Init(args);
17+
int myrank = MPI.COMM_WORLD.getRank();
18+
int size = MPI.COMM_WORLD.getSize();
19+
20+
if (myrank == 0) {
21+
System.out.println("This program tests call callErrhandler() and generates error messages.\n" +
22+
"ERRORS ARE EXPECTED AND NORMAL IN THIS PROGRAM!!");
23+
}
24+
25+
/* save default error handler (MPI.ERRORS_ARE_FATAL) */
26+
Errhandler errhandler = MPI.COMM_WORLD.getErrhandler();
27+
if ((myrank == 0) && DEBUG) {
28+
System.out.println("myrank " + myrank + " of " + size +
29+
" comm.getErrhandler_default() end");
30+
}
31+
/* set MPI.ERRORS_RETURN */
32+
MPI.COMM_WORLD.setErrhandler(MPI.ERRORS_RETURN);
33+
if ((myrank == 0) && DEBUG) {
34+
System.out.println("myrank " + myrank + " of " + size +
35+
" comm.setErrhandler(MPI.ERRORS_RETURN) end");
36+
}
37+
/* not abend (MPI.ERRORS_RETURN) */
38+
MPI.COMM_WORLD.callErrhandler(MPI.ERR_COMM);
39+
if ((myrank == 0) && DEBUG) {
40+
System.out.println("myrank " + myrank + " of " + size +
41+
" comm.callErrhandler_1() end");
42+
}
43+
44+
MPI.COMM_WORLD.barrier();
45+
46+
/* restore default error handler (MPI.ERRORS_ARE_FATAL) */
47+
MPI.COMM_WORLD.setErrhandler(errhandler);
48+
if ((myrank == 0) && DEBUG) {
49+
System.out.println("myrank " + myrank + " of " + size +
50+
" comm.setErrhandler(restore) end");
51+
}
52+
53+
/* abend (MPI.ERRORS_ARE_FATAL) */
54+
MPI.COMM_WORLD.callErrhandler(MPI.ERR_COMM);
55+
if (myrank == 0) {
56+
OmpitestError.ompitestError(OmpitestError.getFileName(),
57+
OmpitestError.getLineNumber(),
58+
"Error: The behavior of callErrhandler() is abnormal.");
59+
}
60+
61+
MPI.COMM_WORLD.barrier();
62+
63+
MPI.Finalize();
64+
65+
if (myrank == 0) {
66+
System.out.println("myrank " + myrank + " of " + size +
67+
" MPI.Finalize() end");
68+
}
69+
}
70+
}

environment/FileErrhandler.java

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/*
2+
*
3+
* File: FileAll.java Author: Fujitsu
4+
*
5+
*/
6+
7+
import mpi.Errhandler;
8+
import mpi.File;
9+
import mpi.MPI;
10+
import mpi.MPIException;
11+
12+
class FileErrhandler{
13+
private final static boolean DEBUG = false;
14+
15+
public static void main (String[] args) throws MPIException {
16+
MPI.Init(args);
17+
int myrank = MPI.COMM_WORLD.getRank();
18+
int size = MPI.COMM_WORLD.getSize();
19+
20+
21+
String filename = "ompi_testfile." + myrank;
22+
File file = new File(MPI.COMM_SELF, filename,
23+
MPI.MODE_WRONLY | MPI.MODE_CREATE);
24+
25+
if(myrank == 0) {
26+
System.out.println("This program tests call callErrhandler() and generates error messages.\n" +
27+
"ERRORS ARE EXPECTED AND NORMAL IN THIS PROGRAM!!");
28+
}
29+
30+
/* set MPI.ERRORS_ARE_FATAL */
31+
file.setErrhandler(MPI.ERRORS_ARE_FATAL);
32+
if ((myrank == 0) && DEBUG) {
33+
System.out.println("myrank " + myrank + " of " + size +
34+
" file.setErrhandler(MPI.ERRORS_ARE_FATAL) end");
35+
}
36+
37+
/* save error handler (MPI.ERRORS_ARE_FATAL) */
38+
Errhandler errhandler = file.getErrhandler();
39+
if ((myrank == 0) && DEBUG) {
40+
System.out.println("myrank " + myrank + " of " + size +
41+
" file.getErrhandler_fatal(MPI.ERRORS_ARE_FATAL) end");
42+
}
43+
/* set MPI.ERRORS_RETURN */
44+
file.setErrhandler(MPI.ERRORS_RETURN);
45+
if ((myrank == 0) && DEBUG) {
46+
System.out.println("myrank " + myrank + " of " + size +
47+
" file.setErrhandler(MPI.ERRORS_RETURN) end");
48+
}
49+
/* not abend (MPI.ERRORS_RETURN) */
50+
file.callErrhandler(MPI.ERR_FILE);
51+
if ((myrank == 0) && DEBUG) {
52+
System.out.println("myrank " + myrank + " of " + size +
53+
" file.callErrhandler_1() end");
54+
}
55+
56+
MPI.COMM_WORLD.barrier();
57+
58+
/* restore error handler (MPI.ERRORS_ARE_FATAL) */
59+
file.setErrhandler(errhandler);
60+
if ((myrank == 0) && DEBUG) {
61+
System.out.println("myrank " + myrank + " of " + size +
62+
" file.setErrhandler(restore) end");
63+
}
64+
65+
/* abend (MPI.ERRORS_ARE_FATAL) */
66+
file.callErrhandler(MPI.ERR_FILE);
67+
if (myrank == 0) {
68+
OmpitestError.ompitestError(OmpitestError.getFileName(),
69+
OmpitestError.getLineNumber(),
70+
"Error: The behavior of callErrhandler() is abnormal.");
71+
}
72+
73+
MPI.COMM_WORLD.barrier();
74+
File.delete(filename);
75+
MPI.Finalize();
76+
77+
if ((myrank == 0) && DEBUG) {
78+
System.out.println("myrank " + myrank + " of " + size +
79+
" MPI.Finalize() end");
80+
}
81+
}
82+
}
83+

environment/WinErrhandler.java

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/*
2+
*
3+
* File: FileAll.java Author: Fujitsu
4+
*
5+
*/
6+
7+
import java.nio.IntBuffer;
8+
9+
import mpi.Errhandler;
10+
import mpi.MPI;
11+
import mpi.MPIException;
12+
import mpi.Win;
13+
14+
class WinErrhandler{
15+
private final static boolean DEBUG = false;
16+
17+
public static void main (String[] args) throws MPIException {
18+
19+
MPI.Init(args);
20+
int myrank = MPI.COMM_WORLD.getRank();
21+
int size = MPI.COMM_WORLD.getSize();
22+
23+
if (myrank == 0) {
24+
System.out.println("This program tests call callErrhandler() and generates error messages.\n" +
25+
"ERRORS ARE EXPECTED AND NORMAL IN THIS PROGRAM!!");
26+
}
27+
28+
IntBuffer buffer = MPI.newIntBuffer(1);
29+
Win win = new Win(buffer, 1, 1, MPI.INFO_NULL, MPI.COMM_WORLD);
30+
31+
/* save default error handler (MPI.ERRORS_ARE_FATAL) */
32+
Errhandler errhandler = win.getErrhandler();
33+
if ((myrank == 0) && DEBUG) {
34+
System.out.println("myrank " + myrank + " of " + size +
35+
" win.getErrhandler_default() end");
36+
}
37+
/* set MPI.ERRORS_RETURN */
38+
win.setErrhandler(MPI.ERRORS_RETURN);
39+
if ((myrank == 0) && DEBUG) {
40+
System.out.println("myrank " + myrank + " of " + size +
41+
" win.setErrhandler(MPI.ERRORS_RETURN) end");
42+
}
43+
/* not abend (MPI.ERRORS_RETURN) */
44+
win.callErrhandler(MPI.ERR_WIN);
45+
if ((myrank == 0) && DEBUG) {
46+
System.out.println("myrank " + myrank + " of " + size +
47+
" win.callErrhandler_1() end");
48+
}
49+
50+
MPI.COMM_WORLD.barrier();
51+
52+
/* restore default error handler (MPI.ERRORS_ARE_FATAL) */
53+
win.setErrhandler(errhandler);
54+
if ((myrank == 0) && DEBUG) {
55+
System.out.println("myrank " + myrank + " of " + size +
56+
" win.setErrhandler(restore) end");
57+
}
58+
59+
/* abend (MPI.ERRORS_ARE_FATAL) */
60+
win.callErrhandler(MPI.ERR_WIN);
61+
if (myrank == 0) {
62+
OmpitestError.ompitestError(OmpitestError.getFileName(),
63+
OmpitestError.getLineNumber(),
64+
"Error: The behavior of callErrhandler() is abnormal.");
65+
}
66+
67+
MPI.COMM_WORLD.barrier();
68+
69+
MPI.Finalize();
70+
71+
if (myrank == 0) {
72+
System.out.println("myrank " + myrank + " of " + size +
73+
" MPI.Finalize() end");
74+
}
75+
}
76+
}

environment/make_environment

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ IsThrMain \
3333
Pcontrol \
3434
Procname \
3535
QueryThread \
36-
Wtime"
36+
Wtime \
37+
WinErrhandler \
38+
CommErrhandler \
39+
FileErrhandler"
3740

3841
NUM_PROC=$TWO_PROC
3942

io/FileAll.java

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
/*
2+
*
3+
* File: FileAll.java Author: Fujitsu
4+
*
5+
*/
6+
7+
import java.nio.IntBuffer;
8+
9+
import mpi.File;
10+
import mpi.MPI;
11+
import mpi.MPIException;
12+
import mpi.Request;
13+
14+
public class FileAll
15+
{
16+
private static final int ITEMS = 50;
17+
private static final int SIZEOF_INT = 4;
18+
private final static boolean DEBUG = false;
19+
20+
public static void main (String args[]) throws MPIException
21+
{
22+
int myrank, size;
23+
Request req1, req2;
24+
File file;
25+
26+
MPI.Init(args);
27+
myrank = MPI.COMM_WORLD.getRank();
28+
size = MPI.COMM_WORLD.getSize();
29+
30+
/* Do this on every node, because in a testing environment, we can't
31+
* assume a common filesystem
32+
*/
33+
String filename = "ompi_testfile_all";
34+
35+
/* iWriteAtAll */
36+
file = new File(MPI.COMM_WORLD, filename,
37+
MPI.MODE_WRONLY | MPI.MODE_CREATE);
38+
39+
IntBuffer buffer = MPI.newIntBuffer(ITEMS);
40+
for (int i = 0; i < ITEMS; ++i) {
41+
buffer.put(i, i*100*(myrank+1)); // myrank=0: 0,100,200,300..., myrank=1: 0,200,400,600..., myrank=2: 0,300,600,900...
42+
}
43+
file.setView(myrank * ITEMS * SIZEOF_INT, MPI.INT, MPI.INT, "native");
44+
req1 = file.iWriteAll(buffer, ITEMS, MPI.INT);
45+
req1.waitFor();
46+
47+
if ((myrank == 0) && DEBUG) {
48+
System.out.println("myrank " + myrank + " of " + size +
49+
" file.iWriteAll() end");
50+
}
51+
52+
file.close();
53+
54+
/* iReadAtAll */
55+
file = new File(MPI.COMM_WORLD, filename, MPI.MODE_RDONLY);
56+
file.setView(myrank * ITEMS * SIZEOF_INT, MPI.INT, MPI.INT, "native");
57+
req2 = file.iReadAll(buffer, ITEMS, MPI.INT);
58+
req2.waitFor();
59+
60+
/* printing read data */
61+
for (int i = 0; i < ITEMS; ++i) {
62+
if (buffer.get(i) != i*100*(myrank+1)){
63+
OmpitestError.ompitestError(OmpitestError.getFileName(),
64+
OmpitestError.getLineNumber(),
65+
"myrank " + myrank + " of " + size +
66+
" data incorrect, read data=" + buffer.get(i) +
67+
", expected data=" + i*100*(myrank+1));
68+
}
69+
}
70+
71+
if ((myrank == 0) && DEBUG) {
72+
System.out.println("myrank " + myrank + " of " + size +
73+
" file.iReadAll() end");
74+
}
75+
76+
file.close();
77+
78+
/* Delete the testfile.
79+
* original file: unlink(filename);
80+
* The second parameter is an info object.
81+
*/
82+
MPI.COMM_WORLD.barrier();
83+
if(myrank == 0) {
84+
File.delete(filename);
85+
}
86+
MPI.Finalize();
87+
88+
if ((myrank == 0) && DEBUG) {
89+
System.out.println("myrank " + myrank + " of " + size +
90+
" MPI.Finalize() end");
91+
}
92+
93+
}
94+
}

0 commit comments

Comments
 (0)