Nothing
context("Athena Metadata")
# NOTE System variable format returned for Unit tests:
# Sys.getenv("noctua_arn"): "arn:aws:sts::123456789012:assumed-role/role_name/role_session_name"
# Sys.getenv("noctua_s3_query"): "s3://path/to/query/bucket/"
# Sys.getenv("noctua_s3_tbl"): "s3://path/to/bucket/"
df_col_info <- data.frame(
field_name = c("w","x","y", "z", "timestamp"),
type = c("timestamp", "integer", "varchar", "boolean", "varchar"),
stringsAsFactors = F
)
con_info = c(
"profile_name",
"s3_staging",
"db.catalog",
"dbms.name",
"work_group",
"poll_interval",
"encryption_option",
"kms_key",
"expiration",
"keyboard_interrupt",
"region_name",
"paws",
"noctua",
"timezone",
"endpoint_override"
)
col_info_exp = c("w","x","y", "z", "timestamp")
test_that("Returning meta data",{
skip_if_no_env()
# Test connection is using AWS CLI to set profile_name
con = dbConnect(athena())
res1 = dbExecute(con, "select * from test_df")
res2 = dbSendStatement(con, "select * from test_df")
res_out2 = dbHasCompleted(res2)
res_out1 = dbHasCompleted(res1)
res_info = dbGetInfo(res1)
res_stat = dbStatistics(res1)
column_info1 = dbColumnInfo(res1)
column_info2 = dbListFields(con, "test_df")
con_info_exp = names(dbGetInfo(con))
list_tbl1 = any(grepl("test_df", dbListTables(con, schema="default")))
list_tbl2 = nrow(dbGetTables(con, schema="default")[TableName == "test_df"]) == 1
list_tbl3 = nrow(dbGetTables(con)[Schema == "default" & TableName == "test_df"]) == 1
list_tbl4 = any(grepl("test_df", dbListTables(con)))
partition1 = grepl("timestamp", dbGetPartition(con, "test_df")[[1]])
partition2 = names(dbGetPartition(con, "test_df", .format = T)) == "timestamp"
noctua_options("vroom")
partition3 = names(dbGetPartition(con, "test_df", .format = T)) == "timestamp"
noctua_options()
db_show_ddl = gsub(", \n 'transient_lastDdlTime'.*",")", dbShow(con, "test_df"))
db_info = dbGetInfo(con)
name1 <- db_detect(con, "table1")
name2 <- db_detect(con, "mydatabase.table1")
name3 <- db_detect(con, "mycatalog.mydatabase.table1")
expect_equal(dbGetStatement(res2), "select * from test_df")
dbClearResult(res1)
dbDisconnect(con)
expect_equal(column_info1, df_col_info)
expect_equal(column_info2, col_info_exp)
expect_equal(con_info[order(con_info)], con_info_exp[order(con_info_exp)])
expect_true(list_tbl1)
expect_true(list_tbl2)
expect_true(list_tbl3)
expect_true(list_tbl4)
expect_true(partition1)
expect_true(partition2)
expect_true(partition3)
expect_equal(db_show_ddl, show_ddl)
expect_warning(noctua:::time_check(Sys.time() + 10))
expect_error(noctua:::pkg_method("made_up", "made_up_pkg"))
expect_false(noctua:::is.s3_uri(NULL))
expect_true(is.list(db_info))
expect_error(dbGetInfo(con))
expect_true(res_out1)
expect_true(inherits(res_out2, "logical"))
expect_equal(
sort(names(res_info)),
c("OutputLocation", "Query", "QueryExecutionId", "StateChangeReason", "StatementType",
"Statistics", "Status", "UnloadDir", "WorkGroup"))
expect_true(is.list(res_stat))
expect_error(con_error_msg(res1, "dummy message"), "dummy message")
expect_equal(name1, list("db.catalog" = "AwsDataCatalog", "dbms.name" = "default", "table" = "table1"))
expect_equal(name2, list("db.catalog" = "AwsDataCatalog", "dbms.name" = "mydatabase", "table" = "table1"))
expect_equal(name3, list("db.catalog" = "mycatalog", "dbms.name" = "mydatabase", "table" = "table1"))
})
test_that("test connection when timezone is NULL", {
skip_if_no_env()
con <- dbConnect(athena(), timezone = NULL)
expect_equal(con@info$timezone, "UTC")
})
test_that("test endpoints", {
skip_if_no_env()
con1 = dbConnect(athena(), endpoint_override = "https://athena.eu-west-2.amazonaws.com/")
con2 = dbConnect(
athena(),
region_name = "us-east-2",
# Change default endpoints:
# athena: "https://athena.us-east-2.amazonaws.com"
# s3: "https://s3.us-east-2.amazonaws.com"
# glue: "https://glue.us-east-2.amazonaws.com"
endpoint_override = list(
athena = "https://athena-fips.us-east-2.amazonaws.com/",
s3 = "https://s3-fips.us-east-2.amazonaws.com/"
)
)
expect_equal(as.character(con1@ptr$Athena$.internal$config$endpoint), "https://athena.eu-west-2.amazonaws.com/")
expect_equal(as.character(con2@ptr$Athena$.internal$config$endpoint), "https://athena-fips.us-east-2.amazonaws.com/")
expect_equal(as.character(con2@ptr$S3$.internal$config$endpoint), "https://s3-fips.us-east-2.amazonaws.com/")
})
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.