Nothing
context("client")
teardown({
mlflow_clear_test_dir("mlruns")
})
test_that("http(s) clients work as expected", {
mlflow_clear_test_dir("mlruns")
with_mock(.env = "mlflow", mlflow_rest = function(..., client) {
args <- list(...)
expect_true(paste(args[1:2], collapse = "/") == "experiments/search")
list(experiments = c(1, 2, 3))
}, {
with_mock(.env = "mlflow", mlflow_register_local_server = function(...) NA, {
env <- list(
MLFLOW_TRACKING_USERNAME = "DonaldDuck",
MLFLOW_TRACKING_PASSWORD = "Quack",
MLFLOW_TRACKING_TOKEN = "$$$",
MLFLOW_TRACKING_INSECURE = "True"
)
with_envvar(env, {
http_host <- "http://remote"
client1 <- mlflow:::mlflow_client(http_host)
config <- client1$get_host_creds()
print(config)
expect_true(config$host == http_host)
expect_true(config$username == "DonaldDuck")
expect_true(config$password == "Quack")
expect_true(config$token == "$$$")
expect_true(config$insecure == "True")
https_host <- "https://remote"
client2 <- mlflow:::mlflow_client("https://remote")
config <- client2$get_host_creds()
expect_true(config$host == https_host)
env_str <- paste(env, collapse = "|")
env_str_2 <- paste(client2$get_cli_env(), collapse = "|")
expect_true(env_str == env_str_2)
})
with_mock(.env = "mlflow", mlflow_server = function(...) list(server_url = "local_server"), {
client3 <- mlflow:::mlflow_client()
config <- client3$get_host_creds()
expect_true(config$host == "local_server")
})
})
})
})
test_that("http(s) clients works with deprecated env vars", {
mlflow_clear_test_dir("mlruns")
with_mock(.env = "mlflow", mlflow_rest = function(..., client) {
args <- list(...)
expect_true(paste(args[1:2], collapse = "/") == "experiments/search")
list(experiments = c(1, 2, 3))
}, {
with_mock(.env = "mlflow", mlflow_register_local_server = function(...) NA, {
env <- list(
MLFLOW_USERNAME = "DonaldDuck",
MLFLOW_PASSWORD = "Quack",
MLFLOW_TOKEN = "$$$",
MLFLOW_INSECURE = "True"
)
with_envvar(env, {
http_host <- "http://remote"
client1 <- mlflow:::mlflow_client(http_host)
config <- client1$get_host_creds()
print(config)
expect_true(config$host == http_host)
expect_true(config$username == "DonaldDuck")
expect_true(config$password == "Quack")
expect_true(config$token == "$$$")
expect_true(config$insecure == "True")
https_host <- "https://remote"
client2 <- mlflow:::mlflow_client("https://remote")
config <- client2$get_host_creds()
expect_true(config$host == https_host)
env_str <- paste(list(
MLFLOW_TRACKING_USERNAME = "DonaldDuck",
MLFLOW_TRACKING_PASSWORD = "Quack",
MLFLOW_TRACKING_TOKEN = "$$$",
MLFLOW_TRACKING_INSECURE = "True"
), collapse = "|")
env_str_2 <- paste(client2$get_cli_env(), collapse = "|")
expect_true(env_str == env_str_2)
})
with_mock(.env = "mlflow", mlflow_server = function(...) list(server_url = "local_server"), {
client3 <- mlflow:::mlflow_client()
config <- client3$get_host_creds()
expect_true(config$host == "local_server")
})
})
})
})
test_that("rest call handles errors correctly", {
mlflow_clear_test_dir("mlruns")
mock_client <- mlflow:::new_mlflow_client_impl(get_host_creds = function() {
mlflow:::new_mlflow_host_creds(host = "localhost")
})
with_mock(.env = "httr", POST = function(...) {
httr:::response(
status_code = 400,
content = charToRaw(paste("{\"error_code\":\"INVALID_PARAMETER_VALUE\",",
"\"message\":\"experiment_id must be set to a non-zero value\"}",
sep = "")
)
)}, {
error_msg_regexp <- paste(
"API request to endpoint \'runs/create\' failed with error code 400",
"INVALID_PARAMETER_VALUE",
"experiment_id must be set to a non-zero value",
sep = ".*")
expect_error(
mlflow:::mlflow_rest( "runs", "create", client = mock_client, verb = "POST"),
error_msg_regexp
)
})
with_mock(.env = "httr", GET = function(...) {
httr:::response(
status_code = 500,
content = charToRaw(paste("some text."))
)
}, {
error_msg_regexp <- paste(
"API request to endpoint \'runs/create\' failed with error code 500",
"some text",
sep = ".*")
expect_error(
mlflow:::mlflow_rest( "runs", "create", client = mock_client, verb = "GET"),
error_msg_regexp
)
})
with_mock(.env = "httr", POST = function(...) {
httr:::response(
status_code = 503,
content = as.raw(c(0, 255))
)
}, {
error_msg_regexp <- paste(
"API request to endpoint \'runs/create\' failed with error code 503",
"00 ff",
sep = ".*")
expect_error(
mlflow:::mlflow_rest( "runs", "create", client = mock_client, verb = "POST"),
error_msg_regexp
)
})
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.