29SCENARIO(
"xindiserver constructs inserver options",
"[xindiserver]" )
31 GIVEN(
"A default constructed xindiserver")
38 WHEN(
"Option m with argument provided")
40 std::vector<std::string> clargs;
45 REQUIRE(clargs.size() == 3);
46 REQUIRE(clargs[0] ==
"indiserver");
47 REQUIRE(clargs[1] ==
"-m");
48 REQUIRE(clargs[2] ==
"100");
53 WHEN(
"Option n provided")
55 std::vector<std::string> clargs;
60 REQUIRE(clargs.size() == 2);
61 REQUIRE(clargs[0] ==
"indiserver");
62 REQUIRE(clargs[1] ==
"-n");
65 WHEN(
"Option p provided with argument")
67 std::vector<std::string> clargs;
72 REQUIRE(clargs.size() == 3);
73 REQUIRE(clargs[0] ==
"indiserver");
74 REQUIRE(clargs[1] ==
"-p");
75 REQUIRE(clargs[2] ==
"2000");
78 WHEN(
"1 Option v provided with argument (-v)")
80 std::vector<std::string> clargs;
85 REQUIRE(clargs.size() == 2);
86 REQUIRE(clargs[0] ==
"indiserver");
87 REQUIRE(clargs[1] ==
"-v");
90 WHEN(
"2 Option v provided with argument (-vv)")
92 std::vector<std::string> clargs;
97 REQUIRE(clargs.size() == 2);
98 REQUIRE(clargs[0] ==
"indiserver");
99 REQUIRE(clargs[1] ==
"-vv");
102 WHEN(
"3 Option v provided with argument (3==>-vvv)")
104 std::vector<std::string> clargs;
109 REQUIRE(clargs.size() == 2);
110 REQUIRE(clargs[0] ==
"indiserver");
111 REQUIRE(clargs[1] ==
"-vvv");
114 WHEN(
"Option v provided with argument (4==>-vvv)")
116 std::vector<std::string> clargs;
121 REQUIRE(clargs.size() == 2);
122 REQUIRE(clargs[0] ==
"indiserver");
123 REQUIRE(clargs[1] ==
"-vvv");
126 WHEN(
"Option v provided with argument (0==>)")
128 std::vector<std::string> clargs;
133 REQUIRE(clargs.size() == 1);
134 REQUIRE(clargs[0] ==
"indiserver");
137 WHEN(
"Option x provided")
139 std::vector<std::string> clargs;
144 REQUIRE(clargs.size() == 2);
145 REQUIRE(clargs[0] ==
"indiserver");
146 REQUIRE(clargs[1] ==
"-x");
149 WHEN(
"All options provided")
151 std::vector<std::string> clargs;
160 REQUIRE(clargs.size() == 8);
161 REQUIRE(clargs[0] ==
"indiserver");
162 REQUIRE(clargs[1] ==
"-m");
163 REQUIRE(clargs[2] ==
"100");
164 REQUIRE(clargs[3] ==
"-n");
165 REQUIRE(clargs[4] ==
"-p");
166 REQUIRE(clargs[5] ==
"2000");
167 REQUIRE(clargs[6] ==
"-vv");
168 REQUIRE(clargs[7] ==
"-x");
173SCENARIO(
"xindiserver constructs local driver arguments",
"[xindiserver]" )
175 GIVEN(
"A default constructed xindiserver")
182 WHEN(
"Single local driver")
184 std::vector<std::string> ml({
"driverX"});
187 std::vector<std::string> clargs;
190 REQUIRE(clargs.size() == 1);
191 REQUIRE(clargs[0] ==
"/opt/MagAOX/drivers/driverX");
194 WHEN(
"Two local drivers")
196 std::vector<std::string> ml({
"driverY",
"driverZ"});
199 std::vector<std::string> clargs;
202 REQUIRE(clargs.size() == 2);
203 REQUIRE(clargs[0] ==
"/opt/MagAOX/drivers/driverY");
204 REQUIRE(clargs[1] ==
"/opt/MagAOX/drivers/driverZ");
207 WHEN(
"Three local drivers")
209 std::vector<std::string> ml({
"driverX",
"driverY",
"driverZ"});
212 std::vector<std::string> clargs;
215 REQUIRE(clargs.size() == 3);
216 REQUIRE(clargs[0] ==
"/opt/MagAOX/drivers/driverX");
217 REQUIRE(clargs[1] ==
"/opt/MagAOX/drivers/driverY");
218 REQUIRE(clargs[2] ==
"/opt/MagAOX/drivers/driverZ");
221 WHEN(
"Three local drivers, with an error (@)")
223 std::vector<std::string> ml({
"driverX",
"driver@Y",
"driverZ"});
226 std::vector<std::string> clargs;
231 WHEN(
"Three local drivers, with an error (/)")
233 std::vector<std::string> ml({
"driver/X",
"driverY",
"driverZ"});
236 std::vector<std::string> clargs;
241 WHEN(
"Three local drivers, with an error (:)")
243 std::vector<std::string> ml({
"driverX",
"driverY",
"driver:Z"});
246 std::vector<std::string> clargs;
251 WHEN(
"Three local drivers, duplicate")
253 std::vector<std::string> ml({
"driverX",
"driverY",
"driverX"});
256 std::vector<std::string> clargs;
263SCENARIO(
"xindiserver constructs remote driver arguments",
"[xindiserver]" )
265 GIVEN(
"A default constructed xindiserver")
272 WHEN(
"Single remote driver, single remote host")
274 std::vector<std::string> mr({
"driverX@host1"});
277 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf", {
"host1",
"host1",
"host1" },
278 {
"remoteHost",
"localPort",
"remotePort" },
279 {
"host1",
"1000",
"81" } );
280 mx::app::appConfigurator config;
281 config.readConfig(
"/tmp/xindiserver_test.conf");
285 std::vector<std::string> clargs;
288 REQUIRE(clargs.size() == 1);
289 REQUIRE(clargs[0] ==
"driverX@localhost:1000");
292 WHEN(
"Two remote drivers, single remote host")
294 std::vector<std::string> mr({
"driverX@host1",
"driverY@host1"});
297 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf", {
"host1",
"host1",
"host1" },
298 {
"remoteHost",
"localPort",
"remotePort" },
299 {
"host1",
"1000",
"81" } );
300 mx::app::appConfigurator config;
301 config.readConfig(
"/tmp/xindiserver_test.conf");
306 std::vector<std::string> clargs;
309 REQUIRE(clargs.size() == 2);
310 REQUIRE(clargs[0] ==
"driverX@localhost:1000");
311 REQUIRE(clargs[1] ==
"driverY@localhost:1000");
315 WHEN(
"Two remote drivers, two remote hosts")
317 std::vector<std::string> mr({
"driverX@host1",
"driverY@host2"});
320 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf", {
"host1",
"host1",
"host1",
"host2",
"host2",
"host2" },
321 {
"remoteHost",
"localPort",
"remotePort",
"remoteHost",
"localPort",
"remotePort" },
322 {
"host1",
"1000",
"81" ,
"host2",
"1002",
"86"} );
323 mx::app::appConfigurator config;
324 config.readConfig(
"/tmp/xindiserver_test.conf");
329 std::vector<std::string> clargs;
332 REQUIRE(clargs.size() == 2);
333 REQUIRE(clargs[0] ==
"driverX@localhost:1000");
334 REQUIRE(clargs[1] ==
"driverY@localhost:1002");
338 WHEN(
"Three remote drivers, two remote hosts, in order")
340 std::vector<std::string> mr({
"driverX@host1",
"driverZ@host1",
"driverY@host2"});
343 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf", {
"host1",
"host1",
"host1",
"host2",
"host2",
"host2" },
344 {
"remoteHost",
"localPort",
"remotePort",
"remoteHost",
"localPort",
"remotePort" },
345 {
"host1",
"1000",
"81" ,
"host2",
"1002",
"86"} );
347 mx::app::appConfigurator config;
348 config.readConfig(
"/tmp/xindiserver_test.conf");
353 std::vector<std::string> clargs;
356 REQUIRE(clargs.size() == 3);
358 REQUIRE(clargs[0] ==
"driverX@localhost:1000");
359 REQUIRE(clargs[1] ==
"driverZ@localhost:1000");
360 REQUIRE(clargs[2] ==
"driverY@localhost:1002");
364 WHEN(
"Three remote drivers, two remote hosts, arb order")
366 std::vector<std::string> mr({
"driverX@host1",
"driverZ@host2",
"driverY@host1"});
369 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf", {
"host1",
"host1",
"host1",
"host2",
"host2",
"host2" },
370 {
"remoteHost",
"localPort",
"remotePort",
"remoteHost",
"localPort",
"remotePort" },
371 {
"host1",
"1000",
"81" ,
"host2",
"1002",
"86"} );
373 mx::app::appConfigurator config;
374 config.readConfig(
"/tmp/xindiserver_test.conf");
379 std::vector<std::string> clargs;
382 REQUIRE(clargs.size() == 3);
384 REQUIRE(clargs[0] ==
"driverX@localhost:1000");
385 REQUIRE(clargs[1] ==
"driverZ@localhost:1002");
386 REQUIRE(clargs[2] ==
"driverY@localhost:1000");
389 WHEN(
"Three remote drivers, two remote hosts, error in host")
391 std::vector<std::string> mr({
"driverX@host1",
"driverZ@host2",
"driverY@host1"});
394 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf", {
"host1",
"host1",
"host1",
"host2",
"host2" },
395 {
"remoteHost",
"localPort",
"remotePort",
"remoteHost",
"localPort" },
396 {
"exao2",
"1000",
"81" ,
"exao2",
"1002"} );
398 mx::app::appConfigurator config;
399 config.readConfig(
"/tmp/xindiserver_test.conf");
404 std::vector<std::string> clargs;
409 WHEN(
"Three remote drivers, two remote hosts, error in driver")
411 std::vector<std::string> mr({
"driverX",
"driverZ@host2",
"driverY@host1"});
414 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf", {
"host1",
"host1",
"host1",
"host2",
"host2",
"host2" },
415 {
"remoteHost",
"localPort",
"remotePort",
"remoteHost",
"localPort",
"remotePort" },
416 {
"host1",
"1000",
"81" ,
"host2",
"1002",
"86"} );
418 mx::app::appConfigurator config;
419 config.readConfig(
"/tmp/xindiserver_test.conf");
424 std::vector<std::string> clargs;
429 WHEN(
"Three remote drivers, two remote hosts, duplicate driver")
431 std::vector<std::string> mr({
"driverX@host2",
"driverX@host1",
"driverY@host1"});
434 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf", {
"host1",
"host1",
"host1",
"host2",
"host2",
"host2" },
435 {
"remoteHost",
"localPort",
"remotePort",
"remoteHost",
"localPort",
"remotePort" },
436 {
"host1",
"1000",
"81" ,
"host2",
"1002",
"86"} );
438 mx::app::appConfigurator config;
439 config.readConfig(
"/tmp/xindiserver_test.conf");
442 std::vector<std::string> clargs;
449SCENARIO(
"xindiserver constructs both local and remote driver arguments",
"[xindiserver]" )
451 GIVEN(
"A default constructed xindiserver")
458 WHEN(
"single local driver, single remote driver, single remote host")
461 std::vector<std::string> ml({
"driverX"});
464 std::vector<std::string> mr({
"driverY@host1"});
467 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf", {
"host1",
"host1",
"host1" },
468 {
"remoteHost",
"localPort",
"remotePort" },
469 {
"host1",
"1000",
"81" } );
470 mx::app::appConfigurator config;
471 config.readConfig(
"/tmp/xindiserver_test.conf");
475 std::vector<std::string> clargs;
482 REQUIRE(clargs.size() == 2);
485 REQUIRE(clargs[0] ==
"driverY@localhost:1000");
486 REQUIRE(clargs[1] ==
"/opt/MagAOX/drivers/driverX");
489 WHEN(
"single local driver, single remote driver, single remote host -- duplicate driver")
492 std::vector<std::string> ml({
"driverX"});
495 std::vector<std::string> mr({
"driverX@host1"});
498 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf", {
"host1",
"host1",
"host1" },
499 {
"remoteHost",
"localPort",
"remotePort" },
500 {
"host1",
"1000",
"81" } );
501 mx::app::appConfigurator config;
502 config.readConfig(
"/tmp/xindiserver_test.conf");
506 std::vector<std::string> clargs;