Better error message when world size and rank are set as strings (#8316)
Co-authored-by: jiamingy <jm.yuan@outlook.com>
This commit is contained in:
@@ -324,4 +324,36 @@ TEST(CAPI, NullPtr) {
|
||||
ASSERT_NE(pos, std::string::npos);
|
||||
XGBAPISetLastError("");
|
||||
}
|
||||
|
||||
TEST(CAPI, JArgs) {
|
||||
{
|
||||
Json args{Object{}};
|
||||
args["key"] = String{"value"};
|
||||
args["null"] = Null{};
|
||||
auto value = OptionalArg<String>(args, "key", std::string{"foo"});
|
||||
ASSERT_EQ(value, "value");
|
||||
value = OptionalArg<String const>(args, "key", std::string{"foo"});
|
||||
ASSERT_EQ(value, "value");
|
||||
|
||||
ASSERT_THROW({ OptionalArg<Number>(args, "key", 0.0f); }, dmlc::Error);
|
||||
value = OptionalArg<String const>(args, "bar", std::string{"foo"});
|
||||
ASSERT_EQ(value, "foo");
|
||||
value = OptionalArg<String const>(args, "null", std::string{"foo"});
|
||||
ASSERT_EQ(value, "foo");
|
||||
}
|
||||
|
||||
{
|
||||
Json args{Object{}};
|
||||
args["key"] = String{"value"};
|
||||
args["null"] = Null{};
|
||||
auto value = RequiredArg<String>(args, "key", __func__);
|
||||
ASSERT_EQ(value, "value");
|
||||
value = RequiredArg<String const>(args, "key", __func__);
|
||||
ASSERT_EQ(value, "value");
|
||||
|
||||
ASSERT_THROW({ RequiredArg<Integer>(args, "key", __func__); }, dmlc::Error);
|
||||
ASSERT_THROW({ RequiredArg<String const>(args, "foo", __func__); }, dmlc::Error);
|
||||
ASSERT_THROW({ RequiredArg<String>(args, "null", __func__); }, dmlc::Error);
|
||||
}
|
||||
}
|
||||
} // namespace xgboost
|
||||
|
||||
@@ -85,6 +85,28 @@ TEST(FederatedCommunicatorSimpleTest, ThrowOnRankTooBig) {
|
||||
EXPECT_THROW(construct(), dmlc::Error);
|
||||
}
|
||||
|
||||
TEST(FederatedCommunicatorSimpleTest, ThrowOnWorldSizeNotInteger) {
|
||||
auto construct = []() {
|
||||
Json config{JsonObject()};
|
||||
config["federated_server_address"] = kServerAddress;
|
||||
config["federated_world_size"] = std::string("1");
|
||||
config["federated_rank"] = Integer(0);
|
||||
auto *comm = FederatedCommunicator::Create(config);
|
||||
};
|
||||
EXPECT_THROW(construct(), dmlc::Error);
|
||||
}
|
||||
|
||||
TEST(FederatedCommunicatorSimpleTest, ThrowOnRankNotInteger) {
|
||||
auto construct = []() {
|
||||
Json config{JsonObject()};
|
||||
config["federated_server_address"] = kServerAddress;
|
||||
config["federated_world_size"] = 1;
|
||||
config["federated_rank"] = std::string("0");
|
||||
auto *comm = FederatedCommunicator::Create(config);
|
||||
};
|
||||
EXPECT_THROW(construct(), dmlc::Error);
|
||||
}
|
||||
|
||||
TEST(FederatedCommunicatorSimpleTest, GetWorldSizeAndRank) {
|
||||
FederatedCommunicator comm{6, 3, kServerAddress};
|
||||
EXPECT_EQ(comm.GetWorldSize(), 6);
|
||||
|
||||
Reference in New Issue
Block a user