Skip to content

Commit

Permalink
[sdk] [tests] Support stopping control plane process
Browse files Browse the repository at this point in the history
  • Loading branch information
mcopik committed Oct 16, 2024
1 parent c0bed3d commit 4c2a948
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 2 deletions.
4 changes: 4 additions & 0 deletions sdk/include/praas/sdk/praas.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,12 @@ namespace praas::sdk {

bool delete_process(const Process& process);

bool delete_process(std::string_view app_name, std::string_view process_id);

bool stop_process(const Process& process);

bool stop_process(std::string_view app_name, std::string_view process_id);

std::string_view last_error() const;

private:
Expand Down
14 changes: 12 additions & 2 deletions sdk/src/praas.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,10 +157,15 @@ namespace praas::sdk {
}

bool PraaS::stop_process(const Process& process)
{
return stop_process(process.app_name, process.process_id);
}

bool PraaS::stop_process(std::string_view app_name, std::string_view process_id)
{
auto req = drogon::HttpRequest::newHttpRequest();
req->setMethod(drogon::Post);
req->setPath(fmt::format("/apps/{}/processes/{}/stop", process.app_name, process.process_id));
req->setPath(fmt::format("/apps/{}/processes/{}/stop", app_name, process_id));

std::promise<bool> p;

Expand Down Expand Up @@ -306,10 +311,15 @@ namespace praas::sdk {
}

bool PraaS::delete_process(const Process& process)
{
return delete_process(process.app_name, process.process_id);
}

bool PraaS::delete_process(std::string_view app_name, std::string_view process_id)
{
auto req = drogon::HttpRequest::newHttpRequest();
req->setMethod(drogon::Post);
req->setPath(fmt::format("/apps/{}/processes/{}/delete", process.app_name, process.process_id));
req->setPath(fmt::format("/apps/{}/processes/{}/delete", app_name, process_id));

std::promise<bool> p;

Expand Down
57 changes: 57 additions & 0 deletions tests/integration/invocation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,60 @@ TEST_F(IntegrationLocalInvocation, Invoke)
ASSERT_EQ(invoc2_res.process_name, new_invoc2_res.process_name);
}
}

TEST_F(IntegrationLocalInvocation, FailedInvoke)
{
praas::common::http::HTTPClientFactory::initialize(1);
{
praas::sdk::PraaS praas{fmt::format("http://127.0.0.1:{}", 9000)};

std::string app_name{"test_invoc2"};
if(!praas.get_application(app_name)) {
ASSERT_TRUE(praas.create_application(app_name, "spcleth/praas-examples:hello-world-cpp"));
}

auto invoc = praas.invoke_async(app_name, "hello-world", "");

auto invoc_res = invoc.get();

for(auto & res : {invoc_res}) {
ASSERT_EQ(res.return_code, 0);
EXPECT_EQ("Hello, world!", get_output_binary(res.response));
}

invoc = praas.invoke_async(app_name, "hello-world", "", "differnet-proc-name");

auto new_invoc_res = invoc.get();
for(auto & res : {new_invoc_res}) {
ASSERT_EQ(res.return_code, 1);
}
}
}

TEST_F(IntegrationLocalInvocation, InvokeStop)
{
praas::common::http::HTTPClientFactory::initialize(1);
{
praas::sdk::PraaS praas{fmt::format("http://127.0.0.1:{}", 9000)};

std::string app_name{"test_invoc3"};
if(!praas.get_application(app_name)) {
ASSERT_TRUE(praas.create_application(app_name, "spcleth/praas-examples:hello-world-cpp"));
}

auto invoc = praas.invoke_async(app_name, "hello-world", "");

auto invoc_res = invoc.get();

for(auto & res : {invoc_res}) {
ASSERT_EQ(res.return_code, 0);
EXPECT_EQ("Hello, world!", get_output_binary(res.response));
}

ASSERT_TRUE(praas.stop_process(app_name, invoc_res.process_name));

invoc = praas.invoke_async(app_name, "hello-world", invoc_res.process_name);
invoc_res = invoc.get();
ASSERT_EQ(invoc_res.return_code, 1);
}
}

0 comments on commit 4c2a948

Please sign in to comment.