227SCENARIO(
"xindiserver constructs local driver arguments",
"[xindiserver]" )
229 GIVEN(
"A default constructed xindiserver" )
232 xindiserver_test xi_test;
236 WHEN(
"Single local driver" )
238 std::vector<std::string> ml( {
"driverX" } );
239 xi_test.m_local( xi, ml );
241 std::vector<std::string> clargs;
244 REQUIRE( clargs.size() == 1 );
245 REQUIRE( clargs[0] ==
"/opt/MagAOX/drivers/driverX" );
248 WHEN(
"Two local drivers" )
250 std::vector<std::string> ml( {
"driverY",
"driverZ" } );
251 xi_test.m_local( xi, ml );
253 std::vector<std::string> clargs;
256 REQUIRE( clargs.size() == 2 );
257 REQUIRE( clargs[0] ==
"/opt/MagAOX/drivers/driverY" );
258 REQUIRE( clargs[1] ==
"/opt/MagAOX/drivers/driverZ" );
261 WHEN(
"Three local drivers" )
263 std::vector<std::string> ml( {
"driverX",
"driverY",
"driverZ" } );
264 xi_test.m_local( xi, ml );
266 std::vector<std::string> clargs;
269 REQUIRE( clargs.size() == 3 );
270 REQUIRE( clargs[0] ==
"/opt/MagAOX/drivers/driverX" );
271 REQUIRE( clargs[1] ==
"/opt/MagAOX/drivers/driverY" );
272 REQUIRE( clargs[2] ==
"/opt/MagAOX/drivers/driverZ" );
275 WHEN(
"Three local drivers, with an error (@)" )
277 std::vector<std::string> ml( {
"driverX",
"driver@Y",
"driverZ" } );
278 xi_test.m_local( xi, ml );
280 std::vector<std::string> clargs;
285 WHEN(
"Three local drivers, with an error (/)" )
287 std::vector<std::string> ml( {
"driver/X",
"driverY",
"driverZ" } );
288 xi_test.m_local( xi, ml );
290 std::vector<std::string> clargs;
295 WHEN(
"Three local drivers, with an error (:)" )
297 std::vector<std::string> ml( {
"driverX",
"driverY",
"driver:Z" } );
298 xi_test.m_local( xi, ml );
300 std::vector<std::string> clargs;
305 WHEN(
"Three local drivers, duplicate" )
307 std::vector<std::string> ml( {
"driverX",
"driverY",
"driverX" } );
308 xi_test.m_local( xi, ml );
310 std::vector<std::string> clargs;
317SCENARIO(
"xindiserver constructs remote driver arguments",
"[xindiserver]" )
319 GIVEN(
"A default constructed xindiserver" )
322 xindiserver_test xi_test;
326 WHEN(
"Single remote driver, single remote host" )
328 std::vector<std::string> mr( {
"driverX@host1" } );
329 xi_test.m_remote( xi, mr );
331 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf",
332 {
"host1",
"host1",
"host1" },
333 {
"remoteHost",
"localPort",
"remotePort" },
334 {
"host1",
"1000",
"81" } );
335 mx::app::appConfigurator config;
336 config.readConfig(
"/tmp/xindiserver_test.conf" );
340 std::vector<std::string> clargs;
343 REQUIRE( clargs.size() == 1 );
344 REQUIRE( clargs[0] ==
"driverX@localhost:1000" );
347 WHEN(
"Two remote drivers, single remote host" )
349 std::vector<std::string> mr( {
"driverX@host1",
"driverY@host1" } );
350 xi_test.m_remote( xi, mr );
352 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf",
353 {
"host1",
"host1",
"host1" },
354 {
"remoteHost",
"localPort",
"remotePort" },
355 {
"host1",
"1000",
"81" } );
356 mx::app::appConfigurator config;
357 config.readConfig(
"/tmp/xindiserver_test.conf" );
359 xi_test.tunnelMap( xi ).clear();
362 std::vector<std::string> clargs;
365 REQUIRE( clargs.size() == 2 );
366 REQUIRE( clargs[0] ==
"driverX@localhost:1000" );
367 REQUIRE( clargs[1] ==
"driverY@localhost:1000" );
370 WHEN(
"Two remote drivers, two remote hosts" )
372 std::vector<std::string> mr( {
"driverX@host1",
"driverY@host2" } );
373 xi_test.m_remote( xi, mr );
375 mx::app::writeConfigFile(
376 "/tmp/xindiserver_test.conf",
377 {
"host1",
"host1",
"host1",
"host2",
"host2",
"host2" },
378 {
"remoteHost",
"localPort",
"remotePort",
"remoteHost",
"localPort",
"remotePort" },
379 {
"host1",
"1000",
"81",
"host2",
"1002",
"86" } );
380 mx::app::appConfigurator config;
381 config.readConfig(
"/tmp/xindiserver_test.conf" );
383 xi_test.tunnelMap( xi ).clear();
386 std::vector<std::string> clargs;
389 REQUIRE( clargs.size() == 2 );
390 REQUIRE( clargs[0] ==
"driverX@localhost:1000" );
391 REQUIRE( clargs[1] ==
"driverY@localhost:1002" );
394 WHEN(
"Three remote drivers, two remote hosts, in order" )
396 std::vector<std::string> mr( {
"driverX@host1",
"driverZ@host1",
"driverY@host2" } );
397 xi_test.m_remote( xi, mr );
399 mx::app::writeConfigFile(
400 "/tmp/xindiserver_test.conf",
401 {
"host1",
"host1",
"host1",
"host2",
"host2",
"host2" },
402 {
"remoteHost",
"localPort",
"remotePort",
"remoteHost",
"localPort",
"remotePort" },
403 {
"host1",
"1000",
"81",
"host2",
"1002",
"86" } );
405 mx::app::appConfigurator config;
406 config.readConfig(
"/tmp/xindiserver_test.conf" );
408 xi_test.tunnelMap( xi ).clear();
411 std::vector<std::string> clargs;
414 REQUIRE( clargs.size() == 3 );
416 REQUIRE( clargs[0] ==
"driverX@localhost:1000" );
417 REQUIRE( clargs[1] ==
"driverZ@localhost:1000" );
418 REQUIRE( clargs[2] ==
"driverY@localhost:1002" );
421 WHEN(
"Three remote drivers, two remote hosts, arb order" )
423 std::vector<std::string> mr( {
"driverX@host1",
"driverZ@host2",
"driverY@host1" } );
424 xi_test.m_remote( xi, mr );
426 mx::app::writeConfigFile(
427 "/tmp/xindiserver_test.conf",
428 {
"host1",
"host1",
"host1",
"host2",
"host2",
"host2" },
429 {
"remoteHost",
"localPort",
"remotePort",
"remoteHost",
"localPort",
"remotePort" },
430 {
"host1",
"1000",
"81",
"host2",
"1002",
"86" } );
432 mx::app::appConfigurator config;
433 config.readConfig(
"/tmp/xindiserver_test.conf" );
435 xi_test.tunnelMap( xi ).clear();
438 std::vector<std::string> clargs;
441 REQUIRE( clargs.size() == 3 );
443 REQUIRE( clargs[0] ==
"driverX@localhost:1000" );
444 REQUIRE( clargs[1] ==
"driverZ@localhost:1002" );
445 REQUIRE( clargs[2] ==
"driverY@localhost:1000" );
448 WHEN(
"Three remote drivers, two remote hosts, error in host" )
450 std::vector<std::string> mr( {
"driverX@host1",
"driverZ@host2",
"driverY@host1" } );
451 xi_test.m_remote( xi, mr );
453 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf",
454 {
"host1",
"host1",
"host1",
"host2",
"host2" },
455 {
"remoteHost",
"localPort",
"remotePort",
"remoteHost",
"localPort" },
456 {
"exao2",
"1000",
"81",
"exao2",
"1002" } );
458 mx::app::appConfigurator config;
459 config.readConfig(
"/tmp/xindiserver_test.conf" );
461 xi_test.tunnelMap( xi ).clear();
464 std::vector<std::string> clargs;
469 WHEN(
"Three remote drivers, two remote hosts, error in driver" )
471 std::vector<std::string> mr( {
"driverX",
"driverZ@host2",
"driverY@host1" } );
472 xi_test.m_remote( xi, mr );
474 mx::app::writeConfigFile(
475 "/tmp/xindiserver_test.conf",
476 {
"host1",
"host1",
"host1",
"host2",
"host2",
"host2" },
477 {
"remoteHost",
"localPort",
"remotePort",
"remoteHost",
"localPort",
"remotePort" },
478 {
"host1",
"1000",
"81",
"host2",
"1002",
"86" } );
480 mx::app::appConfigurator config;
481 config.readConfig(
"/tmp/xindiserver_test.conf" );
483 xi_test.tunnelMap( xi ).clear();
486 std::vector<std::string> clargs;
491 WHEN(
"Three remote drivers, two remote hosts, duplicate driver" )
493 std::vector<std::string> mr( {
"driverX@host2",
"driverX@host1",
"driverY@host1" } );
494 xi_test.m_remote( xi, mr );
496 mx::app::writeConfigFile(
497 "/tmp/xindiserver_test.conf",
498 {
"host1",
"host1",
"host1",
"host2",
"host2",
"host2" },
499 {
"remoteHost",
"localPort",
"remotePort",
"remoteHost",
"localPort",
"remotePort" },
500 {
"host1",
"1000",
"81",
"host2",
"1002",
"86" } );
502 mx::app::appConfigurator config;
503 config.readConfig(
"/tmp/xindiserver_test.conf" );
506 std::vector<std::string> clargs;
513SCENARIO(
"xindiserver constructs both local and remote driver arguments",
"[xindiserver]" )
515 GIVEN(
"A default constructed xindiserver" )
518 xindiserver_test xi_test;
522 WHEN(
"single local driver, single remote driver, single remote host" )
525 std::vector<std::string> ml( {
"driverX" } );
526 xi_test.m_local( xi, ml );
528 std::vector<std::string> mr( {
"driverY@host1" } );
529 xi_test.m_remote( xi, mr );
531 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf",
532 {
"host1",
"host1",
"host1" },
533 {
"remoteHost",
"localPort",
"remotePort" },
534 {
"host1",
"1000",
"81" } );
535 mx::app::appConfigurator config;
536 config.readConfig(
"/tmp/xindiserver_test.conf" );
540 std::vector<std::string> clargs;
547 REQUIRE( clargs.size() == 2 );
549 REQUIRE( clargs[0] ==
"driverY@localhost:1000" );
550 REQUIRE( clargs[1] ==
"/opt/MagAOX/drivers/driverX" );
553 WHEN(
"single local driver, single remote driver, single remote host -- duplicate driver" )
556 std::vector<std::string> ml( {
"driverX" } );
557 xi_test.m_local( xi, ml );
559 std::vector<std::string> mr( {
"driverX@host1" } );
560 xi_test.m_remote( xi, mr );
562 mx::app::writeConfigFile(
"/tmp/xindiserver_test.conf",
563 {
"host1",
"host1",
"host1" },
564 {
"remoteHost",
"localPort",
"remotePort" },
565 {
"host1",
"1000",
"81" } );
566 mx::app::appConfigurator config;
567 config.readConfig(
"/tmp/xindiserver_test.conf" );
571 std::vector<std::string> clargs;