// // Copyright (C) 2018 Codership Oy // #ifndef WSREP_DB_SIMULATOR_HPP #define WSREP_DB_SIMULATOR_HPP #include "wsrep/gtid.hpp" #include "wsrep/mutex.hpp" #include "wsrep/lock.hpp" #include "db_params.hpp" #include "db_server.hpp" #include #include #include #include namespace db { class server; class simulator { public: simulator(const params& params) : mutex_() , params_(params) , servers_() , clients_start_() , clients_stop_() , stats_() { } void start(); void stop(); void sst(db::server&, const std::string&, const wsrep::gtid&, bool); const db::params& params() const { return params_; } std::string stats() const; private: std::string server_port(size_t i) const; std::string build_cluster_address() const; wsrep::default_mutex mutex_; const db::params& params_; std::map> servers_; std::chrono::time_point clients_start_; std::chrono::time_point clients_stop_; public: struct stats { long long commits; long long aborts; long long replays; stats() : commits(0) , aborts(0) , replays(0) { } } stats_; }; } #endif // WSRE_DB_SIMULATOR_HPP