Skip to content
Snippets Groups Projects
Commit 82cb223e authored by Maël Madon's avatar Maël Madon
Browse files

fix: add some more const keywords to try to fix issue #6

parent 744d0f55
No related branches found
No related tags found
1 merge request!5New dynamic schedulers: fcfs and easy-bf
...@@ -40,13 +40,13 @@ CloudBroker::CloudBroker(rapidjson::Document *user_description_file) ...@@ -40,13 +40,13 @@ CloudBroker::CloudBroker(rapidjson::Document *user_description_file)
&& users_json[i]["name"].IsString(), && users_json[i]["name"].IsString(),
"Invalid user_description file: user should have string field " "Invalid user_description file: user should have string field "
"'name'."); "'name'.");
std::string name = users_json[i]["name"].GetString(); string name = users_json[i]["name"].GetString();
PPK_ASSERT_ERROR(users_json[i].HasMember("category") PPK_ASSERT_ERROR(users_json[i].HasMember("category")
&& users_json[i]["category"].IsString(), && users_json[i]["category"].IsString(),
"Invalid user_description file: user should have string field " "Invalid user_description file: user should have string field "
"'category'."); "'category'.");
std::string category = users_json[i]["category"].GetString(); string category = users_json[i]["category"].GetString();
PPK_ASSERT_ERROR(users_json[i].HasMember("param") PPK_ASSERT_ERROR(users_json[i].HasMember("param")
&& users_json[i]["param"].IsObject(), && users_json[i]["param"].IsObject(),
...@@ -125,7 +125,7 @@ CloudBroker::CloudBroker(rapidjson::Document *user_description_file) ...@@ -125,7 +125,7 @@ CloudBroker::CloudBroker(rapidjson::Document *user_description_file)
// int nb_users = 2; // int nb_users = 2;
// for (int i=0; i<nb_users; i++) // for (int i=0; i<nb_users; i++)
// { // {
// std::string user_name = "user" + std::to_string(i) // string user_name = "user" + to_string(i)
// users.push_back(new DichoIntersubmitTimeUser(user_name, )); // users.push_back(new DichoIntersubmitTimeUser(user_name, ));
// } // }
...@@ -149,16 +149,16 @@ CloudBroker::~CloudBroker() ...@@ -149,16 +149,16 @@ CloudBroker::~CloudBroker()
users_to_wake.clear(); users_to_wake.clear();
} }
double CloudBroker::next_submission(double date) double CloudBroker::next_submission(double date) const
{ {
return user_queue.front()->next_submission(); return user_queue.front()->next_submission();
} }
void CloudBroker::jobs_to_submit( void CloudBroker::jobs_to_submit(
double date, std::list<Job *> &jobs, std::list<Profile *> &profiles) double date, list<Job *> &jobs, list<Profile *> &profiles)
{ {
jobs = std::list<Job *>(); jobs = list<Job *>();
profiles = std::list<Profile *>(); profiles = list<Profile *>();
User *user = user_queue.front(); User *user = user_queue.front();
double planned_date_submission = user->next_submission(); double planned_date_submission = user->next_submission();
...@@ -171,8 +171,8 @@ void CloudBroker::jobs_to_submit( ...@@ -171,8 +171,8 @@ void CloudBroker::jobs_to_submit(
while (planned_date_submission == user->next_submission()) while (planned_date_submission == user->next_submission())
{ {
user_queue.pop_front(); user_queue.pop_front();
std::list<Job *> user_jobs; list<Job *> user_jobs;
std::list<Profile *> user_profiles; list<Profile *> user_profiles;
user->jobs_to_submit(date, user_jobs, user_profiles); user->jobs_to_submit(date, user_jobs, user_profiles);
for (Job *job : user_jobs) for (Job *job : user_jobs)
...@@ -192,17 +192,17 @@ void CloudBroker::jobs_to_submit( ...@@ -192,17 +192,17 @@ void CloudBroker::jobs_to_submit(
} }
void CloudBroker::feedback_job_status(double date, void CloudBroker::feedback_job_status(double date,
std::vector<std::string> &jobs_ended, std::vector<std::string> &jobs_killed, vector<string> &jobs_ended, vector<string> &jobs_killed,
std::vector<std::string> &jobs_released) vector<string> &jobs_released)
{ {
/* Jobs ended recently */ /* Jobs ended recently */
for (const std::string &job_id : jobs_ended) for (const string &job_id : jobs_ended)
{ {
update_status_if_dyn_job(job_id, FINISHED); update_status_if_dyn_job(job_id, FINISHED);
} }
/* Jobs killed recently */ /* Jobs killed recently */
for (const std::string &job_id : jobs_killed) for (const string &job_id : jobs_killed)
{ {
update_status_if_dyn_job(job_id, KILLED); update_status_if_dyn_job(job_id, KILLED);
} }
...@@ -220,12 +220,12 @@ void CloudBroker::feedback_job_status(double date, ...@@ -220,12 +220,12 @@ void CloudBroker::feedback_job_status(double date,
} }
void CloudBroker::update_status_if_dyn_job( void CloudBroker::update_status_if_dyn_job(
const std::string &job_id, JobStatus status) const string &job_id, JobStatus status)
{ {
auto it = dynamic_jobs.find(job_id); auto it = dynamic_jobs.find(job_id);
if (it != dynamic_jobs.end()) if (it != dynamic_jobs.end())
{ {
std::string user_name = job_id.substr(0, job_id.find('!')); string user_name = job_id.substr(0, job_id.find('!'));
User *user = users[user_name]; User *user = users[user_name];
Job *current_job = it->second; Job *current_job = it->second;
...@@ -246,7 +246,7 @@ void CloudBroker::update_status_if_dyn_job( ...@@ -246,7 +246,7 @@ void CloudBroker::update_status_if_dyn_job(
/* Add potentially interested user to the map of users to wake up */ /* Add potentially interested user to the map of users to wake up */
if (users_to_wake.find(user) == users_to_wake.end()) if (users_to_wake.find(user) == users_to_wake.end())
users_to_wake.emplace(user, std::list<Job *>()); users_to_wake.emplace(user, list<Job *>());
/* ..and keep track of its recently ended jobs */ /* ..and keep track of its recently ended jobs */
users_to_wake[user].push_back(current_job); users_to_wake[user].push_back(current_job);
...@@ -261,7 +261,7 @@ void CloudBroker::update_status_if_dyn_job( ...@@ -261,7 +261,7 @@ void CloudBroker::update_status_if_dyn_job(
/* Add potentially interested user to the map of users to wake up */ /* Add potentially interested user to the map of users to wake up */
if (users_to_wake.find(user) == users_to_wake.end()) if (users_to_wake.find(user) == users_to_wake.end())
users_to_wake.emplace(user, std::list<Job *>()); users_to_wake.emplace(user, list<Job *>());
/* ..and keep track of its recently ended jobs */ /* ..and keep track of its recently ended jobs */
users_to_wake[user].push_back(current_job); users_to_wake[user].push_back(current_job);
...@@ -272,7 +272,7 @@ void CloudBroker::update_status_if_dyn_job( ...@@ -272,7 +272,7 @@ void CloudBroker::update_status_if_dyn_job(
} }
} }
void CloudBroker::log_user_stats(std::string log_folder) void CloudBroker::log_user_stats(string log_folder)
{ {
static int stat[10] = { 0 }; static int stat[10] = { 0 };
int *dm_stat; int *dm_stat;
...@@ -285,7 +285,7 @@ void CloudBroker::log_user_stats(std::string log_folder) ...@@ -285,7 +285,7 @@ void CloudBroker::log_user_stats(std::string log_folder)
} }
/* Write in file */ /* Write in file */
std::ofstream file(log_folder + "/user_stats.csv"); ofstream file(log_folder + "/user_stats.csv");
file << ",nb_jobs,core_seconds\n"; file << ",nb_jobs,core_seconds\n";
file << boost::format("rigid,%1%,%2%\n") % stat[2 * RIGID] file << boost::format("rigid,%1%,%2%\n") % stat[2 * RIGID]
......
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
#include <string> #include <string>
#include <vector> #include <vector>
using namespace std;
class CloudBroker class CloudBroker
{ {
public: public:
...@@ -22,7 +24,7 @@ public: ...@@ -22,7 +24,7 @@ public:
* DATE_UNKNOWN = -2.0 if the broker doesn't have a next submission date * DATE_UNKNOWN = -2.0 if the broker doesn't have a next submission date
* yet (user waiting for feedback) * yet (user waiting for feedback)
*/ */
double next_submission(double date); double next_submission(double date) const;
/** /**
* @brief Return the list of jobs to submit by any of the users. * @brief Return the list of jobs to submit by any of the users.
...@@ -32,28 +34,28 @@ public: ...@@ -32,28 +34,28 @@ public:
* @param[out] profiles The list of profiles used by the jobs, if new. * @param[out] profiles The list of profiles used by the jobs, if new.
*/ */
void jobs_to_submit( void jobs_to_submit(
double date, std::list<Job *> &jobs, std::list<Profile *> &profiles); double date, list<Job *> &jobs, list<Profile *> &profiles);
/** /**
* @brief Ackowledge the latest execution-related activity and forward the * @brief Ackowledge the latest execution-related activity and forward the
* info to interested users. * info to interested users.
*/ */
void feedback_job_status(double date, std::vector<std::string> &jobs_ended, void feedback_job_status(double date, vector<string> &jobs_ended,
std::vector<std::string> &jobs_killed, vector<string> &jobs_killed,
std::vector<std::string> &jobs_released); vector<string> &jobs_released);
void log_user_stats(std::string user_stat_file); void log_user_stats(string user_stat_file);
void update_status_if_dyn_job(const std::string &job_id, JobStatus status); void update_status_if_dyn_job(const string &job_id, JobStatus status);
private: private:
std::map<std::string, User *> users; map<string, User *> users;
std::list<User *> user_queue; list<User *> user_queue;
std::map<std::string, Job *> dynamic_jobs = std::map<std::string, Job *>(); map<string, Job *> dynamic_jobs = map<string, Job *>();
std::map<User *, std::list<Job *>> users_to_wake map<User *, list<Job *>> users_to_wake
= std::map<User *, std::list<Job *>>(); = map<User *, list<Job *>>();
private: private:
/* Deterministic generation of seeds for users that use randomness */ /* Deterministic generation of seeds for users that use randomness */
std::mt19937 seed_generator = std::mt19937(1997); mt19937 seed_generator = mt19937(1997);
/* (Optional) The demand response window for the DM users */ /* (Optional) The demand response window for the DM users */
DMWindow *dm_window = nullptr; DMWindow *dm_window = nullptr;
......
...@@ -10,7 +10,7 @@ User::~User() ...@@ -10,7 +10,7 @@ User::~User()
{ {
} }
double User::next_submission() double User::next_submission() const
{ {
return date_of_next_submission; return date_of_next_submission;
} }
......
...@@ -17,7 +17,7 @@ public: ...@@ -17,7 +17,7 @@ public:
* DATE_NEVER if she has finished to submit or DATE_UNKNOWN if she is * DATE_NEVER if she has finished to submit or DATE_UNKNOWN if she is
* waiting for feedback. * waiting for feedback.
*/ */
double next_submission(); double next_submission() const;
/** /**
* @brief Return the jobs to submit by the user at this date * @brief Return the jobs to submit by the user at this date
......
...@@ -142,11 +142,11 @@ RoutineGreedyUser::~RoutineGreedyUser() ...@@ -142,11 +142,11 @@ RoutineGreedyUser::~RoutineGreedyUser()
{ {
} }
bool RoutineGreedyUser::all_jobs_finished() const bool RoutineGreedyUser::all_jobs_finished_successfully() const
{ {
for (const Job *job : last_jobs_submitted) for (const Job *job : last_jobs_submitted)
{ {
if (job->status == WAITING || job->status == RUNNING if (job->status == WAITING || job->status == RUNNING
|| job->status == KILLED) || job->status == KILLED)
return false; return false;
} }
...@@ -167,7 +167,7 @@ void RoutineGreedyUser::jobs_to_submit( ...@@ -167,7 +167,7 @@ void RoutineGreedyUser::jobs_to_submit(
} }
/* All job finished: submit twice as many jobs */ /* All job finished: submit twice as many jobs */
else if (all_jobs_finished()) else if (all_jobs_finished_successfully())
nb_jobs_to_submit nb_jobs_to_submit
= (nb_jobs_to_submit == 0) ? 1 : nb_jobs_to_submit * 2; = (nb_jobs_to_submit == 0) ? 1 : nb_jobs_to_submit * 2;
......
...@@ -56,7 +56,7 @@ private: ...@@ -56,7 +56,7 @@ private:
int job_id = 0; int job_id = 0;
std::list<const Job *> last_jobs_submitted; std::list<const Job *> last_jobs_submitted;
bool all_jobs_finished() const; bool all_jobs_finished_successfully() const;
}; };
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment