Major commit: multiple workloads.
This commit is a big step forward to handle multiple workloads at the same time. Protocol update. Jobs are no longer identified only by a unique number, but by a workload_name and a unique number within this workload_name. The separator between these two fields is '!'. The default workload, the one read from the input JSON file, is called "static". If the scheduler gives an order about a job by only calling it by its unique number, the 'static' workload is assumed, for compatibility reasons. Batsim code update. There is no longer "Jobs" and "Profiles" roaming in the BatsimContext. Now, Jobs and Profiles are grouped together inside one Workload instance. Different Workload instances can be stored into a Workloads (note the 's'!), which is just a map<string, Workload*> with wrapping methods to simplify job handling. A Workloads is instanciated in the BatsimContext. Batsim code update. Jobs are now identified by a structure JobIdentifier. This struct is just a string (the workload name) and an integer (the unique job number within its workload). JobIdentifier are used within most ipp messages now. Furthermore, jobs know in which workload they are, and Jobs know in which Workload they are. Batsim tests pass this commit, but a Redis server should be launched to avoid assertion fails. Redis is not yet used on the scheduler side, this part has not been tested yet. Travis has not been updated yet to install and execute Redis, so the tests won't work on Travis at the moment.
Showing with 712 additions and 217 deletions