fixup "libmultipath: merge hwentries inside a conf file"
[multipath-tools/.git] / tests / test-lib.h
1 #ifndef __LIB_H
2 #define __LIB_H
3
4 extern const int default_mask;
5 extern const char default_devnode[];
6 extern const char default_wwid[];
7 extern const char default_wwid_1[];
8
9 enum {
10         BL_BY_DEVNODE   = (1 << 0),
11         BL_BY_DEVICE    = (1 << 1),
12         BL_BY_WWID      = (1 << 2),
13         BL_BY_PROPERTY  = (1 << 3),
14         BL_MASK = BL_BY_DEVNODE|BL_BY_DEVICE|BL_BY_WWID|BL_BY_PROPERTY,
15         NEED_SELECT_PRIO = (1 << 8),
16         NEED_FD         = (1 << 9),
17         USE_GETUID      = (1 << 10)
18 };
19
20 struct mocked_path {
21         const char *vendor;
22         const char *product;
23         const char *rev;
24         const char *wwid;
25         const char *devnode;
26         unsigned int flags;
27 };
28
29 struct mocked_path *fill_mocked_path(struct mocked_path *mp,
30                                      const char *vendor,
31                                      const char *product,
32                                      const char *rev,
33                                      const char *wwid,
34                                      const char *devnode,
35                                      unsigned int flags);
36
37 struct mocked_path *mocked_path_from_path(struct mocked_path *mp,
38                                           const struct path *pp);
39
40 void mock_pathinfo(int mask, const struct mocked_path *mp);
41 void mock_store_pathinfo(int mask, const struct mocked_path *mp);
42 struct path *__mock_path(vector pathvec,
43                          const char *vnd, const char *prd,
44                          const char *rev, const char *wwid,
45                          const char *dev,
46                          unsigned int flags, int mask);
47
48 #define mock_path(v, p) \
49         __mock_path(hwt->vecs->pathvec, (v), (p), "0", NULL, NULL,      \
50                     0, default_mask)
51 #define mock_path_flags(v, p, f) \
52         __mock_path(hwt->vecs->pathvec, (v), (p), "0", NULL, NULL, \
53                     (f), default_mask)
54 #define mock_path_blacklisted(v, p) \
55         __mock_path(hwt->vecs->pathvec, (v), (p), "0", NULL, NULL, \
56                     BL_BY_DEVICE, default_mask)
57 #define mock_path_wwid(v, p, w) \
58         __mock_path(hwt->vecs->pathvec, (v), (p), "0", (w), NULL,       \
59                     0, default_mask)
60 #define mock_path_wwid_flags(v, p, w, f) \
61         __mock_path(hwt->vecs->pathvec, (v), (p), "0", (w),             \
62                     NULL, (f), default_mask)
63
64 struct multipath *__mock_multipath(struct vectors *vecs, struct path *pp);
65 #define mock_multipath(pp) __mock_multipath(hwt->vecs, (pp))
66
67 #endif