TEST_F(DistributedTests, test_workflow) { auto dist = Distributed(); auto s = dist.pullUpdates(); EXPECT_TRUE(s.ok()); EXPECT_EQ(s.toString(), "OK"); EXPECT_EQ(dist.getPendingQueryCount(), 2U); EXPECT_EQ(dist.results_.size(), 0U); s = dist.runQueries(); EXPECT_TRUE(s.ok()); EXPECT_EQ(s.toString(), "OK"); EXPECT_EQ(dist.getPendingQueryCount(), 0U); EXPECT_EQ(dist.results_.size(), 2U); }
Status Distributed::runQueries() { while (getPendingQueryCount() > 0) { auto query = popRequest(); auto sql = SQL(query.query); if (!sql.getStatus().ok()) { LOG(ERROR) << "Error running distributed query[" << query.id << "]: " << query.query; continue; } DistributedQueryResult result(std::move(query), std::move(sql.rows())); addResult(result); } return flushCompleted(); }
Status Distributed::runQueries() { while (getPendingQueryCount() > 0) { auto request = popRequest(); LOG(INFO) << "Executing distributed query: " << request.id << ": " << request.query; // Keep track of the currently executing request Distributed::setCurrentRequestId(request.id); SQL sql(request.query); if (!sql.getStatus().ok()) { LOG(ERROR) << "Error executing distributed query: " << request.id << ": " << sql.getMessageString(); } DistributedQueryResult result( request, sql.rows(), sql.columns(), sql.getStatus()); addResult(result); } return flushCompleted(); }