rvm  1.11
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
test-vaulter-006.cc
Go to the documentation of this file.
1 #include "config.h"
2 
3 #include <iostream>
4 #include <fstream>
5 #include <iomanip>
6 #include <string>
7 #include <cassert>
8 
9 #include "error.h"
10 #include "fs.h"
11 #include "vaulter.h"
12 #include "test-vaulter-setup.h"
13 
14 #define ERR_OUT(e) std::cerr << e
15 // #define ERR_OUT(e)
16 
17 void test_vaulter(void)
18 {
19  char const * argv[256] = { 0 };
20  int argc = 0;
21  bool thrown = false;
22  subdirectory subdir;
23 
24  argv[argc++] = "<program>";
25  argv[argc++] = "--archive";
26  argv[argc++] = "--timestamp";
27  argv[argc++] = "2003-09-21";
28 
29  config.default_file("./test-vaulter.dir/file-2.conf");
30  try {
31  config.init(argc, argv);
32  logger.init();
33  vaulter.init();
34  vaulter.select();
36 
37  }
38  catch(error e) {
39  ERR_OUT(e);
40  thrown = true;
41  }
42  catch(...) {
44  assert(0);
45  }
46  assert(!thrown);
47  assert(vaulter.deleted_archives().size() == 1);
48  assert(vaulter.deleted_archives()[0] == "2006-06-20");
49 
50  subdir.path("./test-vaulter.dir/log.dir/log-3.dir");
51  assert(find(subdir.begin(),subdir.end(),"2006-06-20.log") == subdir.end());
52  assert(find(subdir.begin(),subdir.end(),"2006-06-20.report") != subdir.end());
53  assert(find(subdir.begin(),subdir.end(),"2006-06-21.relink") != subdir.end());
54  assert(find(subdir.begin(),subdir.end(),"2006-06-22.log") != subdir.end());
55  assert(find(subdir.begin(),subdir.end(),"2006-06-22.report") != subdir.end());
56  assert(find(subdir.begin(),subdir.end(),"2006-06-23.log") != subdir.end());
57  assert(find(subdir.begin(),subdir.end(),"2006-06-23.report") != subdir.end());
58 
59  config.clear();
60  logger.clear();
61  vaulter.clear();
62 
63  config.default_file("./test-vaulter.dir/file-2.conf");
64  try {
65  config.init(argc, argv);
66  logger.init();
67  vaulter.init();
68  vaulter.select();
70 
71  }
72  catch(error e) {
73  ERR_OUT(e);
74  thrown = true;
75  }
76  catch(...) {
78  assert(0);
79  }
80  assert(!thrown);
81  assert(vaulter.deleted_archives().size() == 1);
82  assert(vaulter.deleted_archives()[0] == "2006-06-21");
83 
84  subdir.path("./test-vaulter.dir/log.dir/log-3.dir");
85  assert(find(subdir.begin(),subdir.end(),"2006-06-20.log") == subdir.end());
86  assert(find(subdir.begin(),subdir.end(),"2006-06-20.report") != subdir.end());
87  assert(find(subdir.begin(),subdir.end(),"2006-06-21.relink") == subdir.end());
88  assert(find(subdir.begin(),subdir.end(),"2006-06-22.log") != subdir.end());
89  assert(find(subdir.begin(),subdir.end(),"2006-06-22.report") != subdir.end());
90  assert(find(subdir.begin(),subdir.end(),"2006-06-23.log") != subdir.end());
91  assert(find(subdir.begin(),subdir.end(),"2006-06-23.report") != subdir.end());
92 
93  config.clear();
94  logger.clear();
95  vaulter.clear();
96 
97  config.default_file("./test-vaulter.dir/file-3.conf");
98  try {
99  config.init(argc, argv);
100  logger.init();
101  vaulter.init();
102  vaulter.select();
104 
105  }
106  catch(error e) {
107  ERR_OUT(e);
108  thrown = true;
109  }
110  catch(...) {
112  assert(0);
113  }
114  assert(!thrown);
115  assert(vaulter.deleted_archives().size() == 1);
116  assert(vaulter.deleted_archives()[0] == "2006-06-22");
117 
118  subdir.path("./test-vaulter.dir/log.dir/log-3.dir");
119  assert(find(subdir.begin(),subdir.end(),"2006-06-20.log") == subdir.end());
120  assert(find(subdir.begin(),subdir.end(),"2006-06-20.report") != subdir.end());
121  assert(find(subdir.begin(),subdir.end(),"2006-06-21.relink") == subdir.end());
122  assert(find(subdir.begin(),subdir.end(),"2006-06-22.log") != subdir.end());
123  assert(find(subdir.begin(),subdir.end(),"2006-06-22.report") == subdir.end());
124  assert(find(subdir.begin(),subdir.end(),"2006-06-23.log") != subdir.end());
125  assert(find(subdir.begin(),subdir.end(),"2006-06-23.report") != subdir.end());
126 
127  config.clear();
128  logger.clear();
129  vaulter.clear();
130 
131  config.default_file("./test-vaulter.dir/file-4.conf");
132  try {
133  config.init(argc, argv);
134  logger.init();
135  vaulter.init();
136  vaulter.select();
138 
139  }
140  catch(error e) {
141  ERR_OUT(e);
142  thrown = true;
143  }
144  catch(...) {
146  assert(0);
147  }
148  assert(!thrown);
149  assert(vaulter.deleted_archives().size() == 1);
150  assert(vaulter.deleted_archives()[0] == "2006-06-23");
151 
152  subdir.path("./test-vaulter.dir/log.dir/log-3.dir");
153  assert(find(subdir.begin(),subdir.end(),"2006-06-20.log") == subdir.end());
154  assert(find(subdir.begin(),subdir.end(),"2006-06-20.report") != subdir.end());
155  assert(find(subdir.begin(),subdir.end(),"2006-06-21.relink") == subdir.end());
156  assert(find(subdir.begin(),subdir.end(),"2006-06-22.log") != subdir.end());
157  assert(find(subdir.begin(),subdir.end(),"2006-06-22.report") == subdir.end());
158  assert(find(subdir.begin(),subdir.end(),"2006-06-23.log") == subdir.end());
159  assert(find(subdir.begin(),subdir.end(),"2006-06-23.report") == subdir.end());
160 
161  config.clear();
162  logger.clear();
163  vaulter.clear();
164 
165  config.default_file("./test-vaulter.dir/file-4.conf");
166  try {
167  config.init(argc, argv);
168  logger.init();
169  vaulter.init();
170  vaulter.select();
172 
173  }
174  catch(error e) {
175  ERR_OUT(e);
176  thrown = true;
177  }
178  catch(...) {
180  assert(0);
181  }
182  assert(!thrown);
183  assert(vaulter.deleted_archives().size() == 1);
184  assert(vaulter.deleted_archives()[0] == "2006-06-24");
185 
186  subdir.path("./test-vaulter.dir/log.dir/log-3.dir");
187  assert(find(subdir.begin(),subdir.end(),"2006-06-20.log") == subdir.end());
188  assert(find(subdir.begin(),subdir.end(),"2006-06-20.report") != subdir.end());
189  assert(find(subdir.begin(),subdir.end(),"2006-06-21.relink") == subdir.end());
190  assert(find(subdir.begin(),subdir.end(),"2006-06-22.log") != subdir.end());
191  assert(find(subdir.begin(),subdir.end(),"2006-06-22.report") == subdir.end());
192  assert(find(subdir.begin(),subdir.end(),"2006-06-23.log") == subdir.end());
193  assert(find(subdir.begin(),subdir.end(),"2006-06-23.report") == subdir.end());
194 }
195 
196 int main(int argc, char const * argv[])
197 {
198  cleanup();
199  setup();
200  try {
201  test_vaulter();
202  }
203  catch(error e) {
204  std::cerr << e;
205  assert(0);
206  }
207  catch(...) {
208  std::cerr << err_unknown;
209  assert(0);
210  }
211  cleanup();
212  return(0);
213 }
214 
void init(int argc, char const *argv[])
Initialize the configuration manager from rvm's command line options.
Definition: rconfig.cc:1218
void clear(void)
Clear the vault manager.
Definition: vaulter.cc:30
log_manager logger
The global log manager.
Definition: logger.cc:138
void init(void)
Initialize the vault manager.
Definition: vaulter.cc:40
void setup(void)
Definition: test-logger.cc:62
#define ERR_OUT(e)
const std::vector< std::string > & deleted_archives(void) const
Return a list of deleted archives.
Definition: vaulter.cc:754
void default_file(const std::string &a_path)
Set the default configuration filename.
Definition: rconfig.cc:1484
void cleanup(void)
Definition: test-fs.cc:63
#define err_unknown
Definition: error.h:114
void clear(void)
Reset configuration to default settings.
Definition: rconfig.cc:1171
int main(int argc, char const *argv[])
void select(void)
Select a vault.
Definition: vaulter.cc:59
An error class.
Definition: error.h:72
const type & path(const std::string a_path, const std::string a_filter="*")
Return a vector of strings of a list of files in a subdirectory.
Definition: fs.cc:1361
void clear(void)
Clear the log manager.
Definition: logger.cc:32
void init(void)
Initialize the log manager.
Definition: logger.cc:42
configuration_manager config
The global configuration manager instance.
Definition: rconfig.cc:3364
void test_vaulter(void)
void delete_oldest_archive(void)
Find the oldest archive in the vault and delete it.
Definition: vaulter.cc:433
Retrieve a list of files in a subdirectory that match a given wildcard filename.
Definition: fs.h:273
vault_manager vaulter
The global vault manager.
Definition: vaulter.cc:772