context("httppipe - unix")
test_that("basic use", {
skip_on_cran()
skip_if_not_using_docker()
skip_if_no_httppipe_support()
h <- httppipe("/var/run/docker.sock")
path <- "/_ping"
res <- h("GET", "/_ping")
expect_is(res, "list")
expect_is(res$content, "raw")
expect_identical(res$content, charToRaw("OK"))
expect_identical(res$status_code, 200L)
expect_identical(res$url, "http://localhost/_ping")
expect_is(res$headers, "raw")
expect_silent(curl::parse_headers(res$headers))
})
test_that("post", {
skip_on_cran()
skip_if_not_using_docker()
skip_if_no_httppipe_support()
h <- httppipe("/var/run/docker.sock")
nm <- "httppipe_volume"
path <- "/v1.29/volumes/create"
body <- charToRaw(sprintf('{"Name":"%s"}', nm))
headers <- list("Content-Type" = "application/json")
res <- h("POST", path, body, headers)
expect_equal(res$status_code, 201L)
expect_is(res$content, "raw")
expect_is(res$headers, "raw")
## Need to clean up too!
if (res$status_code == 201L) {
path <- sprintf("/v1.29/volumes/%s", nm)
res <- h("DELETE", path)
expect_equal(res$status_code, 204L)
expect_equal(res$content, raw())
}
})
test_that("no streaming implemented", {
skip_on_cran()
skip_if_not_using_docker()
skip_if_no_httppipe_support()
skip("FIXME")
h <- httppipe("/var/run/docker.sock")
nm <- "httppipe_container"
id <- system2(c("docker", "run", "--rm", "-d", "--name", nm,
"bfirsh/reticulate-splines"), stdout = TRUE)
on.exit(system2(c("docker", "stop", "-t0", id),
wait = FALSE, stderr = FALSE, stdout = FALSE))
path <- sprintf("/v1.29/containers/%s/logs?stdout=true&stderr=true", id)
res <- h("GET", path)
expect_true(as.raw(0) %in% res$content[2:7])
expect_error(h("GET", path, stream = TRUE),
"streaming connections not yet implemented")
})
test_that("available", {
skip_on_cran()
skip_if_not_using_docker()
skip_if_no_httppipe_support()
cl <- test_docker_client()# only when this works...
expect_true(httppipe_available())
})
test_that("available: verbose", {
mock_httppipe_prepare <- function() stop("can't load python")
expect_false(do_httppipe_available(FALSE, mock_httppipe_prepare))
expect_silent(do_httppipe_available(FALSE, mock_httppipe_prepare))
expect_message(do_httppipe_available(TRUE, mock_httppipe_prepare),
"can't load python")
mock_httppipe_prepare <- function() TRUE
expect_true(do_httppipe_available(FALSE, mock_httppipe_prepare))
expect_silent(do_httppipe_available(FALSE, mock_httppipe_prepare))
expect_silent(do_httppipe_available(TRUE, mock_httppipe_prepare))
})
test_that("python_locate_version", {
skip_on_cran()
skip_if_no_httppipe_support()
expect_error(python_locate_version("nosuchmodule"),
"Did not find required python module 'nosuchmodule'")
## This is designed to trigger the faster path:
expect_error(python_locate_version("nosuchmodule"),
"Did not find required python module 'nosuchmodule'")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.