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 #include <time.h>
13 
14 #include "ior.h"
15 #include "aiori.h"
16 #include "utilities.h"
17 
18 
19 /************************** O P T I O N S *****************************/
20 typedef struct {
21  uint64_t delay_creates;
22  uint64_t delay_xfer;
25 
26 static char * current = (char*) 1;
27 
28 static option_help * DUMMY_options(void ** init_backend_options, void * init_values){
29  dummy_options_t * o = malloc(sizeof(dummy_options_t));
30  if (init_values != NULL){
31  memcpy(o, init_values, sizeof(dummy_options_t));
32  }else{
33  memset(o, 0, sizeof(dummy_options_t));
34  }
35 
36  *init_backend_options = o;
37 
38  option_help h [] = {
39  {0, "dummy.delay-create", "Delay per create in usec", OPTION_OPTIONAL_ARGUMENT, 'l', & o->delay_creates},
40  {0, "dummy.delay-xfer", "Delay per xfer in usec", OPTION_OPTIONAL_ARGUMENT, 'l', & o->delay_xfer},
41  {0, "dummy.delay-only-rank0", "Delay only Rank0", OPTION_FLAG, 'd', & o->delay_rank_0_only},
43  };
44  option_help * help = malloc(sizeof(h));
45  memcpy(help, h, sizeof(h));
46  return help;
47 }
48 
49 static void *DUMMY_Create(char *testFileName, IOR_param_t * param)
50 {
51  if(verbose > 4){
52  fprintf(out_logfile, "DUMMY create: %s = %p\n", testFileName, current);
53  }
55  if (o->delay_creates){
56  if (! o->delay_rank_0_only || (o->delay_rank_0_only && rank == 0)){
57  struct timespec wait = { o->delay_creates / 1000 / 1000, 1000l * (o->delay_creates % 1000000)};
58  nanosleep( & wait, NULL);
59  }
60  }
61  return current++;
62 }
63 
64 static void *DUMMY_Open(char *testFileName, IOR_param_t * param)
65 {
66  if(verbose > 4){
67  fprintf(out_logfile, "DUMMY open: %s = %p\n", testFileName, current);
68  }
69  return current++;
70 }
71 
72 static void DUMMY_Fsync(void *fd, IOR_param_t * param)
73 {
74  if(verbose > 4){
75  fprintf(out_logfile, "DUMMY fsync %p\n", fd);
76  }
77 }
78 
79 
81 {
82 }
83 
84 static void DUMMY_Close(void *fd, IOR_param_t * param)
85 {
86  if(verbose > 4){
87  fprintf(out_logfile, "DUMMY close %p\n", fd);
88  }
89 }
90 
91 static void DUMMY_Delete(char *testFileName, IOR_param_t * param)
92 {
93  if(verbose > 4){
94  fprintf(out_logfile, "DUMMY delete: %s\n", testFileName);
95  }
96 }
97 
98 static char * DUMMY_getVersion()
99 {
100  return "0.5";
101 }
102 
103 static IOR_offset_t DUMMY_GetFileSize(IOR_param_t * test, MPI_Comm testComm, char *testFileName)
104 {
105  if(verbose > 4){
106  fprintf(out_logfile, "DUMMY getFileSize: %s\n", testFileName);
107  }
108  return 0;
109 }
110 
111 static IOR_offset_t DUMMY_Xfer(int access, void *file, IOR_size_t * buffer, IOR_offset_t length, IOR_param_t * param){
112  if(verbose > 4){
113  fprintf(out_logfile, "DUMMY xfer: %p\n", file);
114  }
116  if (o->delay_xfer){
117  if (! o->delay_rank_0_only || (o->delay_rank_0_only && rank == 0)){
118  struct timespec wait = {o->delay_xfer / 1000 / 1000, 1000l * (o->delay_xfer % 1000000)};
119  nanosleep( & wait, NULL);
120  }
121  }
122  return length;
123 }
124 
125 static int DUMMY_statfs (const char * path, ior_aiori_statfs_t * stat, IOR_param_t * param){
126  stat->f_bsize = 1;
127  stat->f_blocks = 1;
128  stat->f_bfree = 1;
129  stat->f_bavail = 1;
130  stat->f_files = 1;
131  stat->f_ffree = 1;
132  return 0;
133 }
134 
135 static int DUMMY_mkdir (const char *path, mode_t mode, IOR_param_t * param){
136  return 0;
137 }
138 
139 static int DUMMY_rmdir (const char *path, IOR_param_t * param){
140  return 0;
141 }
142 
143 static int DUMMY_access (const char *path, int mode, IOR_param_t * param){
144  return 0;
145 }
146 
147 static int DUMMY_stat (const char *path, struct stat *buf, IOR_param_t * param){
148  return 0;
149 }
150 
151 static int DUMMY_check_params(IOR_param_t * test){
152  return 1;
153 }
154 
156  .name = "DUMMY",
157  .name_legacy = NULL,
158  .create = DUMMY_Create,
159  .open = DUMMY_Open,
160  .xfer = DUMMY_Xfer,
161  .close = DUMMY_Close,
162  .delete = DUMMY_Delete,
163  .get_version = DUMMY_getVersion,
164  .fsync = DUMMY_Fsync,
165  .get_file_size = DUMMY_GetFileSize,
166  .statfs = DUMMY_statfs,
167  .mkdir = DUMMY_mkdir,
168  .rmdir = DUMMY_rmdir,
169  .access = DUMMY_access,
170  .stat = DUMMY_stat,
171  .initialize = NULL,
172  .finalize = NULL,
173  .get_options = DUMMY_options,
174  .enable_mdtest = true,
175  .check_params = DUMMY_check_params,
176  .sync = DUMMY_Sync,
177  .enable_mdtest = true
178 };
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:111
uint64_t delay_xfer
Definition: aiori-DUMMY.c:22
uint64_t f_blocks
Definition: aiori.h:59
static IOR_offset_t DUMMY_GetFileSize(IOR_param_t *test, MPI_Comm testComm, char *testFileName)
Definition: aiori-DUMMY.c:103
uint64_t f_bfree
Definition: aiori.h:60
#define LAST_OPTION
Definition: option.h:37
static void DUMMY_Sync(IOR_param_t *param)
Definition: aiori-DUMMY.c:80
uint64_t f_ffree
Definition: aiori.h:63
static void DUMMY_Fsync(void *fd, IOR_param_t *param)
Definition: aiori-DUMMY.c:72
static void DUMMY_Close(void *fd, IOR_param_t *param)
Definition: aiori-DUMMY.c:84
ior_aiori_t dummy_aiori
Definition: aiori-DUMMY.c:155
void * backend_options
Definition: ior.h:158
uint64_t f_files
Definition: aiori.h:62
MPI_Comm testComm
Definition: utilities.c:60
uint64_t f_bsize
Definition: aiori.h:58
static int DUMMY_statfs(const char *path, ior_aiori_statfs_t *stat, IOR_param_t *param)
Definition: aiori-DUMMY.c:125
static option_help * DUMMY_options(void **init_backend_options, void *init_values)
Definition: aiori-DUMMY.c:28
static char * current
Definition: aiori-DUMMY.c:26
static IOR_param_t param
Definition: mdtest.c:170
uint64_t delay_creates
Definition: aiori-DUMMY.c:21
static int DUMMY_access(const char *path, int mode, IOR_param_t *param)
Definition: aiori-DUMMY.c:143
static int DUMMY_stat(const char *path, struct stat *buf, IOR_param_t *param)
Definition: aiori-DUMMY.c:147
static int DUMMY_check_params(IOR_param_t *test)
Definition: aiori-DUMMY.c:151
long long int IOR_size_t
Definition: iordef.h:123
uint64_t f_bavail
Definition: aiori.h:61
static void DUMMY_Delete(char *testFileName, IOR_param_t *param)
Definition: aiori-DUMMY.c:91
static int DUMMY_rmdir(const char *path, IOR_param_t *param)
Definition: aiori-DUMMY.c:139
static char * DUMMY_getVersion()
Definition: aiori-DUMMY.c:98
int verbose
Definition: utilities.c:59
char * name
Definition: aiori.h:68
FILE * out_logfile
Definition: utilities.c:62
long long int IOR_offset_t
Definition: iordef.h:122
int rank
Definition: utilities.c:57
static struct cephfs_options o
Definition: aiori-CEPHFS.c:48
static void * DUMMY_Create(char *testFileName, IOR_param_t *param)
Definition: aiori-DUMMY.c:49
static int DUMMY_mkdir(const char *path, mode_t mode, IOR_param_t *param)
Definition: aiori-DUMMY.c:135
#define NULL
Definition: iordef.h:79
static void * DUMMY_Open(char *testFileName, IOR_param_t *param)
Definition: aiori-DUMMY.c:64