2017-07-27 4 views
0

私は、ファイル作成のためのメソッドとDatalake Store上のそのファイルへのデータの追加を含むAzure webjobを作成しました。私はすべての開発部でwebjobsなどを公開しています。今、私は送信しているデータが正常にファイルに追加されているかどうかをテストする単体テストを書くつもりです。私が知る必要があるのは、アイディア?.NETフレームワークで書かれたAzure Data Lakeの追加機能で単体テストを実行する方法?

私が現在考えているのは、自分のデータレックファイルのすべてのデータを消去してからテストデータを送信することです。そのため、送信されたデータ全体の列データの1つに基づいて、追加されたかどうかを確認します。テストデータが書かれているかどうかを素早く確認できる方法はありますか?

注:実際に私はデータ湖のcsvファイルの特定の行を削除する方法を知りたがっていますが、私は必要な行を検索するためにusqlを使いたくありません。 (私はDatalakeに直接データを送信していません。それはAzureサービスバスキューを介して書かれていて、データジョークでファイルにデータを追加します)

答えて

0

私は私が使用してDatalakeストアの私のファイルの長さを手に入れたように、私の問題を解決しました:私はdatalakeに私のテストデータを送信し、その後、私は再び長さを持って長さを取得した後

var fileoffset = _adlsFileSystemClient.FileSystem.GetFileStatus(_dlAccountName, "/MyFile.csv").FileStatus.Length; 

を同じコードを使用しているファイルの私のデータを取得した後

Stream Stream1 = _adlsFileSystemClient.FileSystem.Open(_dlAccountName, "/MyFile.csv", totalfileLength, fileoffset); 

:そう第一の長さは、それが私のオフセットと長さは、私が使用して私のdatalakeファイルを読み込む先の長さにオフセットから、すなわち、私の先の長のテストデータをして送信した後に得られた試​​験データを送信する前に、すなわち、ストリーム内で次のコードを使用して送信したテストデータを検索しようとしました:

注:私は送信済みのGUIDをファイルストリームで検索するファイルのguidの列を持っていました。検索データをバイトに変換してから、関数ReadOneSrch(..)に渡してください。

static bool ReadOneSrch(Stream fileStream, byte[] mydata) 
    { 
     int b; 
     long i = 0; 
     while ((b = fileStream.ReadByte()) != -1) 
     { 
      if (b == mydata[i++]) 
      { 

       if (i == mydata.Length) 
        return true; 

      } 
      else 
       i = b == mydata[0] ? 1 : 0; 
     } 

     return false; 
    } 
0

ファイルを見る以外に、いくつかの選択肢があります。単体テストだけがファイルに書き込んでいる場合は、可変長の追加情報を送信し、追加が成功した結果、ファイルのサイズが適切に更新されているかどうかを確認できます。あなたはいつもファイルを読んで、データがそれを作ったかどうかを見ることができます。

+0

うんあなたは正しいです、私もそれを考えていた:) –

+0

しかし一つの問題一度に複数のユーザーがそのデータを送信されますので、我々はデータを追加したファイルは基本的にwebjobsによって作成されるがある@Amit私のテストケースが生産で実行される場合、我々はもはやこのサイズを測定パラメータとみなすことはできません。 –

+0

はい、ファイルに追加されている他のアクターがあるプロダクションでテストしたい場合、長さに頼ることはできません。ここには最適な方法があります。 (1)ファイルのクエリの長​​さ、(2)追加を送信し、規定された時間だけ待っている、(3)新しいデータを読み込む、つまりオフセットからデータを読み込んで、そうすれば、ファイルのすべてを読むよりもファイルの一部だけを読むことができます。 –

関連する問題