| 255 | |
| 256 | |
| 257 | int main(int argc, char** argv) |
| 258 | { |
| 259 | Flags flags; |
| 260 | Try<flags::Warnings> load = flags.load("MESOS_EXAMPLE_", argc, argv); |
| 261 | |
| 262 | if (load.isError()) { |
| 263 | std::cerr << flags.usage(load.error()) << std::endl; |
| 264 | return EXIT_FAILURE; |
| 265 | } |
| 266 | |
| 267 | if (flags.help) { |
| 268 | std::cout << flags.usage() << std::endl; |
| 269 | return EXIT_SUCCESS; |
| 270 | } |
| 271 | |
| 272 | mesos::internal::logging::initialize(argv[0], false); |
| 273 | |
| 274 | // Log any flag warnings (after logging is initialized). |
| 275 | foreach (const flags::Warning& warning, load->warnings) { |
| 276 | LOG(WARNING) << warning.message; |
| 277 | } |
| 278 | |
| 279 | if (flags.qps <= 0.0) { |
| 280 | EXIT(EXIT_FAILURE) << "Flag '--qps' needs to be greater than zero"; |
| 281 | } |
| 282 | |
| 283 | LoadGeneratorScheduler scheduler(flags.qps, flags.duration); |
| 284 | |
| 285 | FrameworkInfo framework; |
| 286 | framework.set_user(""); // Have Mesos fill in the current user. |
| 287 | framework.set_principal(flags.principal); |
| 288 | framework.set_name(FRAMEWORK_NAME); |
| 289 | framework.set_checkpoint(flags.checkpoint); |
| 290 | framework.add_roles(flags.role); |
| 291 | framework.add_capabilities()->set_type( |
| 292 | FrameworkInfo::Capability::RESERVATION_REFINEMENT); |
| 293 | framework.set_checkpoint(flags.checkpoint); |
| 294 | |
| 295 | if (flags.master == "local") { |
| 296 | // Configure master. |
| 297 | os::setenv("MESOS_ROLES", flags.role); |
| 298 | os::setenv("MESOS_AUTHENTICATE_FRAMEWORKS", stringify(flags.authenticate)); |
| 299 | |
| 300 | ACLs acls; |
| 301 | ACL::RegisterFramework* acl = acls.add_register_frameworks(); |
| 302 | acl->mutable_principals()->set_type(ACL::Entity::ANY); |
| 303 | acl->mutable_roles()->add_values("*"); |
| 304 | os::setenv("MESOS_ACLS", stringify(JSON::protobuf(acls))); |
| 305 | } |
| 306 | |
| 307 | MesosSchedulerDriver* driver; |
| 308 | |
| 309 | if (flags.authenticate) { |
| 310 | LOG(INFO) << "Enabling authentication for the framework"; |
| 311 | |
| 312 | Credential credential; |
| 313 | credential.set_principal(flags.principal); |
| 314 | if (flags.secret.isSome()) { |
nothing calls this directly
no test coverage detected