Verifies that a command check's status changes are delivered. TODO(alexr): When check mocking is available, ensure that *only status changes are delivered.
| 401 | // TODO(alexr): When check mocking is available, ensure that *only* |
| 402 | // status changes are delivered. |
| 403 | TEST_F(CommandExecutorCheckTest, CommandCheckStatusChange) |
| 404 | { |
| 405 | Try<Owned<cluster::Master>> master = StartMaster(); |
| 406 | ASSERT_SOME(master); |
| 407 | |
| 408 | Owned<MasterDetector> detector = master.get()->createDetector(); |
| 409 | Try<Owned<cluster::Slave>> agent = StartSlave(detector.get()); |
| 410 | ASSERT_SOME(agent); |
| 411 | |
| 412 | v1::FrameworkInfo frameworkInfo = v1::DEFAULT_FRAMEWORK_INFO; |
| 413 | |
| 414 | auto scheduler = std::make_shared<v1::MockHTTPScheduler>(); |
| 415 | |
| 416 | Future<Nothing> connected; |
| 417 | EXPECT_CALL(*scheduler, connected(_)) |
| 418 | .WillOnce(FutureSatisfy(&connected)); |
| 419 | |
| 420 | v1::scheduler::TestMesos mesos( |
| 421 | master.get()->pid, |
| 422 | ContentType::PROTOBUF, |
| 423 | scheduler); |
| 424 | |
| 425 | AWAIT_READY(connected); |
| 426 | |
| 427 | Future<v1::scheduler::Event::Subscribed> subscribed; |
| 428 | EXPECT_CALL(*scheduler, subscribed(_, _)) |
| 429 | .WillOnce(FutureArg<1>(&subscribed)); |
| 430 | |
| 431 | Future<v1::scheduler::Event::Offers> offers; |
| 432 | EXPECT_CALL(*scheduler, offers(_, _)) |
| 433 | .WillOnce(FutureArg<1>(&offers)) |
| 434 | .WillRepeatedly(Return()); // Ignore subsequent offers. |
| 435 | |
| 436 | EXPECT_CALL(*scheduler, heartbeat(_)) |
| 437 | .WillRepeatedly(Return()); // Ignore heartbeats. |
| 438 | |
| 439 | subscribe(&mesos, frameworkInfo); |
| 440 | |
| 441 | AWAIT_READY(subscribed); |
| 442 | |
| 443 | v1::FrameworkID frameworkId(subscribed->framework_id()); |
| 444 | |
| 445 | AWAIT_READY(offers); |
| 446 | ASSERT_FALSE(offers->offers().empty()); |
| 447 | const v1::Offer& offer = offers->offers(0); |
| 448 | const v1::AgentID& agentId = offer.agent_id(); |
| 449 | |
| 450 | Future<Event::Update> updateTaskStarting; |
| 451 | Future<Event::Update> updateTaskRunning; |
| 452 | Future<Event::Update> updateCheckResult; |
| 453 | Future<Event::Update> updateCheckResultChanged; |
| 454 | Future<Event::Update> updateCheckResultBack; |
| 455 | |
| 456 | EXPECT_CALL(*scheduler, update(_, _)) |
| 457 | .WillOnce(FutureArg<1>(&updateTaskStarting)) |
| 458 | .WillOnce(FutureArg<1>(&updateTaskRunning)) |
| 459 | .WillOnce(FutureArg<1>(&updateCheckResult)) |
| 460 | .WillOnce(FutureArg<1>(&updateCheckResultChanged)) |
nothing calls this directly
no test coverage detected