HELICS
HELICS copied to clipboard
Need a way to regularly test multimachine configurations
Not sure what this looks like but somewhere we need to have regular automated test runs with multiple machines using the different communication protocols in different configurations.
This will require some additional thought
I think this will need to be addressed in the example repo, in the tests we run in that repository, since I think it will be easier to test through there.
moving to 1.3 since it likely will require the example repo being operational and some other considerations
This is on hold until the examples Repo is ready then we can discuss again.
This issue will get moved to the HELICS-Examples repo
@kdheepak, @nightlark I was working with some folks at UTK today. They showed me some stuff on mininet. It looks like a tool that allows you to create a virtual network on a pc or laptop. We talked about it in the context of using it as part of HELICS, but I don't think that will work very well, it isn't a simulator per se. But one thing it might be very useful for us is as a platform for testing the multimachine configurations for HELICS. I can imagine setting up a couple dockers or VM's with Mininet, then maybe HELICS-Runner or something else can kick off a series of test simulations using the multimachine configurations inside the mininet processes, and maybe we can run this on travis or one of the other services, without actually needing multiple machines. @kdheepak, @nightlark can you take a look and see what you think? I do think we are at the point where we need to be more extensively testing the multimachine stuff and this could be a way to do it.
It looks like the mininet cli (and api?) can be used to run commands in the context of a host on the virtual network. That could work on Travis to test setting up a multi-machine Helics simulation (command line options/config files and using different network interface).
It looks like Docker Compose is included in Travis build environments. Assuming you're OK with not having Windows as part of your multi-machine testing, couldn't you just use multiple Docker containers orchestrated by Docker Compose in Travis? Each container gets its own IP address and is ran in its own network namespace (unless you configure it for host networking), effectively making each container look like a separate machine from a HELICS application perspective.
Just my two cents, and I know I'm likely missing something obvious given my infant familiarity with HELICS.