Testar o código do Azure Data Lake Analytics
O Azure Data Lake fornece a linguagem U-SQL. O U-SQL combina o SQL declarativo com o C# imperativo para permitir processar dados em qualquer escala. Neste documento, você aprenderá como criar casos de teste para código UDO (operador definido pelo usuário) do C# estendido e U-SQL.
Importante
O Azure Data Lake Analytics desativado em 29 de fevereiro de 2024. Saiba mais nesse comunicado.
Para análise de dados, sua organização pode usar o Azure Synapse Analytics ou o Microsoft Fabric.
Testar scripts U-SQL
O script U-SQL é compilado e otimizado para que o código executável seja executado no Azure ou no computador local. O processo de compilação e otimização trata o script U-SQL inteiro como um todo. Não é possível fazer um teste de unidade tradicional para cada instrução. No entanto, usando o SDK de teste do U-SQL e o SDK de execução local, será possível fazer testes em nível de script.
Criar casos de teste para o script U-SQL
As Ferramentas do Azure Data Lake para Visual Studio permitem que você crie casos de teste de script U-SQL.
Clique com o botão direito do mouse em um script U-SQL no Gerenciador de Soluções e selecione Criar Teste de Unidade.
Crie um novo projeto de teste ou insira o caso de teste em um projeto de teste existente.
Gerenciar a fonte de dados de teste
Ao testar scripts U-SQL, serão necessários arquivos de entrada de teste. Para gerenciar os dados de teste, em Gerenciador de Soluções, clique com o botão direito do mouse no projeto U-SQL e selecione Propriedades. Você pode inserir uma fonte na Fonte de Dados de Teste.
Quando você chama a interface Initialize()
no SDK de teste do U-SQL, uma pasta raiz de dados locais temporários é criada no diretório de trabalho do projeto de teste. Todos os arquivos e pastas na pasta da fonte de dados de teste são copiados para a pasta raiz de dados locais temporários antes de você executar os casos de teste de script U-SQL. É possível adicionar mais pastas de fonte de dados de teste, separando o caminho da pasta de dados de teste com um ponto e vírgula.
Gerenciar o ambiente de banco de dados para testes
Se os seus scripts U-SQL usarem ou consultarem objetos de banco de dados U-SQL, você precisará inicializar o ambiente de banco de dados antes de executar casos de teste do U-SQL. Essa abordagem pode ser necessária ao chamar procedimentos armazenados. A interface Initialize()
no SDK de teste de U-SQL ajuda a implantar todos os bancos de dados referenciados pelo projeto U-SQL à pasta raiz de dados locais temporários no diretório de trabalho do projeto de teste.
Para obter mais informações sobre como gerenciar referências de projeto de banco de dados U-SQL para um projeto U-SQL, confira Referenciar um projeto de banco de dados U-SQL.
Verificar resultados do teste
A interface Run()
retorna um resultado de execução de trabalho.
0 significa êxito, e 1 significa falha. Você também pode usar funções assert do C# para verificar as saídas.
Executar casos de teste no Visual Studio
Um projeto de teste de script U-SQL é compilado sobre uma estrutura de teste de unidade do C#. Depois de criar o projeto, selecione Testar>Windows>Gerenciador de Testes. Você pode executar casos de teste no Gerenciador de Testes. Como alternativa, clique com o botão direito do mouse no arquivo .cs em seu teste de unidade e selecione Executar Testes.
Testar UDOs de C#
Criar casos de teste para UDOs de C#
É possível usar uma estrutura de teste de unidade C# para testar os UDOs (operadores definidos pelo usuário) do C#. Para testar UDOs, será necessário preparar os objetos IRowset como entradas.
Há duas maneiras de criar um objeto IRowset:
Carregue dados de um arquivo para criar IRowset:
//Schema: "a:int, b:int" USqlColumn<int> col1 = new USqlColumn<int>("a"); USqlColumn<int> col2 = new USqlColumn<int>("b"); List<IColumn> columns = new List<IColumn> { col1, col2 }; USqlSchema schema = new USqlSchema(columns); //Generate one row with default values IUpdatableRow output = new USqlRow(schema, null).AsUpdatable(); //Get data from file IRowset rowset = UnitTestHelper.GetRowsetFromFile(@"processor.txt", schema, output.AsReadOnly(), discardAdditionalColumns: true, rowDelimiter: null, columnSeparator: '\t');
Use dados de uma coleção de dados para criar IRowset:
//Schema: "a:int, b:int" USqlSchema schema = new USqlSchema( new USqlColumn<int>("a"), new USqlColumn<int>("b") ); IUpdatableRow output = new USqlRow(schema, null).AsUpdatable(); //Generate Rowset with specified values List<object[]> values = new List<object[]>{ new object[2] { 2, 3 }, new object[2] { 10, 20 } }; IEnumerable<IRow> rows = UnitTestHelper.CreateRowsFromValues(schema, values); IRowset rowset = UnitTestHelper.GetRowsetFromCollection(rows, output.AsReadOnly());
Verificar resultados do teste
Após chamar funções UDO, será possível verificar os resultados por meio da verificação de valor do Conjunto de Linhas e esquema, usando funções assert de C#. Você pode adicionar um Projeto de Teste de Unidade UDO C# do U-SQL à sua solução. Para fazer isso, selecione Arquivo > Novo > Projeto no Visual Studio.
Executar casos de teste no Visual Studio
Depois de criar o projeto, selecione Testar>Windows>Gerenciador de Testes. Você pode executar casos de teste no Gerenciador de Testes. Como alternativa, clique com o botão direito do mouse no arquivo .cs em seu teste de unidade e selecione Executar Testes.
Executar casos de teste no Azure Pipelines
Ambos os projetos de teste do script U-SQL e projetos de teste do UDO de C# herdam os projetos de teste de unidade de C#. A tarefa de teste do Visual Studio no Azure Pipelines pode executar esses casos de teste.
Executar casos de teste U-SQL no Azure Pipelines
Para um teste U-SQL, carregue CPPSDK
no computador de build e passe o caminho CPPSDK
para USqlScriptTestRunner(cppSdkFolderFullPath: @"")
.
O que é CPPSDK?
O CPPSDK é um pacote que inclui o Microsoft Visual C++ 14 e SDK do Windows 10.0.10240.0. Esse pacote inclui o ambiente necessário para o runtime do U-SQL. É possível obter esse pacote na pasta de instalação das Ferramentas do Azure Data Lake para Visual Studio:
- No Visual Studio 2015, ela está em
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Microsoft Azure Data Lake Tools for Visual Studio 2015\X.X.XXXX.X\CppSDK
- No Visual Studio 2017, ela está em
C:\Program Files (x86)\Microsoft Visual Studio\2017\<Visual Studio Edition>\SDK\ScopeCppSDK
- No Visual Studio 2019, ele está em
C:\Program Files (x86)\Microsoft Visual Studio\2019\<Visual Studio Edition>\SDK\ScopeCppSDK
Preparar o CPPSDK no agente de build do Azure Pipelines
A maneira mais comum de preparar a dependência CPPSDK no Azure Pipelines é a seguinte:
Compacte a pasta que inclui as bibliotecas do CPPSDK.
Verifique no arquivo .zip o sistema de controle do código-fonte. O arquivo .zip garante que você verifique todas as bibliotecas na pasta CPPSDK para que os arquivos não sejam ignorados por um arquivo
.gitignore
.Descompacte o arquivo .zip no pipeline de build.
Aponte o
USqlScriptTestRunner
para essa pasta descompactada no computador de build.
Executar casos de teste UDO do C# no Azure Pipelines
Para um teste de UDO do C#, referencie os assemblies a seguir, os quais são necessários para UDOs.
- Microsoft.Analytics.Interfaces
- Microsoft.Analytics.Types
- Microsoft.Analytics.UnitTest
Se você referenciá-los por meio do pacote NuGet Microsoft.Azure.DataLake.USQL.Interfaces, adicione uma tarefa de Restauração do NuGet em seu pipeline de build.