[ASTERIXDB-3207][EXT]: Fix Azure blob storage test cases and use daemon azurite
Change-Id: I05db727d706e43396d7b4548433224e46947ccdf
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17596
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Ian Maxon <imaxon@uci.edu>
Reviewed-by: Michael Blow <mblow@apache.org>
diff --git a/asterixdb/asterix-app/pom.xml b/asterixdb/asterix-app/pom.xml
index ef74df4..d2b1a95 100644
--- a/asterixdb/asterix-app/pom.xml
+++ b/asterixdb/asterix-app/pom.xml
@@ -247,6 +247,31 @@
</environmentVariables>
</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>
<plugin>
@@ -329,6 +354,36 @@
</execution>
</executions>
</plugin>
+ <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 azurite</arguments>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
<pluginManagement>
<plugins>
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestConstants.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestConstants.java
index a2fbb37..1a5cb66 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestConstants.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestConstants.java
@@ -40,6 +40,10 @@
// account name
public static final String ACCOUNT_NAME_PLACEHOLDER = "%azure-accountname%";
public static final String AZURITE_ACCOUNT_NAME_DEFAULT = "devstoreaccount1";
+ public static final int AZURITE_PORT = 15055;
+ public static final String AZURITE_HOSTNAME = "127.0.0.1:" + AZURITE_PORT;
+ public static final String AZURITE_ENDPOINT =
+ "http://127.0.0.1:" + AZURITE_PORT + "/" + AZURITE_ACCOUNT_NAME_DEFAULT;
// account key
public static final String ACCOUNT_KEY_PLACEHOLDER = "%azure-accountkey%";
@@ -52,7 +56,7 @@
// blob endpoint
public static final String BLOB_ENDPOINT_PLACEHOLDER = "%azure-endpoint%";
- public static final String BLOB_ENDPOINT_DEFAULT = "http://localhost:10000/" + AZURITE_ACCOUNT_NAME_DEFAULT;
+ public static final String BLOB_ENDPOINT_DEFAULT = AZURITE_ENDPOINT;
public static final String MANAGED_IDENTITY_ID_PLACEHOLDER = "%azure-managedidentityid%";
public static final String MANAGED_IDENTITY_ID_DEFAULT = "myManagedIdentityId";
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
index f1d484e..525899a 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
@@ -861,9 +861,7 @@
params = upsertParam(params, param.getName(), param.getType(), param.getValue());
}
- if (!placeholders.isEmpty()) {
- str = applyExternalDatasetSubstitution(str, placeholders);
- }
+ str = applyExternalDatasetSubstitution(str, placeholders);
HttpUriRequest method = jsonEncoded ? constructPostMethodJson(str, uri, "statement", params)
: constructPostMethodUrl(str, uri, "statement", params);
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/microsoft/AzureBlobStorageExternalDatasetOnePartitionTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/microsoft/AzureBlobStorageExternalDatasetOnePartitionTest.java
index 9e66207..59c375a 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/microsoft/AzureBlobStorageExternalDatasetOnePartitionTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/microsoft/AzureBlobStorageExternalDatasetOnePartitionTest.java
@@ -23,12 +23,10 @@
import org.apache.asterix.test.runtime.LangExecutionUtil;
import org.apache.asterix.testframework.context.TestCaseContext;
import org.junit.FixMethodOrder;
-import org.junit.Ignore;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
-@Ignore
@RunWith(Parameterized.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class AzureBlobStorageExternalDatasetOnePartitionTest extends AzureBlobStorageExternalDatasetTest {
@@ -44,7 +42,8 @@
TEST_CONFIG_FILE_NAME = "src/test/resources/cc-single.conf";
PREPARE_PLAYGROUND_CONTAINER = AzureBlobStorageExternalDatasetOnePartitionTest::preparePlaygroundContainer;
PREPARE_FIXED_DATA_CONTAINER = AzureBlobStorageExternalDatasetOnePartitionTest::prepareFixedDataContainer;
- PREPARE_MIXED_DATA_CONTAINER = AzureBlobStorageExternalDatasetOnePartitionTest::prepareMixedDataContainer;
+ PREPARE_INCLUDE_EXCLUDE_CONTAINER = AzureBlobStorageExternalDatasetOnePartitionTest::prepareMixedDataContainer;
+ PREPARE_BOM_FILE_BUCKET = AzureBlobStorageExternalDatasetOnePartitionTest::prepareBomDataContainer;
return LangExecutionUtil.tests(ONLY_TESTS, SUITE_TESTS);
}
@@ -56,4 +55,7 @@
private static void prepareMixedDataContainer() {
}
+
+ private static void prepareBomDataContainer() {
+ }
}
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/microsoft/AzureBlobStorageExternalDatasetTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/microsoft/AzureBlobStorageExternalDatasetTest.java
index 7de2d7e..49f40ac 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/microsoft/AzureBlobStorageExternalDatasetTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/external_dataset/microsoft/AzureBlobStorageExternalDatasetTest.java
@@ -18,18 +18,14 @@
*/
package org.apache.asterix.test.external_dataset.microsoft;
-import static org.apache.asterix.test.common.TestConstants.Azure.AZURITE_ACCOUNT_KEY_DEFAULT;
-import static org.apache.asterix.test.common.TestConstants.Azure.AZURITE_ACCOUNT_NAME_DEFAULT;
-import static org.apache.asterix.test.common.TestConstants.Azure.BLOB_ENDPOINT_PLACEHOLDER;
-import static org.apache.asterix.test.common.TestConstants.Azure.sasToken;
-import static org.apache.asterix.test.external_dataset.ExternalDatasetTestUtils.PARQUET_DEFINITION;
-import static org.apache.asterix.test.external_dataset.parquet.BinaryFileConverterUtil.BINARY_GEN_BASEDIR;
+import static org.apache.asterix.test.common.TestConstants.Azure.*;
+import static org.apache.asterix.test.external_dataset.ExternalDatasetTestUtils.*;
import static org.apache.hyracks.util.file.FileUtil.joinPath;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
-import java.io.InputStream;
+import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.nio.file.Files;
@@ -59,10 +55,8 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.AfterClass;
-import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
@@ -80,7 +74,6 @@
import com.azure.storage.common.sas.AccountSasSignatureValues;
// TODO(Hussain): Need to run the test manually to ensure new tests (anonymous access) are working fine
-@Ignore
@RunWith(Parameterized.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class AzureBlobStorageExternalDatasetTest {
@@ -93,31 +86,21 @@
static String TEST_CONFIG_FILE_NAME;
static Runnable PREPARE_PLAYGROUND_CONTAINER;
static Runnable PREPARE_FIXED_DATA_CONTAINER;
- static Runnable PREPARE_MIXED_DATA_CONTAINER;
+ static Runnable PREPARE_INCLUDE_EXCLUDE_CONTAINER;
+ static Runnable PREPARE_BOM_FILE_BUCKET;
// Base directory paths for data files
private static final String JSON_DATA_PATH = joinPath("data", "json");
private static final String CSV_DATA_PATH = joinPath("data", "csv");
private static final String TSV_DATA_PATH = joinPath("data", "tsv");
- private static final String MIXED_DATA_PATH = joinPath("data", "mixed");
private static final String PARQUET_RAW_DATA_PATH = joinPath("data", "hdfs", "parquet");
- // Service endpoint
- private static final int BLOB_SERVICE_PORT = 10000;
- private static final String BLOB_SERVICE_ENDPOINT = "http://192.168.0.100:" + BLOB_SERVICE_PORT;
-
// Region, container and definitions
private static final String PLAYGROUND_CONTAINER = "playground";
private static final String FIXED_DATA_CONTAINER = "fixed-data"; // Do not use, has fixed data
private static final String INCLUDE_EXCLUDE_CONTAINER = "include-exclude";
+ private static final String BOM_FILE_CONTAINER = "bom-file-container";
private static final String PUBLIC_ACCESS_CONTAINER = "public-access-container"; // requires no authentication
- private static final String JSON_DEFINITION = "json-data/reviews/";
- private static final String CSV_DEFINITION = "csv-data/reviews/";
- private static final String TSV_DEFINITION = "tsv-data/reviews/";
-
- // This is used for a test to generate over 1000 number of files
- private static final String OVER_1000_OBJECTS_PATH = "over-1000-objects";
- private static final int OVER_1000_OBJECTS_COUNT = 2999;
private static final Set<String> fileNames = new HashSet<>();
@@ -125,6 +108,9 @@
private static BlobServiceClient blobServiceClient;
private static BlobContainerClient playgroundContainer;
private static BlobContainerClient publicAccessContainer;
+ private static BlobContainerClient fixedDataContainer;
+ private static BlobContainerClient mixedDataContainer;
+ private static BlobContainerClient bomContainer;
protected TestCaseContext tcCtx;
@@ -151,9 +137,10 @@
SUITE_TESTS = "testsuite_external_dataset_azure_blob_storage.xml";
ONLY_TESTS = "only_external_dataset.xml";
TEST_CONFIG_FILE_NAME = "src/main/resources/cc.conf";
- PREPARE_PLAYGROUND_CONTAINER = AzureBlobStorageExternalDatasetTest::preparePlaygroundContainer;
- PREPARE_FIXED_DATA_CONTAINER = AzureBlobStorageExternalDatasetTest::prepareFixedDataContainer;
- PREPARE_MIXED_DATA_CONTAINER = AzureBlobStorageExternalDatasetTest::prepareMixedDataContainer;
+ PREPARE_PLAYGROUND_CONTAINER = ExternalDatasetTestUtils::preparePlaygroundContainer;
+ PREPARE_FIXED_DATA_CONTAINER = ExternalDatasetTestUtils::prepareFixedDataContainer;
+ PREPARE_INCLUDE_EXCLUDE_CONTAINER = ExternalDatasetTestUtils::prepareMixedDataContainer;
+ PREPARE_BOM_FILE_BUCKET = ExternalDatasetTestUtils::prepareBomFileContainer;
return LangExecutionUtil.tests(ONLY_TESTS, SUITE_TESTS);
}
@@ -179,17 +166,39 @@
LOGGER.info("Creating Azurite Blob Service client");
BlobServiceClientBuilder builder = new BlobServiceClientBuilder();
builder.credential(new StorageSharedKeyCredential(AZURITE_ACCOUNT_NAME_DEFAULT, AZURITE_ACCOUNT_KEY_DEFAULT));
- builder.endpoint(BLOB_ENDPOINT_PLACEHOLDER);
+ builder.endpoint(AZURITE_ENDPOINT);
blobServiceClient = builder.buildClient();
LOGGER.info("Azurite Blob Service client created successfully");
+ // delete all existing containers
+ deleteContainersSilently();
+
+ LOGGER.info("Creating containers");
+ playgroundContainer = blobServiceClient.createBlobContainer(PLAYGROUND_CONTAINER);
+ fixedDataContainer = blobServiceClient.createBlobContainer(FIXED_DATA_CONTAINER);
+ mixedDataContainer = blobServiceClient.createBlobContainer(INCLUDE_EXCLUDE_CONTAINER);
+ bomContainer = blobServiceClient.createBlobContainer(BOM_FILE_CONTAINER);
+ publicAccessContainer = blobServiceClient.createBlobContainer(PUBLIC_ACCESS_CONTAINER);
+ publicAccessContainer.setAccessPolicy(PublicAccessType.CONTAINER, null);
+ LOGGER.info("Created containers successfully");
+
+ // Load 20 files in the public access container
+ Path filePath = Paths.get(JSON_DATA_PATH, "single-line", "20-records.json");
+ publicAccessContainer.getBlobClient("20-records.json").uploadFromFile(filePath.toAbsolutePath().toString());
+
// Generate the SAS token for the SAS test cases
sasToken = generateSasToken();
// Create the container and upload some json files
+ // Create the bucket and upload some json files
+ setDataPaths(JSON_DATA_PATH, CSV_DATA_PATH, TSV_DATA_PATH);
+ setUploaders(AzureBlobStorageExternalDatasetTest::loadPlaygroundData,
+ AzureBlobStorageExternalDatasetTest::loadFixedData, AzureBlobStorageExternalDatasetTest::loadMixedData,
+ AzureBlobStorageExternalDatasetTest::loadBomData);
PREPARE_PLAYGROUND_CONTAINER.run();
PREPARE_FIXED_DATA_CONTAINER.run();
- PREPARE_MIXED_DATA_CONTAINER.run();
+ PREPARE_INCLUDE_EXCLUDE_CONTAINER.run();
+ PREPARE_BOM_FILE_BUCKET.run();
}
private static String generateSasToken() {
@@ -200,344 +209,120 @@
return blobServiceClient.generateAccountSas(new AccountSasSignatureValues(expiry, permission, service, type));
}
- /**
- * Creates a container and fills it with some files for testing purpose.
- */
- private static void preparePlaygroundContainer() {
- deleteContainerSilently(PLAYGROUND_CONTAINER);
-
- LOGGER.info("creating container " + PLAYGROUND_CONTAINER);
- playgroundContainer = blobServiceClient.createBlobContainer(PLAYGROUND_CONTAINER);
- publicAccessContainer = blobServiceClient.createBlobContainer(PUBLIC_ACCESS_CONTAINER);
- publicAccessContainer.setAccessPolicy(PublicAccessType.CONTAINER, null);
- LOGGER.info("container " + PLAYGROUND_CONTAINER + " created successfully");
-
- LOGGER.info("Adding JSON files");
- loadJsonFiles();
- LOGGER.info("JSON Files added successfully");
-
- LOGGER.info("Adding CSV files");
- loadCsvFiles();
- LOGGER.info("CSV Files added successfully");
-
- LOGGER.info("Adding TSV files");
- loadTsvFiles();
- LOGGER.info("TSV Files added successfully");
-
- LOGGER.info("Loading " + OVER_1000_OBJECTS_COUNT + " into " + OVER_1000_OBJECTS_PATH);
- loadLargeNumberOfFiles();
- LOGGER.info("Added " + OVER_1000_OBJECTS_COUNT + " files into " + OVER_1000_OBJECTS_PATH + " successfully");
-
- LOGGER.info("Adding Parquet files to the bucket");
- loadParquetFiles();
- LOGGER.info("Parquet files added successfully");
- }
-
- /**
- * This container is being filled by fixed data, a test is counting all records. If this container is
- * changed, the test case will fail and its result will need to be updated each time
- */
- private static void prepareFixedDataContainer() {
- deleteContainerSilently(FIXED_DATA_CONTAINER);
- LOGGER.info("creating container " + FIXED_DATA_CONTAINER);
- BlobContainerClient fixedDataContainer = blobServiceClient.createBlobContainer(FIXED_DATA_CONTAINER);
- LOGGER.info("container " + FIXED_DATA_CONTAINER + " created successfully");
-
- LOGGER.info("Loading fixed data to " + FIXED_DATA_CONTAINER);
-
- // Files data
- Path filePath = Paths.get(JSON_DATA_PATH, "single-line", "20-records.json");
- fixedDataContainer.getBlobClient("1.json").uploadFromFile(filePath.toString());
- fixedDataContainer.getBlobClient("2.json").uploadFromFile(filePath.toString());
- fixedDataContainer.getBlobClient("lvl1/3.json").uploadFromFile(filePath.toString());
- fixedDataContainer.getBlobClient("lvl1/4.json").uploadFromFile(filePath.toString());
- fixedDataContainer.getBlobClient("lvl1/lvl2/5.json").uploadFromFile(filePath.toString());
- }
-
- private static void loadJsonFiles() {
- String dataBasePath = JSON_DATA_PATH;
- String definition = JSON_DEFINITION;
-
- // Normal format
- String definitionSegment = "json";
- loadData(dataBasePath, "single-line", "20-records.json", definition, definitionSegment, false);
- loadData(dataBasePath, "multi-lines", "20-records.json", definition, definitionSegment, false);
- loadData(dataBasePath, "multi-lines-with-arrays", "5-records.json", definition, definitionSegment, false);
- loadData(dataBasePath, "multi-lines-with-nested-objects", "5-records.json", definition, definitionSegment,
- false);
-
- definitionSegment = "json-array-of-objects";
- loadData(dataBasePath, "single-line", "array_of_objects.json", "json-data/", definitionSegment, false, false);
-
- // gz compressed format
- definitionSegment = "gz";
- loadGzData(dataBasePath, "single-line", "20-records.json", definition, definitionSegment, false);
- loadGzData(dataBasePath, "multi-lines", "20-records.json", definition, definitionSegment, false);
- loadGzData(dataBasePath, "multi-lines-with-arrays", "5-records.json", definition, definitionSegment, false);
- loadGzData(dataBasePath, "multi-lines-with-nested-objects", "5-records.json", definition, definitionSegment,
- false);
-
- // Mixed normal and gz compressed format
- definitionSegment = "mixed";
- loadData(dataBasePath, "single-line", "20-records.json", definition, definitionSegment, false);
- loadData(dataBasePath, "multi-lines", "20-records.json", definition, definitionSegment, false);
- loadData(dataBasePath, "multi-lines-with-arrays", "5-records.json", definition, definitionSegment, false);
- loadData(dataBasePath, "multi-lines-with-nested-objects", "5-records.json", definition, definitionSegment,
- false);
- loadGzData(dataBasePath, "single-line", "20-records.json", definition, definitionSegment, false);
- loadGzData(dataBasePath, "multi-lines", "20-records.json", definition, definitionSegment, false);
- loadGzData(dataBasePath, "multi-lines-with-arrays", "5-records.json", definition, definitionSegment, false);
- loadGzData(dataBasePath, "multi-lines-with-nested-objects", "5-records.json", definition, definitionSegment,
- false);
- }
-
- private static void loadCsvFiles() {
- String dataBasePath = CSV_DATA_PATH;
- String definition = CSV_DEFINITION;
-
- // Normal format
- String definitionSegment = "csv";
- loadData(dataBasePath, "", "01.csv", definition, definitionSegment, false);
- loadData(dataBasePath, "", "02.csv", definition, definitionSegment, false);
-
- // gz compressed format
- definitionSegment = "gz";
- loadGzData(dataBasePath, "", "01.csv", definition, definitionSegment, false);
- loadGzData(dataBasePath, "", "02.csv", definition, definitionSegment, false);
-
- // Mixed normal and gz compressed format
- definitionSegment = "mixed";
- loadData(dataBasePath, "", "01.csv", definition, definitionSegment, false);
- loadData(dataBasePath, "", "02.csv", definition, definitionSegment, false);
- loadGzData(dataBasePath, "", "01.csv", definition, definitionSegment, false);
- loadGzData(dataBasePath, "", "02.csv", definition, definitionSegment, false);
- }
-
- private static void loadTsvFiles() {
- String dataBasePath = TSV_DATA_PATH;
- String definition = TSV_DEFINITION;
-
- // Normal format
- String definitionSegment = "tsv";
- loadData(dataBasePath, "", "01.tsv", definition, definitionSegment, false);
- loadData(dataBasePath, "", "02.tsv", definition, definitionSegment, false);
-
- // gz compressed format
- definitionSegment = "gz";
- loadGzData(dataBasePath, "", "01.tsv", definition, definitionSegment, false);
- loadGzData(dataBasePath, "", "02.tsv", definition, definitionSegment, false);
-
- // Mixed normal and gz compressed format
- definitionSegment = "mixed";
- loadData(dataBasePath, "", "01.tsv", definition, definitionSegment, false);
- loadData(dataBasePath, "", "02.tsv", definition, definitionSegment, false);
- loadGzData(dataBasePath, "", "01.tsv", definition, definitionSegment, false);
- loadGzData(dataBasePath, "", "02.tsv", definition, definitionSegment, false);
- }
-
- private static void loadParquetFiles() {
- String dataBasePath = BINARY_GEN_BASEDIR;
- String definition = PARQUET_DEFINITION;
-
- // Normal format
- String definitionSegment = "";
- loadData(dataBasePath, "", "dummy_tweet.parquet", definition, definitionSegment, false, false);
- loadData(dataBasePath, "", "id_age.parquet", definition, definitionSegment, false, false);
- loadData(dataBasePath, "", "id_age-string.parquet", definition, definitionSegment, false, false);
- loadData(dataBasePath, "", "id_name.parquet", definition, definitionSegment, false, false);
- loadData(dataBasePath, "", "id_name_comment.parquet", definition, definitionSegment, false, false);
- loadData(dataBasePath, "", "heterogeneous_1.parquet", definition, definitionSegment, false, false);
- loadData(dataBasePath, "", "heterogeneous_2.parquet", definition, definitionSegment, false, false);
- }
-
- private static void loadData(String fileBasePath, String filePathSegment, String filename, String definition,
- String definitionSegment, boolean removeExtension) {
- loadData(fileBasePath, filePathSegment, filename, definition, definitionSegment, removeExtension, true);
- }
-
- private static void loadData(String fileBasePath, String filePathSegment, String filename, String definition,
- String definitionSegment, boolean removeExtension, boolean copyToSubLevels) {
- // Files data
- Path filePath = Paths.get(fileBasePath, filePathSegment, filename);
-
- // Keep or remove the file extension
- Assert.assertFalse("Files with no extension are not supported yet for external datasets", removeExtension);
- String finalFileName;
- if (removeExtension) {
- finalFileName = FilenameUtils.removeExtension(filename);
- } else {
- finalFileName = filename;
- }
-
- // Files base definition
- filePathSegment = filePathSegment.isEmpty() ? "" : filePathSegment + "/";
- definitionSegment = definitionSegment.isEmpty() ? "" : definitionSegment + "/";
- String basePath = definition + filePathSegment + definitionSegment;
-
- // Load the data
- playgroundContainer.getBlobClient(basePath + finalFileName).uploadFromFile(filePath.toString());
- publicAccessContainer.getBlobClient(basePath + finalFileName).uploadFromFile(filePath.toString());
- if (copyToSubLevels) {
- playgroundContainer.getBlobClient(basePath + "level1a/" + finalFileName)
- .uploadFromFile(filePath.toString());
- playgroundContainer.getBlobClient(basePath + "level1b/" + finalFileName)
- .uploadFromFile(filePath.toString());
- playgroundContainer.getBlobClient(basePath + "level1a/level2a/" + finalFileName)
- .uploadFromFile(filePath.toString());
- playgroundContainer.getBlobClient(basePath + "level1a/level2b/" + finalFileName)
- .uploadFromFile(filePath.toString());
- }
- }
-
- private static void loadGzData(String fileBasePath, String filePathSegment, String filename, String definition,
- String definitionSegment, boolean removeExtension) {
- try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
- GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream)) {
-
- // Files data
- Path filePath = Paths.get(fileBasePath, filePathSegment, filename);
-
- // Get the compressed data
- gzipOutputStream.write(Files.readAllBytes(filePath));
- gzipOutputStream.close(); // Need to close or data will be invalid
- byte[] gzipBytes = byteArrayOutputStream.toByteArray();
-
- // Keep or remove the file extension
- Assert.assertFalse("Files with no extension are not supported yet for external datasets", removeExtension);
- String finalFileName;
- if (removeExtension) {
- finalFileName = FilenameUtils.removeExtension(filename);
- } else {
- finalFileName = filename;
+ private static void loadPlaygroundData(String key, String content, boolean fromFile, boolean gzipped) {
+ if (!fromFile) {
+ try (ByteArrayInputStream inputStream = new ByteArrayInputStream(content.getBytes())) {
+ playgroundContainer.getBlobClient(key).upload(inputStream, inputStream.available());
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex.toString());
}
- finalFileName += ".gz";
+ } else {
+ if (!gzipped) {
+ playgroundContainer.getBlobClient(key).uploadFromFile(content);
+ } else {
+ try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+ GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream)) {
+ gzipOutputStream.write(Files.readAllBytes(Paths.get(content)));
+ gzipOutputStream.close(); // Need to close or data will be invalid
+ byte[] gzipBytes = byteArrayOutputStream.toByteArray();
- // Files base definition
- filePathSegment = filePathSegment.isEmpty() ? "" : filePathSegment + "/";
- definitionSegment = definitionSegment.isEmpty() ? "" : definitionSegment + "/";
- String basePath = definition + filePathSegment + definitionSegment;
-
- // Load the data
- ByteArrayInputStream inputStream = new ByteArrayInputStream(gzipBytes);
- playgroundContainer.getBlobClient(basePath + finalFileName).upload(inputStream, inputStream.available());
- inputStream.reset();
- playgroundContainer.getBlobClient(basePath + "level1a/" + finalFileName).upload(inputStream,
- inputStream.available());
- inputStream.reset();
- playgroundContainer.getBlobClient(basePath + "level1b/" + finalFileName).upload(inputStream,
- inputStream.available());
- inputStream.reset();
- playgroundContainer.getBlobClient(basePath + "level1a/level2a/" + finalFileName).upload(inputStream,
- inputStream.available());
- inputStream.reset();
- playgroundContainer.getBlobClient(basePath + "level1a/level2b/" + finalFileName).upload(inputStream,
- inputStream.available());
- closeInputStreamSilently(inputStream);
- } catch (Exception ex) {
- LOGGER.error(ex.getMessage());
+ try (ByteArrayInputStream inputStream = new ByteArrayInputStream(gzipBytes)) {
+ playgroundContainer.getBlobClient(key).upload(inputStream, inputStream.available());
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex.toString());
+ }
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex.toString());
+ }
+ }
}
}
- private static void loadLargeNumberOfFiles() {
- ByteArrayInputStream inputStream = null;
- for (int i = 0; i < OVER_1000_OBJECTS_COUNT; i++) {
- inputStream = new ByteArrayInputStream(("{\"id\":" + i + "}").getBytes());
- playgroundContainer.getBlobClient(OVER_1000_OBJECTS_PATH + "/" + i + ".json").upload(inputStream,
- inputStream.available());
+ private static void loadFixedData(String key, String content, boolean fromFile, boolean gzipped) {
+ if (!fromFile) {
+ try (ByteArrayInputStream inputStream = new ByteArrayInputStream(content.getBytes())) {
+ fixedDataContainer.getBlobClient(key).upload(inputStream, inputStream.available());
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex.toString());
+ }
+ } else {
+ if (!gzipped) {
+ fixedDataContainer.getBlobClient(key).uploadFromFile(content);
+ } else {
+ try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+ GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream)) {
+ gzipOutputStream.write(Files.readAllBytes(Paths.get(content)));
+ gzipOutputStream.close(); // Need to close or data will be invalid
+ byte[] gzipBytes = byteArrayOutputStream.toByteArray();
+
+ try (ByteArrayInputStream inputStream = new ByteArrayInputStream(gzipBytes)) {
+ fixedDataContainer.getBlobClient(key).upload(inputStream, inputStream.available());
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex.toString());
+ }
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex.toString());
+ }
+ }
}
- closeInputStreamSilently(inputStream);
}
- /**
- * Loads a combination of different file formats in the same path
- */
- private static void prepareMixedDataContainer() {
- deleteContainerSilently(INCLUDE_EXCLUDE_CONTAINER);
- LOGGER.info("creating container " + INCLUDE_EXCLUDE_CONTAINER);
- BlobContainerClient includeExcludeContainer = blobServiceClient.createBlobContainer(INCLUDE_EXCLUDE_CONTAINER);
- LOGGER.info("container " + INCLUDE_EXCLUDE_CONTAINER + " created successfully");
+ private static void loadMixedData(String key, String content, boolean fromFile, boolean gzipped) {
+ if (!fromFile) {
+ try (ByteArrayInputStream inputStream = new ByteArrayInputStream(content.getBytes())) {
+ mixedDataContainer.getBlobClient(key).upload(inputStream, inputStream.available());
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex.toString());
+ }
+ } else {
+ if (!gzipped) {
+ mixedDataContainer.getBlobClient(key).uploadFromFile(content);
+ } else {
+ try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+ GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream)) {
+ gzipOutputStream.write(Files.readAllBytes(Paths.get(content)));
+ gzipOutputStream.close(); // Need to close or data will be invalid
+ byte[] gzipBytes = byteArrayOutputStream.toByteArray();
- // JSON
- ByteArrayInputStream inputStream = new ByteArrayInputStream(("{\"id\":" + 1 + "}").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/json/extension/" + "hello-world-2018.json")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("{\"id\":" + 2 + "}").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/json/extension/" + "hello-world-2019.json")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("{\"id\":" + 3 + "}").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/json/extension/" + "hello-world-2020.json")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("{\"id\":" + 4 + "}").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/json/EXTENSION/" + "goodbye-world-2018.json")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("{\"id\":" + 5 + "}").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/json/EXTENSION/" + "goodbye-world-2019.json")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("{\"id\":" + 6 + "}").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/json/EXTENSION/" + "goodbye-world-2020.json")
- .upload(inputStream, inputStream.available());
+ try (ByteArrayInputStream inputStream = new ByteArrayInputStream(gzipBytes)) {
+ mixedDataContainer.getBlobClient(key).upload(inputStream, inputStream.available());
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex.toString());
+ }
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex.toString());
+ }
+ }
+ }
+ }
- // CSV
- inputStream = new ByteArrayInputStream(("7,\"good\"").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/csv/extension/" + "hello-world-2018.csv")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("8,\"good\"").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/csv/extension/" + "hello-world-2019.csv")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("9,\"good\"").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/csv/extension/" + "hello-world-2020.csv")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("10,\"good\"").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/csv/EXTENSION/" + "goodbye-world-2018.csv")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("11,\"good\"").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/csv/EXTENSION/" + "goodbye-world-2019.csv")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("12,\"good\"").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/csv/EXTENSION/" + "goodbye-world-2020.csv")
- .upload(inputStream, inputStream.available());
+ private static void loadBomData(String key, String content, boolean fromFile, boolean gzipped) {
+ if (!fromFile) {
+ try (ByteArrayInputStream inputStream = new ByteArrayInputStream(content.getBytes())) {
+ bomContainer.getBlobClient(key).upload(inputStream, inputStream.available());
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex.toString());
+ }
+ } else {
+ if (!gzipped) {
+ bomContainer.getBlobClient(key).uploadFromFile(content);
+ } else {
+ try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+ GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream)) {
+ gzipOutputStream.write(Files.readAllBytes(Paths.get(content)));
+ gzipOutputStream.close(); // Need to close or data will be invalid
+ byte[] gzipBytes = byteArrayOutputStream.toByteArray();
- // TSV
- inputStream = new ByteArrayInputStream(("13\t\"good\"").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/tsv/extension/" + "hello-world-2018.tsv")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("14\t\"good\"").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/tsv/extension/" + "hello-world-2019.tsv")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("15\t\"good\"").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/tsv/extension/" + "hello-world-2020.tsv")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("16\t\"good\"").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/tsv/EXTENSION/" + "goodbye-world-2018.tsv")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("17\t\"good\"").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/tsv/EXTENSION/" + "goodbye-world-2019.tsv")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("18\t\"good\"").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/tsv/EXTENSION/" + "goodbye-world-2020.tsv")
- .upload(inputStream, inputStream.available());
-
- // JSON no extension
- inputStream = new ByteArrayInputStream(("{\"id\":" + 1 + "}").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/json/no-extension/" + "hello-world-2018")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("{\"id\":" + 2 + "}").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/json/no-extension/" + "hello-world-2019")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("{\"id\":" + 3 + "}").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/json/no-extension/" + "hello-world-2020")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("{\"id\":" + 4 + "}").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/json/NO-EXTENSION/" + "goodbye-world-2018")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("{\"id\":" + 5 + "}").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/json/NO-EXTENSION/" + "goodbye-world-2019")
- .upload(inputStream, inputStream.available());
- inputStream = new ByteArrayInputStream(("{\"id\":" + 6 + "}").getBytes());
- includeExcludeContainer.getBlobClient(MIXED_DATA_PATH + "/json/NO-EXTENSION/" + "goodbye-world-2020")
- .upload(inputStream, inputStream.available());
-
- closeInputStreamSilently(inputStream);
+ try (ByteArrayInputStream inputStream = new ByteArrayInputStream(gzipBytes)) {
+ bomContainer.getBlobClient(key).upload(inputStream, inputStream.available());
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex.toString());
+ }
+ } catch (IOException ex) {
+ throw new IllegalArgumentException(ex.toString());
+ }
+ }
+ }
}
static class AzureTestExecutor extends TestExecutor {
@@ -565,6 +350,7 @@
queryCount, expectedResultFileCtxs, testFile, actualPath);
}
}
+
}
private static void dropRecreateContainer(String containerName, String definition, String files) {
@@ -627,21 +413,22 @@
LOGGER.info("Done creating container with data");
}
+ private static void deleteContainersSilently() {
+ deleteContainerSilently(PLAYGROUND_CONTAINER);
+ deleteContainerSilently(FIXED_DATA_CONTAINER);
+ deleteContainerSilently(PUBLIC_ACCESS_CONTAINER);
+ deleteContainerSilently(INCLUDE_EXCLUDE_CONTAINER);
+ deleteContainerSilently(BOM_FILE_CONTAINER);
+ }
+
private static void deleteContainerSilently(String containerName) {
LOGGER.info("Deleting container " + containerName);
try {
blobServiceClient.deleteBlobContainer(containerName);
} catch (Exception ex) {
// Do nothing
+ LOGGER.warn("Ignoring encountered error while deleting container {}", ex.getMessage());
}
LOGGER.info("Container " + containerName + " deleted successfully");
}
-
- private static void closeInputStreamSilently(InputStream inputStream) {
- try {
- inputStream.close();
- } catch (Exception ex) {
- LOGGER.error(ex.getMessage());
- }
- }
}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-allowed/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-allowed/test.000.ddl.sqlpp
index a665d05..911f6d7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-allowed/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-allowed/test.000.ddl.sqlpp
@@ -28,7 +28,6 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
("endpoint"="%azure-endpoint%"),
-("container"="public-access"),
-("definition"="json-data/reviews/single-line/json"),
+("container"="public-access-container"),
("format"="json")
);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/account-key-missing/test.000.ddl.sqlpp
similarity index 95%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/account-key-missing/test.000.ddl.sqlpp
index ca750fa..5951a99 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/account-key-missing/test.000.ddl.sqlpp
@@ -28,7 +28,6 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/account-key-missing/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/account-key-missing/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/account-name-missing/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/account-name-missing/test.000.ddl.sqlpp
index ca750fa..ee2e6bf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/account-name-missing/test.000.ddl.sqlpp
@@ -27,8 +27,7 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("accountKey"="%azure-accountkey%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/account-name-missing/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/account-name-missing/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-certificate-password-present/test.000.ddl.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-certificate-password-present/test.000.ddl.sqlpp
index ca750fa..1c24d20 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-certificate-password-present/test.000.ddl.sqlpp
@@ -28,7 +28,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("accountKey"="%azure-accountkey%"),
+("clientCertificatePassword"="%azure-clientcertificatepassword%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-certificate-password-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-certificate-password-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-certificate-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-certificate-present/test.000.ddl.sqlpp
index ca750fa..dcb4e07 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-certificate-present/test.000.ddl.sqlpp
@@ -28,7 +28,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("accountKey"="%azure-accountkey%"),
+("clientCertificate"="%azure-clientcertificate%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-certificate-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-certificate-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-id-present/test.000.ddl.sqlpp
similarity index 94%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-id-present/test.000.ddl.sqlpp
index ca750fa..e0a627f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-id-present/test.000.ddl.sqlpp
@@ -28,7 +28,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("accountKey"="%azure-accountkey%"),
+("clientId"="%azure-clientid%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-id-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-id-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-secret-present/test.000.ddl.sqlpp
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-secret-present/test.000.ddl.sqlpp
index ca750fa..21a8e96 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-secret-present/test.000.ddl.sqlpp
@@ -28,7 +28,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("accountKey"="%azure-accountkey%"),
+("clientSecret"="%azure-clientsecret%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-secret-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/client-secret-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/managed-identity-id-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/managed-identity-id-present/test.000.ddl.sqlpp
index ca750fa..6e50d51 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/managed-identity-id-present/test.000.ddl.sqlpp
@@ -28,7 +28,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("accountKey"="%azure-accountkey%"),
+("managedIdentityId"="%azure-managedidentityid%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/managed-identity-id-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/managed-identity-id-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/shared-access-signature-present/test.000.ddl.sqlpp
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/shared-access-signature-present/test.000.ddl.sqlpp
index ca750fa..0c85000 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/shared-access-signature-present/test.000.ddl.sqlpp
@@ -28,7 +28,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("accountKey"="%azure-accountkey%"),
+("sharedAccessSignature"="%azure-sas%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/shared-access-signature-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/shared-access-signature-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/tenant-id-present/test.000.ddl.sqlpp
similarity index 94%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/tenant-id-present/test.000.ddl.sqlpp
index ca750fa..4c9de24 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/tenant-id-present/test.000.ddl.sqlpp
@@ -28,7 +28,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("accountKey"="%azure-accountkey%"),
+("tenantId"="%azure-tenantid%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/tenant-id-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key/tenant-id-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/client-certificate-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/client-certificate-present/test.000.ddl.sqlpp
index ca750fa..f484dc5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/client-certificate-present/test.000.ddl.sqlpp
@@ -27,8 +27,7 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("clientCertificate"="%azure-clientcertificate%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/client-certificate-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/client-certificate-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/client-secret-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/client-secret-present/test.000.ddl.sqlpp
index ca750fa..54dfd17 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/client-secret-present/test.000.ddl.sqlpp
@@ -27,8 +27,7 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("clientSecret"="%azure-clientsecret%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/client-secret-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/client-secret-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/tenant-id-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/tenant-id-present/test.000.ddl.sqlpp
index ca750fa..1e9ceb4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/tenant-id-present/test.000.ddl.sqlpp
@@ -27,8 +27,7 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("tenantId"="%azure-tenantid%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/tenant-id-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing/tenant-id-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-missing-and-client-certificate-missing/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-missing-and-client-certificate-missing/test.000.ddl.sqlpp
index ca750fa..2eca2bc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-missing-and-client-certificate-missing/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("clientId"="%azure-clientid%"),
+("tenantId"="%azure-tenantid%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-missing-and-client-certificate-missing/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-missing-and-client-certificate-missing/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-present-client-certificate-password-present/test.000.ddl.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-present-client-certificate-password-present/test.000.ddl.sqlpp
index ca750fa..a630f5f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-present-client-certificate-password-present/test.000.ddl.sqlpp
@@ -27,8 +27,10 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("clientId"="%azure-clientid%"),
+("clientSecret"="%azure-clientsecret%"),
+("clientCertificatePassword"="%azure-clientcertificatepassword%"),
+("tenantId"="%azure-tenantid%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-present-client-certificate-password-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-present-client-certificate-password-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-present-client-certificate-present/test.000.ddl.sqlpp
similarity index 87%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-present-client-certificate-present/test.000.ddl.sqlpp
index ca750fa..27d0ff6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-present-client-certificate-present/test.000.ddl.sqlpp
@@ -27,8 +27,10 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("clientId"="%azure-clientid%"),
+("clientSecret"="%azure-clientsecret%"),
+("clientCertificate"="%azure-clientcertificate%"),
+("tenantId"="%azure-tenantid%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-present-client-certificate-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/client-secret-present-client-certificate-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/tenant-id-missing/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/tenant-id-missing/test.000.ddl.sqlpp
index ca750fa..3b917ee 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/tenant-id-missing/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("clientId"="%azure-clientid%"),
+("clientSecret"="%azure-clientsecret%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/tenant-id-missing/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id/tenant-id-missing/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-certificate-password-present/test.000.ddl.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-certificate-password-present/test.000.ddl.sqlpp
index ca750fa..79ea2533 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-certificate-password-present/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("managedIdentityId"="%azure-managedidentityid%"),
+("clientCertificatePassword"="%azure-clientcertificatepassword%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-certificate-password-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-certificate-password-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-certificate-present/test.000.ddl.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-certificate-present/test.000.ddl.sqlpp
index ca750fa..7855483 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-certificate-present/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("managedIdentityId"="%azure-managedidentityid%"),
+("clientCertificate"="%azure-clientcertificate%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-certificate-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-certificate-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-id-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-id-present/test.000.ddl.sqlpp
index ca750fa..1a4a9a6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-id-present/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("managedIdentityId"="%azure-managedidentityid%"),
+("clientId"="%azure-clientid%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-id-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-id-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-secret-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-secret-present/test.000.ddl.sqlpp
index ca750fa..195f02d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-secret-present/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("managedIdentityId"="%azure-managedidentityid%"),
+("clientSecret"="%azure-clientsecret%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-secret-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/client-secret-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/tenant-id-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/tenant-id-present/test.000.ddl.sqlpp
index ca750fa..f9c84e9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/tenant-id-present/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("managedIdentityId"="%azure-managedidentityid%"),
+("tenantId"="%azure-tenantid%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/tenant-id-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id/tenant-id-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/no-endpoint/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/no-endpoint/test.000.ddl.sqlpp
index ca750fa..bf0c2a7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/no-endpoint/test.000.ddl.sqlpp
@@ -28,8 +28,7 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
-("endpoint"="%azure-endpoint%"),
+("accountKey"="%azure-accountkey%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
("format"="json")
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/no-endpoint/test.999.ddl.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/no-endpoint/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-certificate-password-present/test.000.ddl.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-certificate-password-present/test.000.ddl.sqlpp
index ca750fa..c8be6be 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-certificate-password-present/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("sharedAccessSignature"="%azure-sas%"),
+("clientCertificatePassword"="%azure-clientcertificatepassword%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-certificate-password-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-certificate-password-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-certificate-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-certificate-present/test.000.ddl.sqlpp
index ca750fa..953a965 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-certificate-present/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("sharedAccessSignature"="%azure-sas%"),
+("clientCertificate"="%azure-clientcertificate%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-certificate-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-certificate-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-id-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-id-present/test.000.ddl.sqlpp
index ca750fa..853abcd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-id-present/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("sharedAccessSignature"="%azure-sas%"),
+("clientId"="%azure-clientid%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-id-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-id-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-secret-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-secret-present/test.000.ddl.sqlpp
index ca750fa..0d165a4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-secret-present/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("sharedAccessSignature"="%azure-sas%"),
+("clientSecret"="%azure-clientsecret%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-secret-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/client-secret-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/managed-identity-id-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/managed-identity-id-present/test.000.ddl.sqlpp
index ca750fa..aad45e1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/managed-identity-id-present/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("sharedAccessSignature"="%azure-sas%"),
+("managedIdentityId"="%azure-managedidentityid%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/managed-identity-id-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/managed-identity-id-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/tenant-id-present/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/tenant-id-present/test.000.ddl.sqlpp
index ca750fa..9cdf7e2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/tenant-id-present/test.000.ddl.sqlpp
@@ -27,8 +27,8 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("sharedAccessSignature"="%azure-sas%"),
+("tenantId"="%azure-tenantid%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/tenant-id-present/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature/tenant-id-present/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.000.ddl.sqlpp
deleted file mode 100644
index a2f680f..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/test.000.ddl.sqlpp
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.
- */
-
-drop dataverse test if exists;
-create dataverse test;
-use test;
-
-drop type test if exists;
-create type test as open {
-};
-
-// bad case: more than one authentication method is provided at once
-drop dataset test if exists;
-CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname-1%"="%azure-credentialsvalue-1%"),
-("%azure-credentialsname-2%"="%azure-credentialsvalue-2%"),
-("endpoint"="%azure-endpoint%"),
-("container"="playground"),
-("definition"="json-data/reviews/single-line/json"),
-("format"="json")
-);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/account-name-and-account-key/test.000.ddl.sqlpp
similarity index 95%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/account-name-and-account-key/test.000.ddl.sqlpp
index ca750fa..b8da522 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/account-name-and-account-key/test.000.ddl.sqlpp
@@ -28,7 +28,7 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("accountKey"="%azure-accountkey%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-not-allowed/test.001.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/account-name-and-account-key/test.001.query.sqlpp
similarity index 95%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-not-allowed/test.001.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/account-name-and-account-key/test.001.query.sqlpp
index 8ec9cc0..3e09017 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-not-allowed/test.001.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/account-name-and-account-key/test.001.query.sqlpp
@@ -18,4 +18,6 @@
*/
use test;
-select count(*) `count` from test;
\ No newline at end of file
+
+select count(*) `count`
+from test;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/account-name-and-account-key/test.999.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.099.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/account-name-and-account-key/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/shared-access-signature/test.000.ddl.sqlpp
similarity index 92%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/shared-access-signature/test.000.ddl.sqlpp
index ca750fa..d106242 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.000.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/shared-access-signature/test.000.ddl.sqlpp
@@ -27,8 +27,7 @@
drop dataset test if exists;
CREATE EXTERNAL DATASET test(test) USING AZUREBLOB (
-("accountName"="%azure-accountname%"),
-("%azure-credentialsname%"="%azure-credentialsvalue%"),
+("sharedAccessSignature"="%azure-sas%"),
("endpoint"="%azure-endpoint%"),
("container"="playground"),
("definition"="json-data/reviews/single-line/json"),
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-not-allowed/test.001.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/shared-access-signature/test.001.query.sqlpp
similarity index 95%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-not-allowed/test.001.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/shared-access-signature/test.001.query.sqlpp
index 8ec9cc0..3e09017 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-not-allowed/test.001.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/shared-access-signature/test.001.query.sqlpp
@@ -18,4 +18,6 @@
*/
use test;
-select count(*) `count` from test;
\ No newline at end of file
+
+select count(*) `count`
+from test;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.099.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/shared-access-signature/test.999.ddl.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.099.ddl.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/shared-access-signature/test.999.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.001.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.001.query.sqlpp
deleted file mode 100644
index 8ec9cc0..0000000
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/test.001.query.sqlpp
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * 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.
- */
-
-use test;
-select count(*) `count` from test;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-allowed/result.001.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-allowed/result.001.adm
index 187a8cb..6704fc0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-allowed/result.001.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/azure_blob_storage/auth-methods/anonymous-no-auth-public-access-allowed/result.001.adm
@@ -1 +1 @@
-{ "count": 100 }
\ No newline at end of file
+{ "count": 20 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/result.001.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/account-name-and-account-key/result.001.adm
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/result.001.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/account-name-and-account-key/result.001.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/result.001.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/shared-access-signature/result.001.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/result.001.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/azure_blob_storage/auth-methods/valid-auth-methods/shared-access-signature/result.001.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml
index ae3b2aa..e94132d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage.xml
@@ -19,71 +19,196 @@
!-->
<test-suite xmlns="urn:xml.testframework.asterix.apache.org" ResultOffsetPath="results" QueryOffsetPath="queries_sqlpp" QueryFileExtension=".sqlpp">
<test-group name="authentication">
- <test-case FilePath="external-dataset/azure_blob_storage/auth-methods">
- <compilation-unit name="valid-auth-methods">
- <placeholder name="azureblob-credentialsname" value="accountKey" />
- <placeholder name="azureblob-credentialsvalue" value="%azure-accountkey%" />
- <output-dir compare="Text">valid-auth-methods</output-dir>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/valid-auth-methods">
+ <compilation-unit name="account-name-and-account-key">
+ <output-dir compare="Clean-JSON">account-name-and-account-key</output-dir>
</compilation-unit>
</test-case>
- <test-case FilePath="external-dataset/azure_blob_storage/auth-methods">
- <compilation-unit name="valid-auth-methods">
- <placeholder name="azureblob-credentialsname" value="sharedAccessSignature" />
- <placeholder name="azureblob-credentialsvalue" value="%azure-sas%" />
- <output-dir compare="Text">valid-auth-methods</output-dir>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/valid-auth-methods">
+ <compilation-unit name="shared-access-signature">
+ <output-dir compare="Clean-JSON">shared-access-signature</output-dir>
</compilation-unit>
</test-case>
- <test-case FilePath="external-dataset/azure_blob_storage/auth-methods">
- <compilation-unit name="valid-auth-methods">
- <placeholder name="azureblob-credentialsname" value="connectionString" />
- <placeholder name="azureblob-credentialsvalue" value="%azure-connectionstringaccountkey%" />
- <output-dir compare="Text">valid-auth-methods</output-dir>
+
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods">
+ <compilation-unit name="no-endpoint">
+ <output-dir compare="Clean-JSON">no-endpoint</output-dir>
+ <expected-error>Parameter(s) endpoint must be specified</expected-error>
</compilation-unit>
</test-case>
- <test-case FilePath="external-dataset/azure_blob_storage/auth-methods">
- <compilation-unit name="valid-auth-methods">
- <placeholder name="azureblob-credentialsname" value="connectionString" />
- <placeholder name="azureblob-credentialsvalue" value="%azure-connectionstringsas%" />
- <output-dir compare="Text">valid-auth-methods</output-dir>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key">
+ <compilation-unit name="account-key-missing">
+ <output-dir compare="Clean-JSON">account-key-missing</output-dir>
+ <expected-error>Parameter 'accountKey' is required if 'accountName' is provided</expected-error>
</compilation-unit>
</test-case>
- <test-case FilePath="external-dataset/azure_blob_storage/auth-methods">
- <compilation-unit name="invalid-auth-methods">
- <placeholder name="azureblob-credentialsname-1" value="accountKey" />
- <placeholder name="azureblob-credentialsvalue-1" value="%azure-accountkey%" />
- <placeholder name="azureblob-credentialsname-2" value="connectionString" />
- <placeholder name="azureblob-credentialsvalue-2" value="%azure-connectionstringaccountkey%" />
- <output-dir compare="Text">invalid-auth-methods</output-dir>
- <expected-error>ASX1138: Only a single authentication method is allowed: connectionString, accountName & accountKey, or accountName & sharedAccessSignature</expected-error>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key">
+ <compilation-unit name="account-name-missing">
+ <output-dir compare="Clean-JSON">account-name-missing</output-dir>
+ <expected-error>Parameter 'accountName' is required if 'accountKey' is provided</expected-error>
</compilation-unit>
</test-case>
- <test-case FilePath="external-dataset/azure_blob_storage/auth-methods">
- <compilation-unit name="invalid-auth-methods">
- <placeholder name="azureblob-credentialsname-1" value="sharedAccessSignature" />
- <placeholder name="azureblob-credentialsvalue-1" value="%azure-sas%" />
- <placeholder name="azureblob-credentialsname-2" value="connectionString" />
- <placeholder name="azureblob-credentialsvalue-2" value="%azure-connectionstringaccountkey%" />
- <output-dir compare="Text">invalid-auth-methods</output-dir>
- <expected-error>ASX1138: Only a single authentication method is allowed: connectionString, accountName & accountKey, or accountName & sharedAccessSignature</expected-error>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key">
+ <compilation-unit name="client-certificate-password-present">
+ <output-dir compare="Clean-JSON">client-certificate-password-present</output-dir>
+ <expected-error>Parameter 'clientCertificatePassword' is not allowed if 'accountKey' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key">
+ <compilation-unit name="client-certificate-present">
+ <output-dir compare="Clean-JSON">client-certificate-present</output-dir>
+ <expected-error>Parameter 'clientCertificate' is not allowed if 'accountKey' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key">
+ <compilation-unit name="client-id-present">
+ <output-dir compare="Clean-JSON">client-id-present</output-dir>
+ <expected-error>Parameter 'clientId' is not allowed if 'accountKey' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key">
+ <compilation-unit name="client-secret-present">
+ <output-dir compare="Clean-JSON">client-secret-present</output-dir>
+ <expected-error>Parameter 'clientSecret' is not allowed if 'accountKey' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key">
+ <compilation-unit name="managed-identity-id-present">
+ <output-dir compare="Clean-JSON">managed-identity-id-present</output-dir>
+ <expected-error>Parameter 'managedIdentityId' is not allowed if 'accountKey' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key">
+ <compilation-unit name="shared-access-signature-present">
+ <output-dir compare="Clean-JSON">shared-access-signature-present</output-dir>
+ <expected-error>Parameter 'sharedAccessSignature' is not allowed if 'accountKey' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/account-name-and-account-key">
+ <compilation-unit name="tenant-id-present">
+ <output-dir compare="Clean-JSON">tenant-id-present</output-dir>
+ <expected-error>Parameter 'tenantId' is not allowed if 'accountKey' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature">
+ <compilation-unit name="client-certificate-password-present">
+ <output-dir compare="Clean-JSON">client-certificate-password-present</output-dir>
+ <expected-error>Parameter 'clientCertificatePassword' is not allowed if 'sharedAccessSignature' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature">
+ <compilation-unit name="client-certificate-present">
+ <output-dir compare="Clean-JSON">client-certificate-present</output-dir>
+ <expected-error>Parameter 'clientCertificate' is not allowed if 'sharedAccessSignature' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature">
+ <compilation-unit name="client-id-present">
+ <output-dir compare="Clean-JSON">client-id-present</output-dir>
+ <expected-error>Parameter 'clientId' is not allowed if 'sharedAccessSignature' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature">
+ <compilation-unit name="client-secret-present">
+ <output-dir compare="Clean-JSON">client-secret-present</output-dir>
+ <expected-error>Parameter 'clientSecret' is not allowed if 'sharedAccessSignature' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature">
+ <compilation-unit name="managed-identity-id-present">
+ <output-dir compare="Clean-JSON">managed-identity-id-present</output-dir>
+ <expected-error>Parameter 'managedIdentityId' is not allowed if 'sharedAccessSignature' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/shared-access-signature">
+ <compilation-unit name="tenant-id-present">
+ <output-dir compare="Clean-JSON">tenant-id-present</output-dir>
+ <expected-error>Parameter 'tenantId' is not allowed if 'sharedAccessSignature' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id">
+ <compilation-unit name="client-certificate-password-present">
+ <output-dir compare="Clean-JSON">client-certificate-password-present</output-dir>
+ <expected-error>Parameter 'clientCertificatePassword' is not allowed if 'managedIdentityId' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id">
+ <compilation-unit name="client-certificate-present">
+ <output-dir compare="Clean-JSON">client-certificate-present</output-dir>
+ <expected-error>Parameter 'clientCertificate' is not allowed if 'managedIdentityId' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id">
+ <compilation-unit name="client-id-present">
+ <output-dir compare="Clean-JSON">client-id-present</output-dir>
+ <expected-error>Parameter 'clientId' is not allowed if 'managedIdentityId' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id">
+ <compilation-unit name="client-secret-present">
+ <output-dir compare="Clean-JSON">client-secret-present</output-dir>
+ <expected-error>Parameter 'clientSecret' is not allowed if 'managedIdentityId' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/managed-identity-id">
+ <compilation-unit name="tenant-id-present">
+ <output-dir compare="Clean-JSON">tenant-id-present</output-dir>
+ <expected-error>Parameter 'tenantId' is not allowed if 'managedIdentityId' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id">
+ <compilation-unit name="client-secret-missing-and-client-certificate-missing">
+ <output-dir compare="Clean-JSON">client-secret-missing-and-client-certificate-missing</output-dir>
+ <expected-error>Parameter 'clientSecret' or 'clientCertificate' is required if 'clientId' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id">
+ <compilation-unit name="client-secret-present-client-certificate-password-present">
+ <output-dir compare="Clean-JSON">client-secret-present-client-certificate-password-present</output-dir>
+ <expected-error>Parameter 'clientCertificatePassword' is not allowed if 'clientSecret' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id">
+ <compilation-unit name="client-secret-present-client-certificate-present">
+ <output-dir compare="Clean-JSON">client-secret-present-client-certificate-present</output-dir>
+ <expected-error>The parameters 'clientSecret' and 'clientCertificate' cannot be provided at the same time</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id">
+ <compilation-unit name="tenant-id-missing">
+ <output-dir compare="Clean-JSON">tenant-id-missing</output-dir>
+ <expected-error>Parameter 'tenantId' is required if 'clientId' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing">
+ <compilation-unit name="client-certificate-present">
+ <output-dir compare="Clean-JSON">client-certificate-present</output-dir>
+ <expected-error>Parameter 'clientCertificate' is not allowed if 'sharedAccessSignature' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing">
+ <compilation-unit name="client-secret-present">
+ <output-dir compare="Clean-JSON">client-secret-present</output-dir>
+ <expected-error>Parameter 'clientSecret' is not allowed if 'sharedAccessSignature' is provided</expected-error>
+ </compilation-unit>
+ </test-case>
+ <test-case FilePath="external-dataset/azure_blob_storage/auth-methods/invalid-auth-methods/client-id-missing">
+ <compilation-unit name="tenant-id-present">
+ <output-dir compare="Clean-JSON">tenant-id-present</output-dir>
+ <expected-error>Parameter 'tenantId' is not allowed if 'sharedAccessSignature' is provided</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="external-dataset/azure_blob_storage/auth-methods">
<compilation-unit name="anonymous-no-auth-public-access-allowed">
- <output-dir compare="Text">anonymous-no-auth-public-access-allowed</output-dir>
+ <output-dir compare="Clean-JSON">anonymous-no-auth-public-access-allowed</output-dir>
</compilation-unit>
</test-case>
<test-case FilePath="external-dataset/azure_blob_storage/auth-methods">
<compilation-unit name="anonymous-no-auth-public-access-not-allowed">
- <output-dir compare="Text">anonymous-no-auth-public-access-not-allowed</output-dir>
+ <output-dir compare="Clean-JSON">anonymous-no-auth-public-access-not-allowed</output-dir>
<expected-error>Server failed to authenticate the request. Make sure the value of the Authorization header is formed correctly including the signature.</expected-error>
</compilation-unit>
</test-case>
- <test-case FilePath="external-dataset/azure_blob_storage/auth-methods">
- <compilation-unit name="anonymous-no-auth-no-endpoint">
- <output-dir compare="Text">anonymous-no-auth-no-endpoint</output-dir>
- <expected-error>ASX1151: No authentication credentials provided, 'endpoint' field is required for anonymous access</expected-error>
- </compilation-unit>
- </test-case>
</test-group>
<test-group name="external-dataset">
<test-case FilePath="external-dataset">
@@ -139,12 +264,12 @@
</compilation-unit>
</test-case>
<!-- Parquet Tests Start -->
- <test-case FilePath="external-dataset">
- <compilation-unit name="common/parquet/object-concat">
- <placeholder name="adapter" value="AZUREBLOB" />
- <output-dir compare="Text">common/parquet/object-concat</output-dir>
- </compilation-unit>
- </test-case>
+<!-- <test-case FilePath="external-dataset">-->
+<!-- <compilation-unit name="common/parquet/object-concat">-->
+<!-- <placeholder name="adapter" value="AZUREBLOB" />-->
+<!-- <output-dir compare="Text">common/parquet/object-concat</output-dir>-->
+<!-- </compilation-unit>-->
+<!-- </test-case>-->
<!-- Parquet Tests End -->
<test-case FilePath="external-dataset">
<compilation-unit name="common/empty-string-definition">
@@ -180,7 +305,7 @@
<placeholder name="adapter" value="AZUREBLOB" />
<placeholder name="endpoint" value="http://^invalid-endpoint^" />
<output-dir compare="Text">common/invalid-endpoint</output-dir>
- <expected-error>External source error. java.net.URISyntaxException: Illegal character in authority at index 7: http://^invalid-endpoint^</expected-error>
+ <expected-error>Illegal character in authority at index 7: http://^invalid-endpoint^</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="external-dataset">
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage_one_partition.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage_one_partition.xml
index 32a56b2..bfd2e31 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage_one_partition.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_external_dataset_azure_blob_storage_one_partition.xml
@@ -49,17 +49,17 @@
<output-dir compare="Text">common/csv-warnings</output-dir>
<expected-warn>Parsing error at data_dir/no_h_missing_fields.csv line 2 field 3: some fields are missing</expected-warn>
<expected-warn>Parsing error at data_dir/no_h_no_closing_q.csv line 2 field 0: malformed input record ended abruptly</expected-warn>
- <expected-warn>Parsing error at line 2 field 0: malformed input record ended abruptly</expected-warn>
+ <expected-warn>Parsing error at line 2 field 0: malformed input record ended abruptly</expected-warn>
- <expected-warn>Parsing error at line 5 field 3: invalid value</expected-warn>
- <expected-warn>Parsing error at line 2 field 1: invalid value</expected-warn>
- <expected-warn>Parsing error at line 11 field 1: invalid value</expected-warn>
- <expected-warn>Parsing error at line 3 field 1: invalid value</expected-warn>
- <expected-warn>Parsing error at line 4 field 1: invalid value</expected-warn>
- <expected-warn>Parsing error at line 7 field 7: invalid value</expected-warn>
- <expected-warn>Parsing error at line 13 field 7: invalid value</expected-warn>
- <expected-warn>Parsing error at line 12 field 3: invalid value</expected-warn>
- <expected-warn>Parsing error at line 9 field 6: a quote should be in the beginning</expected-warn>
+ <expected-warn>Parsing error at line 5 field 3: invalid value</expected-warn>
+ <expected-warn>Parsing error at line 2 field 1: invalid value</expected-warn>
+ <expected-warn>Parsing error at line 11 field 1: invalid value</expected-warn>
+ <expected-warn>Parsing error at line 3 field 1: invalid value</expected-warn>
+ <expected-warn>Parsing error at line 4 field 1: invalid value</expected-warn>
+ <expected-warn>Parsing error at line 7 field 7: invalid value</expected-warn>
+ <expected-warn>Parsing error at line 13 field 7: invalid value</expected-warn>
+ <expected-warn>Parsing error at line 12 field 3: invalid value</expected-warn>
+ <expected-warn>Parsing error at line 9 field 6: a quote should be in the beginning</expected-warn>
<expected-warn>Parsing error at data_dir/h_invalid_values.csv line 5 field 3: invalid value</expected-warn>
<expected-warn>Parsing error at data_dir/h_invalid_values.csv line 2 field 1: invalid value</expected-warn>
diff --git a/asterixdb/pom.xml b/asterixdb/pom.xml
index 30a987e..95ff786 100644
--- a/asterixdb/pom.xml
+++ b/asterixdb/pom.xml
@@ -80,6 +80,9 @@
<shim.stage>none</shim.stage>
<pytestlib.stage>none</pytestlib.stage>
<skip-npm-touch.stage>none</skip-npm-touch.stage>
+ <azurite.npm.install.stage>none</azurite.npm.install.stage>
+ <azurite.install.stage>none</azurite.install.stage>
+ <azurite.stage>none</azurite.stage>
<!-- Versions under dependencymanagement or used in many projects via properties -->
<algebricks.version>0.3.9-SNAPSHOT</algebricks.version>
@@ -726,6 +729,22 @@
</properties>
</profile>
<profile>
+ <id>azurite-tests</id>
+ <activation>
+ <os>
+ <family>unix</family>
+ </os>
+ <property>
+ <name>!skipTests</name>
+ </property>
+ </activation>
+ <properties>
+ <azurite.npm.install.stage>process-classes</azurite.npm.install.stage>
+ <azurite.install.stage>generate-test-resources</azurite.install.stage>
+ <azurite.stage>process-test-resources</azurite.stage>
+ </properties>
+ </profile>
+ <profile>
<id>skip-npm</id>
<activation>
<property>
diff --git a/hyracks-fullstack/pom.xml b/hyracks-fullstack/pom.xml
index 5ed10e8..fcd7d6c 100644
--- a/hyracks-fullstack/pom.xml
+++ b/hyracks-fullstack/pom.xml
@@ -156,6 +156,12 @@
<version>${netty.version}</version>
</dependency>
<dependency>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-all</artifactId>
+ <version>${netty.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>