IOR
aiori-DUMMY.c
Go to the documentation of this file.
1 /*
2 * Dummy implementation doesn't do anything besides waiting
3 */
4 
5 #ifdef HAVE_CONFIG_H
6 # include "config.h"
7 #endif
8 
9 #include <stdio.h>
10 #include <stdlib.h>
11 #include <unistd.h>
12 
13 #include "ior.h"
14 #include "aiori.h"
15 #include "utilities.h"
16 
17 
18 /************************** O P T I O N S *****************************/
20  uint64_t delay_creates;
21  uint64_t delay_xfer;
23 };
24 
25 static struct dummy_options o = {
26  .delay_creates = 0,
27  .delay_xfer = 0,
28  .delay_rank_0_only = 0,
29 };
30 
31 static option_help options [] = {
32  {0, "dummy.delay-create", "Delay per create in usec", OPTION_OPTIONAL_ARGUMENT, 'l', & o.delay_creates},
33  {0, "dummy.delay-xfer", "Delay per xfer in usec", OPTION_OPTIONAL_ARGUMENT, 'l', & o.delay_xfer},
34  {0, "dummy.delay-only-rank0", "Delay only Rank0", OPTION_FLAG, 'd', & o.delay_rank_0_only},
36 };
37 
38 static char * current = (char*) 1;
39 
41  return options;
42 }
43 
44 static void *DUMMY_Create(char *testFileName, IOR_param_t * param)
45 {
46  if(verbose > 4){
47  fprintf(out_logfile, "DUMMY create: %s = %p\n", testFileName, current);
48  }
49  if (o.delay_creates){
50  if (! o.delay_rank_0_only || (o.delay_rank_0_only && rank == 0)){
51  usleep(o.delay_creates);
52  }
53  }
54  return current++;
55 }
56 
57 static void *DUMMY_Open(char *testFileName, IOR_param_t * param)
58 {
59  if(verbose > 4){
60  fprintf(out_logfile, "DUMMY open: %s = %p\n", testFileName, current);
61  }
62  return current++;
63 }
64 
65 static void DUMMY_Fsync(void *fd, IOR_param_t * param)
66 {
67  if(verbose > 4){
68  fprintf(out_logfile, "DUMMY fsync %p\n", fd);
69  }
70 }
71 
72 static void DUMMY_Close(void *fd, IOR_param_t * param)
73 {
74  if(verbose > 4){
75  fprintf(out_logfile, "DUMMY close %p\n", fd);
76  }
77 }
78 
79 static void DUMMY_Delete(char *testFileName, IOR_param_t * param)
80 {
81  if(verbose > 4){
82  fprintf(out_logfile, "DUMMY delete: %s\n", testFileName);
83  }
84 }
85 
86 static char * DUMMY_getVersion()
87 {
88  return "0.5";
89 }
90 
91 static IOR_offset_t DUMMY_GetFileSize(IOR_param_t * test, MPI_Comm testComm, char *testFileName)
92 {
93  if(verbose > 4){
94  fprintf(out_logfile, "DUMMY getFileSize: %s\n", testFileName);
95  }
96  return 0;
97 }
98 
99 static IOR_offset_t DUMMY_Xfer(int access, void *file, IOR_size_t * buffer, IOR_offset_t length, IOR_param_t * param){
100  if(verbose > 4){
101  fprintf(out_logfile, "DUMMY xfer: %p\n", file);
102  }
103  if (o.delay_xfer){
104  if (! o.delay_rank_0_only || (o.delay_rank_0_only && rank == 0)){
105  usleep(o.delay_xfer);
106  }
107  }
108  return length;
109 }
110 
111 static int DUMMY_statfs (const char * path, ior_aiori_statfs_t * stat, IOR_param_t * param){
112  stat->f_bsize = 1;
113  stat->f_blocks = 1;
114  stat->f_bfree = 1;
115  stat->f_bavail = 1;
116  stat->f_files = 1;
117  stat->f_ffree = 1;
118  return 0;
119 }
120 
121 static int DUMMY_mkdir (const char *path, mode_t mode, IOR_param_t * param){
122  return 0;
123 }
124 
125 static int DUMMY_rmdir (const char *path, IOR_param_t * param){
126  return 0;
127 }
128 
129 static int DUMMY_access (const char *path, int mode, IOR_param_t * param){
130  return 0;
131 }
132 
133 static int DUMMY_stat (const char *path, struct stat *buf, IOR_param_t * param){
134  return 0;
135 }
136 
138  "DUMMY",
139  DUMMY_Create,
140  DUMMY_Open,
141  DUMMY_Xfer,
142  DUMMY_Close,
143  DUMMY_Delete,
145  DUMMY_Fsync,
147  DUMMY_statfs,
148  DUMMY_mkdir,
149  DUMMY_rmdir,
150  DUMMY_access,
151  DUMMY_stat,
152  NULL,
153  NULL,
155 };
static IOR_offset_t DUMMY_Xfer(int access, void *file, IOR_size_t *buffer, IOR_offset_t length, IOR_param_t *param)
Definition: aiori-DUMMY.c:99
uint64_t f_blocks
Definition: aiori.h:58
static IOR_offset_t DUMMY_GetFileSize(IOR_param_t *test, MPI_Comm testComm, char *testFileName)
Definition: aiori-DUMMY.c:91
uint64_t f_bfree
Definition: aiori.h:59
#define LAST_OPTION
Definition: option.h:36
int delay_rank_0_only
Definition: aiori-DUMMY.c:22
uint64_t f_ffree
Definition: aiori.h:62
static void DUMMY_Fsync(void *fd, IOR_param_t *param)
Definition: aiori-DUMMY.c:65
static void DUMMY_Close(void *fd, IOR_param_t *param)
Definition: aiori-DUMMY.c:72
ior_aiori_t dummy_aiori
Definition: aiori-DUMMY.c:137
uint64_t f_files
Definition: aiori.h:61
MPI_Comm testComm
Definition: utilities.c:61
uint64_t f_bsize
Definition: aiori.h:57
uint64_t delay_xfer
Definition: aiori-DUMMY.c:21
static int DUMMY_statfs(const char *path, ior_aiori_statfs_t *stat, IOR_param_t *param)
Definition: aiori-DUMMY.c:111
static char * current
Definition: aiori-DUMMY.c:38
static option_help options[]
Definition: aiori-DUMMY.c:31
uint64_t delay_creates
Definition: aiori-DUMMY.c:20
static IOR_param_t param
Definition: mdtest.c:153
static int DUMMY_access(const char *path, int mode, IOR_param_t *param)
Definition: aiori-DUMMY.c:129
static int DUMMY_stat(const char *path, struct stat *buf, IOR_param_t *param)
Definition: aiori-DUMMY.c:133
long long int IOR_size_t
Definition: iordef.h:124
uint64_t f_bavail
Definition: aiori.h:60
static void DUMMY_Delete(char *testFileName, IOR_param_t *param)
Definition: aiori-DUMMY.c:79
static int DUMMY_rmdir(const char *path, IOR_param_t *param)
Definition: aiori-DUMMY.c:125
static option_help * DUMMY_options()
Definition: aiori-DUMMY.c:40
static char * DUMMY_getVersion()
Definition: aiori-DUMMY.c:86
int verbose
Definition: utilities.c:60
FILE * out_logfile
Definition: utilities.c:63
long long int IOR_offset_t
Definition: iordef.h:123
int rank
Definition: utilities.c:57
static void * DUMMY_Create(char *testFileName, IOR_param_t *param)
Definition: aiori-DUMMY.c:44
static struct dummy_options o
Definition: aiori-DUMMY.c:25
static int DUMMY_mkdir(const char *path, mode_t mode, IOR_param_t *param)
Definition: aiori-DUMMY.c:121
#define NULL
Definition: iordef.h:79
static void * DUMMY_Open(char *testFileName, IOR_param_t *param)
Definition: aiori-DUMMY.c:57