>From Ian Maxon <[email protected]>: Ian Maxon has submitted this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20432?usp=email )
( 5 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: [ASTERIXDB-3654][TEST]Use Azurite in testcontainers ...................................................................... [ASTERIXDB-3654][TEST]Use Azurite in testcontainers - user model changes: no - storage format changes: no - interface changes: no Details: - Use Azurite in testcontainers instead of installing and invoking it via npm through frontend-npm-plugin - Use the normal storage credential path instead of the anonymous auth test path for CloudStorageAzTest Ext-ref: MB-68803 Change-Id: Iad1a6f9331fd844f3e3c04b8f56e811e4227f83e Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20432 Reviewed-by: Michael Blow <[email protected]> Reviewed-by: Ian Maxon <[email protected]> Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> --- M asterixdb/asterix-app/pom.xml M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/cloud_storage/CloudStorageAzTest.java A asterixdb/asterix-app/src/test/resources/cc-cloud-storage-azblob.ftl M asterixdb/asterix-cloud/pom.xml M asterixdb/asterix-cloud/src/test/java/org/apache/asterix/cloud/azure/LSMAzBlobStorageTest.java M asterixdb/pom.xml 6 files changed, 241 insertions(+), 155 deletions(-) Approvals: Michael Blow: Looks good to me, approved Ian Maxon: Looks good to me, but someone else must approve Jenkins: Verified; Verified diff --git a/asterixdb/asterix-app/pom.xml b/asterixdb/asterix-app/pom.xml index f1bbb37..41311d9 100644 --- a/asterixdb/asterix-app/pom.xml +++ b/asterixdb/asterix-app/pom.xml @@ -293,29 +293,6 @@ </configuration> </execution> <execution> - <id>azurite</id> - <phase>${azurite.stage}</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <!--suppress UnresolvedMavenProperty --> - <executable>${project.build.directory}/npm/node_modules/.bin/azurite-blob</executable> - <workingDirectory>${project.build.directory}</workingDirectory> - <environmentVariables> - <PATH>${project.build.directory}/npm/node</PATH> - </environmentVariables> - <arguments> - <argument>--blobPort</argument> - <argument>15055</argument> - <argument>--location</argument> - <argument>${project.build.directory}/azurite</argument> - </arguments> - <async>true</async> - <outputFile>${project.build.directory}/azurite/logs/azurite.log</outputFile> - </configuration> - </execution> - <execution> <id>fake-gcs-server</id> <phase>${gcs.stage}</phase> <goals> @@ -697,43 +674,6 @@ <failIfNoTests>false</failIfNoTests> </properties> </profile> - <profile> - <id>azurite-tests</id> - <build> - <plugins> - <plugin> - <groupId>com.github.eirslett</groupId> - <artifactId>frontend-maven-plugin</artifactId> - <version>1.13.4</version> - <configuration> - <nodeVersion>v14.15.4</nodeVersion> - <npmVersion>6.14.11</npmVersion> - <workingDirectory>target/npm</workingDirectory> - <installDirectory>target/npm</installDirectory> - </configuration> - <executions> - <execution> - <id>install node and yarn</id> - <goals> - <goal>install-node-and-npm</goal> - </goals> - <phase>${azurite.npm.install.stage}</phase> - </execution> - <execution> - <id>azurite blob</id> - <phase>${azurite.install.stage}</phase> - <goals> - <goal>npm</goal> - </goals> - <configuration> - <arguments>install [email protected]</arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> </profiles> <dependencies> <dependency> @@ -1061,6 +1001,18 @@ <version>${project.version}</version> </dependency> <dependency> + <groupId>org.apache.asterix</groupId> + <artifactId>asterix-cloud</artifactId> + <version>${project.version}</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>azure</artifactId> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.testcontainers</groupId> <artifactId>postgresql</artifactId> <scope>test</scope> @@ -1201,5 +1153,17 @@ <version>2.3.31</version> <scope>test</scope> </dependency> + <dependency> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk18on</artifactId> + <version>1.78.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.bouncycastle</groupId> + <artifactId>bcpkix-jdk18on</artifactId> + <version>1.78.1</version> + <scope>test</scope> + </dependency> </dependencies> </project> diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/cloud_storage/CloudStorageAzTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/cloud_storage/CloudStorageAzTest.java index d3f766e..659e8cf 100644 --- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/cloud_storage/CloudStorageAzTest.java +++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/cloud_storage/CloudStorageAzTest.java @@ -19,8 +19,11 @@ package org.apache.asterix.test.cloud_storage; import static org.apache.asterix.api.common.LocalCloudUtil.CLOUD_STORAGE_BUCKET; +import static org.apache.asterix.api.common.LocalCloudUtilAdobeMock.fillConfigTemplate; +import static org.apache.asterix.cloud.azure.LSMAzBlobStorageTest.AZURITE_CONTAINER_VER; import static org.apache.asterix.test.cloud_storage.CloudStorageGCSTest.S3_ONLY; +import java.net.URI; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -28,6 +31,7 @@ import java.util.Random; import org.apache.asterix.api.common.LocalCloudUtilAdobeMock; +import org.apache.asterix.cloud.azure.LSMAzBlobStorageTest; import org.apache.asterix.common.config.GlobalConfig; import org.apache.asterix.test.common.TestExecutor; import org.apache.asterix.test.runtime.LangExecutionUtil; @@ -45,10 +49,17 @@ import org.junit.runners.MethodSorters; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; +import org.testcontainers.azure.AzuriteContainer; +import org.testcontainers.utility.MountableFile; +import com.azure.core.http.netty.NettyAsyncHttpClientBuilder; import com.azure.storage.blob.BlobServiceClient; import com.azure.storage.blob.BlobServiceClientBuilder; -import com.azure.storage.common.StorageSharedKeyCredential; + +import io.netty.handler.ssl.SslContext; +import io.netty.handler.ssl.SslContextBuilder; +import io.netty.handler.ssl.util.InsecureTrustManagerFactory; +import reactor.netty.http.client.HttpClient; /** * Run tests in cloud deployment environment @@ -62,40 +73,51 @@ private final TestCaseContext tcCtx; private static final String SUITE_TESTS = "testsuite_cloud_storage.xml"; private static final String ONLY_TESTS = "testsuite_cloud_storage_only.xml"; - private static final String CONFIG_FILE_NAME = "src/test/resources/cc-cloud-storage-azblob.conf"; + private static final String CONFIG_FILE = "target/cc-cloud-storage-azblob.conf"; + private static final String CONFIG_FILE_TEMPLATE = "src/test/resources/cc-cloud-storage-azblob.ftl"; private static final String DELTA_RESULT_PATH = "results_cloud"; private static final String EXCLUDED_TESTS = "MP"; + private static AzuriteContainer azBlob; + public CloudStorageAzTest(TestCaseContext tcCtx) { this.tcCtx = tcCtx; } @BeforeClass public static void setUp() throws Exception { - String endpointString = "http://127.0.0.1:15055/devstoreaccount1/" + CLOUD_STORAGE_BUCKET; - final String accKey = - "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=="; - final String accName = "devstoreaccount1"; - - BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().endpoint(endpointString) - .credential(new StorageSharedKeyCredential(accName, accKey)).buildClient(); + LocalCloudUtilAdobeMock.startS3CloudEnvironment(true, true); + LSMAzBlobStorageTest.generateSelfSignedTLS(); + MountableFile azureCert = MountableFile.forHostPath("target/azure_test.pfx"); + azBlob = new AzuriteContainer(AZURITE_CONTAINER_VER).withSsl(azureCert, "password"); + azBlob.start(); + SslContext insecureSslContext = + SslContextBuilder.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE).build(); + BlobServiceClient blobServiceClient = new BlobServiceClientBuilder() + .connectionString(azBlob.getConnectionString()) + .httpClient(new NettyAsyncHttpClientBuilder( + HttpClient.create().secure(sslSpec -> sslSpec.sslContext(insecureSslContext).build())).build()) + .buildClient(); + URI blobStore = URI.create(blobServiceClient.getAccountUrl()); + String endpoint = blobStore.getScheme() + "://" + blobStore.getAuthority(); + fillConfigTemplate(endpoint, CONFIG_FILE_TEMPLATE, CONFIG_FILE); cleanup(blobServiceClient); initialize(blobServiceClient); - //storage.close(); WHAT IS THIS FOR IN GCS - TestExecutor testExecutor = new TestExecutor(DELTA_RESULT_PATH); testExecutor.executorId = "cloud"; testExecutor.stripSubstring = "//DB:"; - LangExecutionUtil.setUp(CONFIG_FILE_NAME, testExecutor); - System.setProperty(GlobalConfig.CONFIG_FILE_PROPERTY, CONFIG_FILE_NAME); + LangExecutionUtil.setUp(CONFIG_FILE, testExecutor); + System.setProperty(GlobalConfig.CONFIG_FILE_PROPERTY, CONFIG_FILE); } @AfterClass public static void tearDown() throws Exception { LangExecutionUtil.tearDown(); LocalCloudUtilAdobeMock.shutdownSilently(); + azBlob.close(); + azBlob.stop(); } @Parameters(name = "CloudStorageAzBlobTest {index}: {0}") diff --git a/asterixdb/asterix-app/src/test/resources/cc-cloud-storage-azblob.ftl b/asterixdb/asterix-app/src/test/resources/cc-cloud-storage-azblob.ftl new file mode 100644 index 0000000..91d87cd --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/cc-cloud-storage-azblob.ftl @@ -0,0 +1,74 @@ +; Licensed to the Apache Software Foundation (ASF) under one +; or more contributor license agreements. See the NOTICE file +; distributed with this work for additional information +; regarding copyright ownership. The ASF licenses this file +; to you under the Apache License, Version 2.0 (the +; "License"); you may not use this file except in compliance +; with the License. You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, +; software distributed under the License is distributed on an +; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +; KIND, either express or implied. See the License for the +; specific language governing permissions and limitations +; under the License. + +[nc/asterix_nc1] +txn.log.dir=target/tmp/asterix_nc1/txnlog +core.dump.dir=target/tmp/asterix_nc1/coredump +iodevices=target/tmp/asterix_nc1/iodevice1 +iodevices=../asterix-server/target/tmp/asterix_nc1/iodevice2 +nc.api.port=19004 +#jvm.args=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5006 + +[nc/asterix_nc2] +ncservice.port=9091 +txn.log.dir=target/tmp/asterix_nc2/txnlog +core.dump.dir=target/tmp/asterix_nc2/coredump +iodevices=target/tmp/asterix_nc2/iodevice1,../asterix-server/target/tmp/asterix_nc2/iodevice2 +nc.api.port=19005 +#jvm.args=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5007 + +[nc] +credential.file=src/test/resources/security/passwd +python.cmd.autolocate=true +python.env=FOO=BAR=BAZ,BAR=BAZ +address=127.0.0.1 +command=asterixnc +app.class=org.apache.asterix.hyracks.bootstrap.NCApplication +jvm.args=-Xmx4096m -Dnode.Resolver="org.apache.asterix.external.util.IdentitiyResolverFactory" +storage.buffercache.size=128MB +storage.memorycomponent.globalbudget=512MB +storage.max.columns.in.zeroth.segment=800 + +[cc] +address = 127.0.0.1 +app.class=org.apache.asterix.hyracks.bootstrap.CCApplication +heartbeat.period=2000 +heartbeat.max.misses=25 +credential.file=src/test/resources/security/passwd + +[common] +log.dir = logs/ +log.level = INFO +compiler.framesize=32KB +compiler.sortmemory=320KB +compiler.groupmemory=160KB +compiler.joinmemory=256KB +compiler.textsearchmemory=160KB +compiler.windowmemory=192KB +compiler.ordered.fields=false +compiler.internal.sanitycheck=true +messaging.frame.size=4096 +messaging.frame.count=512 +cloud.deployment=true +storage.buffercache.pagesize=32KB +storage.partitioning=static +cloud.storage.scheme=azblob +cloud.storage.bucket=cloud-storage-container +cloud.storage.region=us-east-2 +cloud.storage.endpoint=${cloudUrl}/devstoreaccount1 +cloud.storage.disable.ssl.verify=true +cloud.storage.cache.policy=lazy \ No newline at end of file diff --git a/asterixdb/asterix-cloud/pom.xml b/asterixdb/asterix-cloud/pom.xml index bc49135..0d5b658 100644 --- a/asterixdb/asterix-cloud/pom.xml +++ b/asterixdb/asterix-cloud/pom.xml @@ -63,6 +63,17 @@ </executions> </plugin> <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>test-jar</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> <groupId>com.googlecode.maven-download-plugin</groupId> <artifactId>download-maven-plugin</artifactId> <version>1.4.2</version> @@ -135,76 +146,10 @@ <async>true</async> </configuration> </execution> - <execution> - <id>azurite</id> - <phase>${azurite.stage}</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <!--suppress UnresolvedMavenProperty --> - <executable>${project.build.directory}/npm/node_modules/.bin/azurite-blob</executable> - <workingDirectory>${project.build.directory}</workingDirectory> - <environmentVariables> - <PATH>${project.build.directory}/npm/node</PATH> - </environmentVariables> - <arguments> - <argument>--blobPort</argument> - <argument>15055</argument> - <argument>--location</argument> - <argument>${project.build.directory}/azurite</argument> - <argument>--debug</argument> - <argument>${project.build.directory}/azurite/logs/azurite-debug.log</argument> - </arguments> - <async>true</async> - <outputFile>${project.build.directory}/azurite/logs/azurite.log</outputFile> - </configuration> - </execution> </executions> </plugin> </plugins> </build> - - <profiles> - <profile> - <id>azurite-tests</id> - <build> - <plugins> - <plugin> - <groupId>com.github.eirslett</groupId> - <artifactId>frontend-maven-plugin</artifactId> - <version>1.13.4</version> - <configuration> - <nodeVersion>v14.15.4</nodeVersion> - <npmVersion>6.14.11</npmVersion> - <workingDirectory>target/npm</workingDirectory> - <installDirectory>target/npm</installDirectory> - </configuration> - <executions> - <execution> - <id>install node and yarn</id> - <goals> - <goal>install-node-and-npm</goal> - </goals> - <phase>${azurite.npm.install.stage}</phase> - </execution> - <execution> - <id>azurite blob</id> - <phase>${azurite.install.stage}</phase> - <goals> - <goal>npm</goal> - </goals> - <configuration> - <arguments>install [email protected]</arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> - <dependencies> <dependency> <groupId>org.apache.hyracks</groupId> @@ -271,12 +216,27 @@ <scope>test</scope> </dependency> <!-- aws s3 end --> - <dependency> <groupId>com.azure</groupId> <artifactId>azure-storage-blob-batch</artifactId> <version>12.23.0</version> </dependency> - + <dependency> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk18on</artifactId> + <version>1.78.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.bouncycastle</groupId> + <artifactId>bcpkix-jdk18on</artifactId> + <version>1.78.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>azure</artifactId> + <scope>test</scope> + </dependency> </dependencies> </project> diff --git a/asterixdb/asterix-cloud/src/test/java/org/apache/asterix/cloud/azure/LSMAzBlobStorageTest.java b/asterixdb/asterix-cloud/src/test/java/org/apache/asterix/cloud/azure/LSMAzBlobStorageTest.java index 0d5a9ba..44b4856 100644 --- a/asterixdb/asterix-cloud/src/test/java/org/apache/asterix/cloud/azure/LSMAzBlobStorageTest.java +++ b/asterixdb/asterix-cloud/src/test/java/org/apache/asterix/cloud/azure/LSMAzBlobStorageTest.java @@ -19,14 +19,34 @@ package org.apache.asterix.cloud.azure; +import java.io.File; +import java.io.FileOutputStream; +import java.math.BigInteger; +import java.net.URI; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.KeyStore; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.cert.X509Certificate; +import java.util.Date; + import org.apache.asterix.cloud.AbstractLSMTest; import org.apache.asterix.cloud.clients.ICloudGuardian; import org.apache.asterix.cloud.clients.azure.blobstorage.AzBlobStorageClientConfig; import org.apache.asterix.cloud.clients.azure.blobstorage.AzBlobStorageCloudClient; import org.apache.hyracks.util.StorageUtil; +import org.bouncycastle.asn1.x500.X500Name; +import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; +import org.bouncycastle.cert.X509v3CertificateBuilder; +import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter; +import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.testcontainers.azure.AzuriteContainer; +import org.testcontainers.utility.MountableFile; +import com.azure.core.http.netty.NettyAsyncHttpClientBuilder; import com.azure.core.http.rest.PagedIterable; import com.azure.storage.blob.BlobClient; import com.azure.storage.blob.BlobContainerClient; @@ -34,36 +54,70 @@ import com.azure.storage.blob.BlobServiceClientBuilder; import com.azure.storage.blob.models.BlobItem; import com.azure.storage.blob.models.ListBlobsOptions; -import com.azure.storage.common.StorageSharedKeyCredential; + +import io.netty.handler.ssl.SslContext; +import io.netty.handler.ssl.SslContextBuilder; +import io.netty.handler.ssl.util.InsecureTrustManagerFactory; +import reactor.netty.http.client.HttpClient; public class LSMAzBlobStorageTest extends AbstractLSMTest { private static BlobContainerClient client; private static BlobServiceClient blobServiceClient; - private static final int MOCK_SERVER_PORT = 15055; - private static final String MOCK_SERVER_HOSTNAME = "http://127.0.0.1:" + MOCK_SERVER_PORT; private static final String MOCK_SERVER_REGION = "us-west-2"; + private static AzuriteContainer azBlob; + public static final String AZURITE_CONTAINER_VER = "mcr.microsoft.com/azure-storage/azurite:3.35.0"; + + public static void generateSelfSignedTLS() throws Exception { + java.security.Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); + KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); + keyPairGenerator.initialize(2048); + KeyPair keyPair = keyPairGenerator.generateKeyPair(); + PublicKey publicKey = keyPair.getPublic(); + PrivateKey privateKey = keyPair.getPrivate(); + long now = System.currentTimeMillis(); + Date startDate = new Date(now); + X500Name dnName = new X500Name("CN=asterixdb azure test"); + BigInteger certSerialNumber = new BigInteger(Long.toString(now)); + Date endDate = new Date(now + 24 * 60 * 60 * 1000L); // 1 day validity + SubjectPublicKeyInfo subjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(publicKey.getEncoded()); + X509v3CertificateBuilder certificateBuilder = new X509v3CertificateBuilder(dnName, certSerialNumber, startDate, + endDate, dnName, subjectPublicKeyInfo); + JcaContentSignerBuilder contentSignerBuilder = new JcaContentSignerBuilder("SHA256WithRSA"); + X509Certificate selfSignedCertificate = new JcaX509CertificateConverter().setProvider("BC") + .getCertificate(certificateBuilder.build(contentSignerBuilder.build(privateKey))); + KeyStore keyStore = KeyStore.getInstance("PKCS12"); + keyStore.load(null, null); + keyStore.setKeyEntry("mytestcert", privateKey, "password".toCharArray(), + new java.security.cert.Certificate[] { selfSignedCertificate }); + try (FileOutputStream fos = new FileOutputStream("target" + File.separator + "azure_test.pfx")) { + keyStore.store(fos, "password".toCharArray()); + } + } @BeforeClass public static void setup() throws Exception { LOGGER.info("LSMAzBlobStorageTest setup"); - - String endpointString = "http://127.0.0.1:15055/devstoreaccount1/" + PLAYGROUND_CONTAINER; - final String accKey = - "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=="; - final String accName = "devstoreaccount1"; - - blobServiceClient = new BlobServiceClientBuilder().endpoint(endpointString) - .credential(new StorageSharedKeyCredential(accName, accKey)).buildClient(); - + generateSelfSignedTLS(); + MountableFile azureCert = MountableFile.forHostPath("target/azure_test.pfx"); + azBlob = new AzuriteContainer(AZURITE_CONTAINER_VER).withSsl(azureCert, "password"); + azBlob.start(); + SslContext insecureSslContext = + SslContextBuilder.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE).build(); + blobServiceClient = new BlobServiceClientBuilder().connectionString(azBlob.getConnectionString()) + .httpClient(new NettyAsyncHttpClientBuilder( + HttpClient.create().secure(sslSpec -> sslSpec.sslContext(insecureSslContext).build())).build()) + .buildClient(); // Start the test clean by deleting any residual data from previous tests blobServiceClient.deleteBlobContainerIfExists(PLAYGROUND_CONTAINER); client = blobServiceClient.createBlobContainerIfNotExists(PLAYGROUND_CONTAINER); LOGGER.info("Az Blob Client created successfully"); int writeBufferSize = StorageUtil.getIntSizeInBytes(5, StorageUtil.StorageUnit.MEGABYTE); - AzBlobStorageClientConfig config = new AzBlobStorageClientConfig(MOCK_SERVER_REGION, MOCK_SERVER_HOSTNAME, "", - true, 0, PLAYGROUND_CONTAINER, 1, 0, 0, writeBufferSize, false); + URI blobStore = URI.create(blobServiceClient.getAccountUrl()); + String endpoint = blobStore.getScheme() + "://" + blobStore.getAuthority() + "/devstoreaccount1"; + AzBlobStorageClientConfig config = new AzBlobStorageClientConfig(MOCK_SERVER_REGION, endpoint, "", false, 0, + PLAYGROUND_CONTAINER, 1, 0, 0, writeBufferSize, true); CLOUD_CLIENT = new AzBlobStorageCloudClient(config, ICloudGuardian.NoOpCloudGuardian.INSTANCE); } @@ -87,5 +141,7 @@ LOGGER.info("Shutdown Azurite"); // Azure clients do not need explicit closure. cleanup(); + azBlob.stop(); + azBlob.close(); } } diff --git a/asterixdb/pom.xml b/asterixdb/pom.xml index 74f4271..d6b9faf 100644 --- a/asterixdb/pom.xml +++ b/asterixdb/pom.xml @@ -650,6 +650,11 @@ ${coverageArgLine} ${extraSurefireArgLine} </argLine> + <environmentVariables> + <!-->Public/dummy test credentials for Azurite tests<!--> + <AZURE_STORAGE_ACCOUNT>devstoreaccount1</AZURE_STORAGE_ACCOUNT> + <AZURE_STORAGE_KEY>Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==</AZURE_STORAGE_KEY> + </environmentVariables> <includes> <include>${test.includes}</include> </includes> @@ -1697,6 +1702,11 @@ <version>42.2.24</version> </dependency> <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>azure</artifactId> + <version>1.21.3</version> + </dependency> + <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.14</version> -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20432?usp=email To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: asterixdb Gerrit-Branch: phoenix Gerrit-Change-Id: Iad1a6f9331fd844f3e3c04b8f56e811e4227f83e Gerrit-Change-Number: 20432 Gerrit-PatchSet: 7 Gerrit-Owner: Ian Maxon <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Ian Maxon <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Michael Blow <[email protected]>
