Nothing
context("http (compatibility)")
test_that("streaming raw", {
skip_if_no_httppipe_support()
dc <- test_docker_client()
dh <- test_docker_client(http_client_type = "httppipe")
x1 <- dc$container$create("richfitz/iterate", c("1000", "1"))
on.exit(x1$remove(force = TRUE))
x1$start()
x2 <- dh$container$get(x1$id())
logs1 <- x1$logs()
logs2 <- x2$logs()
expect_true(all(logs1 %in% logs2))
})
test_that("build", {
skip_if_no_httppipe_support()
dc <- test_docker_client()
context <- tar_directory("images/iterate")
expect_output(dc$image$build(context, nocache = TRUE, rm = TRUE,
stream = stdout(),
tag = "richfitz/iterate:testing"),
"FROM alpine:latest")
expect_silent(dc$image$build(context, nocache = TRUE, rm = TRUE,
stream = NULL,
tag = "richfitz/iterate:testing"))
p <- tempfile_test()
expect_silent(dc$image$build(context, nocache = TRUE, rm = TRUE,
stream = p,
tag = "richfitz/iterate:testing"))
expect_match(readLines(p), "FROM alpine:latest", all = FALSE)
dh <- test_docker_client(http_client_type = "httppipe")
expect_output(dh$image$build(context, nocache = TRUE, rm = TRUE,
stream = stdout(),
tag = "richfitz/iterate:testing"),
"FROM alpine:latest")
expect_silent(dh$image$build(context, nocache = TRUE, rm = TRUE,
stream = NULL,
tag = "richfitz/iterate:testing"))
p <- tempfile_test()
expect_silent(dh$image$build(context, nocache = TRUE, rm = TRUE,
stream = p,
tag = "richfitz/iterate:testing"))
expect_match(readLines(p), "FROM alpine:latest", all = FALSE)
})
test_that("docker run", {
skip_if_no_httppipe_support()
dh <- test_docker_client(http_client_type = "httppipe")
expect_output(
ans <- dh$container$run("richfitz/iterate", c("10", "0"), detach = FALSE,
rm = TRUE, stream = stdout()),
"Doing 10 iterations")
expect_silent(
ans <- dh$container$run("richfitz/iterate", c("10", "0"), detach = FALSE,
rm = TRUE, stream = FALSE))
p <- tempfile_test()
expect_silent(
ans <- dh$container$run("richfitz/iterate", c("10", "0"), detach = FALSE,
rm = TRUE, stream = p))
expect_match(readLines(p), "Doing 10 iterations", all = FALSE)
})
test_that("exec", {
skip_if_no_httppipe_support()
dh <- test_docker_client(http_client_type = "httppipe")
nm <- rand_str(10, "stevedore_")
## this sets up a container that will run forever
x <- dh$container$create("richfitz/iterate",
cmd = c("100", "100"),
name = nm)
x$start()
on.exit(x$remove(force = TRUE))
txt1 <- capture.output(res1 <- x$exec("ls"))
expect_is(res1$output, "docker_stream")
cmp <- unlist(strsplit(format(res1$output, style = "prefix"), "\n"))
expect_equal(txt1, cmp)
expect_silent(res2 <- x$exec("ls", stream = FALSE))
expect_is(res2$output, "docker_stream")
expect_equal(format(res2$output), format(res1$output))
tmp <- tempfile_test()
expect_silent(res3 <- x$exec("ls", stream = tmp))
expect_is(res3$output, "docker_stream")
expect_equal(format(res3$output), format(res1$output))
expect_equal(readLines(tmp), txt1)
})
test_that("pull", {
skip_if_no_httppipe_support()
skip_on_cran()
skip_if_no_internet()
dc <- test_docker_client(http_client_type = "curl")
dh <- test_docker_client(http_client_type = "httppipe")
txt0 <- capture.output(img0 <- dc$image$pull("alpine:latest"))
str <- "Pulling from library/alpine latest"
if (!any(grepl(str, txt0, fixed = TRUE))) {
skip("Docker has changed pull text")
}
txt1 <- capture.output(img1 <- dh$image$pull("alpine:latest"))
expect_match(txt1, str, fixed = TRUE, all = FALSE)
expect_silent(img2 <- dh$image$pull("alpine:latest", stream = NULL))
tmp <- tempfile_test()
expect_silent(img3 <- dh$image$pull("alpine:latest", stream = tmp))
expect_match(readLines(tmp), str, fixed = TRUE, all = FALSE)
})
test_that("log follow does not work", {
skip_if_no_httppipe_support()
dh <- test_docker_client(http_client_type = "httppipe")
nm <- rand_str(10, "stevedore_")
x <- dh$container$create("richfitz/iterate", c("1000", "1"), name = nm)
on.exit(x$remove())
expect_error(
x$logs(follow = TRUE),
"Endpoint 'container_logs' cannot be implemented because the 'httppipe' http client does not currently support streaming connections", fixed = TRUE)
})
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.