.NET Tools

例外を思いのままに発生できる
「DevPartner Fault Simulator」レビュー

株式会社ピーデー 川俣 晶
2006/06/10
Page1 Page2 Page3 Page4

簡単なシミュレーション操作(環境フォールト)

 ここでは次のような簡単なサンプル・プログラム(VB)を例にして、異常ケースを容易にシミュレーションできることを示してみよう。

Module Module1
  Sub Main()
    Dim writer As New System.IO.StreamWriter("c:\log.txt")
    Try
      For i As Integer = 0 To 9
        writer.WriteLine("number is {0}", i)
      Next
    Finally
      writer.Close()
    End Try
  End Sub
End Module
サンプル・プログラム(VB)
10行のテキストを書き込んだテキスト・ファイルをCドライブに作成する。

 これは、10行のテキストを書き込んだテキスト・ファイルをCドライブに作成するだけの、いたってシンプルなプログラムだ。しかし上述したように、一般的にCドライブはOSがインストールされているシステム・ドライブであるため、ダミー・ファイルで空き容量をゼロにしたりすると、さまざまなソフトの正常な動作を阻害する可能性がある。かといって、さまざまな目的に使われるCドライブだからこそ、空き容量がゼロになる可能性は決して低くはない。そのようなケースでプログラムがどのように振る舞うか、テストしたいこともあるだろう。そのような背景を踏まえたサンプル・プログラムである。

 さて、ここではVS 2005とFault Simulatorを使って、最も手っ取り早くこのケースをシミュレーションする手順を見てみよう。

 まずは、システム・レベルで特定の異常ケースをシミュレーションする環境フォールトを試してみよう。これはWindows OSの処理に直接割り込んで異常ケースを作り出すため、きめ細かい条件指定はできないが、その分だけ単純明快という特徴を持っている。

 まず、VS 2005に追加される[表示]メニューの[DevPartner Fault Simulator]を選び、Fault Simulatorウィンドウを表示させる。

Fault Simulatorウィンドウを表示させたVisual Studio 2005
[表示]メニューの[DevPartner Fault Simulator]を実行するとFault Simulatorウィンドウが表示される。

 ここで、Fault Simulatorウィンドウ上部に並んでいるボタンのうち、最も左側の[環境フォールトの追加]ボタンをクリックする。すると、追加する環境フォールトの内容を指定するダイアログが表示される。

追加する環境フォールトの内容を指定するダイアログ
このダイアログはFault Simulatorウィンドウから[環境フォールトの追加]ボタンをクリックして開く。ステップ1〜5を上から順に設定していけばよい。

 ここでは、5つのステップが上から順に並んでいるので、それを頼りに設定を行うことができる。まずステップ1は、カテゴリの選択である。選択できるカテゴリは、環境フォールトの一覧に示したとおりである。

 ここでは、ハードディスクの空き容量が尽きたケースを試すので「ディスクI/O」を選ぶ。すると、ステップ2のリストが指定されたカテゴリの内容に入れ替わる。そこで、「ディスクに十分な空き容量がありません」を選ぶ。

 この後ステップ3では、選択したフォールトの条件を指定する。ここでは、空きディスク容量がないことをシミュレーションするドライブを指定する。もちろん、Cドライブを示す「C」を指定している。ステップ4〜5はオプションなので、手を触れないまま[OK]ボタンを押してみよう。

環境フォールト設定後のFault Simulatorウィンドウ
ここではCドライブに空き容量がないという状況をシミュレートする設定を行った。

 すると、Fault Simulatorウィンドウのリストに、設定したフォールトが一覧表示される。項目左のチェック・ボックスで、有効/無効が簡単に切り替えられる。

 さて、ここで[F5]キーを押して実行してもFault Simulatorは何もしてくれない。指定した条件が意味を持つのは、異常ケースのシミュレーションを行う場合のみだからである。

 では、どうすれば異常ケースのシミュレーションを実行できるのだろうか。操作方法はいくつかあるが、最も簡単なのは、Fault Simulatorウィンドウにある[Fault Simulatorを開始]ボタンをクリックすることだ。これによって、異常ケースのシミュレーションが動作し始め、同時に対象となるプログラムもスタートする。

 その結果、VS 2005は「ディスクに十分な空き領域がありません。」という例外を検出してプログラムの実行を停止させる。

シミュレーションの動作結果
Cドライブに空き容量がないという状況をシミュレートしているため、WriteLineメソッドで例外が発生する。

 ちなみに、VS 2005がこの状態にあるとき、Cドライブにはたっぷりと空き容量が残っていた。以下に、補足として、その瞬間の空き容量を以下に示す。

Cドライブの空き容量の確認
Cドライブには8Gbytes以上の空き容量が残っている。

 さて実行を終了すると、結果をまとめたタブが追加される。ここでは、どのような例外がどのように発生したかが記録されている。

環境フォールトのシミュレート結果
どのような例外がどのように発生したかが記録されている。

 以上のように、実際には多くの空き容量を持つドライブに、あたかも空き容量が存在しないかのようなシミュレーションがとても簡単にできたことがお分かりいただけたと思う。だがこの程度のことは、Fault Simulatorにとっては、まだまだ序の口である。


 INDEX
  [.NET Tools]
  例外を思いのままに発生できる「DevPartner Fault Simulator」レビュー 
    1.異常ケース再現シミュレータ「DevPartner Fault Simulator」
  2.簡単なシミュレーション操作(環境フォールト)
    3..NET Frameworkフォールトを試す
    4.スタンドアロン実行とコマンドラインからのテスト
 
インデックス・ページヘ  「.NET Tools」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間