This is an automated email from the ASF dual-hosted git repository.
tustvold pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/master by this push:
new 2d3a35007 Use http with fake-gcs (#2632)
2d3a35007 is described below
commit 2d3a350074dfb1d89a5d15ff8b37cae68eb8aa6f
Author: Raphael Taylor-Davies <[email protected]>
AuthorDate: Fri Sep 2 12:34:22 2022 +0100
Use http with fake-gcs (#2632)
---
.github/workflows/object_store.yml | 75 ++++++++++++++------------------------
object_store/src/gcp/mod.rs | 21 -----------
2 files changed, 27 insertions(+), 69 deletions(-)
diff --git a/.github/workflows/object_store.yml
b/.github/workflows/object_store.yml
index 118dbd932..6996aa706 100644
--- a/.github/workflows/object_store.yml
+++ b/.github/workflows/object_store.yml
@@ -60,74 +60,53 @@ jobs:
run: cargo clippy -p object_store --all-features --all-targets -- -D
warnings
# test the crate
+ # This runs outside a container to workaround lack of support for passing
arguments
+ # to service containers - https://github.com/orgs/community/discussions/26688
linux-test:
name: Emulator Tests
runs-on: ubuntu-latest
- services:
- fake-gcs:
- image: fsouza/fake-gcs-server
- ports:
- - 4443:4443
- localstack:
- image: localstack/localstack:0.14.4
- ports:
- - 4566:4566
- ec2-metadata:
- image: amazon/amazon-ec2-metadata-mock:v1.9.2
- ports:
- - 1338:1338
- env:
- # Only allow IMDSv2
- AEMM_IMDSV2: "1"
- azurite:
- image: mcr.microsoft.com/azure-storage/azurite
- ports:
- - 10000:10002
- container:
- image: amd64/rust
- env:
- # Disable full debug symbol generation to speed up CI build and keep
memory down
- # "1" means line tables only, which is useful for panic tracebacks.
- RUSTFLAGS: "-C debuginfo=1"
- # https://github.com/rust-lang/cargo/issues/10280
- CARGO_NET_GIT_FETCH_WITH_CLI: "true"
- RUST_BACKTRACE: "1"
- # Run integration tests
- TEST_INTEGRATION: 1
- EC2_METADATA_ENDPOINT: http://ec2-metadata:1338
- AZURE_USE_EMULATOR: "1"
- AZURITE_BLOB_STORAGE_URL: "http://azurite:10000"
- AZURITE_QUEUE_STORAGE_URL: "http://azurite:10001"
- GOOGLE_SERVICE_ACCOUNT: "/tmp/gcs.json"
- OBJECT_STORE_BUCKET: test-bucket
+ env:
+ # Disable full debug symbol generation to speed up CI build and keep
memory down
+ # "1" means line tables only, which is useful for panic tracebacks.
+ RUSTFLAGS: "-C debuginfo=1"
+ # https://github.com/rust-lang/cargo/issues/10280
+ CARGO_NET_GIT_FETCH_WITH_CLI: "true"
+ RUST_BACKTRACE: "1"
+ # Run integration tests
+ TEST_INTEGRATION: 1
+ EC2_METADATA_ENDPOINT: http://localhost:1338
+ AZURE_USE_EMULATOR: "1"
+ AZURITE_BLOB_STORAGE_URL: "http://localhost:10000"
+ AZURITE_QUEUE_STORAGE_URL: "http://localhost:10001"
+ GOOGLE_SERVICE_ACCOUNT: "/tmp/gcs.json"
+ OBJECT_STORE_BUCKET: test-bucket
steps:
- uses: actions/checkout@v3
- name: Configure Fake GCS Server (GCP emulation)
run: |
- curl --insecure -v -X POST --data-binary '{"name":"test-bucket"}' -H
"Content-Type: application/json" "https://fake-gcs:4443/storage/v1/b"
- echo '{"gcs_base_url": "https://fake-gcs:4443", "disable_oauth":
true, "client_email": "", "private_key": ""}' > "$GOOGLE_SERVICE_ACCOUNT"
+ docker run -d -p 4443:4443 fsouza/fake-gcs-server -scheme http
+ curl -v -X POST --data-binary '{"name":"test-bucket"}' -H
"Content-Type: application/json" "http://localhost:4443/storage/v1/b"
+ echo '{"gcs_base_url": "http://localhost:4443", "disable_oauth":
true, "client_email": "", "private_key": ""}' > "$GOOGLE_SERVICE_ACCOUNT"
- name: Setup LocalStack (AWS emulation)
env:
AWS_DEFAULT_REGION: "us-east-1"
AWS_ACCESS_KEY_ID: test
AWS_SECRET_ACCESS_KEY: test
- AWS_ENDPOINT: http://localstack:4566
+ AWS_ENDPOINT: http://localhost:4566
run: |
- cd /tmp
- curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o
"awscliv2.zip"
- unzip awscliv2.zip
- ./aws/install
- aws --endpoint-url=http://localstack:4566 s3 mb s3://test-bucket
+ docker run -d -p 4566:4566 localstack/localstack:0.14.4
+ docker run -d -p 1338:1338 amazon/amazon-ec2-metadata-mock:v1.9.2
--imdsv2
+ aws --endpoint-url=http://localhost:4566 s3 mb s3://test-bucket
- name: Configure Azurite (Azure emulation)
# the magical connection string is from
#
https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=visual-studio#http-connection-strings
run: |
- curl -sL https://aka.ms/InstallAzureCLIDeb | bash
- az storage container create -n test-bucket --connection-string
'DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite:10000/devstoreaccount1;QueueEndpoint=http://azurite:10001/devstoreaccount1;'
+ docker run -d -p 10000:10000 -p 10001:10001 -p 10002:10002
mcr.microsoft.com/azure-storage/azurite
+ az storage container create -n test-bucket --connection-string
'DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://localhost:10000/devstoreaccount1;QueueEndpoint=http://localhost:10001/devstoreaccount1;'
- name: Setup Rust toolchain
run: |
@@ -139,7 +118,7 @@ jobs:
OBJECT_STORE_AWS_DEFAULT_REGION: "us-east-1"
OBJECT_STORE_AWS_ACCESS_KEY_ID: test
OBJECT_STORE_AWS_SECRET_ACCESS_KEY: test
- OBJECT_STORE_AWS_ENDPOINT: http://localstack:4566
+ OBJECT_STORE_AWS_ENDPOINT: http://localhost:4566
run: |
# run tests
cargo test -p object_store --features=aws,azure,gcp
diff --git a/object_store/src/gcp/mod.rs b/object_store/src/gcp/mod.rs
index 65adf9128..0ef4d3564 100644
--- a/object_store/src/gcp/mod.rs
+++ b/object_store/src/gcp/mod.rs
@@ -782,20 +782,6 @@ impl GoogleCloudStorageBuilder {
self
}
- /// Use the specified http [`Client`] (defaults to [`Client::new`])
- ///
- /// This allows you to set custom client options such as allowing
- /// non secure connections or custom headers.
- ///
- /// NOTE: Currently only available in `test`s to facilitate
- /// testing, to avoid leaking details and preserve our ability to
- /// make changes to the implementation.
- #[cfg(test)]
- pub fn with_client(mut self, client: Client) -> Self {
- self.client = Some(client);
- self
- }
-
/// Configure a connection to Google Cloud Storage, returning a
/// new [`GoogleCloudStorage`] and consuming `self`
pub fn build(self) -> Result<GoogleCloudStorage> {
@@ -923,13 +909,6 @@ mod test {
env::var("GOOGLE_SERVICE_ACCOUNT")
.expect("already checked GOOGLE_SERVICE_ACCOUNT")
)
- .with_client(
- // ignore HTTPS errors in tests so we can use fake-gcs
server
- Client::builder()
- .danger_accept_invalid_certs(true)
- .build()
- .expect("Error creating http client for testing")
- )
}
}};
}