Exemplo n.º 1
0
void TestHttpServer::HandleMetaRequest(IncomingHTTPRequest* _request) {
  if (_request->type() != BaseHTTPRequest::GET) {
    // We only accept get requests
    server_->SendErrorReply(_request, 400);
    return;
  }

  std::cerr << "Got a meta request" << std::endl;

  const HTTPKeyValuePairs& keyvalues = _request->keyvalues();
  EXPECT_EQ(nkeys, keyvalues.size());

  for (size_t i = 0; i < keyvalues.size(); ++i) {
    std::ostringstream key, value;
    key << "key" << i;
    value << "value" << i;

    EXPECT_EQ(key.str(), keyvalues[i].first);
    EXPECT_EQ(value.str(), keyvalues[i].second);
  }

  OutgoingHTTPResponse* response = new OutgoingHTTPResponse(_request);
  response->AddResponse("This is response for meta object\r\n");
  server_->SendReply(_request, 200, response);
}
Exemplo n.º 2
0
void StatsInterface::HandleStatsRequest(IncomingHTTPRequest* _request) {
  LOG(INFO) << "Got a stats request " << _request->GetQuery();
  // get the entire stuff
  unsigned char* pb = _request->ExtractFromPostData(0, _request->GetPayloadSize());
  proto::tmaster::MetricRequest req;
  if (!req.ParseFromArray(pb, _request->GetPayloadSize())) {
    LOG(ERROR) << "Unable to deserialize post data specified in StatsRequest";
    http_server_->SendErrorReply(_request, 400);
    delete _request;
    return;
  }
  proto::tmaster::MetricResponse* res =
    metrics_collector_->GetMetrics(req, tmaster_->getInitialTopology());
  sp_string response_string;
  CHECK(res->SerializeToString(&response_string));
  OutgoingHTTPResponse* response = new OutgoingHTTPResponse(_request);
  response->AddHeader("Content-Type", "application/octet-stream");
  response->AddHeader("Content-Length", std::to_string(response_string.size()));
  response->AddResponse(response_string);
  http_server_->SendReply(_request, 200, response);
  delete res;
  delete _request;
  LOG(INFO) << "Done with stats request ";
}