MCPcopy Create free account
hub / github.com/apache/datafusion / s3_object_store_builder

Function s3_object_store_builder

datafusion-cli/src/object_storage.rs:664–709  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

662
663 #[tokio::test]
664 async fn s3_object_store_builder() -> Result<()> {
665 // "fake" is uppercase to ensure the values are not lowercased when parsed
666 let access_key_id = "FAKE_access_key_id";
667 let secret_access_key = "FAKE_secret_access_key";
668 let region = "fake_us-east-2";
669 let endpoint = "endpoint33";
670 let session_token = "FAKE_session_token";
671 let location = "s3://bucket/path/FAKE/file.parquet";
672
673 let table_url = ListingTableUrl::parse(location)?;
674 let scheme = table_url.scheme();
675 let sql = format!(
676 "CREATE EXTERNAL TABLE test STORED AS PARQUET OPTIONS\
677 ('aws.access_key_id' '{access_key_id}', \
678 'aws.secret_access_key' '{secret_access_key}', \
679 'aws.region' '{region}', \
680 'aws.session_token' {session_token}, \
681 'aws.endpoint' '{endpoint}'\
682 ) LOCATION '{location}'"
683 );
684
685 let ctx = SessionContext::new();
686 ctx.register_table_options_extension_from_scheme(scheme);
687 let table_options = get_table_options(&ctx, &sql).await;
688 let aws_options = table_options.extensions.get::<AwsOptions>().unwrap();
689 let builder =
690 get_s3_object_store_builder(table_url.as_ref(), aws_options, false).await?;
691 // get the actual configuration information, then assert_eq!
692 let config = [
693 (AmazonS3ConfigKey::AccessKeyId, access_key_id),
694 (AmazonS3ConfigKey::SecretAccessKey, secret_access_key),
695 (AmazonS3ConfigKey::Region, region),
696 (AmazonS3ConfigKey::Endpoint, endpoint),
697 (AmazonS3ConfigKey::Token, session_token),
698 ];
699 for (key, value) in config {
700 assert_eq!(value, builder.get_config_value(&key).unwrap());
701 }
702 // Should not skip signature when credentials are provided
703 assert_eq!(
704 builder.get_config_value(&AmazonS3ConfigKey::SkipSignature),
705 Some("false".into())
706 );
707
708 Ok(())
709 }
710
711 #[tokio::test]
712 async fn s3_object_store_builder_allow_http_error() -> Result<()> {

Callers

nothing calls this directly

Calls 6

newFunction · 0.85
get_table_optionsFunction · 0.85
schemeMethod · 0.80
as_refMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…