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.

  1. Clique com o botão direito do mouse em um script U-SQL no Gerenciador de Soluções e selecione Criar Teste de Unidade.

  2. Crie um novo projeto de teste ou insira o caso de teste em um projeto de teste existente.

    Ferramentas do Data Lake para Visual Studio - criar uma configuração de projeto de teste U-SQL

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.

Ferramentas do Data Lake para Visual Studio - configurar fonte de dados de teste do projeto

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:

  1. Compacte a pasta que inclui as bibliotecas do CPPSDK.

  2. 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.

  3. Descompacte o arquivo .zip no pipeline de build.

  4. 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.

Próximas etapas