From 348b48314eaf25036cbb5251bc29d6fc88717df1 Mon Sep 17 00:00:00 2001 From: Carlos Segarra Date: Fri, 26 Nov 2021 15:09:38 +0000 Subject: [PATCH] using defined constants, incrementing variable in loop, and checking for it in the tests --- src/scheduler/Scheduler.cpp | 10 ++++++---- tests/test/scheduler/test_exec_graph.cpp | 9 +++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/scheduler/Scheduler.cpp b/src/scheduler/Scheduler.cpp index 03ae6fb91..a804e4b2a 100644 --- a/src/scheduler/Scheduler.cpp +++ b/src/scheduler/Scheduler.cpp @@ -20,7 +20,9 @@ #include +#define GET_EXEC_GRAPH_SLEEP_MS 500 #define FLUSH_TIMEOUT_MS 10000 +#define MAX_GET_EXEC_GRAPH_RETRIES 3 using namespace faabric::util; using namespace faabric::snapshot; @@ -1017,16 +1019,16 @@ ExecGraphNode Scheduler::getFunctionExecGraphNode(unsigned int messageId) // we get them from Redis. For the time being, we retry a number of times // and fail if we don't succeed. std::vector messageBytes = redis.get(statusKey); - int maxNumRetries = 3; int numRetries = 0; - while (messageBytes.empty() && numRetries < maxNumRetries) { + while (messageBytes.empty() && numRetries < MAX_GET_EXEC_GRAPH_RETRIES) { SPDLOG_WARN( "Retry GET message for ExecGraph node with id {} (Retry {}/{})", messageId, numRetries + 1, - maxNumRetries); - SLEEP_MS(500); + MAX_GET_EXEC_GRAPH_RETRIES); + SLEEP_MS(GET_EXEC_GRAPH_SLEEP_MS); messageBytes = redis.get(statusKey); + ++numRetries; } if (messageBytes.empty()) { SPDLOG_ERROR("Can't GET message from redis (id: {}, key: {})", diff --git a/tests/test/scheduler/test_exec_graph.cpp b/tests/test/scheduler/test_exec_graph.cpp index 44b17ae10..1975240b6 100644 --- a/tests/test/scheduler/test_exec_graph.cpp +++ b/tests/test/scheduler/test_exec_graph.cpp @@ -72,6 +72,15 @@ TEST_CASE("Test execution graph", "[scheduler][exec-graph]") checkExecGraphEquality(expected, actual); } +TEST_CASE("Test can't get exec graph if results are not published", + "[scheduler][exec-graph]") +{ + faabric::Message msg = faabric::util::messageFactory("demo", "echo"); + + REQUIRE_THROWS( + faabric::scheduler::getScheduler().getFunctionExecGraph(msg.id())); +} + TEST_CASE("Test get unique hosts from exec graph", "[scheduler][exec-graph]") { faabric::Message msgA = faabric::util::messageFactory("demo", "echo");