[ 
https://issues.apache.org/jira/browse/MESOS-3418?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3418:
-----------------------------
    Description: 
We currently have some helper functionality for V1 API tests. This is copied in 
a few test files.
Factor this out into a common place once the API is stabilized.
{code}
// Helper class for using EXPECT_CALL since the Mesos scheduler API
  // is callback based.
  class Callbacks
  {
  public:
    MOCK_METHOD0(connected, void(void));
    MOCK_METHOD0(disconnected, void(void));
    MOCK_METHOD1(received, void(const std::queue<Event>&));
  };
{code}
{code}
// Enqueues all received events into a libprocess queue.
// TODO(jmlvanre): Factor this common code out of tests into V1
// helper.
ACTION_P(Enqueue, queue)
{
  std::queue<Event> events = arg0;
  while (!events.empty()) {
    // Note that we currently drop HEARTBEATs because most of these tests
    // are not designed to deal with heartbeats.
    // TODO(vinod): Implement DROP_HTTP_CALLS that can filter heartbeats.
    if (events.front().type() == Event::HEARTBEAT) {
      VLOG(1) << "Ignoring HEARTBEAT event";
    } else {
      queue->put(events.front());
    }
    events.pop();
  }
}
{code}

We can also update the helpers in {{/tests/mesos.hpp}} to support the V1 API.  
This would let us get ride of lines like:
{code}
v1::TaskInfo taskInfo = evolve(createTask(devolve(offer), "", 
DEFAULT_EXECUTOR_ID));
{code}
In favor of:
{code}
v1::TaskInfo taskInfo = createTask(offer, "", DEFAULT_EXECUTOR_ID);
{code}

  was:
We currently have some helper functionality for V1 API tests. This is copied in 
a few test files.
Factor this out into a common place once the API is stabilized.
{code}
// Helper class for using EXPECT_CALL since the Mesos scheduler API
  // is callback based.
  class Callbacks
  {
  public:
    MOCK_METHOD0(connected, void(void));
    MOCK_METHOD0(disconnected, void(void));
    MOCK_METHOD1(received, void(const std::queue<Event>&));
  };
{code}
{code}
// Enqueues all received events into a libprocess queue.
// TODO(jmlvanre): Factor this common code out of tests into V1
// helper.
ACTION_P(Enqueue, queue)
{
  std::queue<Event> events = arg0;
  while (!events.empty()) {
    // Note that we currently drop HEARTBEATs because most of these tests
    // are not designed to deal with heartbeats.
    // TODO(vinod): Implement DROP_HTTP_CALLS that can filter heartbeats.
    if (events.front().type() == Event::HEARTBEAT) {
      VLOG(1) << "Ignoring HEARTBEAT event";
    } else {
      queue->put(events.front());
    }
    events.pop();
  }
}
{code}


> Factor out V1 API test helper functions
> ---------------------------------------
>
>                 Key: MESOS-3418
>                 URL: https://issues.apache.org/jira/browse/MESOS-3418
>             Project: Mesos
>          Issue Type: Improvement
>            Reporter: Joris Van Remoortere
>            Assignee: Guangya Liu
>              Labels: beginner, mesosphere, newbie, v1_api
>
> We currently have some helper functionality for V1 API tests. This is copied 
> in a few test files.
> Factor this out into a common place once the API is stabilized.
> {code}
> // Helper class for using EXPECT_CALL since the Mesos scheduler API
>   // is callback based.
>   class Callbacks
>   {
>   public:
>     MOCK_METHOD0(connected, void(void));
>     MOCK_METHOD0(disconnected, void(void));
>     MOCK_METHOD1(received, void(const std::queue<Event>&));
>   };
> {code}
> {code}
> // Enqueues all received events into a libprocess queue.
> // TODO(jmlvanre): Factor this common code out of tests into V1
> // helper.
> ACTION_P(Enqueue, queue)
> {
>   std::queue<Event> events = arg0;
>   while (!events.empty()) {
>     // Note that we currently drop HEARTBEATs because most of these tests
>     // are not designed to deal with heartbeats.
>     // TODO(vinod): Implement DROP_HTTP_CALLS that can filter heartbeats.
>     if (events.front().type() == Event::HEARTBEAT) {
>       VLOG(1) << "Ignoring HEARTBEAT event";
>     } else {
>       queue->put(events.front());
>     }
>     events.pop();
>   }
> }
> {code}
> We can also update the helpers in {{/tests/mesos.hpp}} to support the V1 API. 
>  This would let us get ride of lines like:
> {code}
> v1::TaskInfo taskInfo = evolve(createTask(devolve(offer), "", 
> DEFAULT_EXECUTOR_ID));
> {code}
> In favor of:
> {code}
> v1::TaskInfo taskInfo = createTask(offer, "", DEFAULT_EXECUTOR_ID);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to