JPH06295290A - データ処理システム及びデータ処理方法 - Google Patents
データ処理システム及びデータ処理方法Info
- Publication number
- JPH06295290A JPH06295290A JP5230914A JP23091493A JPH06295290A JP H06295290 A JPH06295290 A JP H06295290A JP 5230914 A JP5230914 A JP 5230914A JP 23091493 A JP23091493 A JP 23091493A JP H06295290 A JPH06295290 A JP H06295290A
- Authority
- JP
- Japan
- Prior art keywords
- scenario
- task
- driver
- directory
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
(57)【要約】
【目的】本発明は、複数コンピユータシステムで走る多
重プロセス間に通信サービスを提供する方法及びシステ
ムを提案する。 【構成】分散環境内に論理プロセス階層を作成する機構
が提供される。同様に論理プロセス階層を越える拡張子
が提供される。通信機構は個々のプロセスが使用するこ
とのできる機能のライブラリとして実施される。文脈の
任意の定義を用いるので、名前又は他の一切の属性によ
つてオペレーテイングシステムプロセス空間内にプロセ
スを関連させる必要はない。このようなプロセスがロー
カルコンピユータ上に存在しようが又は遠隔コンピユー
タ上に存在しようが、単一システムの意味規則を用いて
プロセスにアクセスすることができる。プロセスが分散
文脈の一部として登録することができる機構が提供され
る。
重プロセス間に通信サービスを提供する方法及びシステ
ムを提案する。 【構成】分散環境内に論理プロセス階層を作成する機構
が提供される。同様に論理プロセス階層を越える拡張子
が提供される。通信機構は個々のプロセスが使用するこ
とのできる機能のライブラリとして実施される。文脈の
任意の定義を用いるので、名前又は他の一切の属性によ
つてオペレーテイングシステムプロセス空間内にプロセ
スを関連させる必要はない。このようなプロセスがロー
カルコンピユータ上に存在しようが又は遠隔コンピユー
タ上に存在しようが、単一システムの意味規則を用いて
プロセスにアクセスすることができる。プロセスが分散
文脈の一部として登録することができる機構が提供され
る。
Description
【0001】
【産業上の利用分野】本発明はデータ処理システム及び
データ処理方法に関し、特に複数コンピユータデータ処
理システムにおける多重プロセス通信に適用して好適な
ものである。
データ処理方法に関し、特に複数コンピユータデータ処
理システムにおける多重プロセス通信に適用して好適な
ものである。
【0002】
【従来の技術】今日の状況においてはコンピユータの試
験及びネツトワークの試験はますます重要になりつつあ
る。これらのシステムの利用者は高水準の信頼性を要求
する。システム障害が生ずるとデータの保全性が損なわ
れる。単一のコンピユータを試験すること自体も複雑な
ことではあるが、単一のコンピユータを試験する方法が
存在することは一般に良く知られている。システムを最
初に起動させるときに、種々の形式のパワーオンコード
又はブートコードによりコンピユータを試験する。
験及びネツトワークの試験はますます重要になりつつあ
る。これらのシステムの利用者は高水準の信頼性を要求
する。システム障害が生ずるとデータの保全性が損なわ
れる。単一のコンピユータを試験すること自体も複雑な
ことではあるが、単一のコンピユータを試験する方法が
存在することは一般に良く知られている。システムを最
初に起動させるときに、種々の形式のパワーオンコード
又はブートコードによりコンピユータを試験する。
【0003】
【発明が解決しようとする課題】システムが誤動作した
ことに気づいたときには、コンピユータ又はネツトワー
クに診断プログラムを走らせることができる。これらの
診断プログラムは試験されるべきハードウエアに対する
特定のプログラムであり、極めて特殊化されている。こ
の試験手続きを呼び出し及び又は動作させるための情報
は診断プログラム自身の中にハードコード化されている
のが普通である。所与の診断プログラムを部分的に変更
して本来意図した使用目的以外の要求に適合させること
はできないので、所与のタスクを単独又は共同で遂行す
るように相互接続された複数のコンピユータを有する複
数コンピユータネツトワークにおけるその使用可能性が
極めて制限されていた。
ことに気づいたときには、コンピユータ又はネツトワー
クに診断プログラムを走らせることができる。これらの
診断プログラムは試験されるべきハードウエアに対する
特定のプログラムであり、極めて特殊化されている。こ
の試験手続きを呼び出し及び又は動作させるための情報
は診断プログラム自身の中にハードコード化されている
のが普通である。所与の診断プログラムを部分的に変更
して本来意図した使用目的以外の要求に適合させること
はできないので、所与のタスクを単独又は共同で遂行す
るように相互接続された複数のコンピユータを有する複
数コンピユータネツトワークにおけるその使用可能性が
極めて制限されていた。
【0004】スクリプトフアイルを書くことによりアプ
リケーシヨンプログラムを制御し得ることも当分野にお
いて知られている。スクリプトはユニツクス(Uni
x)又はこれと互換性のあるオペレーテイングシステム
内の準プログラムであり、実行すべき手続きのセツトを
定義する。これらの手続きは、アプリケーシヨンプログ
ラムを呼び出し、コンピユータユーザからI/Oを受け
取り、パラメータに基づいて論理的に判断することがで
きる。しかしながらこれらのスクリプトプログラムは正
規のアプリケーシヨンプログラムと同様に柔軟性に欠け
るなどの多くの欠陥に悩まされる。付加的なステツプ又
はプロセスを追加するにはプログラム自身を変更するこ
と必要があり、これは単に複雑になるばかりでなく、プ
ログラミングの状態次第ではプログラムの他の領域に望
ましくない結果を生じさせる可能性がある。
リケーシヨンプログラムを制御し得ることも当分野にお
いて知られている。スクリプトはユニツクス(Uni
x)又はこれと互換性のあるオペレーテイングシステム
内の準プログラムであり、実行すべき手続きのセツトを
定義する。これらの手続きは、アプリケーシヨンプログ
ラムを呼び出し、コンピユータユーザからI/Oを受け
取り、パラメータに基づいて論理的に判断することがで
きる。しかしながらこれらのスクリプトプログラムは正
規のアプリケーシヨンプログラムと同様に柔軟性に欠け
るなどの多くの欠陥に悩まされる。付加的なステツプ又
はプロセスを追加するにはプログラム自身を変更するこ
と必要があり、これは単に複雑になるばかりでなく、プ
ログラミングの状態次第ではプログラムの他の領域に望
ましくない結果を生じさせる可能性がある。
【0005】複数コンピユータネツトワークにおけるプ
ロセス間通信を支援するために、幾つかの技術ではプロ
セス名に基づくプロセス文脈作成の概念を使用する。こ
の文脈がプロセス名に基づく継承のプロセスを通じて得
られるならば、このプロセス文脈はプロセス始動の順序
に基づいて固定されたものとなる。分散環境にプロセス
全体の意味規則を拡張するか又は全体的に変化させる概
念は存在しない。
ロセス間通信を支援するために、幾つかの技術ではプロ
セス名に基づくプロセス文脈作成の概念を使用する。こ
の文脈がプロセス名に基づく継承のプロセスを通じて得
られるならば、このプロセス文脈はプロセス始動の順序
に基づいて固定されたものとなる。分散環境にプロセス
全体の意味規則を拡張するか又は全体的に変化させる概
念は存在しない。
【0006】階層的にネツトワーク化されたコンピユー
タ環境を支援することができる、高度にモジユール化さ
れた柔軟な試験機構を提供する必要がある。また、こう
した環境における実時間動作をシミユレートできるよう
にすることにより、アーキテクチヤの性能や動作間の問
題点を検出できるようにする必要もある。
タ環境を支援することができる、高度にモジユール化さ
れた柔軟な試験機構を提供する必要がある。また、こう
した環境における実時間動作をシミユレートできるよう
にすることにより、アーキテクチヤの性能や動作間の問
題点を検出できるようにする必要もある。
【0007】本発明の目的はデータ処理システム用に階
層的試験フレームワークを提供することである。
層的試験フレームワークを提供することである。
【0008】本発明の他の目的はモジユール化された試
験環境を提供することである。
験環境を提供することである。
【0009】本発明のさらに他の目的は複数コンピユー
タのデータ処理システムに、モジユール化された試験環
境を提供することである。
タのデータ処理システムに、モジユール化された試験環
境を提供することである。
【0010】本発明のさらに他の目的はデータ処理シス
テム内の複数のコンピユータを試験する共通ユーザイン
タフエースを提供することである。
テム内の複数のコンピユータを試験する共通ユーザイン
タフエースを提供することである。
【0011】本発明のさらに他の目的は多重処理環境に
ホスト間通信機構を提供することである。
ホスト間通信機構を提供することである。
【0012】
【課題を解決するための手段】かかる課題を解決するた
め本発明においては、複数コンピユータデータ処理シス
テムにおける多重プロセスを呼び出す方法において、複
数コンピユータデータ処理システムによつて単一のシス
テム意味規則を作成するステツプと、単一のシステム意
味規則を用いることによりローカルデータプロセツサ及
び遠隔データプロセツサの双方に多重プロセスを呼び出
すステツプとを含むようにする。
め本発明においては、複数コンピユータデータ処理シス
テムにおける多重プロセスを呼び出す方法において、複
数コンピユータデータ処理システムによつて単一のシス
テム意味規則を作成するステツプと、単一のシステム意
味規則を用いることによりローカルデータプロセツサ及
び遠隔データプロセツサの双方に多重プロセスを呼び出
すステツプとを含むようにする。
【0013】また本発明においては、複数コンピユータ
データ処理システムにおける多重プロセスを管理する方
法において、コンピユータ上で実行するプロセスのため
にコンピユータの機械名を固有のプロセス識別コード
(ID)と結び付けることにより複数コンピユータの固
有のプロセス識別コード(ID)を作成するステツプ
と、複数コンピユータの固有のプロセス識別コード(I
D)を用いることにより複数コンピユータデータ処理シ
ステムにおける多重プロセスを制御するステツプとを含
むようにする。
データ処理システムにおける多重プロセスを管理する方
法において、コンピユータ上で実行するプロセスのため
にコンピユータの機械名を固有のプロセス識別コード
(ID)と結び付けることにより複数コンピユータの固
有のプロセス識別コード(ID)を作成するステツプ
と、複数コンピユータの固有のプロセス識別コード(I
D)を用いることにより複数コンピユータデータ処理シ
ステムにおける多重プロセスを制御するステツプとを含
むようにする。
【0014】また本発明においては、分散データ処理シ
ステムにおけるプロセス間通信に透過性を提供する方法
において、ローカルプロセツサにおいて、遠隔プロセツ
サ上に存在する遠隔プロセスの実行を初期化するステツ
プと、遠隔プロセスを登録することによりアクセス情報
を動的に提供するステツプとを含むようにする。
ステムにおけるプロセス間通信に透過性を提供する方法
において、ローカルプロセツサにおいて、遠隔プロセツ
サ上に存在する遠隔プロセスの実行を初期化するステツ
プと、遠隔プロセスを登録することによりアクセス情報
を動的に提供するステツプとを含むようにする。
【0015】また本発明においては、複数コンピユータ
データ処理システムにおける多重プロセスを呼び出すシ
ステムにおいて、ローカルデータプロセツサと、遠隔デ
ータプロセツサと、単一のシステム意味規則を用いるこ
とによりローカルデータプロセツサ及び遠隔データプロ
セツサの双方における多重プロセスを呼び出す手段とを
設けるようにする。
データ処理システムにおける多重プロセスを呼び出すシ
ステムにおいて、ローカルデータプロセツサと、遠隔デ
ータプロセツサと、単一のシステム意味規則を用いるこ
とによりローカルデータプロセツサ及び遠隔データプロ
セツサの双方における多重プロセスを呼び出す手段とを
設けるようにする。
【0016】また本発明においては、複数コンピユータ
データ処理システムにおける多重プロセスを管理するシ
ステムにおいて、コンピユータ上で実行するプロセスの
ためにコンピユータの機械名を固有のプロセス識別コー
ド(ID)と結び付けることにより複数コンピユータの
固有のプロセス識別コード(ID)を作成する手段と、
複数コンピユータの固有のプロセス識別コード(ID)
を用いることにより複数コンピユータデータ処理システ
ムにおける多重プロセスを制御する手段とを設けるよう
にする。
データ処理システムにおける多重プロセスを管理するシ
ステムにおいて、コンピユータ上で実行するプロセスの
ためにコンピユータの機械名を固有のプロセス識別コー
ド(ID)と結び付けることにより複数コンピユータの
固有のプロセス識別コード(ID)を作成する手段と、
複数コンピユータの固有のプロセス識別コード(ID)
を用いることにより複数コンピユータデータ処理システ
ムにおける多重プロセスを制御する手段とを設けるよう
にする。
【0017】さらに本発明においては、分散データ処理
システムにおけるプロセス間通信に透過性を提供するシ
ステムにおいて、ローカルプロセツサにおいて、遠隔プ
ロセツサ上に存在する遠隔プロセスの実行を初期化する
手段と、遠隔プロセスを登録することによりアクセス情
報を動的に提供する手段とを設けるようにする。
システムにおけるプロセス間通信に透過性を提供するシ
ステムにおいて、ローカルプロセツサにおいて、遠隔プ
ロセツサ上に存在する遠隔プロセスの実行を初期化する
手段と、遠隔プロセスを登録することによりアクセス情
報を動的に提供する手段とを設けるようにする。
【0018】
【作用】多重試験用のフレームワーク/足場を提供する
方法及びシステムを開示する。またこの中には試験プロ
セスを自動化し単純化する試験ツールも含まれている。
本発明のデザインはネツトワーク化及びタスク同時実行
を処理する。この試験用足場の狙いは多数のホストコン
ピユータを含む大規模ネツトワークシステムレベルの統
合試験又は単一のホストコンピユータレベルの試験にお
ける機能検証試験を遂行する際に使用し得る柔軟な試験
ケースドライバにある。この試験用足場は大規模試験環
境の必要性に応えるために設計したものである。デフオ
ルトによつてこれらの環境を実行できる能力は一段と小
規模な環境を操作することができる。
方法及びシステムを開示する。またこの中には試験プロ
セスを自動化し単純化する試験ツールも含まれている。
本発明のデザインはネツトワーク化及びタスク同時実行
を処理する。この試験用足場の狙いは多数のホストコン
ピユータを含む大規模ネツトワークシステムレベルの統
合試験又は単一のホストコンピユータレベルの試験にお
ける機能検証試験を遂行する際に使用し得る柔軟な試験
ケースドライバにある。この試験用足場は大規模試験環
境の必要性に応えるために設計したものである。デフオ
ルトによつてこれらの環境を実行できる能力は一段と小
規模な環境を操作することができる。
【0019】この文脈においては、「複雑な試験環境」
は多数のホスト上で長時間に亘つて数千の試験を逐語的
に実行する環境として定義される。通常、こうした形式
の試験はシステムレベル統合の問題点の発見を目標とし
ており、しばしばソフトウエア試験サイクルの終点付近
に置かれる。複雑な試験環境を支援するこの足場機能の
うちのほんの幾つかをあげれば、ループ制御と、保管及
び圧縮のオプシヨンと、分散フアイルシステムの支援
と、同じ機械上での同じ試験ケースの多重同時実行の支
援とがある。
は多数のホスト上で長時間に亘つて数千の試験を逐語的
に実行する環境として定義される。通常、こうした形式
の試験はシステムレベル統合の問題点の発見を目標とし
ており、しばしばソフトウエア試験サイクルの終点付近
に置かれる。複雑な試験環境を支援するこの足場機能の
うちのほんの幾つかをあげれば、ループ制御と、保管及
び圧縮のオプシヨンと、分散フアイルシステムの支援
と、同じ機械上での同じ試験ケースの多重同時実行の支
援とがある。
【0020】この試験用足場の他の強みは完全に自動化
されていながらも、実世界の機構を厳密に模倣すること
ができるその能力である。含まれている幾つかの主な機
能エリアには、分散実行管理、顧客シミユレーシヨンの
ための足場作り、同名のスペース内での衝突回避、自動
化状態収集機構、試験ケース独立、多重形式試験用の共
通テスタインタフエース等がある。
されていながらも、実世界の機構を厳密に模倣すること
ができるその能力である。含まれている幾つかの主な機
能エリアには、分散実行管理、顧客シミユレーシヨンの
ための足場作り、同名のスペース内での衝突回避、自動
化状態収集機構、試験ケース独立、多重形式試験用の共
通テスタインタフエース等がある。
【0021】さらに本発明による方法及びシステムは多
重シナリオドライバレベルを提供し、これは、密にクラ
スタ化されたネツトワーク環境内の機械のシミユレーシ
ヨンと、同じ機械上で同時に実行している多数の人々の
シミユレーシヨンと、人々が実行している実際のタスク
のシミユレーシヨンとができるようにする。例えばこの
中には、ユーザが複数の機械にログインしたりログアウ
トしたりしてタスクを実行し、分散フアイルスペース内
のフアイルを共用し、その正確な状態を示す試験シナリ
オの終端において自動的に作成される報告書を有するよ
うな大企業の、週の就業日を実際にシミユレーシヨンす
る40時間試験シナリオを開始する単一コマンドを実行で
きる能力が準備される。この試験用足場はこの形式のプ
ロセスを自動化するように設計された。
重シナリオドライバレベルを提供し、これは、密にクラ
スタ化されたネツトワーク環境内の機械のシミユレーシ
ヨンと、同じ機械上で同時に実行している多数の人々の
シミユレーシヨンと、人々が実行している実際のタスク
のシミユレーシヨンとができるようにする。例えばこの
中には、ユーザが複数の機械にログインしたりログアウ
トしたりしてタスクを実行し、分散フアイルスペース内
のフアイルを共用し、その正確な状態を示す試験シナリ
オの終端において自動的に作成される報告書を有するよ
うな大企業の、週の就業日を実際にシミユレーシヨンす
る40時間試験シナリオを開始する単一コマンドを実行で
きる能力が準備される。この試験用足場はこの形式のプ
ロセスを自動化するように設計された。
【0022】この試験用足場の全機能を得るためには、
複数のホスト間で通信するための媒体が存在しなければ
ならない。通信媒体が無ければ、機械シナリオ及び以下
に示すものだけが走行できる。分散環境内に論理処理階
層を作成する機構が提供される。同様に論理処理階層を
越えた拡張も提供される。
複数のホスト間で通信するための媒体が存在しなければ
ならない。通信媒体が無ければ、機械シナリオ及び以下
に示すものだけが走行できる。分散環境内に論理処理階
層を作成する機構が提供される。同様に論理処理階層を
越えた拡張も提供される。
【0023】本発明においては、文脈を任意に定義する
ことができるので、名前又は他の何らかの属性によつて
プロセスをオペレーテイングシステム処理空間内に関係
付ける必要がない。プロセスが構内のコンピユータ上に
存在しようとも、遠隔のコンピユータ上に存在しようと
も、単一のシステム意味規則を使用してこのようなプロ
セスにアクセスすることができる。プロセスに分散文脈
の一部として登録することを許容する機構が提供され
る。登録は階層内のその親を指名していずれかの子プロ
セスによつて明示的に実行されてもよく、また子を生む
ときに親プロセスによつて自動的に実行されてもよい。
この機構により柔軟性が付加され、これにより、実行し
ているプロセスの一部についての知識を必要とせずに実
行時に分散環境内の宛先ノードを選択することができ
る。これは、機械形式に基づいてプロセスを分散させる
能力と、特定のノード又は負荷平衡の考慮のもとに利用
し得る機能とを与える。
ことができるので、名前又は他の何らかの属性によつて
プロセスをオペレーテイングシステム処理空間内に関係
付ける必要がない。プロセスが構内のコンピユータ上に
存在しようとも、遠隔のコンピユータ上に存在しようと
も、単一のシステム意味規則を使用してこのようなプロ
セスにアクセスすることができる。プロセスに分散文脈
の一部として登録することを許容する機構が提供され
る。登録は階層内のその親を指名していずれかの子プロ
セスによつて明示的に実行されてもよく、また子を生む
ときに親プロセスによつて自動的に実行されてもよい。
この機構により柔軟性が付加され、これにより、実行し
ているプロセスの一部についての知識を必要とせずに実
行時に分散環境内の宛先ノードを選択することができ
る。これは、機械形式に基づいてプロセスを分散させる
能力と、特定のノード又は負荷平衡の考慮のもとに利用
し得る機能とを与える。
【0024】この方法を使用することにより、この論理
階層に関与することを選択するプロセスが登録しなけれ
ばならないときに幾つかの方法でプロセスが登録し得る
柔軟性を獲得する。以下に例をあげる。
階層に関与することを選択するプロセスが登録しなけれ
ばならないときに幾つかの方法でプロセスが登録し得る
柔軟性を獲得する。以下に例をあげる。
【0025】プロセスは制御されたプロセスであること
を登録することができる。すなわちプロセスは正規のプ
ロセスとして同一の意味規則で走行することを選択する
ことができる。プロセスはこのモードでは分散環境を有
する。これは、論理処理ツリーの他のプロセスから正規
信号を受け取り、プロセスが出る場合には、期待する結
果をその論理親上に生じさせることができる。
を登録することができる。すなわちプロセスは正規のプ
ロセスとして同一の意味規則で走行することを選択する
ことができる。プロセスはこのモードでは分散環境を有
する。これは、論理処理ツリーの他のプロセスから正規
信号を受け取り、プロセスが出る場合には、期待する結
果をその論理親上に生じさせることができる。
【0026】プロセスは論理処理ツリーの現在の部分で
あるプロセスに関係があるパーテイとして登録できる。
このモードにおいて同じ通信機構を使用することによ
り、プロセスは特定の事象のための通知専用リスト上に
それ自身を置くことができる。またこのモードにおい
て、論理親は子の死又は他の出口事象について通知され
ることはない。しかしながら、このプロセスは分散環境
空間及びメツセージサービス等の、他の論理処理グルー
プ属性にあやかる。
あるプロセスに関係があるパーテイとして登録できる。
このモードにおいて同じ通信機構を使用することによ
り、プロセスは特定の事象のための通知専用リスト上に
それ自身を置くことができる。またこのモードにおい
て、論理親は子の死又は他の出口事象について通知され
ることはない。しかしながら、このプロセスは分散環境
空間及びメツセージサービス等の、他の論理処理グルー
プ属性にあやかる。
【0027】分散環境における汎用サーバで実行できる
ようにこの登録機構を拡張することができ、これによ
り、分散環境内の制御用のシステム透過機能をユーザに
提供する。
ようにこの登録機構を拡張することができ、これによ
り、分散環境内の制御用のシステム透過機能をユーザに
提供する。
【0028】
【実施例】以下図面について、本発明の一実施例を詳述
する。
する。
【0029】図1は試験用フレームワークを示し、完全
な試験用足場を具体化したものを包含している。このフ
レームワークは複数の試験シナリオレベル16、18、
20及び22のためのシナリオドライバ12を含む。ま
た図2に示すように、シナリオ構築ツール52と、報告
書フイルタ64と、標準ジヤーナルプログラミングイン
タフエース70及び74を含む試験シナリオ開発のため
のインタフエース定義と、完全なデイレクトリ構造とを
含んでいる。この足場が制御できる範囲は単一の試験プ
ログラムからなる極めて小さな試験シナリオから多数の
ホストと数千の試験プログラムとを包含する極めて大き
くて複雑な試験シナリオに及ぶ。この目的のために4つ
の異なる階層レベルをもつシナリオドライバを提供す
る。
な試験用足場を具体化したものを包含している。このフ
レームワークは複数の試験シナリオレベル16、18、
20及び22のためのシナリオドライバ12を含む。ま
た図2に示すように、シナリオ構築ツール52と、報告
書フイルタ64と、標準ジヤーナルプログラミングイン
タフエース70及び74を含む試験シナリオ開発のため
のインタフエース定義と、完全なデイレクトリ構造とを
含んでいる。この足場が制御できる範囲は単一の試験プ
ログラムからなる極めて小さな試験シナリオから多数の
ホストと数千の試験プログラムとを包含する極めて大き
くて複雑な試験シナリオに及ぶ。この目的のために4つ
の異なる階層レベルをもつシナリオドライバを提供す
る。
【0030】本発明が試験用環境を提供することに照準
を合わせている点を認識することが重要である。実際の
試験プログラムを提供するものではない。この足場は良
好に定義されたインタフエースを有し、このインタフエ
ースは試験プログラムを書き込むための構造を最小限要
求するにすぎない。この足場は個々のテストプログラム
のサイズ及び又は複雑性に制約を課すことはない。この
足場の下で実行する試験プログラムはオペレーテイング
システムコマンドを実行してそのリターンコードを検査
することができるか又は1ダースの機械からなる環境シ
ナリオを開始することができる。
を合わせている点を認識することが重要である。実際の
試験プログラムを提供するものではない。この足場は良
好に定義されたインタフエースを有し、このインタフエ
ースは試験プログラムを書き込むための構造を最小限要
求するにすぎない。この足場は個々のテストプログラム
のサイズ及び又は複雑性に制約を課すことはない。この
足場の下で実行する試験プログラムはオペレーテイング
システムコマンドを実行してそのリターンコードを検査
することができるか又は1ダースの機械からなる環境シ
ナリオを開始することができる。
【0031】(アーキテクチヤの概観)
【0032】(1)用語、(2)モデル、(3)システ
ム要求の3つの観点からアーキテクチヤに関して詳細に
説明する。
ム要求の3つの観点からアーキテクチヤに関して詳細に
説明する。
【0033】用語の部門は当該明細書を通じて用いる用
語についての小辞典である。アーキテクチヤのモデルは
2つ存在し、このモデル部門においては構成要素につい
て説明する。システム要求部門では現在のアーキテクチ
ヤによつて課される要求について詳述する。
語についての小辞典である。アーキテクチヤのモデルは
2つ存在し、このモデル部門においては構成要素につい
て説明する。システム要求部門では現在のアーキテクチ
ヤによつて課される要求について詳述する。
【0034】(1)用語
【0035】「アプリケーシヨンプログラミングインタ
フエース(API)」はアプリケーシヨンに対するイン
タフエース又は機能のセツトである。
フエース(API)」はアプリケーシヨンに対するイン
タフエース又は機能のセツトである。
【0036】「開始フツク」はその下にある試験シナリ
オを実行する前にシナリオドライバによつて実行される
ユーザコードである。シナリオ実行ステージの間試験シ
ナリオのカストマイズを支援することを意図するもので
ある。
オを実行する前にシナリオドライバによつて実行される
ユーザコードである。シナリオ実行ステージの間試験シ
ナリオのカストマイズを支援することを意図するもので
ある。
【0037】「分散フアイルスペース」は複数のホスト
によつて共用されるデイレクトリ構造である。ネツトワ
ークフアイルシステムNFS(サン・マイクロシステム
社の商標)はこの概念の最も一般的なUNIXによる具
体化である。
によつて共用されるデイレクトリ構造である。ネツトワ
ークフアイルシステムNFS(サン・マイクロシステム
社の商標)はこの概念の最も一般的なUNIXによる具
体化である。
【0038】「終了フツク」はその下にある試験シナリ
オを実行した後にシナリオドライバによつて実行される
ユーザコードである。シナリオ実行ステージの間試験シ
ナリオのカストマイズを支援することを意図するもので
ある。
オを実行した後にシナリオドライバによつて実行される
ユーザコードである。シナリオ実行ステージの間試験シ
ナリオのカストマイズを支援することを意図するもので
ある。
【0039】「環境シナリオ」は試験シナリオレベルで
あり、関連する機械と、個人と、タスクシナリオとをネ
ツトワーク環境内でまとめてグループ化する際に使用さ
れる。
あり、関連する機械と、個人と、タスクシナリオとをネ
ツトワーク環境内でまとめてグループ化する際に使用さ
れる。
【0040】「環境シナリオドライバ」は自動化された
プログラムであり、環境シナリオの実行を制御する。
プログラムであり、環境シナリオの実行を制御する。
【0041】「機械シナリオ」は試験シナリオレベルで
あり、関連する個人及びタスクシナリオを単一のホスト
上でまとめてグループ化する際に使用される。
あり、関連する個人及びタスクシナリオを単一のホスト
上でまとめてグループ化する際に使用される。
【0042】「機械シナリオドライバ」は自動化された
プログラムであり、機械シナリオの実行を制御する。
プログラムであり、機械シナリオの実行を制御する。
【0043】「個人シナリオ」は試験シナリオレベルで
あり、関連するタスクシナリオをまとめてグループ化
し、顧客をシミユレートする際に使用する。
あり、関連するタスクシナリオをまとめてグループ化
し、顧客をシミユレートする際に使用する。
【0044】「個人シナリオドライバ」は自動化したプ
ログラムであり、個人シナリオの実行を制御する。
ログラムであり、個人シナリオの実行を制御する。
【0045】「報告書フイルタ」はシナリオジヤーナル
及び又はタスクジヤーナルを読み取つて読み易い報告書
を作成するプログラムに与えられる総称名である。
及び又はタスクジヤーナルを読み取つて読み易い報告書
を作成するプログラムに与えられる総称名である。
【0046】「シナリオ構築ツール」はメニユー方式プ
ログラムであり、シナリオ定義フアイル及びシナリオイ
ンスタンスフアイルを管理できるようにする。
ログラムであり、シナリオ定義フアイル及びシナリオイ
ンスタンスフアイルを管理できるようにする。
【0047】「シナリオ定義フアイル」はユーザ定義属
性と試験シナリオを定義するシナリオドライバ属性との
双方を収容する。定義フアイルは各ユーザ定義属性の形
式と、制限と、デフオルト値と、記述とを表わすユーザ
定義属性に関するテンプレートデータ及びシナリオドラ
イバ属性についての実際のテンプレート値を収容する。
定義フアイルはシナリオインスタンスフアイルを作成す
るためのテンプレートを形成する。
性と試験シナリオを定義するシナリオドライバ属性との
双方を収容する。定義フアイルは各ユーザ定義属性の形
式と、制限と、デフオルト値と、記述とを表わすユーザ
定義属性に関するテンプレートデータ及びシナリオドラ
イバ属性についての実際のテンプレート値を収容する。
定義フアイルはシナリオインスタンスフアイルを作成す
るためのテンプレートを形成する。
【0048】「シナリオ開発ステージ」はその中ですべ
てのユーザタスクコード及びシナリオ構成情報を開発し
デバツグするステージである。
てのユーザタスクコード及びシナリオ構成情報を開発し
デバツグするステージである。
【0049】「シナリオドライバ」は他の下位レベルシ
ナリオドライバ又はユーザタスクコードの実行を駆動又
は制御するプログラムに与えられる総称的な用語であ
る。
ナリオドライバ又はユーザタスクコードの実行を駆動又
は制御するプログラムに与えられる総称的な用語であ
る。
【0050】「シナリオドライバ属性」は主要なシナリ
オドライバ構成方式である。これらを使用して、シナリ
オドライバの機能を定義及び又は変更する。
オドライバ構成方式である。これらを使用して、シナリ
オドライバの機能を定義及び又は変更する。
【0051】「シナリオ実行ステージ」はその中で試験
シナリオを実行するステージである。
シナリオを実行するステージである。
【0052】「シナリオインスタンスフアイル」はシナ
リオドライバ属性と、試験シナリオを定義するユーザ定
義属性との双方を収容する。シナリオインスタンスフア
イルはシナリオドライバ属性及びユーザ定義属性の双方
についての実際の値を収容する。
リオドライバ属性と、試験シナリオを定義するユーザ定
義属性との双方を収容する。シナリオインスタンスフア
イルはシナリオドライバ属性及びユーザ定義属性の双方
についての実際の値を収容する。
【0053】「シナリオジヤーナル」は標準ジヤーナル
であり、これはシナリオ実行に関する高レベルデータを
収容する。
であり、これはシナリオ実行に関する高レベルデータを
収容する。
【0054】「タスク支援フアイル」はタスクを文書化
するデータを収容する。
するデータを収容する。
【0055】「タスクジヤーナル」はユーザタスクコー
ドによつて利用される標準ジヤーナルである。試験シナ
リオで実行するタスクのすべてのインスタンスについて
1つのタスクジヤーナルが存在する。
ドによつて利用される標準ジヤーナルである。試験シナ
リオで実行するタスクのすべてのインスタンスについて
1つのタスクジヤーナルが存在する。
【0056】「タスクシナリオ」はユーザコードからな
る試験シナリオレベルである。これはテストケースの等
価物と考えることができる。
る試験シナリオレベルである。これはテストケースの等
価物と考えることができる。
【0057】「タスクシナリオドライバ」は自動化され
たプログラムであり、タスクシナリオの実行を制御す
る。
たプログラムであり、タスクシナリオの実行を制御す
る。
【0058】「タスク設定コード」はユーザコードであ
り、シナリオ実行ステージの間試験原始コードをコンパ
イルする際に使用される。
り、シナリオ実行ステージの間試験原始コードをコンパ
イルする際に使用される。
【0059】「試験シナリオ」は試験の選択されたグル
ープ化に与えられる総称名である。
ープ化に与えられる総称名である。
【0060】「ユーザ定義属性」はユーザタスクコード
にデータを運ぶ際に使用される変数である。
にデータを運ぶ際に使用される変数である。
【0061】「ユーザタスクコード」は試験目的のため
のタスクシナリオ開発者によつて書き込まれるコードで
あり、通常テストケースと呼ばれるものと同義である。
のタスクシナリオ開発者によつて書き込まれるコードで
あり、通常テストケースと呼ばれるものと同義である。
【0062】(2)モデル
【0063】本発明の主要構成要素のアーキテクチヤレ
ベルでのすべての対話を記述するために、以下に示す2
つのモデル(A)及び(B)を使用する。第1のモデル
は各シナリオドライバの対話と、シナリオドライバが実
行するオブジエクトと、試験シナリオに対するシナリオ
ドライバの関係とを記述する。第2のモデルは本発明を
構成する構成要素同士の対話を記述する。
ベルでのすべての対話を記述するために、以下に示す2
つのモデル(A)及び(B)を使用する。第1のモデル
は各シナリオドライバの対話と、シナリオドライバが実
行するオブジエクトと、試験シナリオに対するシナリオ
ドライバの関係とを記述する。第2のモデルは本発明を
構成する構成要素同士の対話を記述する。
【0064】(A)シナリオドライバ対話アーキテクチ
ヤモデル
ヤモデル
【0065】図1に示すように、シナリオドライバ対話
アーキテクチヤモデル10は各シナリオドライバ12の
対話と、シナリオドライバが符号14において実行する
オブジエクトと、試験シナリオに対するシナリオドライ
バの関係とを記述する。このモデルの構成要素の外郭を
略記した長方形16、18、20及び22は試験シナリ
オを表し、デイスクアイコンはデータ記憶場所72、2
6、28、30及び32を表し、ブロツク12はプログ
ラムを表し、陰影を付した四角のブロツク68はシナリ
オ開発者によつて開発されるコードを表す。
アーキテクチヤモデル10は各シナリオドライバ12の
対話と、シナリオドライバが符号14において実行する
オブジエクトと、試験シナリオに対するシナリオドライ
バの関係とを記述する。このモデルの構成要素の外郭を
略記した長方形16、18、20及び22は試験シナリ
オを表し、デイスクアイコンはデータ記憶場所72、2
6、28、30及び32を表し、ブロツク12はプログ
ラムを表し、陰影を付した四角のブロツク68はシナリ
オ開発者によつて開発されるコードを表す。
【0066】このモデルは試験シナリオ16、18、2
0及び22とこれらに対応するシナリオドライバ12と
の間の関係を示す。定義された試験シナリオはいずれ
も、その実行を制御する1つのシナリオドライバ12
と、その特定の試験シナリオを定義するのに必要な構成
情報を提供する1つのシナリオインスタンスフアイル
(例えば26、28、30及び32)とを有する。
0及び22とこれらに対応するシナリオドライバ12と
の間の関係を示す。定義された試験シナリオはいずれ
も、その実行を制御する1つのシナリオドライバ12
と、その特定の試験シナリオを定義するのに必要な構成
情報を提供する1つのシナリオインスタンスフアイル
(例えば26、28、30及び32)とを有する。
【0067】シナリオドライバ対話アーキテクチヤモデ
ル10は、タスクシナリオレベル16を介して環境シナ
リオレベル22から受け取る各試験シナリオレベルにお
いてはシナリオドライバ要素12は同じであるが、シナ
リオインスタンスフアイルは異なることを示している。
好適な実施例には、各シナリオドライバと関連付けた1
つのシナリオインスタンスフアイルが存在し、1つのシ
ナリオドライバ要素が存在するが、その動作はシナリオ
インスタンスフアイルの内容に極めて大きく左右され
る。
ル10は、タスクシナリオレベル16を介して環境シナ
リオレベル22から受け取る各試験シナリオレベルにお
いてはシナリオドライバ要素12は同じであるが、シナ
リオインスタンスフアイルは異なることを示している。
好適な実施例には、各シナリオドライバと関連付けた1
つのシナリオインスタンスフアイルが存在し、1つのシ
ナリオドライバ要素が存在するが、その動作はシナリオ
インスタンスフアイルの内容に極めて大きく左右され
る。
【0068】このモデルが示すように、他のシナリオド
ライバを制御するシナリオドライバはこれらのドライバ
を同時に1つ又は2つ以上制御することができる。これ
は階層的試験の一式を実現させ、これにより、他の試験
シナリオからなる試験シナリオを定義することができ
る。ユーザタスクコードを実行するタスクシナリオドラ
イバはユーザタスクコードの一片だけを制御する。従つ
て試験シナリオで実行されるユーザタスクコードの個々
の各構成要素には単一のタスクシナリオドライバが存在
する。
ライバを制御するシナリオドライバはこれらのドライバ
を同時に1つ又は2つ以上制御することができる。これ
は階層的試験の一式を実現させ、これにより、他の試験
シナリオからなる試験シナリオを定義することができ
る。ユーザタスクコードを実行するタスクシナリオドラ
イバはユーザタスクコードの一片だけを制御する。従つ
て試験シナリオで実行されるユーザタスクコードの個々
の各構成要素には単一のタスクシナリオドライバが存在
する。
【0069】このモデルから認識すべき最も重要な事項
の1つは、シナリオドライバ12はユーザコードのただ
一片の実行を制御する以上のことを行うということであ
る。このような機能に加えて、シナリオドライバ12は
ネツトワーク化した環境内のホストのセツト全体を制御
する能力をも有する。
の1つは、シナリオドライバ12はユーザコードのただ
一片の実行を制御する以上のことを行うということであ
る。このような機能に加えて、シナリオドライバ12は
ネツトワーク化した環境内のホストのセツト全体を制御
する能力をも有する。
【0070】また機械シナリオドライバによつて複数の
個人シナリオドライバを実行することができるので、シ
ナリオドライバは1つのホスト上で実行している複数の
人々をエミユレートする機能をも有する。これらの各個
人ドライバは一組のタスクシナリオドライバを実行する
能力を有し、次に個人ドライバはシナリオ開発者の試験
コードを実際に実行する。この階層的モデルは凝集性ネ
ツトワーク環境における実個人エミユレーシヨンと非並
行柔軟性とを実現し、すべてを1つの環境シナリオドラ
イバから中央制御して自動化する。
個人シナリオドライバを実行することができるので、シ
ナリオドライバは1つのホスト上で実行している複数の
人々をエミユレートする機能をも有する。これらの各個
人ドライバは一組のタスクシナリオドライバを実行する
能力を有し、次に個人ドライバはシナリオ開発者の試験
コードを実際に実行する。この階層的モデルは凝集性ネ
ツトワーク環境における実個人エミユレーシヨンと非並
行柔軟性とを実現し、すべてを1つの環境シナリオドラ
イバから中央制御して自動化する。
【0071】(B)構成要素対話アーキテクチヤモデル
【0072】図2は構成要素対話アーキテクチヤモデル
50を示し、本発明のすべての主要なアーキテクチヤ構
成要素の対話を示す。デイスクアイコン54、56及び
62はデータ記憶場所を表し、ブロツク52、58、6
0及び64はプログラムを表す。陰影を付したプログラ
ムブロツク68はシナリオ開発者が開発したユーザコー
ドを表す。
50を示し、本発明のすべての主要なアーキテクチヤ構
成要素の対話を示す。デイスクアイコン54、56及び
62はデータ記憶場所を表し、ブロツク52、58、6
0及び64はプログラムを表す。陰影を付したプログラ
ムブロツク68はシナリオ開発者が開発したユーザコー
ドを表す。
【0073】このモデルは、シナリオ定義フアイル56
及びシナリオインスタンスフアイル54の主要な対話が
シナリオ構築ツール52を通じて遂行されることを示し
ている。シナリオ構築ツール52を用いてシナリオ定義
及びインスタンスを管理し、シナリオ開発者を用いてシ
ナリオ構築ツール52にアクセスする。
及びシナリオインスタンスフアイル54の主要な対話が
シナリオ構築ツール52を通じて遂行されることを示し
ている。シナリオ構築ツール52を用いてシナリオ定義
及びインスタンスを管理し、シナリオ開発者を用いてシ
ナリオ構築ツール52にアクセスする。
【0074】シナリオ定義フアイル56はシナリオにつ
いての構成情報を定義し、シナリオインスタンスフアイ
ル54を作成するテンプレートとして使用される。シナ
リオインスタンスフアイル54はシナリオドライバの入
力であり、シナリオ実行ステージの間シナリオドライバ
構成情報を供給する。
いての構成情報を定義し、シナリオインスタンスフアイ
ル54を作成するテンプレートとして使用される。シナ
リオインスタンスフアイル54はシナリオドライバの入
力であり、シナリオ実行ステージの間シナリオドライバ
構成情報を供給する。
【0075】シナリオドライバ58はその入力としてイ
ンスタンスデータを読み取り、シナリオドライバ60及
び又はユーザコード68の他のセツトを実行する。各シ
ナリオドライバレベル間にはインタフエースが存在し
(図1の符号14)、またシナリオドライバ及びユーザ
コード間にもインタフエースが存在する(図2の符号7
0)。これらのインタフエースはシナリオドライバ及び
実行できるオブジエクトの組み合わせによつて変わる。
ンスタンスデータを読み取り、シナリオドライバ60及
び又はユーザコード68の他のセツトを実行する。各シ
ナリオドライバレベル間にはインタフエースが存在し
(図1の符号14)、またシナリオドライバ及びユーザ
コード間にもインタフエースが存在する(図2の符号7
0)。これらのインタフエースはシナリオドライバ及び
実行できるオブジエクトの組み合わせによつて変わる。
【0076】シナリオドライバによつて実行されるシナ
リオドライバをモデルの上辺に単一プログラムとして示
す。しかしながらシナリオドライバは同時に複数のシナ
リオドライバを実行することができる。次にこれらの各
シナリオドライバは主シナリオドライバプログラムが配
置されている、このモデルの中央部に入る。主シナリオ
ドライバプログラムはこれらを実行したシナリオドライ
バと同一の考え得る対話のセツトを有する。
リオドライバをモデルの上辺に単一プログラムとして示
す。しかしながらシナリオドライバは同時に複数のシナ
リオドライバを実行することができる。次にこれらの各
シナリオドライバは主シナリオドライバプログラムが配
置されている、このモデルの中央部に入る。主シナリオ
ドライバプログラムはこれらを実行したシナリオドライ
バと同一の考え得る対話のセツトを有する。
【0077】いずれかのシナリオドライバからのジヤー
ナルへの記入はシナリオジヤーナルドライバプログラミ
ングインタフエース78を経由してシナリオジヤーナル
に対してなされる。好適な実施例において、同じシナリ
オ内で実行する機械上のすべてのシナリオドライバは同
じシナリオジヤーナル62に記入する。
ナルへの記入はシナリオジヤーナルドライバプログラミ
ングインタフエース78を経由してシナリオジヤーナル
に対してなされる。好適な実施例において、同じシナリ
オ内で実行する機械上のすべてのシナリオドライバは同
じシナリオジヤーナル62に記入する。
【0078】試験用足場の各ユーザコード構成要素はこ
のモデル内の単一のユーザコードプログラムボツクス6
8にグループ化される。ユーザコードはタスクジヤーナ
ル72に記録を記入し、開始フツク及び終了フツクユー
ザコードの実行はシナリオジヤーナル62に記入する。
同じシナリオ内で実行しているユーザタスクコードの各
インスタンスは自身の固有のタスクジヤーナルに記入す
る。
のモデル内の単一のユーザコードプログラムボツクス6
8にグループ化される。ユーザコードはタスクジヤーナ
ル72に記録を記入し、開始フツク及び終了フツクユー
ザコードの実行はシナリオジヤーナル62に記入する。
同じシナリオ内で実行しているユーザタスクコードの各
インスタンスは自身の固有のタスクジヤーナルに記入す
る。
【0079】シナリオジヤーナル62及びタスクジヤー
ナル72のフオーマツトは首尾一貫しているので、報告
書フイルタ64はジヤーナルを読んで、明瞭な報告書6
6を作成することができる。
ナル72のフオーマツトは首尾一貫しているので、報告
書フイルタ64はジヤーナルを読んで、明瞭な報告書6
6を作成することができる。
【0080】(3)システム要求
【0081】上述のアーキテクチヤ及びデザインによつ
て課される一組のアーキテクチヤ要求を以下に示す。
て課される一組のアーキテクチヤ要求を以下に示す。
【0082】(階層的フアイルシステム)
【0083】オペレーテイングシステムのフアイルシス
テムはデイレクトリ内にデイレクトリを有し、いかなる
点においてもこれらのデイレクトリ内にフアイルする能
力を組み込んでいなければならない。標準的なUnix
オペレーテイングシステムはこの機能を提供する。
テムはデイレクトリ内にデイレクトリを有し、いかなる
点においてもこれらのデイレクトリ内にフアイルする能
力を組み込んでいなければならない。標準的なUnix
オペレーテイングシステムはこの機能を提供する。
【0084】(子プロセス)
【0085】オペレーテイングシステムは同時に実行で
きる複数の子プロセスを作成し得る実行プロセスを有す
ることができなければならない。また親プロセスは子プ
ロセスを上回る幾つかの制御を有していなければならな
い。標準的なUnixオペレーテイングシステムはこの
機能を提供する。
きる複数の子プロセスを作成し得る実行プロセスを有す
ることができなければならない。また親プロセスは子プ
ロセスを上回る幾つかの制御を有していなければならな
い。標準的なUnixオペレーテイングシステムはこの
機能を提供する。
【0086】(ホスト間通信)
【0087】ホスト間通信は特定のシステム上でユーザ
実行レベルで実行する。これにより、下にあるオペレー
テイングシステムを変更する必要なく上述の機能を実行
することができ、またその通信チヤネルのための基本的
システムサービスだけに依拠するので「オープンシステ
ム」解決であるという付加的利益をも得ることができ
る。このように通信機構は通信プロトコルから完全に独
立している。それはメツセージ受渡しサービスであるの
で、メツセージ受渡しに使用する実際のプロトコルはメ
ツセージ受渡しの実際のプロセスから独立している。メ
ツセージ受渡しのためのAPIはsend packet()であ
る。パケツトをいかにして引き渡すかの詳細は、与えら
れた機械/オペレーテイングシステム実行のためのsend
packetのインプレメンタに似ている。ソケツトを用い
ることによつて通信機構の実現を例示する。この特性に
よつて与えられる付加的な柔軟性はメツセージシステム
で複数のプロトコルを使用することができ、これにより
システムが所与の状況の中で最高性能の通信を動的に選
択できるようになることである。例えば、ソケツトを使
用してシステム境界を越えて通信し、ボツクス内通信用
の共用メモリ又はメツセージキユーを使用することを望
むことがある。アーキテクチヤにより、send packetに
同じ呼出しを行うことにより呼出しプロセスには見えな
い両方のタスクを実行することができる。
実行レベルで実行する。これにより、下にあるオペレー
テイングシステムを変更する必要なく上述の機能を実行
することができ、またその通信チヤネルのための基本的
システムサービスだけに依拠するので「オープンシステ
ム」解決であるという付加的利益をも得ることができ
る。このように通信機構は通信プロトコルから完全に独
立している。それはメツセージ受渡しサービスであるの
で、メツセージ受渡しに使用する実際のプロトコルはメ
ツセージ受渡しの実際のプロセスから独立している。メ
ツセージ受渡しのためのAPIはsend packet()であ
る。パケツトをいかにして引き渡すかの詳細は、与えら
れた機械/オペレーテイングシステム実行のためのsend
packetのインプレメンタに似ている。ソケツトを用い
ることによつて通信機構の実現を例示する。この特性に
よつて与えられる付加的な柔軟性はメツセージシステム
で複数のプロトコルを使用することができ、これにより
システムが所与の状況の中で最高性能の通信を動的に選
択できるようになることである。例えば、ソケツトを使
用してシステム境界を越えて通信し、ボツクス内通信用
の共用メモリ又はメツセージキユーを使用することを望
むことがある。アーキテクチヤにより、send packetに
同じ呼出しを行うことにより呼出しプロセスには見えな
い両方のタスクを実行することができる。
【0088】論理プロセススペースを動的に再配置して
プロセスを論理プロセススペースに任意に挿入すること
ができるので、分散プロセス制御に新しい次元が開け
る。これにより、このレベルの制御において、現在は実
行できない幾つかの機能を実行することができる。
プロセスを論理プロセススペースに任意に挿入すること
ができるので、分散プロセス制御に新しい次元が開け
る。これにより、このレベルの制御において、現在は実
行できない幾つかの機能を実行することができる。
【0089】通常は関係のないプロセスを中央制御する
ことができるだけでなく、トツプノードからの論理プロ
セスフアミリの完全なビユーを保存することができる。 − 親との通信(反復的) − 即時論理処理フアミリとの通信 − 現在のフアミリの対等者との通信 − 論理処理ツリーの一切の構成要素との任意の通信 − − プロセスを始動し文脈を動的に指定する − − 論理的階層の実行時操作 − 故障中のプロセツサからの操作プロセス − サーバ障害 − 通知経路の変更 − グローバルな基礎の上に立つた環境データの動的変
更 − プロセス通知 − 負荷平衡
ことができるだけでなく、トツプノードからの論理プロ
セスフアミリの完全なビユーを保存することができる。 − 親との通信(反復的) − 即時論理処理フアミリとの通信 − 現在のフアミリの対等者との通信 − 論理処理ツリーの一切の構成要素との任意の通信 − − プロセスを始動し文脈を動的に指定する − − 論理的階層の実行時操作 − 故障中のプロセツサからの操作プロセス − サーバ障害 − 通知経路の変更 − グローバルな基礎の上に立つた環境データの動的変
更 − プロセス通知 − 負荷平衡
【0090】この論理フアミリの表示に付加される要素
は拡張PIDである。1つの多重処理システム上で種々
の機構を使用することにより各プロセスは固有のプロセ
スIDを伴つて確実に走る。これらの機構は2つ以上の
オペレーテイングシステムインスタンスが環境内に存在
するときには機能を継続しない。分散形論理処理ツリー
の場合には、機械名と機械固有のプロセスIDとの組合
わせを使用してこの文脈内のプロセスを識別する。いず
れか1つのオペレーテイングシステムインスタンス上の
固有のプロセスIDの保証と固有の機械IDの技法とが
与えられた場合、分散環境内の処理についての固有のI
Dを保証することができる。
は拡張PIDである。1つの多重処理システム上で種々
の機構を使用することにより各プロセスは固有のプロセ
スIDを伴つて確実に走る。これらの機構は2つ以上の
オペレーテイングシステムインスタンスが環境内に存在
するときには機能を継続しない。分散形論理処理ツリー
の場合には、機械名と機械固有のプロセスIDとの組合
わせを使用してこの文脈内のプロセスを識別する。いず
れか1つのオペレーテイングシステムインスタンス上の
固有のプロセスIDの保証と固有の機械IDの技法とが
与えられた場合、分散環境内の処理についての固有のI
Dを保証することができる。
【0091】論理処理階層の構造が与えられた場合、通
常利用できない付加的機能を利用することができる。こ
のシステムの柔軟性によつてリカバリシナリオをもつこ
とができ、これにより、被制御プロセスの場合の新しい
親にプロセスを動的に再割り当てすることができる。こ
れは、既存の多重処理システムと同様の意味規則を許容
するので、プロセスの親が死んだ場合にプロセスの継承
を生じさせる。この場合を除けば、リカバリシナリオは
バツクアツププロセス及び冗長プロセスに死んだ親の子
を継承させるよう真先に指定されてよい。これにより、
論理処理階層はサーバ又は制御処理の障害に耐えて予測
しうる制御された手法を継続することができる。
常利用できない付加的機能を利用することができる。こ
のシステムの柔軟性によつてリカバリシナリオをもつこ
とができ、これにより、被制御プロセスの場合の新しい
親にプロセスを動的に再割り当てすることができる。こ
れは、既存の多重処理システムと同様の意味規則を許容
するので、プロセスの親が死んだ場合にプロセスの継承
を生じさせる。この場合を除けば、リカバリシナリオは
バツクアツププロセス及び冗長プロセスに死んだ親の子
を継承させるよう真先に指定されてよい。これにより、
論理処理階層はサーバ又は制御処理の障害に耐えて予測
しうる制御された手法を継続することができる。
【0092】上述の通信アーキテクチヤの付加的利益に
は、(1)論理フアミリ階層に加わる以外の目的で登録
プロセスを使用する能力及び(2)ノード障害が生じた
場合にプロセスを動的に再割り当てする能力を含む。
は、(1)論理フアミリ階層に加わる以外の目的で登録
プロセスを使用する能力及び(2)ノード障害が生じた
場合にプロセスを動的に再割り当てする能力を含む。
【0093】以下に、メツセージ受渡しのために選択さ
れる制御プロセスを実行する際に用いられる機構及び分
散形試験環境ドライバによつて使用されるプロセス間通
信を説明する。
れる制御プロセスを実行する際に用いられる機構及び分
散形試験環境ドライバによつて使用されるプロセス間通
信を説明する。
【0094】環境全体をシミユレーシヨンする、単一シ
ステム上にある制御点をもつた多数のシステム上で、何
らかの利用しうる試験を駆動し追尾し制御できるように
することが試験ドライバの目的である。この目標を達成
するには、単一の機械上で試験環境を駆動することから
予想される手法と全く同じ手法で環境内のドライバが通
信することができるような通信機構を確立する必要があ
る。
ステム上にある制御点をもつた多数のシステム上で、何
らかの利用しうる試験を駆動し追尾し制御できるように
することが試験ドライバの目的である。この目標を達成
するには、単一の機械上で試験環境を駆動することから
予想される手法と全く同じ手法で環境内のドライバが通
信することができるような通信機構を確立する必要があ
る。
【0095】ドライバ自身の実施を簡単にするため、試
験ドライバに対して使用しうる機能のライブラリとして
この通信機構が実施され、各機械上に制御デーモンを設
けて分散形ipcを提供する。この実施技術を使用する
ことによつてライブラリ内への通信機能及び制御デーモ
ン内への制御機能を分離したので、ドライバは、分散環
境内でメツセージを受け渡す際に使用されるネツトワー
ク形式又はプロトコル形式を知つている必要はない。
験ドライバに対して使用しうる機能のライブラリとして
この通信機構が実施され、各機械上に制御デーモンを設
けて分散形ipcを提供する。この実施技術を使用する
ことによつてライブラリ内への通信機能及び制御デーモ
ン内への制御機能を分離したので、ドライバは、分散環
境内でメツセージを受け渡す際に使用されるネツトワー
ク形式又はプロトコル形式を知つている必要はない。
【0096】ここで制御デーモンについて概略的に説明
する。
する。
【0097】図32に示すように、この分散形試験に加
入することを期待される各機械342上で制御デーモン
(サーバ)340が走る。分散環境338の制御の下に
ある試験ドライバ12はこれらが実行されている機械3
42上のサーバ340に登録されることを期待される。
他のプロセス及び他のプロセツサとの通信はすべて試験
ドライバ12が実行している機械のためのサーバを経由
してなされる。これにより、遠隔の機械上で子プロセス
を生むことができると共に、処理が完了したならば子の
死を親機械で受け取ることができる。同じプロセツサ上
又は遠隔プロセツサ上であつても、登録技術を用いるこ
とにより、親プロセスの直接の子孫ではない子をサポー
トすることもできる。ドライバタスクの実行及び終了を
中央点を介して制御することによつて、この分散環境3
38の下で走つている一切のタスクドライバ12からリ
ターンコード情報を得ることができる。
入することを期待される各機械342上で制御デーモン
(サーバ)340が走る。分散環境338の制御の下に
ある試験ドライバ12はこれらが実行されている機械3
42上のサーバ340に登録されることを期待される。
他のプロセス及び他のプロセツサとの通信はすべて試験
ドライバ12が実行している機械のためのサーバを経由
してなされる。これにより、遠隔の機械上で子プロセス
を生むことができると共に、処理が完了したならば子の
死を親機械で受け取ることができる。同じプロセツサ上
又は遠隔プロセツサ上であつても、登録技術を用いるこ
とにより、親プロセスの直接の子孫ではない子をサポー
トすることもできる。ドライバタスクの実行及び終了を
中央点を介して制御することによつて、この分散環境3
38の下で走つている一切のタスクドライバ12からリ
ターンコード情報を得ることができる。
【0098】また制御デーモン340は登録された各プ
ロセスについての個別のメツセージキユー用の機能34
4だけでなく、試験環境338全体に亘る環境変数の保
守及び検索の機能をも有する。
ロセスについての個別のメツセージキユー用の機能34
4だけでなく、試験環境338全体に亘る環境変数の保
守及び検索の機能をも有する。
【0099】この環境に加わるためには、プロセスはサ
ーバ340に登録しなければならない。これはライブラ
リ内のレジスタ関数呼出しを送出することによつて達成
される。プロセスが登録を選択をすると、サーバにクラ
イアントレコードが作成され、サーバ使用のためのその
クライアントにハンドルが割り当てられる。ハンドルを
登録プロセスに戻して、サーバとのその後の通信に使用
する。
ーバ340に登録しなければならない。これはライブラ
リ内のレジスタ関数呼出しを送出することによつて達成
される。プロセスが登録を選択をすると、サーバにクラ
イアントレコードが作成され、サーバ使用のためのその
クライアントにハンドルが割り当てられる。ハンドルを
登録プロセスに戻して、サーバとのその後の通信に使用
する。
【0100】制御されたこのプロセスが処理を終了する
と、終了コマンドをサーバに送出することによりその処
理が完了したことを表示しなければならない。終了コマ
ンドは現在のプロセスのリターンコードの受渡しを要求
する。プロセスが終了コマンドを送出すると、終了プロ
セスが妨害し、サーバは、子が終了していて親プロセス
がその子を終了させることを待ち受けている親メツセー
ジキユーにメツセージをエンキユーする。親は release
child 関数呼出しを送出し、子はそのメツセージの受
信を扱う。サーバが release child コマンドを受け取
ると、子は終了準備ができている旨の信号を受け取り、
クライアントデータ構造がサーバ内で解除される。
と、終了コマンドをサーバに送出することによりその処
理が完了したことを表示しなければならない。終了コマ
ンドは現在のプロセスのリターンコードの受渡しを要求
する。プロセスが終了コマンドを送出すると、終了プロ
セスが妨害し、サーバは、子が終了していて親プロセス
がその子を終了させることを待ち受けている親メツセー
ジキユーにメツセージをエンキユーする。親は release
child 関数呼出しを送出し、子はそのメツセージの受
信を扱う。サーバが release child コマンドを受け取
ると、子は終了準備ができている旨の信号を受け取り、
クライアントデータ構造がサーバ内で解除される。
【0101】ここでIPCライブラリ関数について概略
的に説明する。
的に説明する。
【0102】分散されたipc層へのアクセスはIPC
ライブラリ関数(ipclib.a)を経由してアクセスされる。
これらの関数はコミユニケーシヨン348にアクセスす
るためのユーザレベルAPI346(図32)を提供
し、サーバによつて提供される機能に役に立つ。
ライブラリ関数(ipclib.a)を経由してアクセスされる。
これらの関数はコミユニケーシヨン348にアクセスす
るためのユーザレベルAPI346(図32)を提供
し、サーバによつて提供される機能に役に立つ。
【0103】下記のことはipclibから利用することがで
き、試験ドライバ内の制御フローに従つてブレークダウ
ンされる。
き、試験ドライバ内の制御フローに従つてブレークダウ
ンされる。
【0104】ここで初期化について説明する。
【0105】set signals()
【0106】set signals コマンドは信号ハンドラの
初期化に使用される。信号ハンドラはライブラリに構築
され、サーバからクライアントに送られるメツセージを
処理する機能と、子の死及びプロセスの終了を処理する
機能とを有する。この技法を使用すれば、ドライバ開発
者はこの呼出しをドライバコードに含んでいることだけ
が必要となり、すべての信号処理はipclib信号ベクトル
を用いて自動的になされる。
初期化に使用される。信号ハンドラはライブラリに構築
され、サーバからクライアントに送られるメツセージを
処理する機能と、子の死及びプロセスの終了を処理する
機能とを有する。この技法を使用すれば、ドライバ開発
者はこの呼出しをドライバコードに含んでいることだけ
が必要となり、すべての信号処理はipclib信号ベクトル
を用いて自動的になされる。
【0107】ここで登録及び終了について説明する。
【0108】register client(int handle)
【0109】これは正規の登録コマンドであり、プロセ
スが始動するとこれをローカル制御デーモン(サーバ)
に登録してipc通信チヤネルに加わらなければならな
い。このコマンドの送出はハンドルの値に基づいて異な
る結果を発生させることがある。
スが始動するとこれをローカル制御デーモン(サーバ)
に登録してipc通信チヤネルに加わらなければならな
い。このコマンドの送出はハンドルの値に基づいて異な
る結果を発生させることがある。
【0110】図34を参照する。プロセスはブロツク3
90において start process 関数呼出しによつて始動
するとき、環境変数は、そのプロセスが使用すべきハン
ドルの値を含む(AUS PHANDLE)をセツトされる。ブロツ
ク392で登録されると、プロセスは環境変数に与えら
れるハンドルを使用する(ブロツク396)。このハン
ドルは子をサーバに予め登録することによつて作成され
たものであり、既に親に知られている。これを実行した
とき、サーバ内のクライアントレコードが更新され、こ
れを子に通知した親が始動する。正しいハンドルがこの
インスタンスに渡されると、register clientルーチン
が渡されたハンドルと同一のハンドルを戻す。
90において start process 関数呼出しによつて始動
するとき、環境変数は、そのプロセスが使用すべきハン
ドルの値を含む(AUS PHANDLE)をセツトされる。ブロツ
ク392で登録されると、プロセスは環境変数に与えら
れるハンドルを使用する(ブロツク396)。このハン
ドルは子をサーバに予め登録することによつて作成され
たものであり、既に親に知られている。これを実行した
とき、サーバ内のクライアントレコードが更新され、こ
れを子に通知した親が始動する。正しいハンドルがこの
インスタンスに渡されると、register clientルーチン
が渡されたハンドルと同一のハンドルを戻す。
【0111】ブロツク394で判定されたように、プロ
セスがトツプレベルプロセスとして始動すると、ハンド
ルの値はゼロになる。このことは、ブロツク398に示
すように、これがトツプレベルプロセスであり、サーバ
がこのプロセスの親として振る舞うことを示している。
この場合、register clientルーチンは新しいハンドル
値を戻し、このハンドルが将来このクライアントのため
に使用されることを示している。
セスがトツプレベルプロセスとして始動すると、ハンド
ルの値はゼロになる。このことは、ブロツク398に示
すように、これがトツプレベルプロセスであり、サーバ
がこのプロセスの親として振る舞うことを示している。
この場合、register clientルーチンは新しいハンドル
値を戻し、このハンドルが将来このクライアントのため
に使用されることを示している。
【0112】ブロツク400から開始し、クライアント
プロセスは登録パケツトを準備してこのパケツトをサー
バに送り、ブロツク402でこれを受け取る。登録パケ
ツトを受け取ると、ブロツク404においてサーバはこ
のパケツトに格納されているハンドルが既にサーバクラ
イアントテーブルに存在するか否かを確認する。ハンド
ルが存在しないとき、ブロツク406においてサーバは
新しいハンドルを構成し、サーバクライアントテーブル
内の新しいクライアントレコードを初期化し、ブロツク
408において登録パケツト内のハンドルをクライアン
トに戻す。ブロツク404においてクライアントテーブ
ルにハンドルが存在することをサーバが確認すると、サ
ーバはサーバクライアントテーブルを更新する。ハンド
ルによつて示されるプロセスの現在の状態次第では、更
新プロセスは2つの形式をとり得る。ハンドルと一致す
るテーブルエントリがペンデイング状態にあるとき、そ
のエントリは有効とマークされ処理を継続する。テーブ
ルエントリが有効とマークされたとき、このクライアン
トのために新しいハンドルが作成され、サーバクライア
ントテーブルに新しいテーブルエントリが作成される。
この場合ハンドルに割り当てられる値は新しいテーブル
エントリの値である。ローカルサーバクライアントテー
ブルが更新されると、ブロツク412においてサーバは
プロセスの親ホストを検査し、このプロセスの親がロー
カルであるか遠隔であるかを判定する。親がローカルシ
ステム上にあるとき、ブロツク422においてサーバは
親のハンドルを検査する。親がサーバでないとき、ブロ
ツク424において親プロセスが通知される。この通知
は親のメツセージキユーにメツセージをエンキユーし、
メツセージがペンデイングであるという、親プロセスへ
の信号を処理することによつて達成される。親はメツセ
ージを検索してローカル子状態レコードを作成する。次
にブロツク408において、このプロセスのためのハン
ドルをもつ登録パケツトが登録プロセスに戻される。ブ
ロツク422において親がサーバであると判定される
と、親プロセスの通知は必要ないので、ブロツク426
においてハンドルは登録プロセスに戻される。
プロセスは登録パケツトを準備してこのパケツトをサー
バに送り、ブロツク402でこれを受け取る。登録パケ
ツトを受け取ると、ブロツク404においてサーバはこ
のパケツトに格納されているハンドルが既にサーバクラ
イアントテーブルに存在するか否かを確認する。ハンド
ルが存在しないとき、ブロツク406においてサーバは
新しいハンドルを構成し、サーバクライアントテーブル
内の新しいクライアントレコードを初期化し、ブロツク
408において登録パケツト内のハンドルをクライアン
トに戻す。ブロツク404においてクライアントテーブ
ルにハンドルが存在することをサーバが確認すると、サ
ーバはサーバクライアントテーブルを更新する。ハンド
ルによつて示されるプロセスの現在の状態次第では、更
新プロセスは2つの形式をとり得る。ハンドルと一致す
るテーブルエントリがペンデイング状態にあるとき、そ
のエントリは有効とマークされ処理を継続する。テーブ
ルエントリが有効とマークされたとき、このクライアン
トのために新しいハンドルが作成され、サーバクライア
ントテーブルに新しいテーブルエントリが作成される。
この場合ハンドルに割り当てられる値は新しいテーブル
エントリの値である。ローカルサーバクライアントテー
ブルが更新されると、ブロツク412においてサーバは
プロセスの親ホストを検査し、このプロセスの親がロー
カルであるか遠隔であるかを判定する。親がローカルシ
ステム上にあるとき、ブロツク422においてサーバは
親のハンドルを検査する。親がサーバでないとき、ブロ
ツク424において親プロセスが通知される。この通知
は親のメツセージキユーにメツセージをエンキユーし、
メツセージがペンデイングであるという、親プロセスへ
の信号を処理することによつて達成される。親はメツセ
ージを検索してローカル子状態レコードを作成する。次
にブロツク408において、このプロセスのためのハン
ドルをもつ登録パケツトが登録プロセスに戻される。ブ
ロツク422において親がサーバであると判定される
と、親プロセスの通知は必要ないので、ブロツク426
においてハンドルは登録プロセスに戻される。
【0113】図34のブロツク412に戻り、ここで親
が遠隔であると判定されると、ブロツク414において
ローカルサーバクライアントテーブルを更新することに
よりこのプロセスが登録されたことを表示する。ブロツ
ク416において、登録パケツトはローカルサーバによ
つて準備されて遠隔サーバに送られる。次にローカルサ
ーバは遠隔処理が完了するまで待機する。パケツトを受
け取ると、ブロツク418において遠隔サーバは遠隔サ
ーバクライアントテーブルを更新することによりこのプ
ロセスが登録されたことを表示する。親プロセスは遠隔
コンピユータ上に存在するので、ブロツク420におい
て親プロセスの通知が遠隔サーバによつて実行される。
この通知がエンキユーされると、遠隔サーバは登録パケ
ツトをローカルサーバに戻す。次に、ブロツク408に
おいてローカルサーバはローカルシステムに関する最終
情報をもつパケツトを更新すると共に、登録プロセスの
ハンドルをもつパケツトを戻し、かくしてブロツク42
8において登録を完了する。
が遠隔であると判定されると、ブロツク414において
ローカルサーバクライアントテーブルを更新することに
よりこのプロセスが登録されたことを表示する。ブロツ
ク416において、登録パケツトはローカルサーバによ
つて準備されて遠隔サーバに送られる。次にローカルサ
ーバは遠隔処理が完了するまで待機する。パケツトを受
け取ると、ブロツク418において遠隔サーバは遠隔サ
ーバクライアントテーブルを更新することによりこのプ
ロセスが登録されたことを表示する。親プロセスは遠隔
コンピユータ上に存在するので、ブロツク420におい
て親プロセスの通知が遠隔サーバによつて実行される。
この通知がエンキユーされると、遠隔サーバは登録パケ
ツトをローカルサーバに戻す。次に、ブロツク408に
おいてローカルサーバはローカルシステムに関する最終
情報をもつパケツトを更新すると共に、登録プロセスの
ハンドルをもつパケツトを戻し、かくしてブロツク42
8において登録を完了する。
【0114】これ以外の2つの状況も考えられる。
(1)ハンドルが無効である。この場合プロセスはサー
バによつて採用され新しいハンドルが戻される。(2)
ハンドルが既に使用されている。この場合、受け渡され
るハンドルは親ハンドルであると解釈され、子は受け渡
されるハンドルの子として登録され、新しいハンドルが
戻される。
(1)ハンドルが無効である。この場合プロセスはサー
バによつて採用され新しいハンドルが戻される。(2)
ハンドルが既に使用されている。この場合、受け渡され
るハンドルは親ハンドルであると解釈され、子は受け渡
されるハンドルの子として登録され、新しいハンドルが
戻される。
【0115】xx terminate(int handle, int rc)
【0116】プロセスが出るに前にこの終了(terminat
e )を使用する。終了するプロセスのハンドル及び親に
戻されるべきリターンコードがパラメータとして使用さ
れる。終了コマンドの意図はリターンコードが親プロセ
スに戻れるようにすることである。子が死んだとの通知
を親が確実に受け取るようにするため、終了プロセスは
信号に従うことを妨害する。サーバは、親メツセージキ
ユーにメツセージをエンキユーすることによつて親プロ
セスに通知し、メツセージがペンデイングであることを
信号で親に知らせる。親信号ハンドラーはこの信号を捕
捉してメツセージを入手し、親子データテーブルを更新
して release child コマンドを送出する。このコマン
ドを使用することにより、サーバは終了プロセスのため
のクライアントテーブルエントリを一掃し、SIGUSR2 信
号を子に送る。
e )を使用する。終了するプロセスのハンドル及び親に
戻されるべきリターンコードがパラメータとして使用さ
れる。終了コマンドの意図はリターンコードが親プロセ
スに戻れるようにすることである。子が死んだとの通知
を親が確実に受け取るようにするため、終了プロセスは
信号に従うことを妨害する。サーバは、親メツセージキ
ユーにメツセージをエンキユーすることによつて親プロ
セスに通知し、メツセージがペンデイングであることを
信号で親に知らせる。親信号ハンドラーはこの信号を捕
捉してメツセージを入手し、親子データテーブルを更新
して release child コマンドを送出する。このコマン
ドを使用することにより、サーバは終了プロセスのため
のクライアントテーブルエントリを一掃し、SIGUSR2 信
号を子に送る。
【0117】この信号を受け取ると、子プロセスはその
退出を完了する。またこの信号の捕捉に使用される信号
ハンドラーはipclibの一部であり、これを操作するのに
ユーザによるコード化は必要ない。
退出を完了する。またこの信号の捕捉に使用される信号
ハンドラーはipclibの一部であり、これを操作するのに
ユーザによるコード化は必要ない。
【0118】ここで注意することは、メツセージ受渡
し、通知、登録又はクライアントに代わつてサーバによ
つて処理される一切の機能について述べたが、動作が常
に適切な機械上で生ずることを想定して述べたというこ
とである。サーバはプロセスがどこを走つているかを知
ることに注意し、適切なサーバインスタンスについての
要求を送ることによりコマンドの完了を確実にする。次
に説明するものは、サーバで使用される通知コマンドで
ある。通知コマンドは通知(handle、sigval)の構文を
有する。クライアントデータ構造については後に詳述す
るが、サーバが各クライアントレコードに組み合わせら
れているクライアントホスト及び親ホストを有すること
を今知つておく必要がある。このコマンドが送出される
と、サーバはハンドルによつて指示されるクライアント
ホスト名を探し、この名前がサーバのホスト名と同じで
あるとき、キル<sigval> pidを送出してクライアントに
通知する。ホスト名が一致しないとき、クライアントデ
ータ構造のクライアントホスト名によつて指示されるホ
スト名にコマンドパケツトが送られる。このコマンドパ
ケツトはそのホストとこのプロセスに関わる機械上に出
されるキルとによつて受け取られる。
し、通知、登録又はクライアントに代わつてサーバによ
つて処理される一切の機能について述べたが、動作が常
に適切な機械上で生ずることを想定して述べたというこ
とである。サーバはプロセスがどこを走つているかを知
ることに注意し、適切なサーバインスタンスについての
要求を送ることによりコマンドの完了を確実にする。次
に説明するものは、サーバで使用される通知コマンドで
ある。通知コマンドは通知(handle、sigval)の構文を
有する。クライアントデータ構造については後に詳述す
るが、サーバが各クライアントレコードに組み合わせら
れているクライアントホスト及び親ホストを有すること
を今知つておく必要がある。このコマンドが送出される
と、サーバはハンドルによつて指示されるクライアント
ホスト名を探し、この名前がサーバのホスト名と同じで
あるとき、キル<sigval> pidを送出してクライアントに
通知する。ホスト名が一致しないとき、クライアントデ
ータ構造のクライアントホスト名によつて指示されるホ
スト名にコマンドパケツトが送られる。このコマンドパ
ケツトはそのホストとこのプロセスに関わる機械上に出
されるキルとによつて受け取られる。
【0119】(標本プロセスの流れ)
【0120】図35及び図36は標本プロセスの流れ及
びその結果としての状態を示す。図35はサーバ及びク
ライアントプロセス間に存在する相互関係を示す。図3
5は分散形通信機能を用いて幾つかのプロセスを始動さ
せた後のシステム状態のスナツプシヨツトを示す。符号
430のシステム1及び符号450のシステム2はその
上で走つているサーバのインスタンスを有する。システ
ム1(S1)に関わるサーバは符号432で示し、シス
テム2(S2)に関わるサーバは符号452で示す。下
記のシナリオに従うことにより図35に示すシステム状
態に到達する。
びその結果としての状態を示す。図35はサーバ及びク
ライアントプロセス間に存在する相互関係を示す。図3
5は分散形通信機能を用いて幾つかのプロセスを始動さ
せた後のシステム状態のスナツプシヨツトを示す。符号
430のシステム1及び符号450のシステム2はその
上で走つているサーバのインスタンスを有する。システ
ム1(S1)に関わるサーバは符号432で示し、シス
テム2(S2)に関わるサーバは符号452で示す。下
記のシナリオに従うことにより図35に示すシステム状
態に到達する。
【0121】システム1(S1)におけるシナリオ。
(0)サーバはクライアントテーブルを初期化し、それ
自身をハンドル「0」として加算する。(1)プロセス
101がS1上で始動した(434)。(2)プロセス
101が登録する。(3)プロセス101がプロセス1
02を始動させる(438)。(4)プロセス102が
登録する。(5)プロセス102がプロセス103を始
動させる(440)。(6)プロセス103がプロセス
104を始動させる(442)。(7)プロセス104
が登録する。
(0)サーバはクライアントテーブルを初期化し、それ
自身をハンドル「0」として加算する。(1)プロセス
101がS1上で始動した(434)。(2)プロセス
101が登録する。(3)プロセス101がプロセス1
02を始動させる(438)。(4)プロセス102が
登録する。(5)プロセス102がプロセス103を始
動させる(440)。(6)プロセス103がプロセス
104を始動させる(442)。(7)プロセス104
が登録する。
【0122】システム2(S2)におけるシナリオ。
(0)サーバはクライアントテーブルを初期化し、それ
自身をハンドル「0」として加算する。(1)プロセス
201がS2の上で始動した。(2)プロセス201が
登録する。(3)プロセス201がプロセス202を始
動させる(456)。(4)プロセス202が登録す
る。(5)プロセス202がS1上でプロセスを始動さ
せる。(6)S2サーバはプロセスを始動させるように
S1サーバに要求する。(7)S1がプロセス105を
始動させる(436)。(8)プロセス105が登録す
る。
(0)サーバはクライアントテーブルを初期化し、それ
自身をハンドル「0」として加算する。(1)プロセス
201がS2の上で始動した。(2)プロセス201が
登録する。(3)プロセス201がプロセス202を始
動させる(456)。(4)プロセス202が登録す
る。(5)プロセス202がS1上でプロセスを始動さ
せる。(6)S2サーバはプロセスを始動させるように
S1サーバに要求する。(7)S1がプロセス105を
始動させる(436)。(8)プロセス105が登録す
る。
【0123】この図を示した理由は、分散環境に単一シ
ステム意味規則を提供するのに必要な機構を説明するた
めの基準点を与えるためである。通信する情報にかかわ
らず、基本的な通信経路は同じである。これによつて、
メツセージ、環境データ、信号又はこれら以外の必要と
されるもののサービスに同じモデルを使用することがで
きる。通信モデルの重要な要素は論理的親子関係であ
り、このモデルにはこの論理的親子関係が保持されてい
る。このモデルが克服する主たる制限は、親プロセスか
ら2世代以上も離れているプロセスから状態情報を入手
するという問題である。この問題点を解決するため、こ
の論理的フアミリツリーに関わりのあるプロセスはロー
カルサーバに登録しなければならない。サーバに登録す
るプロセスにはハンドルが割り当てられ、サーバのクラ
イアントテーブルに挿入される。この登録プロセスから
作成されるサーバテーブルと、その反映である図35の
システムスナツプシヨツトとについて次に説明する。
ステム意味規則を提供するのに必要な機構を説明するた
めの基準点を与えるためである。通信する情報にかかわ
らず、基本的な通信経路は同じである。これによつて、
メツセージ、環境データ、信号又はこれら以外の必要と
されるもののサービスに同じモデルを使用することがで
きる。通信モデルの重要な要素は論理的親子関係であ
り、このモデルにはこの論理的親子関係が保持されてい
る。このモデルが克服する主たる制限は、親プロセスか
ら2世代以上も離れているプロセスから状態情報を入手
するという問題である。この問題点を解決するため、こ
の論理的フアミリツリーに関わりのあるプロセスはロー
カルサーバに登録しなければならない。サーバに登録す
るプロセスにはハンドルが割り当てられ、サーバのクラ
イアントテーブルに挿入される。この登録プロセスから
作成されるサーバテーブルと、その反映である図35の
システムスナツプシヨツトとについて次に説明する。
【0124】S1すなわち符号430上にあるサーバ4
32用のクライアントプロセステーブルを図36の46
0に示す。ハンドル「0」はサーバデーモンプロセス
(図35の432)のために使用するものであつたが、
このサーバのための情報をクライアントプロセステーブ
ル460の行462に示す。ここで、サーバ432は登
録済であり、現在のプロセスハンドルとして「0」を有
し、(親が無いため)親プロセスハンドルは「0」、
(遠隔プロセスによつて初期化されていないため)遠隔
プロセスハンドルは「0」、プロセスIDは「23」、
(親が無いため)親プロセスIDは「0」、このプロセ
スを走らせているシステム名はS1、(サーバプロセス
なので)親が走つているシステム名はS1、(環境が定
義されていないため)環境へのポインタは「0」である
ことが判る。環境又はメツセージキユーに値が定義され
ていた場合、このフイールドは現在のメツセージキユー
の頭へのポインタ、メツセージキユーへのポインタ及び
時刻表示を格納する。
32用のクライアントプロセステーブルを図36の46
0に示す。ハンドル「0」はサーバデーモンプロセス
(図35の432)のために使用するものであつたが、
このサーバのための情報をクライアントプロセステーブ
ル460の行462に示す。ここで、サーバ432は登
録済であり、現在のプロセスハンドルとして「0」を有
し、(親が無いため)親プロセスハンドルは「0」、
(遠隔プロセスによつて初期化されていないため)遠隔
プロセスハンドルは「0」、プロセスIDは「23」、
(親が無いため)親プロセスIDは「0」、このプロセ
スを走らせているシステム名はS1、(サーバプロセス
なので)親が走つているシステム名はS1、(環境が定
義されていないため)環境へのポインタは「0」である
ことが判る。環境又はメツセージキユーに値が定義され
ていた場合、このフイールドは現在のメツセージキユー
の頭へのポインタ、メツセージキユーへのポインタ及び
時刻表示を格納する。
【0125】図36のクライアントプロセステーブル4
60のハンドル1(符号464)を参照してみると、こ
の登録エントリはプロセス101(図35の434)に
関するものであることが判る。関連するPIDの列を調
べればこれを確認することができる。このテーブルから
判るこれ以外の、プロセス101についての興味深い情
報は、親プロセスのハンドル(Phand)は「0」、
親プロセスのID(PPID)は「23」、この両者がサ
ーバプロセス432に関連していることである。行46
6(図35のプロセス102に関する)及び行468
(図35のプロセス104に関する)の情報は同じPh
and情報及びPPID情報に基づいて同様の形式の親
プロセス関係を示す。
60のハンドル1(符号464)を参照してみると、こ
の登録エントリはプロセス101(図35の434)に
関するものであることが判る。関連するPIDの列を調
べればこれを確認することができる。このテーブルから
判るこれ以外の、プロセス101についての興味深い情
報は、親プロセスのハンドル(Phand)は「0」、
親プロセスのID(PPID)は「23」、この両者がサ
ーバプロセス432に関連していることである。行46
6(図35のプロセス102に関する)及び行468
(図35のプロセス104に関する)の情報は同じPh
and情報及びPPID情報に基づいて同様の形式の親
プロセス関係を示す。
【0126】S1サーバに関するクライアントプロセス
テーブル460の最後のエントリを分析する前にまず、
S2サーバに関するクライアントプロセステーブル48
0を見る。(図35の)S2サーバ452はS1サーバ
が行462に有するエントリと類似のエントリを行47
2に有することが判る。これら両者の間の違いは、この
場合にはプロセスID(PID)が「99」であり、シス
テム名がS2であることである。
テーブル460の最後のエントリを分析する前にまず、
S2サーバに関するクライアントプロセステーブル48
0を見る。(図35の)S2サーバ452はS1サーバ
が行462に有するエントリと類似のエントリを行47
2に有することが判る。これら両者の間の違いは、この
場合にはプロセスID(PID)が「99」であり、シス
テム名がS2であることである。
【0127】エントリ474及びエントリ476はシス
テム2上のローカルプロセスを示し、システム1に関し
て既述したテーブルエントリと類似している。エントリ
478は遠隔プロセスを記述しているエントリである。
ハンドルは「3」となつており、これが指示しているハ
ンドルによつてプロセスがこのサーバに知られる。親ハ
ンドルは「2」となつており、これは論理親であるS2
上のプロセス202(図31の456)を示す。遠隔ハ
ンドルは「4」であり、これは遠隔システム上のこのプ
ロセスを記述しているハンドルを示す。プロセスidは
「105 」であり、これはS1クライアントプロセステー
ブル460の行470に示したプロセスidと同じであ
る。親プロセスidは202である。プロセスホストは
S1であり、これが遠隔プロセスであることを示す。親
ホスト又は親プロセスのホストはS2である。S2はプ
ロセス202についてのプロセスホストである。
テム2上のローカルプロセスを示し、システム1に関し
て既述したテーブルエントリと類似している。エントリ
478は遠隔プロセスを記述しているエントリである。
ハンドルは「3」となつており、これが指示しているハ
ンドルによつてプロセスがこのサーバに知られる。親ハ
ンドルは「2」となつており、これは論理親であるS2
上のプロセス202(図31の456)を示す。遠隔ハ
ンドルは「4」であり、これは遠隔システム上のこのプ
ロセスを記述しているハンドルを示す。プロセスidは
「105 」であり、これはS1クライアントプロセステー
ブル460の行470に示したプロセスidと同じであ
る。親プロセスidは202である。プロセスホストは
S1であり、これが遠隔プロセスであることを示す。親
ホスト又は親プロセスのホストはS2である。S2はプ
ロセス202についてのプロセスホストである。
【0128】図36のサーバS1についてのクライアン
トプロセステーブル460の行470を参照すると、ハ
ンドルが「4」のプロセスはプロセスID105(図3
5の項目436)に対応することが判る。このプロセス
105に関して、親プロセスハンドルは「0」(サーバ
プロセスを示している)、遠隔プロセスハンドルは
「3」(このプロセスはハンドル「3」の遠隔プロセス
と同じであることを示している)、親プロセスIDは
「23」(これはローカルサーバであり、すべてのプロセ
スはこのローカルサーバを通じて遠隔機械フアンネルか
ら始動される)、ローカルシステム名はS1、親が走つ
ているシステムはS2(すなわち、これは遠隔プロセス
から始動された)であることが判る。言い換えれば、行
470に示される情報はプロセス105にアクセス/管
理するときにS1サーバ432によつて使用され、この
同じプロセス105に使用される情報は行478に格納
され、こうしたプロセスにアクセス/管理するときにS
2サーバ452によつて使用される。このように、単一
のシステム意味規則は分散環境のプロセスにアクセスす
るローカルシステム及び遠隔システムの双方によつて使
用される。
トプロセステーブル460の行470を参照すると、ハ
ンドルが「4」のプロセスはプロセスID105(図3
5の項目436)に対応することが判る。このプロセス
105に関して、親プロセスハンドルは「0」(サーバ
プロセスを示している)、遠隔プロセスハンドルは
「3」(このプロセスはハンドル「3」の遠隔プロセス
と同じであることを示している)、親プロセスIDは
「23」(これはローカルサーバであり、すべてのプロセ
スはこのローカルサーバを通じて遠隔機械フアンネルか
ら始動される)、ローカルシステム名はS1、親が走つ
ているシステムはS2(すなわち、これは遠隔プロセス
から始動された)であることが判る。言い換えれば、行
470に示される情報はプロセス105にアクセス/管
理するときにS1サーバ432によつて使用され、この
同じプロセス105に使用される情報は行478に格納
され、こうしたプロセスにアクセス/管理するときにS
2サーバ452によつて使用される。このように、単一
のシステム意味規則は分散環境のプロセスにアクセスす
るローカルシステム及び遠隔システムの双方によつて使
用される。
【0129】ここまでホスト間通信機構について説明し
てきたが、再びこの試験環境内部の説明に戻る。
てきたが、再びこの試験環境内部の説明に戻る。
【0130】環境変数について説明する。
【0131】ライブラリは分散環境内に環境変数を有す
るための能力を与える。これらの変数は分散環境によつ
て見られるように親子関係に保持される。この機能は、
変更がなされたレベルよりも下のすべてのレベルにおい
て見られる試験環境内のレベルにおける環境変数を変更
できるようにする。環境変数機能へのアクセスは次の通
りである。
るための能力を与える。これらの変数は分散環境によつ
て見られるように親子関係に保持される。この機能は、
変更がなされたレベルよりも下のすべてのレベルにおい
て見られる試験環境内のレベルにおける環境変数を変更
できるようにする。環境変数機能へのアクセスは次の通
りである。
【0132】xx putenv(name, value, handle)
【0133】このルーチンはローカルサーバ上のハンド
ルが指示するクライアントのための環境を更新する。
ルが指示するクライアントのための環境を更新する。
【0134】xx getenv(name,handle)
【0135】このルーチンは受け渡される環境変数名に
関連する値を保持している文字ポインタを戻す。getenv
関数はハンドルが指示する環境を見て情報を得る。それ
が見つからなければ、そのフアミリツリーに従つて、環
境変数を探しているサーバレベルに戻る。環境変数が見
つからなければ、この関数はNULLを戻す。
関連する値を保持している文字ポインタを戻す。getenv
関数はハンドルが指示する環境を見て情報を得る。それ
が見つからなければ、そのフアミリツリーに従つて、環
境変数を探しているサーバレベルに戻る。環境変数が見
つからなければ、この関数はNULLを戻す。
【0136】ここで注意することは、プロセスが遠隔の
親の子であるとき、子が変数名の解明に失敗すれば遠く
から探索を継続することである。getenv要求を伴うサー
バはこの要求を遠隔の親ホストに送り、遠隔ホスト上の
環境ツリーを歩くことを終了する。
親の子であるとき、子が変数名の解明に失敗すれば遠く
から探索を継続することである。getenv要求を伴うサー
バはこの要求を遠隔の親ホストに送り、遠隔ホスト上の
環境ツリーを歩くことを終了する。
【0137】xx freenv(name,handle)
【0138】このルーチンはローカルホスト上のハンド
ルが示すクライアントについての名前によつて指示され
る環境変数を削除する。
ルが示すクライアントについての名前によつて指示され
る環境変数を削除する。
【0139】ここで子プロセスの始動について説明す
る。
る。
【0140】ライブラリで利用できる他の機能は start
process 機能である。プロセスレベルにおいて、プロ
セスによつて始動するいかなる子の進行をも追跡する能
力を有する。その制御のために使用されるデータ構造を
表(1)に示す。
process 機能である。プロセスレベルにおいて、プロ
セスによつて始動するいかなる子の進行をも追跡する能
力を有する。その制御のために使用されるデータ構造を
表(1)に示す。
【0141】
【表1】
【0142】ここで表中に現れる英文字の列は記号であ
つて、翻訳できない(以下の表においても同様であ
る)。
つて、翻訳できない(以下の表においても同様であ
る)。
【0143】ドライバプロセスのユーザにとつて重要な
情報は子データ構造の状態フイールド及びリターンコー
ドである。この情報はドライバに、どの子プロセスが未
決であるかを理解させ、これらのプロセスの現在の状態
を理解させることができる。子が完了すると、そのプロ
セスからのリターンコードはそのプロセスに関する chi
ld data構造で利用できるようになる。
情報は子データ構造の状態フイールド及びリターンコー
ドである。この情報はドライバに、どの子プロセスが未
決であるかを理解させ、これらのプロセスの現在の状態
を理解させることができる。子が完了すると、そのプロ
セスからのリターンコードはそのプロセスに関する chi
ld data構造で利用できるようになる。
【0144】表(2)はフイールドの説明である。
【0145】
【表2】
【0146】関数について説明する。
【0147】reserve slot(handle)。親プロセスはこ
の reserve slotルーチンを使用して、サーバで始動さ
せられる子のクライアントスロツトを予約する。親のハ
ンドルを用いて reserve slot関数は呼び出される。こ
の関数からのリターンには子のための新しいハンドルが
使用される。
の reserve slotルーチンを使用して、サーバで始動さ
せられる子のクライアントスロツトを予約する。親のハ
ンドルを用いて reserve slot関数は呼び出される。こ
の関数からのリターンには子のための新しいハンドルが
使用される。
【0148】reserve slotルーチンはプロセス始動ル
ーチンによつて呼び出され、通常はユーザプログラムに
よつて使用されることはない。また reserve slotルー
チンは、呼出されたときに child dataレコードを親の
中に設定し、このレコードはドライバ子データとサーバ
クライアント情報とを関連付けるために使用される。
ーチンによつて呼び出され、通常はユーザプログラムに
よつて使用されることはない。また reserve slotルー
チンは、呼出されたときに child dataレコードを親の
中に設定し、このレコードはドライバ子データとサーバ
クライアント情報とを関連付けるために使用される。
【0149】start process(hostname,command,handl
e)。このプロセス始動コマンドを使用してすべての子プ
ロセスを始動させなければならない。 start process
コマンドは次の3つのパラメータを有する。
e)。このプロセス始動コマンドを使用してすべての子プ
ロセスを始動させなければならない。 start process
コマンドは次の3つのパラメータを有する。
【0150】(1)hostname−子プロセスの実行を希望
するホスト名を指示する。(2)command −子プロセス
の始動を実行すべくパラメータを伴うコマンドを与え
る。(3)handle−これは親プロセスハンドルである。
するホスト名を指示する。(2)command −子プロセス
の始動を実行すべくパラメータを伴うコマンドを与え
る。(3)handle−これは親プロセスハンドルである。
【0151】図33に示すように、ブロツク350にお
いて start process コマンドを出すと、以下に示す
(1)〜(7)又は(1)〜(9)のシーケンスが生ず
る。
いて start process コマンドを出すと、以下に示す
(1)〜(7)又は(1)〜(9)のシーケンスが生ず
る。
【0152】(1)ブロツク352においてホスト名を
検査し、ローカルホスト上でのプロセス始動を望むか又
は遠隔ホスト上でのプロセス始動を望むかを決定する。
検査し、ローカルホスト上でのプロセス始動を望むか又
は遠隔ホスト上でのプロセス始動を望むかを決定する。
【0153】プロセスがローカルホスト上で走ると判定
されると、以下の(2)〜(7)のシーケンスが生ず
る。
されると、以下の(2)〜(7)のシーケンスが生ず
る。
【0154】(2)ブロツク354において reserve
slotを呼び出して子ハンドルを得る。
slotを呼び出して子ハンドルを得る。
【0155】(3)ブロツク356においてローカルプ
ロセスを始動し、ブロツク358において子レコードを
作成する。
ロセスを始動し、ブロツク358において子レコードを
作成する。
【0156】(4)ブロツク360においてputenvを用
いて新しいハンドルをシエル環境に入れる。
いて新しいハンドルをシエル環境に入れる。
【0157】(5)ブロツク362において新しいプロ
セスを分岐させ、プロセスidを入手する。
セスを分岐させ、プロセスidを入手する。
【0158】(6)ブロツク363において start pr
ocess に渡されたコマンドを実行する。
ocess に渡されたコマンドを実行する。
【0159】(7)ブロツク364において親の child
dataテーブルをハンドル及び分岐プロセスidで更新
し、ブロツク366においてペンデイング状態にする。
dataテーブルをハンドル及び分岐プロセスidで更新
し、ブロツク366においてペンデイング状態にする。
【0160】ブロツク363において子が始動すると、
これをサーバに登録し(上記を参照)、 child dataテ
ーブルエントリは有効状態となる。
これをサーバに登録し(上記を参照)、 child dataテ
ーブルエントリは有効状態となる。
【0161】ブロツク352においてプロセスが遠隔ホ
スト上で走ると判定されると、以下の(2)〜(9)の
シーケンスが生ずる。
スト上で走ると判定されると、以下の(2)〜(9)の
シーケンスが生ずる。
【0162】(2)ブロツク370においてremote co
mmand 関数を呼び出し、遠隔プロセス始動の要求をサー
バに送る。
mmand 関数を呼び出し、遠隔プロセス始動の要求をサー
バに送る。
【0163】(3)ブロツク372においてローカルサ
ーバは遠隔プロセスに関するクライアントレコードを構
築し、ブロツク374においてコマンドパケツトをホス
ト名によつて指示されるサーバに送る。
ーバは遠隔プロセスに関するクライアントレコードを構
築し、ブロツク374においてコマンドパケツトをホス
ト名によつて指示されるサーバに送る。
【0164】(4)ブロツク376において遠隔ホスト
はコマンドパケツトを受け取り、サーバ上で遠隔実行関
数を処理する。
はコマンドパケツトを受け取り、サーバ上で遠隔実行関
数を処理する。
【0165】(5)ブロツク378において遠隔ホスト
はプロセスのクライアントテーブル内にスロツトを作成
する。
はプロセスのクライアントテーブル内にスロツトを作成
する。
【0166】(6)ブロツク378においてputenvを使
用して新しいハンドルをシエル環境に置く。
用して新しいハンドルをシエル環境に置く。
【0167】(7)ブロツク380において新しいプロ
セスを分岐させ、プロセスidを入手する。
セスを分岐させ、プロセスidを入手する。
【0168】(8)ブロツク381においてコマンドパ
ケツトに渡されるコマンドを実行する。
ケツトに渡されるコマンドを実行する。
【0169】(9)ブロツク382においてクライアン
トデータテーブル内の親のpidスロツトに分岐プロセ
スidを格納し、ブロツク384においてテーブルエン
トリをペンデイング状態に変更する。
トデータテーブル内の親のpidスロツトに分岐プロセ
スidを格納し、ブロツク384においてテーブルエン
トリをペンデイング状態に変更する。
【0170】ローカルプロセス又は遠隔プロセスのいず
れにおいても、良好なリターンコードによりコマンドパ
ケツトは親ホストサーバに戻される(ローカルプロセス
ではブロツク368、遠隔プロセスではブロツク38
6)。ブロツク388において、遠隔ハンドルを指示す
るようにクライアント情報を更新し、親ホスト上のクラ
イアント情報に有効とマークする。
れにおいても、良好なリターンコードによりコマンドパ
ケツトは親ホストサーバに戻される(ローカルプロセス
ではブロツク368、遠隔プロセスではブロツク38
6)。ブロツク388において、遠隔ハンドルを指示す
るようにクライアント情報を更新し、親ホスト上のクラ
イアント情報に有効とマークする。
【0171】この時点で親プロセスは分岐したプロセス
の状態についての知識はもつていない。プロセスが遠隔
システム上に登録するまで、すべての状態情報はサーバ
に保持される。次に、遠隔プロセスが登録してピクチヤ
を完成するときに何が起きるかを説明する。
の状態についての知識はもつていない。プロセスが遠隔
システム上に登録するまで、すべての状態情報はサーバ
に保持される。次に、遠隔プロセスが登録してピクチヤ
を完成するときに何が起きるかを説明する。
【0172】(未定の遠隔プロセスの登録)
【0173】遠隔機械上で実行されたプロセスは登録す
る。これが生じたとき、遠隔サーバ上のクライアントレ
コードは実際の登録しているプロセスのpidを反映す
るよう更新され、クライアントレコードの状態が有効に
なる。次に遠隔サーバは、子が始動した親ホストサーバ
にコマンドパケツトを送る。親ホスト上のサーバは、子
が始動したとのメツセージをエンキユーし、親プロセス
に信号を送る。この信号は信号ハンドラによつて捕捉さ
れ、有効状態の親のために child dataレコードが作成
される。
る。これが生じたとき、遠隔サーバ上のクライアントレ
コードは実際の登録しているプロセスのpidを反映す
るよう更新され、クライアントレコードの状態が有効に
なる。次に遠隔サーバは、子が始動した親ホストサーバ
にコマンドパケツトを送る。親ホスト上のサーバは、子
が始動したとのメツセージをエンキユーし、親プロセス
に信号を送る。この信号は信号ハンドラによつて捕捉さ
れ、有効状態の親のために child dataレコードが作成
される。
【0174】この時、ローカルの場合又は遠隔の場合の
いずれであつても、 start process コマンドは、始動
した子のハンドルを戻す。このハンドルは常に、そのプ
ロセスのローカルサーバビユーに関連するハンドルにな
る。
いずれであつても、 start process コマンドは、始動
した子のハンドルを戻す。このハンドルは常に、そのプ
ロセスのローカルサーバビユーに関連するハンドルにな
る。
【0175】ここで図34を参照する。上の記述は多重
コンピユータ複合体の複数のプロセツサにプロセツサ間
通信サポートを提供する。
コンピユータ複合体の複数のプロセツサにプロセツサ間
通信サポートを提供する。
【0176】(デイレクトリ構造)
【0177】この試験環境はすべてを包含している幾分
か複雑なデイレクトリ構造の指定を含む。このデイレク
トリ構造はすべてのユーザタスクコード、シナリオツー
ル(足場作りツールを含む)及びシナリオ実行ステージ
の間にデータを累算する構造を含む。
か複雑なデイレクトリ構造の指定を含む。このデイレク
トリ構造はすべてのユーザタスクコード、シナリオツー
ル(足場作りツールを含む)及びシナリオ実行ステージ
の間にデータを累算する構造を含む。
【0178】(トツプレベルデイレクトリ構造)
【0179】図3を参照してデイレクトリ構造の好適な
実施例について説明する。当業者は、ここに説明するも
のと同様の階層的構造を、違う構造を用いて実施するこ
とができることを理解する。
実施例について説明する。当業者は、ここに説明するも
のと同様の階層的構造を、違う構造を用いて実施するこ
とができることを理解する。
【0180】デフオルトによつて、試験用足場のための
親レベルデイレクトリ構造は /austin80である。 /au
stinデイレクトリに5つのデイレクトリ構造が配置され
る。これらの構造の名は、 /austin/.def 82、 /aust
in/.inst84、 /austin/tools86、 /austin/tasks8
8及び /austin/runtime90である。以下に述べるよう
に、デフオルトロケーシヨン及び又はこれらのデイレク
トリのうちのどれかの名前を変更することができる。次
に、これら5つのデイレクトリ構造をどのように使用す
るかについて説明する。
親レベルデイレクトリ構造は /austin80である。 /au
stinデイレクトリに5つのデイレクトリ構造が配置され
る。これらの構造の名は、 /austin/.def 82、 /aust
in/.inst84、 /austin/tools86、 /austin/tasks8
8及び /austin/runtime90である。以下に述べるよう
に、デフオルトロケーシヨン及び又はこれらのデイレク
トリのうちのどれかの名前を変更することができる。次
に、これら5つのデイレクトリ構造をどのように使用す
るかについて説明する。
【0181】(1).defデイレクトリ
【0182】この定義デイレクトリ82はシナリオ定義
フアイルを格納する。定義デイレクトリに関するデフオ
ルトロケーシヨンは /austin/.def である。
フアイルを格納する。定義デイレクトリに関するデフオ
ルトロケーシヨンは /austin/.def である。
【0183】(2).inst デイレクトリ
【0184】このインスタンスデイレクトリ84はシナ
リオを記述するフアイルであるシナリオインスタンスフ
アイルを格納する。インスタンスデイレクトリに関する
デフオルトロケーシヨンは /austin/.instである。
リオを記述するフアイルであるシナリオインスタンスフ
アイルを格納する。インスタンスデイレクトリに関する
デフオルトロケーシヨンは /austin/.instである。
【0185】(3)tools デイレクトリ
【0186】このツールデイレクトリ86はすべての標
準化された足場ツールとシナリオ実行に必要な他の何ら
かのツールとのリポジトリである。この構造は /austin
/toolsという名前で表される。図4に示すように、この
/austin/toolsデイレクトリ86には次のような5つの
デイレクトリが存在する。これらは、ソースコードのた
めの src92と、エクスキユータブルズ(executables
)及びシエルスクリプトのための*bin94と、データ
フアイルのための dat98と、文書のための doc100
と、ライブラリのための*lib96とである。 /austin/t
oolsデイレクトリは導入時に設置され、めつたに変化し
ない。タスクコードに必要な一切のツールを標準化し、
このデイレクトリ構造に配置することができる。
準化された足場ツールとシナリオ実行に必要な他の何ら
かのツールとのリポジトリである。この構造は /austin
/toolsという名前で表される。図4に示すように、この
/austin/toolsデイレクトリ86には次のような5つの
デイレクトリが存在する。これらは、ソースコードのた
めの src92と、エクスキユータブルズ(executables
)及びシエルスクリプトのための*bin94と、データ
フアイルのための dat98と、文書のための doc100
と、ライブラリのための*lib96とである。 /austin/t
oolsデイレクトリは導入時に設置され、めつたに変化し
ない。タスクコードに必要な一切のツールを標準化し、
このデイレクトリ構造に配置することができる。
【0187】*bin及び*libの表示を使用して複数のbin
デイレクトリ及び複数のlib デイレクトリを表現する。
「*」の代わりに一組の文字を用いて、デイレクトリに
どのような形式のエクスキユータブルズ又はライブラリ
が有るかを表示する。例えば現在、tools デイレクトリ
構造はrsbin 及びrslib と名付けられた2つのデイレク
トリを有し、ここに、RISCシステム/6000(IBM
社のRISCベースのコンピユータシステム)エクスキ
ユータブルズ及びライブラリが配置されている。試験用
足場がSUN SparcStation上でコンパイルされるとき、SU
N エクスキユータブルズ及びライブラリ用に他の2つの
デイレクトリすなわちsunbin及びsunlibを使用すること
ができる。
デイレクトリ及び複数のlib デイレクトリを表現する。
「*」の代わりに一組の文字を用いて、デイレクトリに
どのような形式のエクスキユータブルズ又はライブラリ
が有るかを表示する。例えば現在、tools デイレクトリ
構造はrsbin 及びrslib と名付けられた2つのデイレク
トリを有し、ここに、RISCシステム/6000(IBM
社のRISCベースのコンピユータシステム)エクスキ
ユータブルズ及びライブラリが配置されている。試験用
足場がSUN SparcStation上でコンパイルされるとき、SU
N エクスキユータブルズ及びライブラリ用に他の2つの
デイレクトリすなわちsunbin及びsunlibを使用すること
ができる。
【0188】複数のバイナリ及びライブラリデイレクト
リを有することの利点は、ネツトワーク内の単一のホス
トからエクスキユータブルズ及びライブラリを扱うこと
ができ、また情報を備えているクライアントがこれらの
ローカル環境変数又はPATH環境変数を設定すること
ができるので、これらがクライアントのオペレーテイン
グシステム及びハードウエアプラツトフオームに基づい
て適切なデイレクトリにアクセスすることができること
である。
リを有することの利点は、ネツトワーク内の単一のホス
トからエクスキユータブルズ及びライブラリを扱うこと
ができ、また情報を備えているクライアントがこれらの
ローカル環境変数又はPATH環境変数を設定すること
ができるので、これらがクライアントのオペレーテイン
グシステム及びハードウエアプラツトフオームに基づい
て適切なデイレクトリにアクセスすることができること
である。
【0189】(4)tasks デイレクトリ構造
【0190】タスクデイレクトリ88は図5に示すよう
に、すべてのシナリオ開発者のユーザコード(タスク)
用のリポジトリである。好適な実施例においては、 /au
stin/tasksデイレクトリに26個のデイレクトリ102を
見つけることができる。これらのデイレクトリ102に
は「a」から「z」までの名前が付されており、タスク
のそれぞれの名前の最初の文字によつてタスクを区分す
る。タスクは、タスクの名前の第1の文字と同一の文字
デイレクトリ102の下にあるタスクデイレクトリ構造
にそれ自身の個別のデイレクトリ104を持たなければ
ならない。ここで、mtask1、mtask2及びmtask3と名付け
た個別のデイレクトリ104を有するタスクmを示す。
タスクが作成するデイレクトリはその名前と同一でなけ
ればならない。タスクを組立てるフアイル106はタス
ク名デイレクトリ内の以下に示すような4つのデイレク
トリに区分される。すなわちこれらのデイレクトリは、
ソースコードに関する src104と、実行可能なモジユ
ール及びシエルスクリプトに関する*bin108と、デー
タフアイルに関する dat110と、文書に関する doc1
12とである。
に、すべてのシナリオ開発者のユーザコード(タスク)
用のリポジトリである。好適な実施例においては、 /au
stin/tasksデイレクトリに26個のデイレクトリ102を
見つけることができる。これらのデイレクトリ102に
は「a」から「z」までの名前が付されており、タスク
のそれぞれの名前の最初の文字によつてタスクを区分す
る。タスクは、タスクの名前の第1の文字と同一の文字
デイレクトリ102の下にあるタスクデイレクトリ構造
にそれ自身の個別のデイレクトリ104を持たなければ
ならない。ここで、mtask1、mtask2及びmtask3と名付け
た個別のデイレクトリ104を有するタスクmを示す。
タスクが作成するデイレクトリはその名前と同一でなけ
ればならない。タスクを組立てるフアイル106はタス
ク名デイレクトリ内の以下に示すような4つのデイレク
トリに区分される。すなわちこれらのデイレクトリは、
ソースコードに関する src104と、実行可能なモジユ
ール及びシエルスクリプトに関する*bin108と、デー
タフアイルに関する dat110と、文書に関する doc1
12とである。
【0191】タスクデイレクトリ構造全体がタスク開発
ステージを通じて頻繁に変化する。しかしながらタスク
シナリオドライバは、シナリオ実行ステージの間、全く
異なるデイレクトリ構造に書き込むことを許すインタフ
エースを提供するので、タスクデイレクトリ構造に書き
込むことは全く必要ない。このことは、シナリオ実行ス
テージの間に生じがちなタスク構造の破壊の回避に役に
立つ。シナリオ実行ステージの間にタスクデイレクトリ
に待機が生じないことを一段と確実にするため、その許
可を変更することによつてデイレクトリ構造を読出し専
用にすることができる。すなわち、シナリオが分散環境
で実行されている場合、タスクデイレクトリ構造を環境
サーバからの読出し専用にしてよい。注意すべきは、シ
ナリオドライバはシナリオ実行ステージの間、このタス
クデイレクトリ構造が読出し専用であることを明示的に
保証するものではないということである。以下にその例
を示す。
ステージを通じて頻繁に変化する。しかしながらタスク
シナリオドライバは、シナリオ実行ステージの間、全く
異なるデイレクトリ構造に書き込むことを許すインタフ
エースを提供するので、タスクデイレクトリ構造に書き
込むことは全く必要ない。このことは、シナリオ実行ス
テージの間に生じがちなタスク構造の破壊の回避に役に
立つ。シナリオ実行ステージの間にタスクデイレクトリ
に待機が生じないことを一段と確実にするため、その許
可を変更することによつてデイレクトリ構造を読出し専
用にすることができる。すなわち、シナリオが分散環境
で実行されている場合、タスクデイレクトリ構造を環境
サーバからの読出し専用にしてよい。注意すべきは、シ
ナリオドライバはシナリオ実行ステージの間、このタス
クデイレクトリ構造が読出し専用であることを明示的に
保証するものではないということである。以下にその例
を示す。
【0192】図6に示すようにデイレクトリ /austin/t
asks/r122にはrcp の名をもつタスク120を見い出
すことができ、デイレクトリ /austin/tasks/f126に
は floatの名をもつタスク122及び ftp124を見い
出すことができる。タスク構造104のすべてのタスク
は適切な文字デイレクトリ102の下にあるデイレクト
リ名となる。例えば、 rcpの名をもつタスクに対しては
/austin/tasks/r/rcpと名付けられたデイレクトリ12
0があり、これは、 rcpタスクに関するすべての情報1
06を格納している。このデイレクトリをAUSCOD
EDIRデイレクトリ(後に説明する)と呼ぶ。
asks/r122にはrcp の名をもつタスク120を見い出
すことができ、デイレクトリ /austin/tasks/f126に
は floatの名をもつタスク122及び ftp124を見い
出すことができる。タスク構造104のすべてのタスク
は適切な文字デイレクトリ102の下にあるデイレクト
リ名となる。例えば、 rcpの名をもつタスクに対しては
/austin/tasks/r/rcpと名付けられたデイレクトリ12
0があり、これは、 rcpタスクに関するすべての情報1
06を格納している。このデイレクトリをAUSCOD
EDIRデイレクトリ(後に説明する)と呼ぶ。
【0193】(5) runtimeデイレクトリ構造
【0194】図7に示す実行時デイレクトリ構造90は
シナリオ実行ステージの間に広範囲に使用される。トツ
プレベルのシナリオドライバが実行を開始するとき、 /
austin/runtimeデイレクトリ90にデイレクトリ130
を作成する。デイレクトリ130はシナリオインスタン
スの名前132と、それに続く日付134と時間136
とから構成される。このデイレクトリ130をシナリオ
デイレクトリと呼び、その全ツリーをシナリオデイレク
トリ構造と呼ぶ。時刻表示をしたシナリオデイレクトリ
は、(システム資源に制約がなければ)n個のシナリオ
実行からシナリオデータを擁護することを保証する。
シナリオ実行ステージの間に広範囲に使用される。トツ
プレベルのシナリオドライバが実行を開始するとき、 /
austin/runtimeデイレクトリ90にデイレクトリ130
を作成する。デイレクトリ130はシナリオインスタン
スの名前132と、それに続く日付134と時間136
とから構成される。このデイレクトリ130をシナリオ
デイレクトリと呼び、その全ツリーをシナリオデイレク
トリ構造と呼ぶ。時刻表示をしたシナリオデイレクトリ
は、(システム資源に制約がなければ)n個のシナリオ
実行からシナリオデータを擁護することを保証する。
【0195】シナリオデイレクトリ130には、pass1
40、 working142及びfail144の名前をもつ3つ
のデイレクトリ138とscen.journal.<hostname> (す
なわちシナリオ内の機械あたりの1つのジヤーナルフア
イル)の名前をもつフアイル146とが存在する。 wor
kingデイレクトリ142はすべての実行時タスクアクテ
イビテイが生ずるところである。タスクの完了に続い
て、タスクに関連するフアイルが workingデイレクトリ
142からpassデイレクトリ140又はfailデイレクト
リ144のいずれかに移る。そのどちらに移るかは、以
下に説明するように、構成保管属性及びこれらの成功率
に左右される。フアイルscen.journal.<hostname> 14
6はシナリオジヤーナル情報が記録される場所である。
このデイレクトリ構造138は後述するように、シナリ
オ実行時にトツプレベルシナリオドライバによつて作成
される。
40、 working142及びfail144の名前をもつ3つ
のデイレクトリ138とscen.journal.<hostname> (す
なわちシナリオ内の機械あたりの1つのジヤーナルフア
イル)の名前をもつフアイル146とが存在する。 wor
kingデイレクトリ142はすべての実行時タスクアクテ
イビテイが生ずるところである。タスクの完了に続い
て、タスクに関連するフアイルが workingデイレクトリ
142からpassデイレクトリ140又はfailデイレクト
リ144のいずれかに移る。そのどちらに移るかは、以
下に説明するように、構成保管属性及びこれらの成功率
に左右される。フアイルscen.journal.<hostname> 14
6はシナリオジヤーナル情報が記録される場所である。
このデイレクトリ構造138は後述するように、シナリ
オ実行時にトツプレベルシナリオドライバによつて作成
される。
【0196】(runtime taskデイレクトリ構造)
【0197】図8に示すように、タスクが根ユーザとし
て走つている場合には、タスクシナリオドライバが実行
する時に、タスクシナリオドライバはシナリオデイレク
トリの workingデイレクトリ142に固有のデイレクト
リ150を作成する。図9に示すように、タスクが根ユ
ーザではないユーザとして走つている場合、ユーザのホ
ームデイレクトリ154(環境変数HOMEによつて示
す)に固有のタスクデイレクトリ構造152が作成され
る。このデイレクトリ150又は152をタスクデイレ
クトリと呼び、そのそれぞれのデイレクトリツリー15
6又は158を実行時タスクデイレクトリ構造(上述の
タスクデイレクトリ構造と混同してはならない)と呼
ぶ。タスクインスタンスの名前158と、タスクがその
上で実行しているホストの名前160と、タスクのプロ
セス識別番号(PID)162と、タスクの反復164
とを組み合わせることによつて固有のタスクデイレクト
リ名が作成される。
て走つている場合には、タスクシナリオドライバが実行
する時に、タスクシナリオドライバはシナリオデイレク
トリの workingデイレクトリ142に固有のデイレクト
リ150を作成する。図9に示すように、タスクが根ユ
ーザではないユーザとして走つている場合、ユーザのホ
ームデイレクトリ154(環境変数HOMEによつて示
す)に固有のタスクデイレクトリ構造152が作成され
る。このデイレクトリ150又は152をタスクデイレ
クトリと呼び、そのそれぞれのデイレクトリツリー15
6又は158を実行時タスクデイレクトリ構造(上述の
タスクデイレクトリ構造と混同してはならない)と呼
ぶ。タスクインスタンスの名前158と、タスクがその
上で実行しているホストの名前160と、タスクのプロ
セス識別番号(PID)162と、タスクの反復164
とを組み合わせることによつて固有のタスクデイレクト
リ名が作成される。
【0198】このタスクデイレクトリの固有性によつ
て、同じホスト上で同じタスクを同時に実行することが
できるか又は同じシナリオデイレクトリフアイルスペー
スを同時に使用することができる。固有のタスクデイレ
クトリ構造がpassデイレクトリ又はfailデイレクトリに
移されると、反復実行が固有性を提供する。分散形実行
時フアイルスペース内でシナリオが実行しており、かつ
タスクデイレクトリ構造の名前を作成する際に使用され
るフイールドのうちの1つが使用されていなかつた場
合、タスクを互いに「進めさせる」ことができる。この
固有の workingデイレクトリフアイルスペースは本発明
の試験用足場の強力な特徴のうちの1つである。
て、同じホスト上で同じタスクを同時に実行することが
できるか又は同じシナリオデイレクトリフアイルスペー
スを同時に使用することができる。固有のタスクデイレ
クトリ構造がpassデイレクトリ又はfailデイレクトリに
移されると、反復実行が固有性を提供する。分散形実行
時フアイルスペース内でシナリオが実行しており、かつ
タスクデイレクトリ構造の名前を作成する際に使用され
るフイールドのうちの1つが使用されていなかつた場
合、タスクを互いに「進めさせる」ことができる。この
固有の workingデイレクトリフアイルスペースは本発明
の試験用足場の強力な特徴のうちの1つである。
【0199】固有のタスクデイレクトリの下に、3つの
デイレクトリをもつデイレクトリ156がある。すなわ
ち、 binデイレクトリ166、workデイレクトリ168
及びjourデイレクトリ170である。 binデイレクトリ
166は、後に説明するようにコンパイルされたエクス
キユータブルズを出力するタスク準備コードが使用する
ために作成される。workデイレクトリ168は、ユーザ
のコードが実行を開始するときにユーザが配置される場
所である。ユーザは、是認されている場合以外は、work
デイレクトリから出ているデイレクトリを変更してはな
らない。jourデイレクトリ170は、標準タスクジヤー
ナル(task.journal)172が配置される場所(図1の
72)であるばかりでなく、後述するようにタスクシナ
リオドライバが ausjournals構成属性を用いてすべての
ジヤーナルを作成する場所である。
デイレクトリをもつデイレクトリ156がある。すなわ
ち、 binデイレクトリ166、workデイレクトリ168
及びjourデイレクトリ170である。 binデイレクトリ
166は、後に説明するようにコンパイルされたエクス
キユータブルズを出力するタスク準備コードが使用する
ために作成される。workデイレクトリ168は、ユーザ
のコードが実行を開始するときにユーザが配置される場
所である。ユーザは、是認されている場合以外は、work
デイレクトリから出ているデイレクトリを変更してはな
らない。jourデイレクトリ170は、標準タスクジヤー
ナル(task.journal)172が配置される場所(図1の
72)であるばかりでなく、後述するようにタスクシナ
リオドライバが ausjournals構成属性を用いてすべての
ジヤーナルを作成する場所である。
【0200】この実行時タスクデイレクトリ構造全体は
タスクシナリオドライバによつて作成される。タスクシ
ナリオの実行が完了すると、そのタスクのための固有の
デイレクトリ構造は、タスクの成功及びシナリオドライ
バ保管属性の値次第で、シナリオデイレクトリのpass又
はfailデイレクトリに移される。次にこれはシナリオド
ライバ圧縮属性の値次第で圧縮される。属性が何であろ
うとも、タスクデイレクトリ構造は常にシナリオの wor
kingデイレクトリ(根ユーザの場合)又は$HOMEデ
イレクトリ(根ユーザではない場合)から除去される。
またpass又はfailデイレクトリへの情報の移動もタスク
シナリオドライバによつて実行される機能である。
タスクシナリオドライバによつて作成される。タスクシ
ナリオの実行が完了すると、そのタスクのための固有の
デイレクトリ構造は、タスクの成功及びシナリオドライ
バ保管属性の値次第で、シナリオデイレクトリのpass又
はfailデイレクトリに移される。次にこれはシナリオド
ライバ圧縮属性の値次第で圧縮される。属性が何であろ
うとも、タスクデイレクトリ構造は常にシナリオの wor
kingデイレクトリ(根ユーザの場合)又は$HOMEデ
イレクトリ(根ユーザではない場合)から除去される。
またpass又はfailデイレクトリへの情報の移動もタスク
シナリオドライバによつて実行される機能である。
【0201】(複数の runtimeシナリオデイレクトリ構
造)
造)
【0202】図10において、2つの異なるシナリオ1
80及び182は実行したか又は実行している。これら
のシナリオはエンジニアリング環境シナリオに関する同
じシナリオ定義フアイルから発信されるが、シナリオイ
ンスタンスフアイルは異なる。上述したようにこのこと
は、デイレクトリ名の最初のフイールドが同じであり同
一のシナリオ定義を示しているが、第3のフイールドは
違つていて異なるインスタンスを示している(engineer
ing.e.1 対engineering.e.2 )ことから明らかである。
デイレクトリ名から、シナリオengineering.e.1 は1991
年3月11日の午前11時5分に開始し(日付・時刻表示が
910311.110500である)、第2のシナリオは1991年3月
12日の午前11時5分に開始した(日付・時刻表示が9103
12.110500である)ということも判る。従つて、これら
のシナリオは正確に24時間離れて実行を開始したもの
である。
80及び182は実行したか又は実行している。これら
のシナリオはエンジニアリング環境シナリオに関する同
じシナリオ定義フアイルから発信されるが、シナリオイ
ンスタンスフアイルは異なる。上述したようにこのこと
は、デイレクトリ名の最初のフイールドが同じであり同
一のシナリオ定義を示しているが、第3のフイールドは
違つていて異なるインスタンスを示している(engineer
ing.e.1 対engineering.e.2 )ことから明らかである。
デイレクトリ名から、シナリオengineering.e.1 は1991
年3月11日の午前11時5分に開始し(日付・時刻表示が
910311.110500である)、第2のシナリオは1991年3月
12日の午前11時5分に開始した(日付・時刻表示が9103
12.110500である)ということも判る。従つて、これら
のシナリオは正確に24時間離れて実行を開始したもの
である。
【0203】これら2つのデイレクトリ構造180及び
182を使用している2つのシナリオが共に終了すると
き、これらの構造は実行時フアイルスペース90に残
る。シナリオドライバはタスクシナリオクリーンアツプ
(後述する)にオプシヨンを提供するが、シナリオドラ
イバ構造を自動的に取り去ることはしない。
182を使用している2つのシナリオが共に終了すると
き、これらの構造は実行時フアイルスペース90に残
る。シナリオドライバはタスクシナリオクリーンアツプ
(後述する)にオプシヨンを提供するが、シナリオドラ
イバ構造を自動的に取り去ることはしない。
【0204】次に図10の環境シナリオ180(engine
ering.e.1 910311.110500 )で実行しているタスクデイ
レクトリ構造に見い出される幾つかのタスクの実行につ
いて説明する。
ering.e.1 910311.110500 )で実行しているタスクデイ
レクトリ構造に見い出される幾つかのタスクの実行につ
いて説明する。
【0205】(シナリオデイレクトリworking デイレク
トリ構造)
トリ構造)
【0206】図11を見ると、 engineering環境シナリ
オ130で3つのタスク184、186及び188が実
行していることが判る。上述したしように実行中のタス
クは、タスクが根ユーザとして実行する場合常にシナリ
オデイレクトリ内の workingと名付けられたデイレクト
リの下に配置され、そうでなければ、ユーザの$HOM
Eデイレクトリにデイレクトリをもつことになる。これ
については後述する。
オ130で3つのタスク184、186及び188が実
行していることが判る。上述したしように実行中のタス
クは、タスクが根ユーザとして実行する場合常にシナリ
オデイレクトリ内の workingと名付けられたデイレクト
リの下に配置され、そうでなければ、ユーザの$HOM
Eデイレクトリにデイレクトリをもつことになる。これ
については後述する。
【0207】図11の engineeringシナリオは、固有の
タスクデイレクトリ名に異なるホスト名を含んでいるだ
けではなく実行時デイレクトリに複数のシナリオジヤー
ナルフアイルを含んでいるので、分散形実行時フアイル
スペースを用いて実行していることが判る。シナリオが
分散されていなかつた場合、タスクデイレクトリは同じ
ホスト名を含む。図示した例において、2つのタスクす
なわちタスク184及びタスク186はホストclaussen
上で実行しており、1つのタスクすなわちタスク188
はホストthelake 上で実行している。
タスクデイレクトリ名に異なるホスト名を含んでいるだ
けではなく実行時デイレクトリに複数のシナリオジヤー
ナルフアイルを含んでいるので、分散形実行時フアイル
スペースを用いて実行していることが判る。シナリオが
分散されていなかつた場合、タスクデイレクトリは同じ
ホスト名を含む。図示した例において、2つのタスクす
なわちタスク184及びタスク186はホストclaussen
上で実行しており、1つのタスクすなわちタスク188
はホストthelake 上で実行している。
【0208】(標本実行時 pass/failデイレクトリ構
造)
造)
【0209】上述した固有のタスクデイレクトリの実行
後ロケーシヨンを図12に示す。図12から幾つかの項
目を推論することができる。第1に、前に実行していた
2つのタスク(符号184のrcp.t.1.claussen.999.1及
び符号186のrcp.t.2.claussen.888.1)が渡され、1
つ(fp.t.2.thelake.1122.1 )は失敗した。第2に、シ
ナリオドライバ属性aussave はタスク rcp.t.1(18
4)及びタスク rcp.t.2(186)に対しては値 all又
はpassを有し、タスク ftp.t.1(188)に対しては値
all又はfailを有した。図12から判る第3の事柄は、
シナリオドライバ属性auscompress オプシヨンがタスク
rcp.t.1(184)に関してはpass又はall にセツトさ
れ、タスク rcp.t.2(186)に関してはnone又はfail
にセツトされ、 ftp.t.1(188)に関してはnone又は
passにセツトされたことである。シナリオドライバ属性
の保管及び圧縮に関するこれ以上の情報は下記を参照さ
れたい。
後ロケーシヨンを図12に示す。図12から幾つかの項
目を推論することができる。第1に、前に実行していた
2つのタスク(符号184のrcp.t.1.claussen.999.1及
び符号186のrcp.t.2.claussen.888.1)が渡され、1
つ(fp.t.2.thelake.1122.1 )は失敗した。第2に、シ
ナリオドライバ属性aussave はタスク rcp.t.1(18
4)及びタスク rcp.t.2(186)に対しては値 all又
はpassを有し、タスク ftp.t.1(188)に対しては値
all又はfailを有した。図12から判る第3の事柄は、
シナリオドライバ属性auscompress オプシヨンがタスク
rcp.t.1(184)に関してはpass又はall にセツトさ
れ、タスク rcp.t.2(186)に関してはnone又はfail
にセツトされ、 ftp.t.1(188)に関してはnone又は
passにセツトされたことである。シナリオドライバ属性
の保管及び圧縮に関するこれ以上の情報は下記を参照さ
れたい。
【0210】デイレクトリ構造環境変数について説明す
る。
る。
【0211】再度図3を参照する。親デイレクトリ構造
/austin80及びその下にある各5つのデイレクトリ構
造をすべて、異なるロケーシヨンに移動させること及び
又は必要が有れば名前を付けなおすことができる。これ
らの移動及び又は再度の命名をさせると、6つの環境変
数を準備してデイレクトリ構造の新しいロケーシヨンに
セツトする必要がある。環境変数は次の通りである。
/austin80及びその下にある各5つのデイレクトリ構
造をすべて、異なるロケーシヨンに移動させること及び
又は必要が有れば名前を付けなおすことができる。これ
らの移動及び又は再度の命名をさせると、6つの環境変
数を準備してデイレクトリ構造の新しいロケーシヨンに
セツトする必要がある。環境変数は次の通りである。
【0212】(1)「AUSROOT」。値は /austin
デイレクトリ80の新しいロケーシヨンである。
デイレクトリ80の新しいロケーシヨンである。
【0213】(2)「AUSDEF」。値は /austin
/.defデイレクトリ82の新しいロケーシヨンである。
/.defデイレクトリ82の新しいロケーシヨンである。
【0214】(3)「AUSINST」。値は /austin
/.instデイレクトリ84の新しいロケーシヨンである。
/.instデイレクトリ84の新しいロケーシヨンである。
【0215】(4)「AUSTOOLS」。値は /aust
in/toolsデイレクトリ86の新しいロケーシヨンであ
る。
in/toolsデイレクトリ86の新しいロケーシヨンであ
る。
【0216】(5)「AUSTASKS」。値は /aust
in/tasksデイレクトリ88の新しいロケーシヨンであ
る。
in/tasksデイレクトリ88の新しいロケーシヨンであ
る。
【0217】(6)「AUSRUNTIME」。値は /
austin/runtimeデイレクトリ90の新しいロケーシヨン
である。
austin/runtimeデイレクトリ90の新しいロケーシヨン
である。
【0218】デフオルトロケーシヨンを使用すると、環
境変数をセツトする必要はない。
境変数をセツトする必要はない。
【0219】シナリオドライバ及びシナリオ構築ツール
を使用することにより /austinデイレクトリの下の5つ
のデイレクトリ構造のロケーシヨンを決定する手続きは
次の通りである。
を使用することにより /austinデイレクトリの下の5つ
のデイレクトリ構造のロケーシヨンを決定する手続きは
次の通りである。
【0220】(1)検査をして、その構造のための環境
変数が定義されているか否かを知る。定義されていれ
ば、それはデイレクトリ構造の値である。定義されてい
なければ(2)に進む。(2)検査をして、環境変数A
USROOTが定義されているか否かを知る。定義され
ていれば、AUSROOT環境変数によつて指定される
デイレクトリの末尾に適切なデフオルトデイレクトリ名
を追加するが、これはデイレクトリ構造の値である。A
USROOTが定義されていなければ(3)に進む。
(3)探索されているデイレクトリ構造の値はデフオル
トである。
変数が定義されているか否かを知る。定義されていれ
ば、それはデイレクトリ構造の値である。定義されてい
なければ(2)に進む。(2)検査をして、環境変数A
USROOTが定義されているか否かを知る。定義され
ていれば、AUSROOT環境変数によつて指定される
デイレクトリの末尾に適切なデフオルトデイレクトリ名
を追加するが、これはデイレクトリ構造の値である。A
USROOTが定義されていなければ(3)に進む。
(3)探索されているデイレクトリ構造の値はデフオル
トである。
【0221】上述のことは、次のようなことを意味して
いる。シナリオ構築ツールがインスタンスを探索してい
るとき、最初に、AUSINST環境変数が定義されて
いるか否かを知るための検査をする。AUSINSTが
定義されていればシナリオ構築ツールはインスタンスフ
アイルが$AUSINSTデイレクトリに配置されるこ
とを期待する。AUSINSTが定義されていないと
き、シナリオ構築ツールはAUSROOT環境変数が定
義されているか否かを知るための検査をする。定義され
ているならば、$AUSROOT/.instデイレクトリに
インスタンスを探索する。AUSROOT環境変数が定
義されていなければ /austin/.instデイレクトリにイン
スタンスを探索する。
いる。シナリオ構築ツールがインスタンスを探索してい
るとき、最初に、AUSINST環境変数が定義されて
いるか否かを知るための検査をする。AUSINSTが
定義されていればシナリオ構築ツールはインスタンスフ
アイルが$AUSINSTデイレクトリに配置されるこ
とを期待する。AUSINSTが定義されていないと
き、シナリオ構築ツールはAUSROOT環境変数が定
義されているか否かを知るための検査をする。定義され
ているならば、$AUSROOT/.instデイレクトリに
インスタンスを探索する。AUSROOT環境変数が定
義されていなければ /austin/.instデイレクトリにイン
スタンスを探索する。
【0222】(シナリオ定義フアイル及びシナリオイン
スタンスフアイル)
スタンスフアイル)
【0223】(定義フアイル及びインスタンスフアイル
の対話)
の対話)
【0224】図15はシナリオ定義フアイル56及びシ
ナリオインスタンスフアイル54と試験用足場内の他の
要素との対話を示す。定義フアイル及びインスタンスフ
アイルはシナリオ構築ツール52を用いて作成され変更
され削除される。これらのインスタンスフアイルはシナ
リオドライバ58への構成入力として使用される。
ナリオインスタンスフアイル54と試験用足場内の他の
要素との対話を示す。定義フアイル及びインスタンスフ
アイルはシナリオ構築ツール52を用いて作成され変更
され削除される。これらのインスタンスフアイルはシナ
リオドライバ58への構成入力として使用される。
【0225】シナリオ開発ステージの間に定義を作成す
る必要がある。これらの定義をテンプレートとして用い
てシナリオインスタンスを作成する。またシナリオイン
スタンスフアイルを作成するステツプもシナリオ開発ス
テージの間に必要なステツプである。シナリオインスタ
ンスフアイルが無ければシナリオドライバは実行に失敗
するであろうし、シナリオ定義が無ければ(シナリオ構
築ツールを迂回しない限り)シナリオインスタンスを作
成することはできない。
る必要がある。これらの定義をテンプレートとして用い
てシナリオインスタンスを作成する。またシナリオイン
スタンスフアイルを作成するステツプもシナリオ開発ス
テージの間に必要なステツプである。シナリオインスタ
ンスフアイルが無ければシナリオドライバは実行に失敗
するであろうし、シナリオ定義が無ければ(シナリオ構
築ツールを迂回しない限り)シナリオインスタンスを作
成することはできない。
【0226】定義からインスタンスが例示されたなら
ば、これらをシナリオドライバ用の構成情報として使用
する。各シナリオドライバが実行されると、そのシナリ
オドライバの動作を定義する1つのインスタンスを渡さ
れる。
ば、これらをシナリオドライバ用の構成情報として使用
する。各シナリオドライバが実行されると、そのシナリ
オドライバの動作を定義する1つのインスタンスを渡さ
れる。
【0227】各定義及びインスタンスは(定義用の) /
austin/.def デイレクトリ又は(インスタンス用の) /
austin/.instデイレクトリ内の別個のフアイルである。
フアイルの名前は定義又はインスタンスの名前である。
フアイル内に、/etc/filesystems内のスタンザと性質の
似ているスタンザを見出すことができる(注意すべき
は、これは、UNIXコンパチブルオペレーテイングシ
ステムによつて一般に知られ使用されている標準スタン
ザである)。スタンザの名前はフアイル名、すなわちイ
ンスタンス/定義名と同じである。次にスタンザは幾つ
かの属性名/値ペアをラインあたり1つ格納する。
austin/.def デイレクトリ又は(インスタンス用の) /
austin/.instデイレクトリ内の別個のフアイルである。
フアイルの名前は定義又はインスタンスの名前である。
フアイル内に、/etc/filesystems内のスタンザと性質の
似ているスタンザを見出すことができる(注意すべき
は、これは、UNIXコンパチブルオペレーテイングシ
ステムによつて一般に知られ使用されている標準スタン
ザである)。スタンザの名前はフアイル名、すなわちイ
ンスタンス/定義名と同じである。次にスタンザは幾つ
かの属性名/値ペアをラインあたり1つ格納する。
【0228】ausで始まる属性はシナリオドライバ属性
又はシナリオドライバ構成属性と呼ばれる。 ausという
接頭部はシナリオドライバ属性に割り付けられたもので
ある。定義フアイル又はインスタンスフアイルに見い出
されるこれ以外の属性はいずれもユーザ定義属性と呼ば
れる。ユーザ定義属性及びシナリオドライバ属性の双方
の目的については詳しく後述する。
又はシナリオドライバ構成属性と呼ばれる。 ausという
接頭部はシナリオドライバ属性に割り付けられたもので
ある。定義フアイル又はインスタンスフアイルに見い出
されるこれ以外の属性はいずれもユーザ定義属性と呼ば
れる。ユーザ定義属性及びシナリオドライバ属性の双方
の目的については詳しく後述する。
【0229】上記の最初の段落において述べたように定
義フアイルはインスタンスフアイルとは僅かに異なる。
定義フアイル内のユーザ定義属性についての値は実際に
は、その定義の例示インスタンスフアイルに見い出され
る値ではない。定義フアイル内のユーザ定義属性の各値
がその代わりに表現するものは、ユーザ定義属性の型を
記述する構文法と、その制限と、そのデフオルト値と、
ユーザ定義属性を何のために使用するかについての短い
記述とである。この情報はすべて、例示化時にその変数
が実際の値を与えられるとき、シナリオ構築ツールが使
用する。シナリオ構築ツールは、例示化する時にタスク
開発者によつて入れられるユーザ定義属性の実際の値
が、そのユーザ定義属性の定義が定義されたときに設定
された基準に合致することを確実にする。
義フアイルはインスタンスフアイルとは僅かに異なる。
定義フアイル内のユーザ定義属性についての値は実際に
は、その定義の例示インスタンスフアイルに見い出され
る値ではない。定義フアイル内のユーザ定義属性の各値
がその代わりに表現するものは、ユーザ定義属性の型を
記述する構文法と、その制限と、そのデフオルト値と、
ユーザ定義属性を何のために使用するかについての短い
記述とである。この情報はすべて、例示化時にその変数
が実際の値を与えられるとき、シナリオ構築ツールが使
用する。シナリオ構築ツールは、例示化する時にタスク
開発者によつて入れられるユーザ定義属性の実際の値
が、そのユーザ定義属性の定義が定義されたときに設定
された基準に合致することを確実にする。
【0230】(フアイル名構文法)
【0231】与えられた任意の名前(文字で始まり、ゼ
ロ又は1つ以上の英数字、下線又はピリオドが続かなけ
ればならない)からなる定義フアイルには、ピリオド及
び拡張子「e」、「m」、「p」又は「t」が続く。定
義フアイル上に配置される拡張子は、その定義が定義す
るものの如何により、環境シナリオならば「e」、機械
シナリオならば「m」、個人シナリオならば「p」、タ
スクシナリオならば「t」である。
ロ又は1つ以上の英数字、下線又はピリオドが続かなけ
ればならない)からなる定義フアイルには、ピリオド及
び拡張子「e」、「m」、「p」又は「t」が続く。定
義フアイル上に配置される拡張子は、その定義が定義す
るものの如何により、環境シナリオならば「e」、機械
シナリオならば「m」、個人シナリオならば「p」、タ
スクシナリオならば「t」である。
【0232】上述の定義フアイル名からなるインスタン
スフアイルには、ピリオド及び現在の定義に関する固有
の整数値である拡張子が続く。例えば、 foo.eと名付け
られた定義が2回例示化されたとき、インスタンス fo
o.e.1及びインスタンスfoo.e.2 が存在する。3回例示
化されたとき、 foo.e.3の名前をもつ新しいインスタン
スが作成される。
スフアイルには、ピリオド及び現在の定義に関する固有
の整数値である拡張子が続く。例えば、 foo.eと名付け
られた定義が2回例示化されたとき、インスタンス fo
o.e.1及びインスタンスfoo.e.2 が存在する。3回例示
化されたとき、 foo.e.3の名前をもつ新しいインスタン
スが作成される。
【0233】
【表3】
【0234】
【表4】
【0235】次表(5)は一般的なスタンザ構文法を用
いてのタスク定義フアイルの例である。
いてのタスク定義フアイルの例である。
【0236】
【表5】
【0237】この定義フアイルの例から判るように、タ
スクは割り付けられた3つの定義済み属性と、3つのユ
ーザ定義属性(SERVER、CLIENTS 及びFILESIZE)とを有
する。文字列型であることを要求されるユーザ定義属性
SERVERは制限及びデフオルト値を有してない。また文字
列型であることを要求されるユーザ定義属性 CLIENTSも
制限及びデフオルト値を有していない。オプシヨンであ
り整数型である第3のユーザ定義属性FILESIZEは「 51
2」、「1024」、「2048」又は「4096」に制限され、デ
フオルト値として「 512」を有する。これら3つの属性
についての記述も幾らかの情報をもたらす。
スクは割り付けられた3つの定義済み属性と、3つのユ
ーザ定義属性(SERVER、CLIENTS 及びFILESIZE)とを有
する。文字列型であることを要求されるユーザ定義属性
SERVERは制限及びデフオルト値を有してない。また文字
列型であることを要求されるユーザ定義属性 CLIENTSも
制限及びデフオルト値を有していない。オプシヨンであ
り整数型である第3のユーザ定義属性FILESIZEは「 51
2」、「1024」、「2048」又は「4096」に制限され、デ
フオルト値として「 512」を有する。これら3つの属性
についての記述も幾らかの情報をもたらす。
【0238】この定義フアイルの名前はsample.t. であ
る。デフオルトによつて、これは /austin/.def に配置
され、シナリオ構築ツールによつて操作され得る。通
常、この定義の作成及び操作はシナリオ構築ツールを通
じて完全になされる。
る。デフオルトによつて、これは /austin/.def に配置
され、シナリオ構築ツールによつて操作され得る。通
常、この定義の作成及び操作はシナリオ構築ツールを通
じて完全になされる。
【0239】上述したタスク定義フアイルの例を次表
(6)に示す。
(6)に示す。
【0240】
【表6】
【0241】すべての割り付けられた属性の正確な意味
とこのインタンスフアイルをドライバが使用する方法と
について以下に詳述する。この例によつて示すようにシ
ナリオ開発者は例示化ステージの間にSERVERとしてホス
ト「arsenio 」を指定し、CLIENTとしてホスト「carso
n」、ホスト「leno」及びホスト「oprah 」を指定し、F
ILESIZEは「 512」である。シナリオ開発者はFILESIZE
変数を変更する必要はなかつた。これはデフオルトによ
つて値「 512」を伴つて作成された。
とこのインタンスフアイルをドライバが使用する方法と
について以下に詳述する。この例によつて示すようにシ
ナリオ開発者は例示化ステージの間にSERVERとしてホス
ト「arsenio 」を指定し、CLIENTとしてホスト「carso
n」、ホスト「leno」及びホスト「oprah 」を指定し、F
ILESIZEは「 512」である。シナリオ開発者はFILESIZE
変数を変更する必要はなかつた。これはデフオルトによ
つて値「 512」を伴つて作成された。
【0242】(シナリオ構築ツール)
【0243】シナリオ構築ツールはシナリオ定義フアイ
ル及びシナリオインスタンスフアイルを管理するため
の、自然言語のタスク指向インタフエースを提供する。
シナリオ構築ツールは階層構造を使用する。この階層構
造はメニユーパネルと対話パネルとからなる。メニユー
は実行すべきタスクを連続的に詳しく述べる。対話パネ
ルは定義属性及びインスタンス属性のためにデータを入
れる。インスタンス及び定義の双方の上で遂行できる基
本的機能は付加すること、変更すること、取り去ること
及びリストに列挙することである。
ル及びシナリオインスタンスフアイルを管理するため
の、自然言語のタスク指向インタフエースを提供する。
シナリオ構築ツールは階層構造を使用する。この階層構
造はメニユーパネルと対話パネルとからなる。メニユー
は実行すべきタスクを連続的に詳しく述べる。対話パネ
ルは定義属性及びインスタンス属性のためにデータを入
れる。インスタンス及び定義の双方の上で遂行できる基
本的機能は付加すること、変更すること、取り去ること
及びリストに列挙することである。
【0244】シナリオ構築ツールはデータ処理システム
の指示メツセージにコマンド名(例えばaussbt)を入れ
る従来の手法で呼び出される。呼び出されると、図16
に示すようにシナリオ構築ツールのトツプライン200
に現在のメニユーパネル又は対話パネルのタイトルが表
示される。メニユーパネル又は対話パネルの下部202
には現在のメニユー又は対話のための使用可能な機能キ
ーが表示される。メニユーパネルの204にはタスク指
向項目のリストが表示される。図17は図16において
タスク項目を選択した後の、結果としてのメニユーパネ
ルを示す。対話パネルにおいては、図18に示すような
属性名が左側に表示され、エントリフイールドは右側に
表示される。
の指示メツセージにコマンド名(例えばaussbt)を入れ
る従来の手法で呼び出される。呼び出されると、図16
に示すようにシナリオ構築ツールのトツプライン200
に現在のメニユーパネル又は対話パネルのタイトルが表
示される。メニユーパネル又は対話パネルの下部202
には現在のメニユー又は対話のための使用可能な機能キ
ーが表示される。メニユーパネルの204にはタスク指
向項目のリストが表示される。図17は図16において
タスク項目を選択した後の、結果としてのメニユーパネ
ルを示す。対話パネルにおいては、図18に示すような
属性名が左側に表示され、エントリフイールドは右側に
表示される。
【0245】対話パネルには属性の値を入れることがで
きる。シンボルを使用して種々の形式のフイールドを表
示する。シンボルは対話パネル内の種々の場所に表示す
ることができる。
きる。シンボルを使用して種々の形式のフイールドを表
示する。シンボルは対話パネル内の種々の場所に表示す
ることができる。
【0246】
【表7】
【0247】以下に例を述べる。図16はシナリオ構築
ツールの最初のメニユーパネルがどのように見えるかを
例示している。画面底部の機能キー202はパネルから
パネルに変化する。しかしながら、このメインメニユー
上の5つの機能キーの定義は好適な実施例におけるパネ
ル全体を通じて首尾一貫している。パネルごとの文脈感
知支援はF1キー213でいつでも使用できる。F2キ
ー215は画面をリフレツシユするために使用される。
F3キー217及びESCキー(図示せず)はいつでも
前のパネルに戻す。F9キー219は一時的にシエルに
出(「exit」をタイプすることによつて戻る)、F10
キー221はどのパネルにおいてもシナリオ構築ツール
を抜ける。
ツールの最初のメニユーパネルがどのように見えるかを
例示している。画面底部の機能キー202はパネルから
パネルに変化する。しかしながら、このメインメニユー
上の5つの機能キーの定義は好適な実施例におけるパネ
ル全体を通じて首尾一貫している。パネルごとの文脈感
知支援はF1キー213でいつでも使用できる。F2キ
ー215は画面をリフレツシユするために使用される。
F3キー217及びESCキー(図示せず)はいつでも
前のパネルに戻す。F9キー219は一時的にシエルに
出(「exit」をタイプすることによつて戻る)、F10
キー221はどのパネルにおいてもシナリオ構築ツール
を抜ける。
【0248】図17は他のメニユーパネルである。この
特定のメニユーパネルにアクセスするには、最初のメニ
ユーからタスクを選択し、第2のメニユーからインスタ
ンス管理を選択する。このメニユーパネルから、下線を
付した文字を各メニユー項目が含んでいることが認めら
れる。この文字をキーボード上で選択すれば、自動的に
その項目が選択される。
特定のメニユーパネルにアクセスするには、最初のメニ
ユーからタスクを選択し、第2のメニユーからインスタ
ンス管理を選択する。このメニユーパネルから、下線を
付した文字を各メニユー項目が含んでいることが認めら
れる。この文字をキーボード上で選択すれば、自動的に
その項目が選択される。
【0249】図18は対話パネルのサンプルである。こ
の特定の対話パネルは上述のタスクインスタンスフアイ
ルに関するシナリオ構築ツールによつて表示されるもの
である。sample.tと呼ばれるタスク定義の新しいインス
タンスにシナリオ開発者がaussbtとタイプして構築ツー
ルに入り、次にタスク(Task)、インスタンス管理(Ma
nage Instace)、インスタンスの加算(Add an Instanc
e )及びサンプルt定義を選択する。次にサンプルt1
インスタンスと図18の対話パネルが表示される。タス
クインスタンス管理ステージの間、属性austype 206
及び属性austaskcode 208はすべて読出し専用であ
る。このことは、ずつと左方の列に「@」の記号212
で表す。読出し専用とした理由は、これらがシナリオを
定義する属性であり、これらを変更することは異なるシ
ナリオ定義を作成することを意味し、そうする代わりに
タスク/定義/作成オプシヨンを選択することができる
からである。このパネルは予め定義したシナリオ(すな
わち、存在するシナリオ定義フアイルを既にもつている
シナリオ)の例示のためだけに示すものである。属性au
scompress 214、属性aussave 216及び属性ausver
bose224はトグルリングを有し、このことをずつと右
方の列に「*」の記号218で表示する。これは、利用
者がタブキーを用いて異なる値を選択することができる
か又はF4キーを使用して可能な値のリストを入手でき
ることを意味する。シナリオドライバ属性ausloops22
0、austime 222及びausverbose224はすべて数値
を要求する。このことを、ずつと右方の列に「#」の記
号226によつて表示する。1つのユーザ定義属性FI
LENAME228があるが、好適な実施例においては
これが必要である。これを、ずつと左方の列に「*」の
記号で表示する。また注意すべきは、FILENAME
228もずつと右方の列にトグルリング(「*」)21
8を有し、これにより、ユーザがタブキーを用いて異な
る値を選択するか又はF4キーを使用して可能な値のリ
ストを入手できることを表示する。
の特定の対話パネルは上述のタスクインスタンスフアイ
ルに関するシナリオ構築ツールによつて表示されるもの
である。sample.tと呼ばれるタスク定義の新しいインス
タンスにシナリオ開発者がaussbtとタイプして構築ツー
ルに入り、次にタスク(Task)、インスタンス管理(Ma
nage Instace)、インスタンスの加算(Add an Instanc
e )及びサンプルt定義を選択する。次にサンプルt1
インスタンスと図18の対話パネルが表示される。タス
クインスタンス管理ステージの間、属性austype 206
及び属性austaskcode 208はすべて読出し専用であ
る。このことは、ずつと左方の列に「@」の記号212
で表す。読出し専用とした理由は、これらがシナリオを
定義する属性であり、これらを変更することは異なるシ
ナリオ定義を作成することを意味し、そうする代わりに
タスク/定義/作成オプシヨンを選択することができる
からである。このパネルは予め定義したシナリオ(すな
わち、存在するシナリオ定義フアイルを既にもつている
シナリオ)の例示のためだけに示すものである。属性au
scompress 214、属性aussave 216及び属性ausver
bose224はトグルリングを有し、このことをずつと右
方の列に「*」の記号218で表示する。これは、利用
者がタブキーを用いて異なる値を選択することができる
か又はF4キーを使用して可能な値のリストを入手でき
ることを意味する。シナリオドライバ属性ausloops22
0、austime 222及びausverbose224はすべて数値
を要求する。このことを、ずつと右方の列に「#」の記
号226によつて表示する。1つのユーザ定義属性FI
LENAME228があるが、好適な実施例においては
これが必要である。これを、ずつと左方の列に「*」の
記号で表示する。また注意すべきは、FILENAME
228もずつと右方の列にトグルリング(「*」)21
8を有し、これにより、ユーザがタブキーを用いて異な
る値を選択するか又はF4キーを使用して可能な値のリ
ストを入手できることを表示する。
【0250】この例示化のための情報が完了すると、エ
ンター( Enter)キーを押して実際にインスタンスフア
イルを作成し、タスクシナリオドライバを制御する際に
使用することができる。
ンター( Enter)キーを押して実際にインスタンスフア
イルを作成し、タスクシナリオドライバを制御する際に
使用することができる。
【0251】(シナリオドライバ)
【0252】図19を参照する。シナリオドライバ58
は試験用足場の主要な構成要素である。シナリオドライ
バはアーキテクチヤの概観において既に述べた4つの異
なるシナリオレベルの実行を制御することができる。
は試験用足場の主要な構成要素である。シナリオドライ
バはアーキテクチヤの概観において既に述べた4つの異
なるシナリオレベルの実行を制御することができる。
【0253】シナリオドライバは単独で実行可能であ
り、その動作はシナリオインスタンスフアイル54によ
つて決定される。インスタンスフアイルはシナリオドラ
イバに識別のセンスを与える。例えば、1つのインスタ
ンスはオペレーテイングシステム全体を試験するタスク
を実行する、50ものホストをネツトワーク化した環境シ
ナリオの実行をこのシナリオドライバに制御させること
ができ、他のインスタンスはオペレーテイングシステム
の特定の一片を機能的に検証するただ10行のシエルスク
リプトの実行をこのシナリオドライバに制御させること
ができる。
り、その動作はシナリオインスタンスフアイル54によ
つて決定される。インスタンスフアイルはシナリオドラ
イバに識別のセンスを与える。例えば、1つのインスタ
ンスはオペレーテイングシステム全体を試験するタスク
を実行する、50ものホストをネツトワーク化した環境シ
ナリオの実行をこのシナリオドライバに制御させること
ができ、他のインスタンスはオペレーテイングシステム
の特定の一片を機能的に検証するただ10行のシエルスク
リプトの実行をこのシナリオドライバに制御させること
ができる。
【0254】シナリオドライバの利点は多種多様であ
る。まず第1にこれは、多数のホストに亘つて環境シナ
リオ全体を自動化する足場作りシステムを設定する。こ
の足場作りシステムは複数のホストからなる構成におい
て日常のタスクを実行している人々をシミユレートす
る。
る。まず第1にこれは、多数のホストに亘つて環境シナ
リオ全体を自動化する足場作りシステムを設定する。こ
の足場作りシステムは複数のホストからなる構成におい
て日常のタスクを実行している人々をシミユレートす
る。
【0255】第2に、シナリオドライバは、同じタスク
が同じホスト上又は同じネツトワーク内のユーザとして
同時に実行されているシステム試験類似環境で生ずる問
題を処理する。シナリオドライバは最善を尽くして環境
を設定し、そこではこれらのタスクが互いに干渉するこ
とはない。シナリオドライバの第3の利点は、前にタス
クに見い出された多くのコードが今やこのシナリオドラ
イバに移送されることである。例えば、各タスクが反復
目的のコードを必要とする代わりに、このコードがシナ
リオドライバに移され、そのインタフエースが標準化さ
れている。作業用デイレクトリの作成と実行時領域のク
リーンアツプとはもはやユーザタスクコードがアドレス
しなければならない問題ではない。これは、シナリオド
ライバレベルにおいて完全かつ首尾一貫して制御され、
シナリオの必要性に従つて変化する。
が同じホスト上又は同じネツトワーク内のユーザとして
同時に実行されているシステム試験類似環境で生ずる問
題を処理する。シナリオドライバは最善を尽くして環境
を設定し、そこではこれらのタスクが互いに干渉するこ
とはない。シナリオドライバの第3の利点は、前にタス
クに見い出された多くのコードが今やこのシナリオドラ
イバに移送されることである。例えば、各タスクが反復
目的のコードを必要とする代わりに、このコードがシナ
リオドライバに移され、そのインタフエースが標準化さ
れている。作業用デイレクトリの作成と実行時領域のク
リーンアツプとはもはやユーザタスクコードがアドレス
しなければならない問題ではない。これは、シナリオド
ライバレベルにおいて完全かつ首尾一貫して制御され、
シナリオの必要性に従つて変化する。
【0256】またシナリオドライバは一組の標準化した
ジヤーナル62を提供する。ジヤーナルは標準的なフオ
ーマツトを有するので、標準的な報告書フイルタを通し
てこれらを走らせて実行結果を検査することができる。
ジヤーナル62を提供する。ジヤーナルは標準的なフオ
ーマツトを有するので、標準的な報告書フイルタを通し
てこれらを走らせて実行結果を検査することができる。
【0257】試験シナリオドライバの実行は現在の試験
用環境において必要な制御に従い、タスクレベルを通じ
て環境レベルからいずれかのレベルにおいて開始するこ
とができる。好適な実施例においては試験シナリオドラ
イバは依存性を有し、そのロケーシヨンはPATH環境
変数内に提供される。シナリオドライバは、デフオルト
によつて /austin/tools/rsbinデイレクトリに配置され
る。このデイレクトリを以下のコマンドを用いてPAT
H環境変数に付加することができる。
用環境において必要な制御に従い、タスクレベルを通じ
て環境レベルからいずれかのレベルにおいて開始するこ
とができる。好適な実施例においては試験シナリオドラ
イバは依存性を有し、そのロケーシヨンはPATH環境
変数内に提供される。シナリオドライバは、デフオルト
によつて /austin/tools/rsbinデイレクトリに配置され
る。このデイレクトリを以下のコマンドを用いてPAT
H環境変数に付加することができる。
【0258】 PATH=/austin/tools/rsbin:$PATH ;export PATH
【0259】シナリオドライバは2つの使用文を準備す
る。第1の使用文はコマンドライン上にエラーが検出さ
れたときに生ずる。この使用からの情報は標準エラー
(stderr)にプリントされる。第2の使用文は支援使用
文であり、これは「h」フラグがシナリオドライバに渡
されるときに生ずる。この支援使用からの情報は標準出
力(stdout)にプリントされる。有効なタスクシナリオ
インスタンス名を伴う「h」フラグが指定されると、後
述するように、そのインスタンスのための支援が標準出
力(stdout)に表示される。エラー使用文を次表(8)
に示す。
る。第1の使用文はコマンドライン上にエラーが検出さ
れたときに生ずる。この使用からの情報は標準エラー
(stderr)にプリントされる。第2の使用文は支援使用
文であり、これは「h」フラグがシナリオドライバに渡
されるときに生ずる。この支援使用からの情報は標準出
力(stdout)にプリントされる。有効なタスクシナリオ
インスタンス名を伴う「h」フラグが指定されると、後
述するように、そのインスタンスのための支援が標準出
力(stdout)に表示される。エラー使用文を次表(8)
に示す。
【0260】
【表8】
【0261】ドライバ支援の場合、ユーザはausdriver
-hに入る。タスク支援の場合、ユーザはausdriver -h <
task instance> に入る。 <task instance> を伴わ
ないシナリオドライバに「h」フラグが渡されるときに
提供される情報を次表(9)に示す。
-hに入る。タスク支援の場合、ユーザはausdriver -h <
task instance> に入る。 <task instance> を伴わ
ないシナリオドライバに「h」フラグが渡されるときに
提供される情報を次表(9)に示す。
【0262】
【表9】
【0263】次に、構成に使用し得るシナリオドライバ
オプシヨンのセツトについて定義する。構成オプシヨン
はシナリオドライバ58に、それが制御している試験シ
ナリオレベルと、それが実行すべきものと、いかにして
実行を遂行すべきかとを伝達する。各シナリオドライバ
と関連しているシナリオインスタンスフアイル54内で
すべての構成オプシヨンを指定することによつて、これ
らをシナリオドライバに伝達することができる。またこ
れらの構成オプシヨンの幾つかはコマンドラインからシ
ナリオドライバを直接呼ぶときにコマンドラインフラグ
によつて指定することができる。しかしながら多くの場
合、タスクドライバが独立して実行しているか又は実行
しているシナリオドライバがシナリオ内のトツプレベル
のシナリオドライバでない限り、シナリオドライバは一
段と高いレベルのシナリオドライバによつて呼び出さ
れ、これらの構成情報の大部分をこれらの関連インスタ
ンスから受け取る。しかしながら、一段と高レベルのシ
ナリオドライバに渡されたコマンドラインフラグが適切
である場合、このシナリオドライバはコマンドラインフ
ラグを、これを実行するシナリオドライバに自動的に渡
す。コマンドラインフラグ構成属性は矛盾がある場合に
はインスタンスフアイル構成属性のいずれかを無効にす
る。同じフラグが複数回コマンドライン上に指定される
か又は同じ属性が複数回インスタンス内に指定される
と、警告メツセージを出して最後のフラグ又は属性を使
用する。
オプシヨンのセツトについて定義する。構成オプシヨン
はシナリオドライバ58に、それが制御している試験シ
ナリオレベルと、それが実行すべきものと、いかにして
実行を遂行すべきかとを伝達する。各シナリオドライバ
と関連しているシナリオインスタンスフアイル54内で
すべての構成オプシヨンを指定することによつて、これ
らをシナリオドライバに伝達することができる。またこ
れらの構成オプシヨンの幾つかはコマンドラインからシ
ナリオドライバを直接呼ぶときにコマンドラインフラグ
によつて指定することができる。しかしながら多くの場
合、タスクドライバが独立して実行しているか又は実行
しているシナリオドライバがシナリオ内のトツプレベル
のシナリオドライバでない限り、シナリオドライバは一
段と高いレベルのシナリオドライバによつて呼び出さ
れ、これらの構成情報の大部分をこれらの関連インスタ
ンスから受け取る。しかしながら、一段と高レベルのシ
ナリオドライバに渡されたコマンドラインフラグが適切
である場合、このシナリオドライバはコマンドラインフ
ラグを、これを実行するシナリオドライバに自動的に渡
す。コマンドラインフラグ構成属性は矛盾がある場合に
はインスタンスフアイル構成属性のいずれかを無効にす
る。同じフラグが複数回コマンドライン上に指定される
か又は同じ属性が複数回インスタンス内に指定される
と、警告メツセージを出して最後のフラグ又は属性を使
用する。
【0264】属性に関連付けた英語の句によつて下位の
各属性が最初に記述される。括弧内の構成属性名と同じ
ライン上に、対応するシナリオインスタンスフアイル属
性名と、存在するならばコマンドラインフラグとを見い
出すことができる。構成属性名に続いて表があり、この
表が示しているのは、どのシナリオドライバレベルにこ
の属性が関わつているか、どのシナリオドライバレベル
がこれを必要としているか及び各レベルにおけるそのデ
フオルト値である。次にインスタンス属性についての構
文法が与えられ、その属性に関連したものがあるならば
コマンドラインフラグの構文法が与えられる。次に属性
の記述があり、多くの場合いかにして属性を使用するか
を示す例がある。このセクシヨン(5)を通じて使用さ
れる構文法を次表(10)に示す。
各属性が最初に記述される。括弧内の構成属性名と同じ
ライン上に、対応するシナリオインスタンスフアイル属
性名と、存在するならばコマンドラインフラグとを見い
出すことができる。構成属性名に続いて表があり、この
表が示しているのは、どのシナリオドライバレベルにこ
の属性が関わつているか、どのシナリオドライバレベル
がこれを必要としているか及び各レベルにおけるそのデ
フオルト値である。次にインスタンス属性についての構
文法が与えられ、その属性に関連したものがあるならば
コマンドラインフラグの構文法が与えられる。次に属性
の記述があり、多くの場合いかにして属性を使用するか
を示す例がある。このセクシヨン(5)を通じて使用さ
れる構文法を次表(10)に示す。
【0265】
【表10】
【0266】
【表11】
【0267】インスタンス属性構文法は、≪ausbeghook
≫=“<『 begin hook』>”であり、コマンドライン
構文法はない。
≫=“<『 begin hook』>”であり、コマンドライン
構文法はない。
【0268】(説明)。開始フツクは、シナリオドライ
バが次のレベルのシナリオドライバ又はユーザコードを
実行するに前にユーザコードをシナリオドライバによつ
て自動的に実行する道を提供する。通常、開始フツクを
使用することにより、実行している試験シナリオに独特
の幾つかの形式の自動的セツトアツプを行う。これは試
験シナリオをカストマイズできるようにする。開始フツ
クを実行させるには、上述した構文法ダイアグラム内の
<『 begin hook』>で示される2重引用符付き文字列
の情報を評価のためのシステムに渡す。零以外のリター
ンコードを開始フツクから受け取ると、シナリオドライ
バは実行を終了して制御をその親シナリオドライバに戻
す(又はそれがトツプレベルのシナリオドライバの場合
にはAIXシエルに戻す)。
バが次のレベルのシナリオドライバ又はユーザコードを
実行するに前にユーザコードをシナリオドライバによつ
て自動的に実行する道を提供する。通常、開始フツクを
使用することにより、実行している試験シナリオに独特
の幾つかの形式の自動的セツトアツプを行う。これは試
験シナリオをカストマイズできるようにする。開始フツ
クを実行させるには、上述した構文法ダイアグラム内の
<『 begin hook』>で示される2重引用符付き文字列
の情報を評価のためのシステムに渡す。零以外のリター
ンコードを開始フツクから受け取ると、シナリオドライ
バは実行を終了して制御をその親シナリオドライバに戻
す(又はそれがトツプレベルのシナリオドライバの場合
にはAIXシエルに戻す)。
【0269】 (例1)ausbeghook =“/austin/tools/rsbin/setup ”
【0270】この例では、開始フツク/austin/tools/rs
bin/setup を実行する。プログラムが零以外のリターン
コードを戻すと、シナリオドライバは上述したように実
行を停止する。/austin/tools/rsbin が(PATH環境
変数を経由して)既にシステム経路にあると、開始フツ
クはausbeghook =“setup ”のように特定され得る。
bin/setup を実行する。プログラムが零以外のリターン
コードを戻すと、シナリオドライバは上述したように実
行を停止する。/austin/tools/rsbin が(PATH環境
変数を経由して)既にシステム経路にあると、開始フツ
クはausbeghook =“setup ”のように特定され得る。
【0271】 (例2)ausbeghook =“check tcpip; check nfs”
【0272】この例は幾らか複雑である。この文字列を
システムに送り、1つのプログラムを実行する代わりに
2つのプログラムを順次実行する。この2つのプログラ
ムは実際に同じプログラム(検査)であるけれども、常
に異なるパラメータを渡される。これらのプログラムの
第2のものからのリターンコードは開始フツク実行から
戻される。これら2つのプログラムのいずれかが失敗し
た場合、シナリオドライバが停止することが重要なら
ば、開発者は、これらの各プログラムを呼び出すシエル
スクリプトを作成し、これらのリターンコードを検査
し、そのリターンコードを出ることができる。次に、そ
のシエルスクリプトの名前をausbeghookに置く。
システムに送り、1つのプログラムを実行する代わりに
2つのプログラムを順次実行する。この2つのプログラ
ムは実際に同じプログラム(検査)であるけれども、常
に異なるパラメータを渡される。これらのプログラムの
第2のものからのリターンコードは開始フツク実行から
戻される。これら2つのプログラムのいずれかが失敗し
た場合、シナリオドライバが停止することが重要なら
ば、開発者は、これらの各プログラムを呼び出すシエル
スクリプトを作成し、これらのリターンコードを検査
し、そのリターンコードを出ることができる。次に、そ
のシエルスクリプトの名前をausbeghookに置く。
【0273】
【表12】
【0274】インスタンスフアイル構文法は、≪auscod
edir≫=“<『directory 』>”であり、コマンドライ
ン構文法はない。
edir≫=“<『directory 』>”であり、コマンドライ
ン構文法はない。
【0275】(説明)。ユーザのベースコードデイレク
トリは、タスク開発者のために、デフオルトロケーシヨ
ン内にそれが存在しない場合にタスクコードのロケーシ
ヨンを指示する道を提供する。文字列はベースレベルデ
イレクトリの値を格納し、そこに、現在のタスクに対す
る開発者のタスクデイレクトリ構造が存在する。このシ
ナリオドライバ属性のためのデフオルト値は、タスクシ
ナリオドライバがそのシナリオのタスクデイレクトリ構
造のロケーシヨン及び現在のインスタンスの名前を使用
して実行時に計算される。デイレクトリは次のようにセ
ツトされる。
トリは、タスク開発者のために、デフオルトロケーシヨ
ン内にそれが存在しない場合にタスクコードのロケーシ
ヨンを指示する道を提供する。文字列はベースレベルデ
イレクトリの値を格納し、そこに、現在のタスクに対す
る開発者のタスクデイレクトリ構造が存在する。このシ
ナリオドライバ属性のためのデフオルト値は、タスクシ
ナリオドライバがそのシナリオのタスクデイレクトリ構
造のロケーシヨン及び現在のインスタンスの名前を使用
して実行時に計算される。デイレクトリは次のようにセ
ツトされる。
【0276】<scenario ´s task directory stru
cture>/<first letter of the instance>/<instance
base>
cture>/<first letter of the instance>/<instance
base>
【0277】ここで<instance base> は´.t.<int>´
拡張子を伴わないインスタンス名である。
拡張子を伴わないインスタンス名である。
【0278】(例1)。例えばタスクシナリオドライバ
がインスタンスサンプルタスク.t.1で実行され、かつデ
フオルトAUSTINデイレクトリ構造が環境変数によ
つて修正されていなかつた場合、このサンプルタスク.
t.1インスタンスのためのデフオルトタスクコードデイ
レクトリ構造は /austin/tasks/s/sampletask である。
このデイレクトリ構造の下にはbin 、dat 、doc 及びsr
c の各デイレクトリがあり、これらは各タスクコードデ
イレクトリ構造を形成する。
がインスタンスサンプルタスク.t.1で実行され、かつデ
フオルトAUSTINデイレクトリ構造が環境変数によ
つて修正されていなかつた場合、このサンプルタスク.
t.1インスタンスのためのデフオルトタスクコードデイ
レクトリ構造は /austin/tasks/s/sampletask である。
このデイレクトリ構造の下にはbin 、dat 、doc 及びsr
c の各デイレクトリがあり、これらは各タスクコードデ
イレクトリ構造を形成する。
【0279】(例2)。タスクがタスク開発者ステージ
にあるのでタスク開発者が異なるロケーシヨンに配置さ
れているタスクを有することを望む場合、auscodedir属
性を変更することによつてこれを実行することができ
る。例えば、タスク開発者が、tasksと名付けたホーム
デイレクトリ内のデイレクトリにすべてのタスクを格納
していた場合、sampletaskの名をもつタスクに対するベ
ースコードデイレクトリは/u/username/tasks/ samplet
ask である。このデイレクトリの下にデイレクトリbin
、dat 、doc 及びsrc がある。この変更が生じたこと
をシナリオドライバに知らせるため、属性auscodedirは
次のようにシナリオインスタンスフアイルを覗く。
にあるのでタスク開発者が異なるロケーシヨンに配置さ
れているタスクを有することを望む場合、auscodedir属
性を変更することによつてこれを実行することができ
る。例えば、タスク開発者が、tasksと名付けたホーム
デイレクトリ内のデイレクトリにすべてのタスクを格納
していた場合、sampletaskの名をもつタスクに対するベ
ースコードデイレクトリは/u/username/tasks/ samplet
ask である。このデイレクトリの下にデイレクトリbin
、dat 、doc 及びsrc がある。この変更が生じたこと
をシナリオドライバに知らせるため、属性auscodedirは
次のようにシナリオインスタンスフアイルを覗く。
【0280】 auscodedir =“/u/username/tasks/sampletask” Compression (auscompress, -c)
【0281】
【表13】
【0282】インスタンスフアイル構文法は、≪auscom
press ≫=< ≪none≫|≪pass≫|≪fail≫|≪all ≫
> であり、コマンドライン構文法は、≪-c≫ <≪n≫|
≪p≫|≪f≫|≪a≫> である。
press ≫=< ≪none≫|≪pass≫|≪fail≫|≪all ≫
> であり、コマンドライン構文法は、≪-c≫ <≪n≫|
≪p≫|≪f≫|≪a≫> である。
【0283】(説明)。シナリオドライバ圧縮構成属性
は、保管したタスク情報がタスクの実行に従つて圧縮さ
れているか否かを確認する。シナリオドライバ保管オプ
シヨンの値が、ユーザタスクコードの実行後にタスク情
報を保管するというようなものであれば、それが圧縮さ
れるか否かを圧縮オプシヨンが決定する。この圧縮の決
定はユーザのタスクが渡されたか失敗したか及び圧縮属
性の値に基づいて行われる。圧縮は、 auscompressイン
スタンス属性若しくは「c」コマンドラインフラグに基
づいて、圧縮を実行せず(無し(none)又はn)にセツト
するか、渡されたタスクだけに圧縮を行う(パス(pass)
又はp)にセツトするか、失敗したタスクだけに圧縮を
行う(失敗(fail)又はf)にセツトするか又は常に圧縮
を実行する(全部(all) 又はa)にセツトすることがで
きる。圧縮アルゴリズムは AIX tarコマンドを使用する
ことにより単一の固有フアイルに固有のタスク作業デイ
レクトリ構造の全体を作り、次に、 AIX圧縮コマンドを
使用してそのフアイルを圧縮する。これは、情報を保管
する必要がある環境に対しては有益なオプシヨンである
が、シナリオ実行ステージの間に作り出される情報の量
は、拡張した時間期間走行した後に莫大なものとなる。
は、保管したタスク情報がタスクの実行に従つて圧縮さ
れているか否かを確認する。シナリオドライバ保管オプ
シヨンの値が、ユーザタスクコードの実行後にタスク情
報を保管するというようなものであれば、それが圧縮さ
れるか否かを圧縮オプシヨンが決定する。この圧縮の決
定はユーザのタスクが渡されたか失敗したか及び圧縮属
性の値に基づいて行われる。圧縮は、 auscompressイン
スタンス属性若しくは「c」コマンドラインフラグに基
づいて、圧縮を実行せず(無し(none)又はn)にセツト
するか、渡されたタスクだけに圧縮を行う(パス(pass)
又はp)にセツトするか、失敗したタスクだけに圧縮を
行う(失敗(fail)又はf)にセツトするか又は常に圧縮
を実行する(全部(all) 又はa)にセツトすることがで
きる。圧縮アルゴリズムは AIX tarコマンドを使用する
ことにより単一の固有フアイルに固有のタスク作業デイ
レクトリ構造の全体を作り、次に、 AIX圧縮コマンドを
使用してそのフアイルを圧縮する。これは、情報を保管
する必要がある環境に対しては有益なオプシヨンである
が、シナリオ実行ステージの間に作り出される情報の量
は、拡張した時間期間走行した後に莫大なものとなる。
【0284】圧縮された情報を非圧縮状態にして再圧縮
することのできる2つのユーテイリテイが存在する。
することのできる2つのユーテイリテイが存在する。
【0285】(例1)。数千のタスクが何日もの間そこ
で実行しているシナリオは、その環境全体に対するすべ
てのタスク実行時情報が圧縮されるよう圧縮属性をセツ
トすることを望むことがある。これを行うには各機械イ
ンスタンスフアイル内のすべてに対してauscompress 属
性をセツトする。機械インスタンスフアイル内の情報
は、機械シナリオ内にある各タスクシナリオに自動的に
漏れる。以下の行は、機械シナリオインスタンスフアイ
ル内においてこの効果を有する。
で実行しているシナリオは、その環境全体に対するすべ
てのタスク実行時情報が圧縮されるよう圧縮属性をセツ
トすることを望むことがある。これを行うには各機械イ
ンスタンスフアイル内のすべてに対してauscompress 属
性をセツトする。機械インスタンスフアイル内の情報
は、機械シナリオ内にある各タスクシナリオに自動的に
漏れる。以下の行は、機械シナリオインスタンスフアイ
ル内においてこの効果を有する。
【0286】auscompress = all
【0287】(例2)。他の状況において、異なるハー
ドデイスク資源を有する複数のホストを有する環境シナ
リオが実行しているものとする。こうした状況では、多
量のデイスクスペースを有するホストは何も圧縮せず
(無し(none)又はn)、少量のデイスクスペースを有す
る機械はあらゆるものを圧縮する(全部( all)又はa)
ように圧縮オプシヨンをセツトすることができる。これ
を達成するため、僅かなデイスク資源を有するホストの
インスタンスフアイルに次の属性を置く。
ドデイスク資源を有する複数のホストを有する環境シナ
リオが実行しているものとする。こうした状況では、多
量のデイスクスペースを有するホストは何も圧縮せず
(無し(none)又はn)、少量のデイスクスペースを有す
る機械はあらゆるものを圧縮する(全部( all)又はa)
ように圧縮オプシヨンをセツトすることができる。これ
を達成するため、僅かなデイスク資源を有するホストの
インスタンスフアイルに次の属性を置く。
【0288】auscompress = all
【0289】また多くのデイスク資源を有する機械のイ
ンスタンスフアイルには次のような属性を置く。
ンスタンスフアイルには次のような属性を置く。
【0290】auscompress = none
【0291】(例3)。この例においては、極めて稀に
実行している機械シナリオが、渡されたタスク情報を見
るので、機械シナリオインスタンスフアイルに次のよう
な属性を置くことによつて情報を圧縮することができ
る。
実行している機械シナリオが、渡されたタスク情報を見
るので、機械シナリオインスタンスフアイルに次のよう
な属性を置くことによつて情報を圧縮することができ
る。
【0292】auscompress = pass
【0293】(例4)。1つの環境内で実行している同
じタスクが異なる圧縮オプシヨンを有することができる
ことに注意することが重要である。これは、タスクが異
なるインスタンスフアイルに関連付けられているからで
ある。例えば、2つの異なる機械上で実行するタスク r
cpは完全に別々の圧縮属性を有することができる。これ
は、2つのタスクインスタンスのうちの第1のものは圧
縮属性をパスにセツトするインスタンスに関連付けられ
ているからであり、これにより、それはタスクが渡され
るときだけにタスクフアイルを圧縮する。次のようなシ
ナリオインスタンス属性でこれを行う。
じタスクが異なる圧縮オプシヨンを有することができる
ことに注意することが重要である。これは、タスクが異
なるインスタンスフアイルに関連付けられているからで
ある。例えば、2つの異なる機械上で実行するタスク r
cpは完全に別々の圧縮属性を有することができる。これ
は、2つのタスクインスタンスのうちの第1のものは圧
縮属性をパスにセツトするインスタンスに関連付けられ
ているからであり、これにより、それはタスクが渡され
るときだけにタスクフアイルを圧縮する。次のようなシ
ナリオインスタンス属性でこれを行う。
【0294】auscompress = pass
【0295】タスクの第2のインスタンスは圧縮アルゴ
リズムを全部(all )に対してセツトするインスタンス
フアイルに関連付けられているので、全部のタスクフア
イルが成功に関係なく圧縮される。次のようなシナリオ
インスタンス属性でこれを行う。
リズムを全部(all )に対してセツトするインスタンス
フアイルに関連付けられているので、全部のタスクフア
イルが成功に関係なく圧縮される。次のようなシナリオ
インスタンス属性でこれを行う。
【0296】auscompress = all
【0297】
【表14】
【0298】インスタンスフアイル構文法は≪ ausdesc
≫=“<『description 』>”であり、コマンドライン
構文法はない。
≫=“<『description 』>”であり、コマンドライン
構文法はない。
【0299】(説明)。 ausdesc属性は各定義済シナリ
オを記述している、シナリオインスタンスフアイル作成
時にシナリオ構築ツールに入つた情報がインスタンスフ
アイル内に保存されるようにする。このデータは情報だ
けを目的とする。それはインスタンス間の違いを記述す
る「テキスト」である。
オを記述している、シナリオインスタンスフアイル作成
時にシナリオ構築ツールに入つた情報がインスタンスフ
アイル内に保存されるようにする。このデータは情報だ
けを目的とする。それはインスタンス間の違いを記述す
る「テキスト」である。
【0300】(例)。以下は、シナリオインスタンスフ
アイルのサンプルを記述したテキストである。
アイルのサンプルを記述したテキストである。
【0301】ausdesc =「このインスタンスは圧縮属性
をpassに対してセツトし保管を allに対してセツトす
る」。
をpassに対してセツトし保管を allに対してセツトす
る」。
【0302】以下は、同じシナリオ定義フアイルから出
た異なるシナリオインスタンスフアイルからの他のサン
プルを記述したテキストである。
た異なるシナリオインスタンスフアイルからの他のサン
プルを記述したテキストである。
【0303】ausdesc =「このインスタンスは圧縮属性
を allに対してセツトし保管を allに対してセツトす
る」。
を allに対してセツトし保管を allに対してセツトす
る」。
【0304】
【表15】
【0305】インスタンスフアイル構文法は≪ausdistr
ibuted≫= <≪ true ≫|≪ false≫> であり、コマン
ドライン構文法は≪-d≫ <≪t≫|≪f≫> である。
ibuted≫= <≪ true ≫|≪ false≫> であり、コマン
ドライン構文法は≪-d≫ <≪t≫|≪f≫> である。
【0306】(説明)。分散実行時フアイルスペース属
性は分散した /austin/ runtime フアイルスペースで環
境シナリオを実行することが意図であるか又は /austin
/ runtime フアイルスペースがネツトワーク内の各機械
に存在するか否かを環境シナリオドライバに通知する。
性は分散した /austin/ runtime フアイルスペースで環
境シナリオを実行することが意図であるか又は /austin
/ runtime フアイルスペースがネツトワーク内の各機械
に存在するか否かを環境シナリオドライバに通知する。
【0307】注意すべきは、分散属性が真であつても偽
であつても、シナリオドライバによつてマウントが実際
に行われることはないことである。この値は単にシナリ
オ実行ステージの間のフアイルスペースの分散に関する
ユーザの意図が何であるかをシナリオドライバに通知す
る。 /austin/runtimeフアイルスペースの実際の分散は
良好な開始フツクのアプリケーシヨンである。
であつても、シナリオドライバによつてマウントが実際
に行われることはないことである。この値は単にシナリ
オ実行ステージの間のフアイルスペースの分散に関する
ユーザの意図が何であるかをシナリオドライバに通知す
る。 /austin/runtimeフアイルスペースの実際の分散は
良好な開始フツクのアプリケーシヨンである。
【0308】(例1)。以下は、シナリオ実行ステージ
の間に /austin/runtimeフアイルスペースを分散してい
ない環境シナリオインスタンスフアイルからの抜粋であ
る。
の間に /austin/runtimeフアイルスペースを分散してい
ない環境シナリオインスタンスフアイルからの抜粋であ
る。
【0309】ausdistributed = false
【0310】(例2)。以下は、シナリオ実行ステージ
の間に /austin/runtimeフアイルスペースを分散してい
る環境シナリオインスタンスフアイルからの抜粋であ
る。
の間に /austin/runtimeフアイルスペースを分散してい
る環境シナリオインスタンスフアイルからの抜粋であ
る。
【0311】ausdistributed = true
【0312】
【表16】
【0313】インスタンスフアイル構文法は≪ausendho
ok≫=“<『end hook』>”であり、コマンドライン
構文法はない。
ok≫=“<『end hook』>”であり、コマンドライン
構文法はない。
【0314】(説明)。終了フツクは次のレベルのシナ
リオドライバ又はユーザタスクコードを実行した後にシ
ナリオドライバによつてユーザコードを自動的に実行し
得る道を提供する。終了フツクが実行する時間を除い
て、開始フツク及び終了フツクの双方に同じ情報を適用
する。
リオドライバ又はユーザタスクコードを実行した後にシ
ナリオドライバによつてユーザコードを自動的に実行し
得る道を提供する。終了フツクが実行する時間を除い
て、開始フツク及び終了フツクの双方に同じ情報を適用
する。
【0315】
【表17】
【0316】インスタンスフアイル構文法は≪ ausjour
nals≫=“[<『 env va:journalna』|『 jourl na
me』>... ]”であり、コマンドライン構文法はない。
nals≫=“[<『 env va:journalna』|『 jourl na
me』>... ]”であり、コマンドライン構文法はない。
【0317】(説明)。この ausjournals属性を用い
て、ジヤーナルコマンドが書き込むデフオルト標準ジヤ
ーナルフアイルとは異なる、ユーザのタスクコードが使
用を望む何らかのジヤーナルを定義する。ユーザのタス
クコードを実行する前に、タスクシナリオドライバは a
usjournals予約属性の値に基づいて環境変数をセツトす
る。これらの環境変数はユーザ定義ジヤーナルの経路を
含む。この経路は固有のタスク実行時デイレクトリ構造
のjourデイレクトリ内にある。このデイレクトリは( t
askjournalの名を有する)標準タスクジヤーナル及び a
usjournalsコマンドと共に定義される各ユーザ定義ジヤ
ーナルを格納する。これらのフアイルの実際のロケーシ
ヨンはユーザのタスクコードとは関係がない。これは、
ユーザは環境変数を使用してジヤーナルを参照するから
である。
て、ジヤーナルコマンドが書き込むデフオルト標準ジヤ
ーナルフアイルとは異なる、ユーザのタスクコードが使
用を望む何らかのジヤーナルを定義する。ユーザのタス
クコードを実行する前に、タスクシナリオドライバは a
usjournals予約属性の値に基づいて環境変数をセツトす
る。これらの環境変数はユーザ定義ジヤーナルの経路を
含む。この経路は固有のタスク実行時デイレクトリ構造
のjourデイレクトリ内にある。このデイレクトリは( t
askjournalの名を有する)標準タスクジヤーナル及び a
usjournalsコマンドと共に定義される各ユーザ定義ジヤ
ーナルを格納する。これらのフアイルの実際のロケーシ
ヨンはユーザのタスクコードとは関係がない。これは、
ユーザは環境変数を使用してジヤーナルを参照するから
である。
【0318】ausjournalsコマンドに関する構文法は一
見したところ幾らか複雑であるが、以下の説明及び実例
がその意味を理解する助けとなる。 ausjournalsコマン
ドの値は1つ又は2つ以上の項目のリストを含んでい
る、2重引用符き文字列である。これらの項目はフオー
マツト『 env var : journal name』又は単なる『 j
ournal name』を有することができる。シナリオドライ
バはこれらの項目からなるリスト全体を分析し、第1の
形式を見い出した場合、現在のjourデイレクトリの経路
に等しい『 env var 』にフアイル名『 journal nam
e』が続く名前を有する環境変数をセツトする。項目の
第2形式を見い出した場合、シナリオドライバは現在の
jourデイレクトリの経路に等しい『 journal name』の
大文字版に『journal name』と名付けたフアイルが続
く環境変数をセツトする。この場合『env var 』を大
文字にして「正規」UNIX環境変数命名規定に従う。
見したところ幾らか複雑であるが、以下の説明及び実例
がその意味を理解する助けとなる。 ausjournalsコマン
ドの値は1つ又は2つ以上の項目のリストを含んでい
る、2重引用符き文字列である。これらの項目はフオー
マツト『 env var : journal name』又は単なる『 j
ournal name』を有することができる。シナリオドライ
バはこれらの項目からなるリスト全体を分析し、第1の
形式を見い出した場合、現在のjourデイレクトリの経路
に等しい『 env var 』にフアイル名『 journal nam
e』が続く名前を有する環境変数をセツトする。項目の
第2形式を見い出した場合、シナリオドライバは現在の
jourデイレクトリの経路に等しい『 journal name』の
大文字版に『journal name』と名付けたフアイルが続
く環境変数をセツトする。この場合『env var 』を大
文字にして「正規」UNIX環境変数命名規定に従う。
【0319】(例1)。この例においてタスク開発者は
デフオルトジヤーナルフアイル以外の彼/彼女のタスク
のために3つのジヤーナルを使用することを要求する。
ausjournals に彼/彼女が与える値は以下の通りであ
る。
デフオルトジヤーナルフアイル以外の彼/彼女のタスク
のために3つのジヤーナルを使用することを要求する。
ausjournals に彼/彼女が与える値は以下の通りであ
る。
【0320】ausjournals =“Spooljour:spooljour cm
djour DiffResults:diff- jour”
djour DiffResults:diff- jour”
【0321】この値は上述の形式の双方を含む。シナリ
オドライバはこのインスタンス属性を読み、以下の3つ
の環境変数をそこに示す値にセツトする。
オドライバはこのインスタンス属性を読み、以下の3つ
の環境変数をそこに示す値にセツトする。
【0322】Spooljour=“/austin/runtime/<scenariod
ir>/working/<taskdir>/jour/spooljour”
ir>/working/<taskdir>/jour/spooljour”
【0323】CMDJOUR=“/austin/runtime/<scenariodir
>/working/<taskdir>/jour/cmdjour”
>/working/<taskdir>/jour/cmdjour”
【0324】DiffResults=“/austin/runtime/<scenari
odir>/working/<taskdir>/jour/diffjour ”
odir>/working/<taskdir>/jour/diffjour ”
【0325】(例2)。この例では、シナリオ開発者は
elog及びklogと名付けた2つのジヤーナルを必要とす
る。タスクシナリオインスタンスフアイルに次のように
指定する。
elog及びklogと名付けた2つのジヤーナルを必要とす
る。タスクシナリオインスタンスフアイルに次のように
指定する。
【0326】ausjournals=“elog klog ”
【0327】これにより、以下の環境変数は次のような
値をもつ結果となる。
値をもつ結果となる。
【0328】ELOG=“austin/runtime/<scenariodir>/w
orking/<taskdir>/jour/elog”
orking/<taskdir>/jour/elog”
【0329】KLOG=“/austin/runtime/<scenariodir>/
working/<taskdir>/jour/klog ”
working/<taskdir>/jour/klog ”
【0330】これによりユーザはこれらのフアイルに書
込むことができる。以下は、上述のフアイルを使用する
シエルスクリプトからの抜粋である。
込むことができる。以下は、上述のフアイルを使用する
シエルスクリプトからの抜粋である。
【0331】ls-alt foofile>$ELOG diff $ELOG
【0332】$AUSCODEDAT/expected.results >>$KL
OG if [“$?”!=“0”];then auserror “The
ls -all foofile command failed. ”eles auslog “Th
e ls-alt foofile command was succesful.”fi
OG if [“$?”!=“0”];then auserror “The
ls -all foofile command failed. ”eles auslog “Th
e ls-alt foofile command was succesful.”fi
【0333】
【表18】
【0334】インスタンスフアイル構文法は≪ ausloop
s ≫=<『integer 』>であり、コマンドライン構文法
は-1<integer> である。
s ≫=<『integer 』>であり、コマンドライン構文法
は-1<integer> である。
【0335】(説明)。属性を実行するためのループは
シナリオ属性ausobjlist内のインスタンスを何回実行す
べきか又はシナリオ属性 austaskcode内のユーザのタス
クコードを何回実行すべきかをシナリオドライバに通知
する。注意すべきは、『 time to execute』属性が存在
することである。同じインスタンスフアイル内又はコマ
ンドライン上に双方が指定されたとき、『 time to exe
cute』属性が優先順位をとる。どちらかがコマンドライ
ン上に指定されるとき、これらは、シナリオインスタン
スフアイルにあるこのいずれかを上回る優先順位をと
る。ausloopsのための整数値は正でなければならない。
シナリオ属性ausobjlist内のインスタンスを何回実行す
べきか又はシナリオ属性 austaskcode内のユーザのタス
クコードを何回実行すべきかをシナリオドライバに通知
する。注意すべきは、『 time to execute』属性が存在
することである。同じインスタンスフアイル内又はコマ
ンドライン上に双方が指定されたとき、『 time to exe
cute』属性が優先順位をとる。どちらかがコマンドライ
ン上に指定されるとき、これらは、シナリオインスタン
スフアイルにあるこのいずれかを上回る優先順位をと
る。ausloopsのための整数値は正でなければならない。
【0336】(例)。 loops to execute 属性が次のよ
うな値をタスクシナリオインスタンスフアイルに有する
とき、それは個人シナリオドライバによつて実行された
ものである。
うな値をタスクシナリオインスタンスフアイルに有する
とき、それは個人シナリオドライバによつて実行された
ものである。
【0337】ausloops=20
【0338】ユーザタスクコードは個人ドライバへの制
御を復帰させる前に20回実行する。動作の順序として
は、個人ドライバがその開始フツクを実行し、次にタス
クドライバが実行する。タスクドライバはその開始フツ
クを実行し、次にそのユーザタスクコードを20回実行
し、その終了フツクを実行し、次に個人シナリオドライ
バへの制御に復帰する。個人シナリオドライバが「1」
よりも大きいループ値を有しているとき、タスクシナリ
オドライバは再び実行して同一の2回目のプロセスを進
み、その開始フツクを実行し、そのユーザタスクコード
を20回実行し、その終了フツクを実行し、次に個人シナ
リオドライバに実行制御を戻す。
御を復帰させる前に20回実行する。動作の順序として
は、個人ドライバがその開始フツクを実行し、次にタス
クドライバが実行する。タスクドライバはその開始フツ
クを実行し、次にそのユーザタスクコードを20回実行
し、その終了フツクを実行し、次に個人シナリオドライ
バへの制御に復帰する。個人シナリオドライバが「1」
よりも大きいループ値を有しているとき、タスクシナリ
オドライバは再び実行して同一の2回目のプロセスを進
み、その開始フツクを実行し、そのユーザタスクコード
を20回実行し、その終了フツクを実行し、次に個人シナ
リオドライバに実行制御を戻す。
【0339】
【表19】
【0340】インスタンスフアイル構文法は≪ ausmode
≫=< ≪concurrent≫|≪sequential≫ >であり、、コ
マンドライン構文法は-m < c|s > である。
≫=< ≪concurrent≫|≪sequential≫ >であり、、コ
マンドライン構文法は-m < c|s > である。
【0341】(説明)。実行モード属性は一段と低いレ
ベルのシナリオドライバを順次又は同時に実行させるこ
とができる。「同時」が指定されると、シナリオドライ
バはそのausobjlist内のすべてのインスタンスの実行を
同時に開始して、これらすべての終了を待機する。「順
次」が指定されると、シナリオドライバはausobjlist内
のインスタンスを順次実行する。リスト内のすべてのオ
ブジエクトが実行し、かつ終了すると、同時であるか順
次であるかにかかわらずそれはシナリオドライバの1つ
のループを作る。
ベルのシナリオドライバを順次又は同時に実行させるこ
とができる。「同時」が指定されると、シナリオドライ
バはそのausobjlist内のすべてのインスタンスの実行を
同時に開始して、これらすべての終了を待機する。「順
次」が指定されると、シナリオドライバはausobjlist内
のインスタンスを順次実行する。リスト内のすべてのオ
ブジエクトが実行し、かつ終了すると、同時であるか順
次であるかにかかわらずそれはシナリオドライバの1つ
のループを作る。
【0342】(例1)。個人シナリオが5つのタスクシ
ナリオからなり、かつ個人シナリオインスタンスフアイ
ルに次の値、すなわち ausmode=concurrentを有してい
るとき、これは5つのタスクシナリオの実行を同時に開
始する。個人シナリオフアイルに以下の属性、すなわち
ausloops=2を伴うloop twiceがセツトされると、個人
シナリオフアイルは、5つの各タスクが実行を完了する
のを待つて同じプロセスの2回目を開始する。第2の反
復実行の終了によつて、5つのタスクは各2回づつ実行
したことになる。いつ同時実行が使用されるかに留意す
ることが重要であり、一段と低レベルのすべてのドライ
バは、これらのドライバの前の各実行が完了するまで第
2の反復実行を開始しない。従つてこの例における5つ
のタスクシナリオのうちの4つはたつた10分で完了し、
5番目のものが30分かかるならば、個人シナリオの2回
の反復実行には正味1時間かかる。実行開始後、最初の
4つは10分後に終了するが5番目のタスクは実行を継続
しており、これら5つのタスクが揃つて2回目を実行す
るまでにはまだ20分もかかる。
ナリオからなり、かつ個人シナリオインスタンスフアイ
ルに次の値、すなわち ausmode=concurrentを有してい
るとき、これは5つのタスクシナリオの実行を同時に開
始する。個人シナリオフアイルに以下の属性、すなわち
ausloops=2を伴うloop twiceがセツトされると、個人
シナリオフアイルは、5つの各タスクが実行を完了する
のを待つて同じプロセスの2回目を開始する。第2の反
復実行の終了によつて、5つのタスクは各2回づつ実行
したことになる。いつ同時実行が使用されるかに留意す
ることが重要であり、一段と低レベルのすべてのドライ
バは、これらのドライバの前の各実行が完了するまで第
2の反復実行を開始しない。従つてこの例における5つ
のタスクシナリオのうちの4つはたつた10分で完了し、
5番目のものが30分かかるならば、個人シナリオの2回
の反復実行には正味1時間かかる。実行開始後、最初の
4つは10分後に終了するが5番目のタスクは実行を継続
しており、これら5つのタスクが揃つて2回目を実行す
るまでにはまだ20分もかかる。
【0343】(例2)。4つのタスクを実行するのに10
分かかり1つのタスクを実行するのに30分かかるような
5つのタスクを有する個人シナリオの上述の例を用い
て、この例は個人シナリオが順次モードで2つのループ
を実行するのに必要な時間の長さを示す。ドライバに順
次モードで実行させるには個人シナリオインスタンスフ
アイルに以下の属性を使用する。
分かかり1つのタスクを実行するのに30分かかるような
5つのタスクを有する個人シナリオの上述の例を用い
て、この例は個人シナリオが順次モードで2つのループ
を実行するのに必要な時間の長さを示す。ドライバに順
次モードで実行させるには個人シナリオインスタンスフ
アイルに以下の属性を使用する。
【0344】ausmode = sequential
【0345】これら5つのタスクを背中合わせに実行す
れば、個人シナリオの各反復実行はほぼ70分を要する。
従つて、個人シナリオの2回の反復にはほぼ 140分かか
り、同時実行の場合に要する時間の2倍以上もかかるこ
とになる。
れば、個人シナリオの各反復実行はほぼ70分を要する。
従つて、個人シナリオの2回の反復にはほぼ 140分かか
り、同時実行の場合に要する時間の2倍以上もかかるこ
とになる。
【0346】
【表20】
【0347】インスタンスフアイル構文法は≪ausobjli
st≫ =“< 『instance』> ... ”であり、コマンドライ
ン構文法はない。
st≫ =“< 『instance』> ... ”であり、コマンドライ
ン構文法はない。
【0348】(説明)。オブジエクトリスト属性は他の
シナリオドライバ(環境、機械及び個人)を実行するシ
ナリオドライバにとつて極めて重要である。ausobjlist
と名付けられたオブジエクトリストインスタンス属性は
1つ又は2つ以上の項目のリストを含む。これらの項目
は現在のシナリオドライバが制御するシナリオを記述す
るインスタンスの名前である。シナリオドライバは一段
と低レベルのシナリオを走らせる他のシナリオドライバ
の実行を開始できる状態のとき、ausobjlistを抜けて、
現在のインスタンスの名前をこれに渡しているシナリオ
ドライバを実行する。オブジエクトリストはトツプの3
つの試験シナリオレベルにシナリオを定義するものであ
る。これは、オブジエクトリストが、試験シナリオが実
行しているものの核心を格納するからである。
シナリオドライバ(環境、機械及び個人)を実行するシ
ナリオドライバにとつて極めて重要である。ausobjlist
と名付けられたオブジエクトリストインスタンス属性は
1つ又は2つ以上の項目のリストを含む。これらの項目
は現在のシナリオドライバが制御するシナリオを記述す
るインスタンスの名前である。シナリオドライバは一段
と低レベルのシナリオを走らせる他のシナリオドライバ
の実行を開始できる状態のとき、ausobjlistを抜けて、
現在のインスタンスの名前をこれに渡しているシナリオ
ドライバを実行する。オブジエクトリストはトツプの3
つの試験シナリオレベルにシナリオを定義するものであ
る。これは、オブジエクトリストが、試験シナリオが実
行しているものの核心を格納するからである。
【0349】(例)。この例では機械シナリオが実行し
ており、そのオブジエクトリストは次のようなものであ
る。
ており、そのオブジエクトリストは次のようなものであ
る。
【0350】ausobjlist =「person1.p.1 person1.p.2
person2.p.1 」
person2.p.1 」
【0351】機械シナリオドライバはシナリオドライバ
ステツプを実行した後、一段と低レベルのシナリオドラ
イバを実行できる点に達する。これを行うため、機械シ
ナリオドライバは上述のリストを検査し、同時又は順次
に3つのシナリオドライバを開始する。これらはインス
タンスperson1.p.1 、インスタンスperson1.p.2 、イン
スタンス2.p.1 を渡される。これにより3つの個人シナ
リオドライバが実行され、これらのシナリオドライバは
現在の機械シナリオドライバによつて制御される。注意
すべきは、person1.p.1 及びperson1.p.2 は同じ個人の
2つのインスタンスであることである。
ステツプを実行した後、一段と低レベルのシナリオドラ
イバを実行できる点に達する。これを行うため、機械シ
ナリオドライバは上述のリストを検査し、同時又は順次
に3つのシナリオドライバを開始する。これらはインス
タンスperson1.p.1 、インスタンスperson1.p.2 、イン
スタンス2.p.1 を渡される。これにより3つの個人シナ
リオドライバが実行され、これらのシナリオドライバは
現在の機械シナリオドライバによつて制御される。注意
すべきは、person1.p.1 及びperson1.p.2 は同じ個人の
2つのインスタンスであることである。
【0352】
【表21】
【0353】インスタンスフアイル構文法は≪ausobjnu
mlist ≫=“<『integer 』>...”である。
mlist ≫=“<『integer 』>...”である。
【0354】コマンドライン構文法は、-r<『integer
』>|≪-r≫『“<『integer 』><『integer 』
>... ”』と、≪-e≫<『integer 』>|≪-e≫“<
『 integer』><『integer 』>... ”である。
』>|≪-r≫『“<『integer 』><『integer 』
>... ”』と、≪-e≫<『integer 』>|≪-e≫“<
『 integer』><『integer 』>... ”である。
【0355】(説明)。オブジエクトナンバーリストは
ausobjlist属性のメンバーを実行させるか又は現在のシ
ナリオ実行から除外させる。これは、ausobjlist内の項
目に写像するインテジヤのリストを指定することによつ
て実行される。デフオルトによつて、オブジエクトナン
バーリスト属性はausobjlist属性内のすべてのインスタ
ンスに対応するインテジヤのリストにセツトされるの
で、実行によつてこれらはすべて実行を完遂する。オブ
ジエクトナンバーリスト構成属性が準備され、これによ
り構成オブジエクトリストはインスタンス作成/変更ス
テージの間ausobjlist内のインスタンスのテンプレート
をなおも不変に維持することができる。これは、そのリ
ストは現在のシナリオを「定義する」ものであり、シナ
リオ構築ツールのインスタンス管理部分の間に変更され
ることはないからである。
ausobjlist属性のメンバーを実行させるか又は現在のシ
ナリオ実行から除外させる。これは、ausobjlist内の項
目に写像するインテジヤのリストを指定することによつ
て実行される。デフオルトによつて、オブジエクトナン
バーリスト属性はausobjlist属性内のすべてのインスタ
ンスに対応するインテジヤのリストにセツトされるの
で、実行によつてこれらはすべて実行を完遂する。オブ
ジエクトナンバーリスト構成属性が準備され、これによ
り構成オブジエクトリストはインスタンス作成/変更ス
テージの間ausobjlist内のインスタンスのテンプレート
をなおも不変に維持することができる。これは、そのリ
ストは現在のシナリオを「定義する」ものであり、シナ
リオ構築ツールのインスタンス管理部分の間に変更され
ることはないからである。
【0356】(例1)。個人インスタンスが次のような
ausobjlist及びausobjnumlist を含んでいる場合、
ausobjlist及びausobjnumlist を含んでいる場合、
【0357】ausobjlist=“task1.t.1 task2.t.1 task
3.t.1 task4.t.1 task5.t.1 task6.t.1 ”、ausobjnuml
ist =“1 2 3 6 ”である。
3.t.1 task4.t.1 task5.t.1 task6.t.1 ”、ausobjnuml
ist =“1 2 3 6 ”である。
【0358】個人シナリオドライバが実行するとき、そ
の個人のためのausobjlist内には6つのタスクインスタ
ンスが存在するが4つのタスクシナリオドライバだけを
開始する。これは、ausobjnumlist がその中に4つのイ
ンテジヤしか有していないからである。実行される4つ
のタスクとはtask1.t.1 、task2.t.1 、task3.t.1 及び
task6.t.1 であり、ausobjlistの4及び5のメンバーは
除外される。
の個人のためのausobjlist内には6つのタスクインスタ
ンスが存在するが4つのタスクシナリオドライバだけを
開始する。これは、ausobjnumlist がその中に4つのイ
ンテジヤしか有していないからである。実行される4つ
のタスクとはtask1.t.1 、task2.t.1 、task3.t.1 及び
task6.t.1 であり、ausobjlistの4及び5のメンバーは
除外される。
【0359】(例2)。上述した個人シナリオドライバ
がコマンドライン上の-r“1 2 3 45 6 ”で実行する場
合、コマンドラインフラグは ausobjnumlistインスタン
ス属性を無効にして6つのタスクシナリオドライバ全部
を実行する。
がコマンドライン上の-r“1 2 3 45 6 ”で実行する場
合、コマンドラインフラグは ausobjnumlistインスタン
ス属性を無効にして6つのタスクシナリオドライバ全部
を実行する。
【0360】(例3)。上述した個人シナリオドライバ
がコマンドライン上の-e「1 6」で実行された場合、コ
マンドラインフラグは ausobjnumlistインスタンス属性
を再び無効にし、ausobjlistの第1のメンバー及び第6
のメンバーを実行から除外してリスト内の残りのタスク
を実行する。
がコマンドライン上の-e「1 6」で実行された場合、コ
マンドラインフラグは ausobjnumlistインスタンス属性
を再び無効にし、ausobjlistの第1のメンバー及び第6
のメンバーを実行から除外してリスト内の残りのタスク
を実行する。
【0361】
【表22】
【0362】インスタンスフアイル構文法は≪aussave
≫=< ≪none≫|≪pass≫|≪fail≫|≪all ≫> であ
り、コマンドライン構文法は-s < n|p|f|a> であ
る。
≫=< ≪none≫|≪pass≫|≪fail≫|≪all ≫> であ
り、コマンドライン構文法は-s < n|p|f|a> であ
る。
【0363】(説明)。保管オプシヨンを使用して、タ
スク実行のために作成された固有の実行時デイレクトリ
構造を保管すべきか否かをタスクレベルシナリオドライ
バに通知する。タスク実行時情報を保管すべきか否かの
決定はユーザのタスクが渡されたか失敗したかというこ
とと保管属性の値とに基づいて行われる。 aussaveイン
スタンス属性又は「s」コマンドラインフラグでこの保
管属性をセツトすることができる。セツトの種類は、全
く保管せず(無し(none)又はn)、渡されたタスクにお
いてだけ保管する(パス(pass)又はp)、失敗したタス
クにおいてだけ保管する(失敗(faile) 又はf)又は常
に保管する(全部(all) 又はa)である。この保管機能
は圧縮機能と一緒に協力して作用することにより、タス
ク実行時にどの情報を保管し、保管するどの情報を圧縮
するかを決定する。
スク実行のために作成された固有の実行時デイレクトリ
構造を保管すべきか否かをタスクレベルシナリオドライ
バに通知する。タスク実行時情報を保管すべきか否かの
決定はユーザのタスクが渡されたか失敗したかというこ
とと保管属性の値とに基づいて行われる。 aussaveイン
スタンス属性又は「s」コマンドラインフラグでこの保
管属性をセツトすることができる。セツトの種類は、全
く保管せず(無し(none)又はn)、渡されたタスクにお
いてだけ保管する(パス(pass)又はp)、失敗したタス
クにおいてだけ保管する(失敗(faile) 又はf)又は常
に保管する(全部(all) 又はa)である。この保管機能
は圧縮機能と一緒に協力して作用することにより、タス
ク実行時にどの情報を保管し、保管するどの情報を圧縮
するかを決定する。
【0364】(例)。機械シナリオは失敗するタスクか
らの機械シナリオのタスク情報だけを保存することを望
むことがある。この状況においては機械インスタンス属
性aussave を次のようにセツトする。
らの機械シナリオのタスク情報だけを保存することを望
むことがある。この状況においては機械インスタンス属
性aussave を次のようにセツトする。
【0365】aussave = fail
【0366】注意すべきは、この属性は機械シナリオド
ライバレベルにおいては実際に何も行つていないが、タ
スクシナリオドライバレベルへと下方に渡されて、そこ
で、この属性を使用することにより、タスク実行時デイ
レクトリ構造を除去又は保管すべきか否かを決定する。
ライバレベルにおいては実際に何も行つていないが、タ
スクシナリオドライバレベルへと下方に渡されて、そこ
で、この属性を使用することにより、タスク実行時デイ
レクトリ構造を除去又は保管すべきか否かを決定する。
【0367】
【表23】
【0368】インスタンスフアイル構文法は≪ austask
code≫=“<『task file name』>”であり、コマン
ドライン構文法はない。
code≫=“<『task file name』>”であり、コマン
ドライン構文法はない。
【0369】(説明)。タスクコードパラメータはタス
クシナリオドライバの実行にとつて極めて重要である。
これは、何を実行すべきかを詳述している情報を含む他
の3つのシナリオドライバレベルのために指定されたオ
ブジエクトリストパラメータに類似している。オブジエ
クトリスト構成属性及びタスクコードパラメータ間の違
いは、タスクコードパラメータが実行すべきユーザのコ
ードの実際のフアイル名を含むことである。
クシナリオドライバの実行にとつて極めて重要である。
これは、何を実行すべきかを詳述している情報を含む他
の3つのシナリオドライバレベルのために指定されたオ
ブジエクトリストパラメータに類似している。オブジエ
クトリスト構成属性及びタスクコードパラメータ間の違
いは、タスクコードパラメータが実行すべきユーザのコ
ードの実際のフアイル名を含むことである。
【0370】タスクフアイル名への実際の経路は指定さ
れない。これは、このフアイルのロケーシヨンは次のよ
うにして決定されるからである。$AUSBIN によつて示さ
れる実行時タスクbin デイレクトリ構造が最初に検査さ
れ、次に、$AUSCODEBIN によつて示されるタスクコード
デイレクトリ構造の binデイレクトリが検査される。
れない。これは、このフアイルのロケーシヨンは次のよ
うにして決定されるからである。$AUSBIN によつて示さ
れる実行時タスクbin デイレクトリ構造が最初に検査さ
れ、次に、$AUSCODEBIN によつて示されるタスクコード
デイレクトリ構造の binデイレクトリが検査される。
【0371】(例)。そのロケーシヨンが /austin/tas
ks/r/rcp/bin/foobar であるシエルスクリプトfoobarを
走らせることによつて rcpタスクを実行すると、タスク
シナリオインスタンスフアイル内のaustaskcode 属性の
ために以下のように指定される。
ks/r/rcp/bin/foobar であるシエルスクリプトfoobarを
走らせることによつて rcpタスクを実行すると、タスク
シナリオインスタンスフアイル内のaustaskcode 属性の
ために以下のように指定される。
【0372】austaskcode = 「foobar」
【0373】
【表24】
【0374】インスタンスフアイル構文法は≪austaskp
arams ≫=“<『parameters』>”であり、コマンドラ
イン構文法はない。
arams ≫=“<『parameters』>”であり、コマンドラ
イン構文法はない。
【0375】(説明)。主に試験用足場は環境変数に写
像されるユーザ定義属性を経由してユーザタスクコード
に渡つている情報の周囲に準備されるが、シナリオドラ
イバ及びシナリオ構築ツールもコマンドラインパラメー
タを経由してユーザタスクコードにパラメータを渡す能
力を支援する。これを行うには、タスクパラメータ構成
属性を使用する。ユーザタスクコードを実行するとき、
このシナリオドライバインスタンス属性の値を直接的に
コマンドライン上に渡す。
像されるユーザ定義属性を経由してユーザタスクコード
に渡つている情報の周囲に準備されるが、シナリオドラ
イバ及びシナリオ構築ツールもコマンドラインパラメー
タを経由してユーザタスクコードにパラメータを渡す能
力を支援する。これを行うには、タスクパラメータ構成
属性を使用する。ユーザタスクコードを実行するとき、
このシナリオドライバインスタンス属性の値を直接的に
コマンドライン上に渡す。
【0376】(例)。タスクについてのユーザタスクコ
ードがfoobarであり、コマンドラインを経由して渡され
る絶対値パラメータをそれが必要とする場合、インスタ
ンスフアイルからの以下の属性がこの状況を処理する。
ードがfoobarであり、コマンドラインを経由して渡され
る絶対値パラメータをそれが必要とする場合、インスタ
ンスフアイルからの以下の属性がこの状況を処理する。
【0377】 austaskcode = “foobar”austaskparams = “-m 20 ”
【0378】コマンドfoobarが実行したとき、これはコ
マンドラインに追加された“ -m 20”を伴つて実行す
る。
マンドラインに追加された“ -m 20”を伴つて実行す
る。
【0379】
【表25】
【0380】インスタンスフアイル構文法は≪austim≫
=<『real』|『integer 』>であり、コマンドライン
構文法は-t<『real』|『integer 』>である。
=<『real』|『integer 』>であり、コマンドライン
構文法は-t<『real』|『integer 』>である。
【0381】(説明)。 austime属性はユーザが望むシ
ナリオドライバ実行継続時間の長さを指定する。 austi
meを指定したとき、シナリオドライバはそのausobjlist
又はaustaskcode 内の項目を実行してこれらの完了を待
つ。すべてのインスタンスが完了すると、シナリオドラ
イバはシナリオドライバの開始時間が時間属性によつて
指定される時間よりも少ないために、検査をして時間が
経過したか否かを知る。肯定結果が得られると、シナリ
オドライバはausobjlist内のすべての項目を再び実行す
る。注意すべきは、この時間属性のための値は正でなけ
ればならないことである。
ナリオドライバ実行継続時間の長さを指定する。 austi
meを指定したとき、シナリオドライバはそのausobjlist
又はaustaskcode 内の項目を実行してこれらの完了を待
つ。すべてのインスタンスが完了すると、シナリオドラ
イバはシナリオドライバの開始時間が時間属性によつて
指定される時間よりも少ないために、検査をして時間が
経過したか否かを知る。肯定結果が得られると、シナリ
オドライバはausobjlist内のすべての項目を再び実行す
る。注意すべきは、この時間属性のための値は正でなけ
ればならないことである。
【0382】(例)。タスクを実行するための時間とし
てタスク開発者が2時間を指定し、かつユーザのタスク
コードの実行にほぼ45分必要であるとき、タスク全体が
3回の反復実行すなわち、ほぼ2時間15分の実行を行
う。「説明」で述べたように、これが生ずるのは、第2
の反復実行後時間がまだ残り、それゆえ次の反復が始め
られて、その反復に従つて実行のための時間を使い尽く
し、これにより実行が停止されるからである。
てタスク開発者が2時間を指定し、かつユーザのタスク
コードの実行にほぼ45分必要であるとき、タスク全体が
3回の反復実行すなわち、ほぼ2時間15分の実行を行
う。「説明」で述べたように、これが生ずるのは、第2
の反復実行後時間がまだ残り、それゆえ次の反復が始め
られて、その反復に従つて実行のための時間を使い尽く
し、これにより実行が停止されるからである。
【0383】
【表26】
【0384】インスタンスフアイル構文法は≪austype
≫= < ≪environment ≫|≪machine ≫|≪person≫|
≪task≫ >であり、コマンドライン構文法はない。
≫= < ≪environment ≫|≪machine ≫|≪person≫|
≪task≫ >であり、コマンドライン構文法はない。
【0385】(説明)。シナリオドライバ型属性は最も
重要なインスタンス属性である。それは、シナリオレベ
ルが実行しているシナリオドライバを教えるものであ
る。このことは極めて重要である。なぜならば、シナリ
オドライバの動作は、それがどのシナリオレベルを実行
しているかに大きく左右されるからである。
重要なインスタンス属性である。それは、シナリオレベ
ルが実行しているシナリオドライバを教えるものであ
る。このことは極めて重要である。なぜならば、シナリ
オドライバの動作は、それがどのシナリオレベルを実行
しているかに大きく左右されるからである。
【0386】
【表27】
【0387】インスタンスフアイル構文法は≪ aususer
≫=“<『user name』>”であり、コマンドライン構
文法は-u<『user name』>である。
≫=“<『user name』>”であり、コマンドライン構
文法は-u<『user name』>である。
【0388】(説明)。ユーザ属性は一群のタスクをユ
ーザuser nameとして実行できるようにする。この属性
が個人レベルで使用されるとき、シナリオドライバはau
sobjlistのタスクインスタンスを実行する前にユーザus
er nameを変更しようと試みる。このユーザ変更が成功
しない場合、シナリオドライバはエラーを出して制御を
機械ドライバに戻す(又はAIXシエルがトツプレベル
のシナリオドライバの場合AIXシエルに戻す)。
ーザuser nameとして実行できるようにする。この属性
が個人レベルで使用されるとき、シナリオドライバはau
sobjlistのタスクインスタンスを実行する前にユーザus
er nameを変更しようと試みる。このユーザ変更が成功
しない場合、シナリオドライバはエラーを出して制御を
機械ドライバに戻す(又はAIXシエルがトツプレベル
のシナリオドライバの場合AIXシエルに戻す)。
【0389】
【表28】
【0390】インスタンスフアイル構文法は≪ausverbo
se≫=<『integer 』>であり、コマンドライン構文法
は-v<『integer 』>である。
se≫=<『integer 』>であり、コマンドライン構文法
は-v<『integer 』>である。
【0391】(説明)。冗長オプシヨンは情報の変化度
を、ジヤーナル内に載置できるようにすると共に標準出
力(stdout)及び標準エラー(stderr)に送ることがで
きるようにする。この冗長の変化レベルはジヤーナル記
入コマンドの操作を通じて達成される。冗長の度合いは
合計8つある。
を、ジヤーナル内に載置できるようにすると共に標準出
力(stdout)及び標準エラー(stderr)に送ることがで
きるようにする。この冗長の変化レベルはジヤーナル記
入コマンドの操作を通じて達成される。冗長の度合いは
合計8つある。
【0392】
【表29】
【0393】インスタンスフアイル構文法は≪auswindo
ws≫= <≪ true ≫|≪false ≫>であり、コマンドラ
イン構文法は≪-w≫ <≪t≫|≪f≫> である。
ws≫= <≪ true ≫|≪false ≫>であり、コマンドラ
イン構文法は≪-w≫ <≪t≫|≪f≫> である。
【0394】(説明)。ウインドウ構成属性は、これが
存在するならばウインドウ環境の利益を得るようにシナ
リオドライバが試みるべきであるか否かを決定する。値
が真であり、DISPLAY環境変数がセツトされる
と、シナリオドライバがそのausobjlistのメンバーを実
行し、これにより新しいシナリオドライバを開始するご
とに、異なるウインドウの新しいシナリオドライバを開
始しようと試みる。
存在するならばウインドウ環境の利益を得るようにシナ
リオドライバが試みるべきであるか否かを決定する。値
が真であり、DISPLAY環境変数がセツトされる
と、シナリオドライバがそのausobjlistのメンバーを実
行し、これにより新しいシナリオドライバを開始するご
とに、異なるウインドウの新しいシナリオドライバを開
始しようと試みる。
【0395】(ユーザ定義属性)
【0396】ユーザ定義属性をこの試験用足場内のいず
れのレベルにおいても指定することができる。これらの
属性は一段と低レベルによつて機械レベルから下方に受
け継がれる。これらの属性はシナリオドライバ属性では
ないシナリオインスタンスフアイル内に識別子を配置
し、次にこれに1つの値を与えることによつて指定され
る。ドライバの1つが構成フアイル内でユーザ定義属性
に遭遇すると、このドライバはユーザ定義属性を単に環
境に置き、従つてこれは実行されたいずれかの子プロセ
スに継承される。
れのレベルにおいても指定することができる。これらの
属性は一段と低レベルによつて機械レベルから下方に受
け継がれる。これらの属性はシナリオドライバ属性では
ないシナリオインスタンスフアイル内に識別子を配置
し、次にこれに1つの値を与えることによつて指定され
る。ドライバの1つが構成フアイル内でユーザ定義属性
に遭遇すると、このドライバはユーザ定義属性を単に環
境に置き、従つてこれは実行されたいずれかの子プロセ
スに継承される。
【0397】ユーザ定義属性の概念は情報をユーザタス
クコードに送る場合にタスクインスタンスシナリオフア
イルレベルで特に有用である。上述したように、ユーザ
定義属性の内容はシナリオ構築ツールによつて厳密に制
御することができるが、これは、このユーザ定義属性が
シナリオを定義するステージの間に定義され、形式及び
オプシヨン又は要求されたフラグを与えられなければな
らないからである。またユーザ定義属性は制限及びデフ
オルト値を有するように定義することができる。タスク
レベルでユーザ定義属性を使用する以外に、これらの属
性はすべての他のレベルで完全に有効である。この能力
によつてユーザ定義属性を個人シナリオレベルで1回だ
け指定することができ、次に個人シナリオを構築する各
タスクシナリオによつて使用することができる。
クコードに送る場合にタスクインスタンスシナリオフア
イルレベルで特に有用である。上述したように、ユーザ
定義属性の内容はシナリオ構築ツールによつて厳密に制
御することができるが、これは、このユーザ定義属性が
シナリオを定義するステージの間に定義され、形式及び
オプシヨン又は要求されたフラグを与えられなければな
らないからである。またユーザ定義属性は制限及びデフ
オルト値を有するように定義することができる。タスク
レベルでユーザ定義属性を使用する以外に、これらの属
性はすべての他のレベルで完全に有効である。この能力
によつてユーザ定義属性を個人シナリオレベルで1回だ
け指定することができ、次に個人シナリオを構築する各
タスクシナリオによつて使用することができる。
【0398】機械シナリオ全体はスケ−ルフアクタ(SC
ALEFACTOR )のような環境変数を使用してこの機械シナ
リオを構築しているすべてのタスクシナリオが実行され
ている場合のストレスのレベルを判定することができ
る。
ALEFACTOR )のような環境変数を使用してこの機械シナ
リオを構築しているすべてのタスクシナリオが実行され
ている場合のストレスのレベルを判定することができ
る。
【0399】(属性の概要)
【0400】次表(30)はドライバ属性の完全なセツ
トとこれらの属性が有効であるレベルとを示す。灰色は
特定の属性が所定のシナリオレベルで有効であることを
表し、一方黒色はこれが有効でないことを表す。また有
効な属性はREQUIREDされることができ、従つて所与のレ
ベルで特定されなければならない。幾つかの属性は所与
のドライバレベルで有効であるが、これらの属性の値を
次のシナリオに引き渡す以外は何も行わない(これらの
属性を矢印で表す)。
トとこれらの属性が有効であるレベルとを示す。灰色は
特定の属性が所定のシナリオレベルで有効であることを
表し、一方黒色はこれが有効でないことを表す。また有
効な属性はREQUIREDされることができ、従つて所与のレ
ベルで特定されなければならない。幾つかの属性は所与
のドライバレベルで有効であるが、これらの属性の値を
次のシナリオに引き渡す以外は何も行わない(これらの
属性を矢印で表す)。
【0401】(予約済属性の概要情報)
【0402】
【表30】
【0403】以下は、シナリオドライバがそのシナリオ
レベルとは関係なく実行するシーケンスである。
レベルとは関係なく実行するシーケンスである。
【0404】(1)必要な内部初期化をすべて実行す
る。(2)必要であれば一時的ジヤーナルフアイルを作
成する。(3)コマンドラインを分析する。(4)
「h」フラグが見つかり、インスタンスフアイルが存在
しない場合、シナリオドライバに詳細な援助を与える。
(5)インスタンスの属性を読み取る。(6)インスタ
ンスの予約済属性の有効性を検査する。(7)インスタ
ンスフアイル内で見つけたすべてのユーザ定義属性を環
境内に配置する。(8)現在のレベルについてシナリオ
ドライバ構成属性を決定する。(9)要求されればタス
クに対する援助を示す。(10)存在すれば開始フック
を実行する。(11)これがトツプレベルのシナリオド
ライバであれば、シナリオセツトアツプ機能を実行す
る。(12)必要があれば、ausobjlistに対して必要な
変更を行う。(13)次のレベルを実行する(これはル
ーピングの発生するステツプである)。(14)存在す
れば終了フツクを実行する。(15)実行状態を示すリ
ターンコードによつてこのプロセスを抜ける。
る。(2)必要であれば一時的ジヤーナルフアイルを作
成する。(3)コマンドラインを分析する。(4)
「h」フラグが見つかり、インスタンスフアイルが存在
しない場合、シナリオドライバに詳細な援助を与える。
(5)インスタンスの属性を読み取る。(6)インスタ
ンスの予約済属性の有効性を検査する。(7)インスタ
ンスフアイル内で見つけたすべてのユーザ定義属性を環
境内に配置する。(8)現在のレベルについてシナリオ
ドライバ構成属性を決定する。(9)要求されればタス
クに対する援助を示す。(10)存在すれば開始フック
を実行する。(11)これがトツプレベルのシナリオド
ライバであれば、シナリオセツトアツプ機能を実行す
る。(12)必要があれば、ausobjlistに対して必要な
変更を行う。(13)次のレベルを実行する(これはル
ーピングの発生するステツプである)。(14)存在す
れば終了フツクを実行する。(15)実行状態を示すリ
ターンコードによつてこのプロセスを抜ける。
【0405】(環境シナリオドライバ)
【0406】図20を参照する。ホストのクラスタにつ
いて、自動化したテストの制御が必要である場合、環境
シナリオドライバ230(及び図1のブロツク22内の
符号12)を使用する。環境内のこれらのホストの1つ
は環境サーバとして指定されなければならず、この環境
内の他のホストは環境クライアントとして指定されなけ
ればならない。環境サーバは環境シナリオドライバがこ
れに基づいて実行されるホストであり、環境クライアン
トは機械シナリオドライバがこれに基づいて実行される
ホストである(また注意すべきは、環境サーバは環境ク
ライアントであることができることである)。
いて、自動化したテストの制御が必要である場合、環境
シナリオドライバ230(及び図1のブロツク22内の
符号12)を使用する。環境内のこれらのホストの1つ
は環境サーバとして指定されなければならず、この環境
内の他のホストは環境クライアントとして指定されなけ
ればならない。環境サーバは環境シナリオドライバがこ
れに基づいて実行されるホストであり、環境クライアン
トは機械シナリオドライバがこれに基づいて実行される
ホストである(また注意すべきは、環境サーバは環境ク
ライアントであることができることである)。
【0407】環境シナリオドライバは通信14用の環境
クライアントについて、上述したように、インターネツ
トソケツト及びausdriverdという名前のデーモンに依存
している。この通信方法は、環境クライアントについて
機械シナリオドライバ232の実行を開始し、これらの
機械シナリオドライバが実行を終了すると、これらの機
械ドライバからリターンコードを受け取ることができる
ようにする必要がある。デフオルトデイレクトリ構造及
びRISC System/6000プラツトフオームを仮定すると、以
下のコマンドを使用することによりネツトワーク内の環
境クライアントについてシナリオドライバデーモンを開
始することができる。
クライアントについて、上述したように、インターネツ
トソケツト及びausdriverdという名前のデーモンに依存
している。この通信方法は、環境クライアントについて
機械シナリオドライバ232の実行を開始し、これらの
機械シナリオドライバが実行を終了すると、これらの機
械ドライバからリターンコードを受け取ることができる
ようにする必要がある。デフオルトデイレクトリ構造及
びRISC System/6000プラツトフオームを仮定すると、以
下のコマンドを使用することによりネツトワーク内の環
境クライアントについてシナリオドライバデーモンを開
始することができる。
【0408】# /austin/tools/rsbin/ausdriverd &
【0409】環境シナリオの意図が、同時に行われるxt
ermsの利点を十分活用してX‐Windows でその機械シナ
リオのすべてを実行する場合、ausdriverdデーモンはこ
の環境内に既に設定されているX‐Windows の DISPLAY
環境変数で開始されなければならない。これは幾つかの
方法で行うことができる。
ermsの利点を十分活用してX‐Windows でその機械シナ
リオのすべてを実行する場合、ausdriverdデーモンはこ
の環境内に既に設定されているX‐Windows の DISPLAY
環境変数で開始されなければならない。これは幾つかの
方法で行うことができる。
【0410】まず、X‐Windows を開始すると、 ausdr
iverコマンドをxterm の1つで実行することによつて、
この効果を得ることができるが、これは、X‐Windows
を初期化することによつて DISPLAY環境変数がX‐serv
erに設定されるからである。これは、 ausdriverデーモ
ンがその環境内に DISPLAY環境を有し、変数が正しい値
を有することを保証するのに最も安全な方法である。し
かしながら、自動化することも一段と困難である。
iverコマンドをxterm の1つで実行することによつて、
この効果を得ることができるが、これは、X‐Windows
を初期化することによつて DISPLAY環境変数がX‐serv
erに設定されるからである。これは、 ausdriverデーモ
ンがその環境内に DISPLAY環境を有し、変数が正しい値
を有することを保証するのに最も安全な方法である。し
かしながら、自動化することも一段と困難である。
【0411】X‐serve が常に同じ、例えば、unix:0で
あることが分かつていれば、他の方法を推薦することが
できる。/ etc /rc./ aus という名前のフアイルを作成
してこれに以下のコマンドを置く。
あることが分かつていれば、他の方法を推薦することが
できる。/ etc /rc./ aus という名前のフアイルを作成
してこれに以下のコマンドを置く。
【0412】# DISPLAY=unix:0 ausdriverd &then、/e
tc/inittabフアイル端部に以下のコマンドを加える。
tc/inittabフアイル端部に以下のコマンドを加える。
【0413】rcaus:2:wait:sh /etc/rc.aus
【0414】この結果、 DISPLAY環境変数を所定のX‐
server、unix:0に設定して、ブート時間でausdriverdデ
ーモンが実行される。
server、unix:0に設定して、ブート時間でausdriverdデ
ーモンが実行される。
【0415】環境シナリオドライバのオブジエクトリス
ト(ausobjlist)のインスタンス234は特別の意味を有
する。このインスタンスの名前(上述したように、.m.<
int>の前の)は、このインスタンスがそれに基づいて実
行されようとしている機械のホスト名でなければならな
い。従つて、foobarという名前の機械に基づいて、環境
シナリオドライバ230が機械シナリオ232の実行を
開始するためには、環境シナリオドライバのオブジエク
トリスト(ausobjlist)内のインスタンス234の1つの
名前が「foobar.m.<int>」でなければならない。ここで
<int> は特定のfoobar機械シナリオインスタンス番号で
ある。foobarはfoobar.m.<int>機械シナリオが実行され
るべきホストの名前であると、環境シナリオドライバは
仮定する。
ト(ausobjlist)のインスタンス234は特別の意味を有
する。このインスタンスの名前(上述したように、.m.<
int>の前の)は、このインスタンスがそれに基づいて実
行されようとしている機械のホスト名でなければならな
い。従つて、foobarという名前の機械に基づいて、環境
シナリオドライバ230が機械シナリオ232の実行を
開始するためには、環境シナリオドライバのオブジエク
トリスト(ausobjlist)内のインスタンス234の1つの
名前が「foobar.m.<int>」でなければならない。ここで
<int> は特定のfoobar機械シナリオインスタンス番号で
ある。foobarはfoobar.m.<int>機械シナリオが実行され
るべきホストの名前であると、環境シナリオドライバは
仮定する。
【0416】実行時にフアイルシステムをクラスタ内で
分散することのできる方法は多くある。例えば、1つの
可能性は、フアイルシステム全体をネツトワーク内の各
ホストに配置させることである。他の可能性は、フアイ
ルシステムをネツトワーク内の1つのホストに物理的に
配置させ、次に当分野では周知のように、このフアイル
システムをネツトワークフアイルシステム(NFS)
(又はこれと同等の物)を介してネツトワーク内のすべ
てのホストに分配することである。しかしながらこの分
散を行うと、すべての情報がネツトワーク内のすべての
ホストの同じ位置に存在することが要求される。
分散することのできる方法は多くある。例えば、1つの
可能性は、フアイルシステム全体をネツトワーク内の各
ホストに配置させることである。他の可能性は、フアイ
ルシステムをネツトワーク内の1つのホストに物理的に
配置させ、次に当分野では周知のように、このフアイル
システムをネツトワークフアイルシステム(NFS)
(又はこれと同等の物)を介してネツトワーク内のすべ
てのホストに分配することである。しかしながらこの分
散を行うと、すべての情報がネツトワーク内のすべての
ホストの同じ位置に存在することが要求される。
【0417】環境シナリオドライバは環境シナリオの実
行中に /austin/runtimeデイレクトリ構造が分配される
か否かによつて異なつた動作を実行する。このデイレク
トリ構造が(NFS又はNFSと類似の何か)を介して
分散される場合、シナリオジヤーナルフアイルに環境全
体を書き込む際にいずれかのホスト上でいずれかのシナ
リオドライバが実行されているときは常に、物理的な書
き込みが、/austin/runtime デイレクトリ構造のサーバ
に配置されるフアイルと同じフアイルで発生する。
行中に /austin/runtimeデイレクトリ構造が分配される
か否かによつて異なつた動作を実行する。このデイレク
トリ構造が(NFS又はNFSと類似の何か)を介して
分散される場合、シナリオジヤーナルフアイルに環境全
体を書き込む際にいずれかのホスト上でいずれかのシナ
リオドライバが実行されているときは常に、物理的な書
き込みが、/austin/runtime デイレクトリ構造のサーバ
に配置されるフアイルと同じフアイルで発生する。
【0418】環境シナリオがNFSのような何かによつ
て/austin/runtime デイレクトリ構造を分散する場合、
環境シナリオインスタンスフアイル内の ausdistribute
された予約済属性は真に設定すべきではない。
て/austin/runtime デイレクトリ構造を分散する場合、
環境シナリオインスタンスフアイル内の ausdistribute
された予約済属性は真に設定すべきではない。
【0419】環境シナリオドライバレベルの開始フツク
及び終了フツクを環境シナリオの実行に対する非常に総
合的なピースとして使用することにより、特定の環境に
対してシナリオドライバの実行をカストマイズする。例
えば、開始フツクはタスクの取得、ネツトワークの実
装、ネツトワークの準備の検証、すべてのクライアント
に対するX‐Windows の開始、すべてのクライアントに
対する ausdriverの存在の検証等のような環境設定全体
を自動的に行うスクリプトを走らせることができる。終
了フツクは状態フアイルを集め、報告書を自動的に走ら
せ、ネツトワークの実装を外すことによつて環境をクリ
ーンアツプする等を行うことができる。
及び終了フツクを環境シナリオの実行に対する非常に総
合的なピースとして使用することにより、特定の環境に
対してシナリオドライバの実行をカストマイズする。例
えば、開始フツクはタスクの取得、ネツトワークの実
装、ネツトワークの準備の検証、すべてのクライアント
に対するX‐Windows の開始、すべてのクライアントに
対する ausdriverの存在の検証等のような環境設定全体
を自動的に行うスクリプトを走らせることができる。終
了フツクは状態フアイルを集め、報告書を自動的に走ら
せ、ネツトワークの実装を外すことによつて環境をクリ
ーンアツプする等を行うことができる。
【0420】環境シナリオドライバ230は機械シナリ
オが走つているホストが壊れるか又はネツトワークイン
タフエースが故障する等の何らかの理由で、機械シナリ
オドライバ232と接触ができなくなると、環境シナリ
オドライバは決して終了しない。これは、現在、環境シ
ナリオドライバが待機実行の状態にないからである。環
境シナリオドライバは、機械シナリオドライバが実行を
終了したという言葉をインターネツトソケツト通信媒体
を介して機械シナリオドライバから受け取るまで待機し
続ける。
オが走つているホストが壊れるか又はネツトワークイン
タフエースが故障する等の何らかの理由で、機械シナリ
オドライバ232と接触ができなくなると、環境シナリ
オドライバは決して終了しない。これは、現在、環境シ
ナリオドライバが待機実行の状態にないからである。環
境シナリオドライバは、機械シナリオドライバが実行を
終了したという言葉をインターネツトソケツト通信媒体
を介して機械シナリオドライバから受け取るまで待機し
続ける。
【0421】(機械シナリオドライバ)
【0422】図21を参照する。ホスト上で自動的に複
数の個人シナリオの実行を制御することが適当である場
合には、機械シナリオドライバ(また図1のブロツク2
0の符号12)が使用される。この機械シナリオドライ
バによつて、情報を機械シナリオにグループ化すること
ができ、従つて状態はそのレベルで追跡することがで
き、「機械シナリオ」の成功率について判定することが
できる。
数の個人シナリオの実行を制御することが適当である場
合には、機械シナリオドライバ(また図1のブロツク2
0の符号12)が使用される。この機械シナリオドライ
バによつて、情報を機械シナリオにグループ化すること
ができ、従つて状態はそのレベルで追跡することがで
き、「機械シナリオ」の成功率について判定することが
できる。
【0423】(個人シナリオドライバ)
【0424】図22を参照する。機械上で自動的に複数
のタスクシナリオの実行を制御することが適当である場
合は、個人シナリオドライバ250が使用される。個人
シナリオドライバによつて、タスクをパーソンのような
シナリオにグループ化することができ、従つて状態をこ
のレベルで追跡することができ、「個人シナリオ」の成
功率について判定することができる。
のタスクシナリオの実行を制御することが適当である場
合は、個人シナリオドライバ250が使用される。個人
シナリオドライバによつて、タスクをパーソンのような
シナリオにグループ化することができ、従つて状態をこ
のレベルで追跡することができ、「個人シナリオ」の成
功率について判定することができる。
【0425】ユーザ構成属性が1つの値を有していれ
ば、個人シナリオドライバは別のステツプを実行する。
このような状況では、個人シナリオドライバはユーザ構
成属性の値によつて特定されたユーザアカウントに対し
て「ログイン」をシユミレートする。これによつて、個
人シナリオドライバのレベル以下で走るすべてのタスク
は個人のレベルでユーザが指定したように実際に走るこ
とができる。ユーザ構成属性を変更すれば、ドライバは
ルートの特権を実行することを要求する。ユーザが個人
インスタンス内に割り付けられた属性の aususerによつ
て指定されると、そのユーザのidはシステム上に存在
しなければならない。個人シナリオドライバはそのユー
ザをシステムに自動的に加えることはない。
ば、個人シナリオドライバは別のステツプを実行する。
このような状況では、個人シナリオドライバはユーザ構
成属性の値によつて特定されたユーザアカウントに対し
て「ログイン」をシユミレートする。これによつて、個
人シナリオドライバのレベル以下で走るすべてのタスク
は個人のレベルでユーザが指定したように実際に走るこ
とができる。ユーザ構成属性を変更すれば、ドライバは
ルートの特権を実行することを要求する。ユーザが個人
インスタンス内に割り付けられた属性の aususerによつ
て指定されると、そのユーザのidはシステム上に存在
しなければならない。個人シナリオドライバはそのユー
ザをシステムに自動的に加えることはない。
【0426】(タスクシナリオドライバ)
【0427】図23に示すように、タスクシナリオドラ
イバ260を使用することによりユーザタスクコード6
8を実行する。これによつて、ユーザタスクコード内で
一般的にシナリオ開発者が実行する多くの機能を自動的
に処理することができる。例えば、ループに対する他の
方法、ジヤーナルに記入する他の方法又は独自の作業空
間を作成する他の方法を見つける意味がないので、タス
クシナリオドライバはこれらの設計の詳細すべてを独自
に処理し、従つてユーザのコードを「testing」だけに
集中させることができる。
イバ260を使用することによりユーザタスクコード6
8を実行する。これによつて、ユーザタスクコード内で
一般的にシナリオ開発者が実行する多くの機能を自動的
に処理することができる。例えば、ループに対する他の
方法、ジヤーナルに記入する他の方法又は独自の作業空
間を作成する他の方法を見つける意味がないので、タス
クシナリオドライバはこれらの設計の詳細すべてを独自
に処理し、従つてユーザのコードを「testing」だけに
集中させることができる。
【0428】タスクドライバがユーザのタスクコードの
実行を開始するとき、図24に示すように、タスクドラ
イバは他のシナリオドライバとは異なる幾つかのステツ
プを実行する。主な相違点の1つは、タスクが独自のデ
イレクトリ構造270を作成し、この構造に基づいてこ
のタスクはその作業のすべてを実行することである。こ
のデイレクトリ構造はタスク名、このタスクが実行され
ているホスト名、このタスクのプロセスのid番号及び
このタスクの反復を用いて作成される。シナリオデイレ
クトリの下に作業中という名前の構造のデイレクトリが
見つかる。このタスクデイレクトリの下には、さらに3
つのデイレクトリ、bin 、jour及びworkが作成される
(例えば、図8を参照)。
実行を開始するとき、図24に示すように、タスクドラ
イバは他のシナリオドライバとは異なる幾つかのステツ
プを実行する。主な相違点の1つは、タスクが独自のデ
イレクトリ構造270を作成し、この構造に基づいてこ
のタスクはその作業のすべてを実行することである。こ
のデイレクトリ構造はタスク名、このタスクが実行され
ているホスト名、このタスクのプロセスのid番号及び
このタスクの反復を用いて作成される。シナリオデイレ
クトリの下に作業中という名前の構造のデイレクトリが
見つかる。このタスクデイレクトリの下には、さらに3
つのデイレクトリ、bin 、jour及びworkが作成される
(例えば、図8を参照)。
【0429】タスクコードを実行する前に、タスクドラ
イバはブロツク272でユーザの binデイレクトリにセ
ツトアツプフアイルが存在するか否かを検査する。セツ
トアツプフアイルが存在する場合、タスクシナリオドラ
イバはこれをブロツク274で実行する。このプログラ
ムは実行を継続するためにゼロのリターンコードをタス
クドライバに戻さなければならない。
イバはブロツク272でユーザの binデイレクトリにセ
ツトアツプフアイルが存在するか否かを検査する。セツ
トアツプフアイルが存在する場合、タスクシナリオドラ
イバはこれをブロツク274で実行する。このプログラ
ムは実行を継続するためにゼロのリターンコードをタス
クドライバに戻さなければならない。
【0430】ブロツク276においてユーザのタスクコ
ードを呼び出すとき、最初にAUSBINデイレクトリ内を探
す。ユーザのタスクコードがAUSBINデイレクトリにある
場合、これはそのロケーシヨンから実行され、タスクコ
ードがAUSBINデイレクトリにない場合にはAUSCODEBINデ
イレクトリを探索する。ユーザのタスクコードがAUSCOD
EBINデイレクトリにある場合、これを実行し、ユーザの
タスクコードがAUSCODEBINデイレクトリにない場合は、
エラーが発生される。
ードを呼び出すとき、最初にAUSBINデイレクトリ内を探
す。ユーザのタスクコードがAUSBINデイレクトリにある
場合、これはそのロケーシヨンから実行され、タスクコ
ードがAUSBINデイレクトリにない場合にはAUSCODEBINデ
イレクトリを探索する。ユーザのタスクコードがAUSCOD
EBINデイレクトリにある場合、これを実行し、ユーザの
タスクコードがAUSCODEBINデイレクトリにない場合は、
エラーが発生される。
【0431】ブロツク279においてユーザのタスクコ
ードを実行する前に、タスクシナリオドライバは、ブロ
ツク278においてデイレクトリを実行時タスクデイレ
クトリ構造の作業デイレクトリに変更する。
ードを実行する前に、タスクシナリオドライバは、ブロ
ツク278においてデイレクトリを実行時タスクデイレ
クトリ構造の作業デイレクトリに変更する。
【0432】ユーザのタスクコードが完了すると、ユー
ザのタスクコードがパスしたか又は失敗したか否か及び
aussaveシナリオドライバ属性の値によつて、タスクド
ライバはブロツク280において実行時タスクデイレク
トリ構造を実行時シナリオデイレクトリのパス又は失敗
デイレクトリに移動させる。またタスクシナリオドライ
バはブロツク282において auscompressの値によつて
作業及びパスデイレクトリ内で情報を圧縮する。
ザのタスクコードがパスしたか又は失敗したか否か及び
aussaveシナリオドライバ属性の値によつて、タスクド
ライバはブロツク280において実行時タスクデイレク
トリ構造を実行時シナリオデイレクトリのパス又は失敗
デイレクトリに移動させる。またタスクシナリオドライ
バはブロツク282において auscompressの値によつて
作業及びパスデイレクトリ内で情報を圧縮する。
【0433】(ジヤーナル記入)
【0434】図25を参照する。シナリオドライバ58
は6つのジヤーナルコマンドのセツトを使用することに
よりシナリオジヤーナル62に対して記入を行う。これ
らのコマンドはbegin 、log 、warning 、error 、seve
re及びfinishである。分散環境において、すべてのシナ
リオドライバは同じシナリオジヤーナルフアイル62に
対して同じシナリオログで実行するが、これ以外の場合
には、各機械に対して1つのシナリオジヤーナルフアイ
ルが存在し、この機械上のすべてのシナリオドライバは
各機械に対して記入する。
は6つのジヤーナルコマンドのセツトを使用することに
よりシナリオジヤーナル62に対して記入を行う。これ
らのコマンドはbegin 、log 、warning 、error 、seve
re及びfinishである。分散環境において、すべてのシナ
リオドライバは同じシナリオジヤーナルフアイル62に
対して同じシナリオログで実行するが、これ以外の場合
には、各機械に対して1つのシナリオジヤーナルフアイ
ルが存在し、この機械上のすべてのシナリオドライバは
各機械に対して記入する。
【0435】(X‐Windows 資源のカストマイズ)
【0436】ausdriver_machine 、 ausdriver_perso
n及び ausdriver_taskによつてxtermsを事前保留する
ことによつて、すべての有効な xterm資源を使用してシ
ナリオドライバがこれらのxtermsを実行する方法を変更
することができる。これらの資源を使用しない場合、こ
れらの3つのレベルに対してシナリオドライバが使用す
る xtermは、.Xdefaultsフアイル内のデフオルト xterm
資源である。
n及び ausdriver_taskによつてxtermsを事前保留する
ことによつて、すべての有効な xterm資源を使用してシ
ナリオドライバがこれらのxtermsを実行する方法を変更
することができる。これらの資源を使用しない場合、こ
れらの3つのレベルに対してシナリオドライバが使用す
る xtermは、.Xdefaultsフアイル内のデフオルト xterm
資源である。
【0437】(例)。次表31は、ウインドウズの構成
属性を真に設定して x‐Windows で走らせたときに、機
械、個人及びタスクシナリオドライバのxtermsを制御す
るために使用する資源のサンプルのセツトである。
属性を真に設定して x‐Windows で走らせたときに、機
械、個人及びタスクシナリオドライバのxtermsを制御す
るために使用する資源のサンプルのセツトである。
【0438】
【表31】
【0439】(シナリオジヤーナル)
【0440】図26のシナリオジヤーナルフアイル62
は ASCIIテキストフアイルである。分散形実行時フアイ
ル空間で実行される環境においては、このフアイルは環
境サーバに存在するだけであり、すべてのシナリオドラ
イバはこれに対して記入する。非分散環境においては、
この環境内の各機械に対して1つのシナリオジヤーナル
が存在し、1つの機械上で実行しているすべてのドライ
バはこれらのそれぞれのシナリオジヤーナルに記入す
る。
は ASCIIテキストフアイルである。分散形実行時フアイ
ル空間で実行される環境においては、このフアイルは環
境サーバに存在するだけであり、すべてのシナリオドラ
イバはこれに対して記入する。非分散環境においては、
この環境内の各機械に対して1つのシナリオジヤーナル
が存在し、1つの機械上で実行しているすべてのドライ
バはこれらのそれぞれのシナリオジヤーナルに記入す
る。
【0441】(フオーマツト)
【0442】シナリオジヤーナルフアイルには2つの異
なるレコード形式が存在する。(1)ジヤーナル記入機
能(begin 、log 、warning 、error 及びsevereによつ
て作成されるレコード形式及び(2)シナリオドライバ
終了機能によつて作成されるレコード形式が存在する。
なるレコード形式が存在する。(1)ジヤーナル記入機
能(begin 、log 、warning 、error 及びsevereによつ
て作成されるレコード形式及び(2)シナリオドライバ
終了機能によつて作成されるレコード形式が存在する。
【0443】
【表32】
【0444】終了機能のレコードとの唯一の相違点はフ
イールド13及び14間に他のフイールドが存在し、そ
の上に、終了したオブジエクトのリターンコードが存在
することである。
イールド13及び14間に他のフイールドが存在し、そ
の上に、終了したオブジエクトのリターンコードが存在
することである。
【0445】各フイールドは文字「|」(パイプ文字)
によつて分離される。第1のフイールドの前又は最後の
フイールドの次にはパイプ文字は存在しない。
によつて分離される。第1のフイールドの前又は最後の
フイールドの次にはパイプ文字は存在しない。
【0446】(例)。図27はフアイルclaussen.m.13
00が指示する機械シナリオを走らせることによつて作
成されたシナリオの例を示す。次にこの機械シナリオは
1つの個人シナリオ、shane.p.1 302を実行し、この
個人シナリオは2つのタスクシナリオ、shane.t.1 30
4及びshane2.t.1308を実行し、これらはいずれも符
号306及び310においてそれぞれ失敗した。かくし
て、個人シナリオ及び機械シナリオはそれぞれ符号31
2及び314においてまた失敗した。この特定の例に対
する唯一のジヤーナルのエントリは冗長レベルに起因す
る開始及び終了である。
00が指示する機械シナリオを走らせることによつて作
成されたシナリオの例を示す。次にこの機械シナリオは
1つの個人シナリオ、shane.p.1 302を実行し、この
個人シナリオは2つのタスクシナリオ、shane.t.1 30
4及びshane2.t.1308を実行し、これらはいずれも符
号306及び310においてそれぞれ失敗した。かくし
て、個人シナリオ及び機械シナリオはそれぞれ符号31
2及び314においてまた失敗した。この特定の例に対
する唯一のジヤーナルのエントリは冗長レベルに起因す
る開始及び終了である。
【0447】この標準フオーマツトに基づいて、動作中
の実際のテストとは関係なく、汎用の報告書ジエネレー
タ64(図26)を使用して報告書66(図26)を作
成することができる。
の実際のテストとは関係なく、汎用の報告書ジエネレー
タ64(図26)を使用して報告書66(図26)を作
成することができる。
【0448】(ユーザコードインタフエース)
【0449】図2のAPI70によつて、シナリオドラ
イバ58及びユーザコード68間にインタフエースが設
けられる。このインタフエースは伝統的なAPIすなわ
ちアプリケーシヨンプログラミングインタフエースでは
なく、1組のシステム変数である。これらのシステム変
数はユーザタスクコードを呼び出す前にシナリオドライ
バによつて設定される。ユーザタスクコードはこれらの
変数にアクセスすることによりこのシステムの状態又は
環境を判定することができる。ユーザコードが使用する
ために下記の環境変数を設ける。
イバ58及びユーザコード68間にインタフエースが設
けられる。このインタフエースは伝統的なAPIすなわ
ちアプリケーシヨンプログラミングインタフエースでは
なく、1組のシステム変数である。これらのシステム変
数はユーザタスクコードを呼び出す前にシナリオドライ
バによつて設定される。ユーザタスクコードはこれらの
変数にアクセスすることによりこのシステムの状態又は
環境を判定することができる。ユーザコードが使用する
ために下記の環境変数を設ける。
【0450】(1)AUSCODEDIR
【0451】AUSCODEDIRデイレクトリ構造は、この構造
にユーザのタスクコードを配置する最高レベルの構造で
ある。例えば、タスクadminlの場合、デフオルトによる
このデイレクトリ構造は/austin/tasks/adminlである。
この構造のデフオルトのロケーションはインスタンス属
性auscodedirによつて変更することができる。
にユーザのタスクコードを配置する最高レベルの構造で
ある。例えば、タスクadminlの場合、デフオルトによる
このデイレクトリ構造は/austin/tasks/adminlである。
この構造のデフオルトのロケーションはインスタンス属
性auscodedirによつて変更することができる。
【0452】(2)AUSCODESRC
【0453】AUSCODESRCデイレクトリはAUSCODEDIRデイ
レクトリの下にあるユーザのタスクsrcデイレクトリの
ロケーシヨンである。これを使用して実行時間中にこの
構造内のフアイルを参照することができる。
レクトリの下にあるユーザのタスクsrcデイレクトリの
ロケーシヨンである。これを使用して実行時間中にこの
構造内のフアイルを参照することができる。
【0454】(3)AUSCODEBIN
【0455】AUSCODEBINデイレクトリはAUSCODEDIRデイ
レクトリの下にあるユーザのタスクbinデイレクトリの
ロケーシヨンである。これを使用して実行時間中にこの
構造内のフアイルを参照することができる。
レクトリの下にあるユーザのタスクbinデイレクトリの
ロケーシヨンである。これを使用して実行時間中にこの
構造内のフアイルを参照することができる。
【0456】(4)AUSCODEDAT
【0457】AUSCODEDATデイレクトリはAUSCODEDIRデイ
レクトリの下にあるユーザのタスクdatデイレクトリの
ロケーシヨンである。これを使用して実行時間中にこの
構造内のフアイルを参照することができる。
レクトリの下にあるユーザのタスクdatデイレクトリの
ロケーシヨンである。これを使用して実行時間中にこの
構造内のフアイルを参照することができる。
【0458】(5)AUSCODEDOC
【0459】AUSCODEDOCデイレクトリはAUSCODEDIRデイ
レクトリの下にあるユーザのタスクdocデイレクトリの
ロケーシヨンである。これを使用して実行時間中にこの
構造内のフアイルを参照することができる。
レクトリの下にあるユーザのタスクdocデイレクトリの
ロケーシヨンである。これを使用して実行時間中にこの
構造内のフアイルを参照することができる。
【0460】(6)AUSBIN
【0461】AUSBINデイレクトリ構造は実行時にドライ
バが自動的に作成する構造である。このデイレクトリの
目的は、実行時間中に行う必要があるすべてのソースコ
ードのコンパイルのロケーシヨンを可能にすることであ
るが、これは、 /austin/tasksデイレクトリ構造が実行
時間中だけに読み取られるからである。通常この環境変
数はタスクセツトアツププログラムで使用される。
バが自動的に作成する構造である。このデイレクトリの
目的は、実行時間中に行う必要があるすべてのソースコ
ードのコンパイルのロケーシヨンを可能にすることであ
るが、これは、 /austin/tasksデイレクトリ構造が実行
時間中だけに読み取られるからである。通常この環境変
数はタスクセツトアツププログラムで使用される。
【0462】(7)AUSLIB
【0463】AUSLIBデイレクトリはCプログラムにリン
クする際に使用されるlibaus.aライブラリのロケーシヨ
ンである。これは、タスクセツトアツプコード又はタス
クコード自身で使用することができる。
クする際に使用されるlibaus.aライブラリのロケーシヨ
ンである。これは、タスクセツトアツプコード又はタス
クコード自身で使用することができる。
【0464】(8)AUSPASS
【0465】AUSPASS変数は、パスしたタスクに対す
る、シナリオの保存デイレクトリ構造を示す。
る、シナリオの保存デイレクトリ構造を示す。
【0466】(8)AUSFAIL
【0467】AUSFAILは、失敗したタスクに対する、シ
ナリオの保存デイレクトリ構造を示す。
ナリオの保存デイレクトリ構造を示す。
【0468】(9)AUSWORKING
【0469】AUSWORKING変数は、進行中のすべてのタス
クを含む、シナリオの作業デイレクトリ構造を示す。
クを含む、シナリオの作業デイレクトリ構造を示す。
【0470】(10)AUSSCENARIO
【0471】AUSSCENARIO変数は、シナリオジヤーナル
フアイル(複数)を含む、シナリオの最高レベルのデイ
レクトリ構造を示す。
フアイル(複数)を含む、シナリオの最高レベルのデイ
レクトリ構造を示す。
【0472】(11)AUSTASK
【0473】AUSTASK変数は実行中の現在のタスクシナ
リオの名前を保持する。
リオの名前を保持する。
【0474】(12)AUSPERSON
【0475】AUSPERSON変数は実行中の現在の個人シナ
リオの名前を保持する。
リオの名前を保持する。
【0476】(13)AUSMACHINE
【0477】AUSMACHINE変数は実行中の現在の機械シナ
リオの名前を保持する。
リオの名前を保持する。
【0478】(14)AUSENVIRONMENT
【0479】AUSENVIRONMENT変数は実行中の現在の環境
シナリオの名前を保持する。
シナリオの名前を保持する。
【0480】(15)AUSTPHIDIR
【0481】AUSTPHIDIR変数はタスクドライバが実行時
間に作成するタスク実行時のデイレクトリ構造のトツプ
を示す。
間に作成するタスク実行時のデイレクトリ構造のトツプ
を示す。
【0482】(16)AUSWORK
【0483】AUSWORK変数は、タスク実行時デイレクト
リ(AUSTPHIDIR)内の作業デイレクトリを示す。これ
は、タスクが実行時間に置かれるデイレクトリである。
リ(AUSTPHIDIR)内の作業デイレクトリを示す。これ
は、タスクが実行時間に置かれるデイレクトリである。
【0484】(17)AUSJOURNAL AUSJOURNAL変数はシナリオジヤーナルフアイルの名前を
保持する。この変数は変更すべきでない。
保持する。この変数は変更すべきでない。
【0485】(ジヤーナルプログラミングインタフエー
ス)
ス)
【0486】標準的なジヤーナル記入プログラミングイ
ンタフエース74(図2)はタスク開発者のために存在
する。このジヤーナル記入インタフエースはCバインデ
イング及びシエルバインデイングの双方を有する4つの
コマンドから構成される。これらのジヤーナル記入コマ
ンドは標準化したジヤーナル72を作成する。標準化ジ
ヤーナルの利点は、その内容を分析することができる1
組の強化した報告書フイルタを有することができる能力
である。注意すべきは、シナリオジヤーナル62はタス
クジヤーナル72と同じ内部フオーマツトを有すること
である。またこのシナリオジヤーナルはタスクジヤーナ
ル72に設けられているのと同じAPIを有している
が、これはユーザタスクと違つてシナリオドライバ58
だけが使用する。
ンタフエース74(図2)はタスク開発者のために存在
する。このジヤーナル記入インタフエースはCバインデ
イング及びシエルバインデイングの双方を有する4つの
コマンドから構成される。これらのジヤーナル記入コマ
ンドは標準化したジヤーナル72を作成する。標準化ジ
ヤーナルの利点は、その内容を分析することができる1
組の強化した報告書フイルタを有することができる能力
である。注意すべきは、シナリオジヤーナル62はタス
クジヤーナル72と同じ内部フオーマツトを有すること
である。またこのシナリオジヤーナルはタスクジヤーナ
ル72に設けられているのと同じAPIを有している
が、これはユーザタスクと違つてシナリオドライバ58
だけが使用する。
【0487】標準ジヤーナル記入プログラミングインタ
フエースは、auslog、auswarning、auserror及びaussev
ere のコマンドから構成される。
フエースは、auslog、auswarning、auserror及びaussev
ere のコマンドから構成される。
【0488】(C言語のバインデイング)
【0489】以下は、C言語のジヤーナル機能の構文法
である。
である。
【0490】void auslog( char *Format [,Value,
...] ) 、void auswarning( char *Format [,Value,
...] ) 、void auserror( char *Format [,Value,
...] ) 、voidaussevere( char *Format [,Value,
...] )
...] ) 、void auswarning( char *Format [,Value,
...] ) 、void auserror( char *Format [,Value,
...] ) 、voidaussevere( char *Format [,Value,
...] )
【0491】これらのコマンドの構文法は、printf()シ
ステム呼出しのコマンドと同じである。これらの各ルー
チンに可変数の引数を通過させることができ、これらの
引数はこのルーチン内で評価される。例えば、下記の方
法でauslog()を呼び出すことができる。
ステム呼出しのコマンドと同じである。これらの各ルー
チンに可変数の引数を通過させることができ、これらの
引数はこのルーチン内で評価される。例えば、下記の方
法でauslog()を呼び出すことができる。
【0492】auslog( “Calling function %s at %
d.”, function_name,time)
d.”, function_name,time)
【0493】タスクコードがC言語で書かれると、これ
は、ライブラリ /austin/tools/rslib/libaus.a.とリン
クすることによつてこれらのジヤーナル記入機能にアク
セスすることができる。
は、ライブラリ /austin/tools/rslib/libaus.a.とリン
クすることによつてこれらのジヤーナル記入機能にアク
セスすることができる。
【0494】(シエル言語のバインデイング)
【0495】auslog <string>、 auswarning <string
>、 auserror <string>及び aussevere <string> は、
ジヤーナル記入コマンド用のシエル言語のバインデイン
グである。
>、 auserror <string>及び aussevere <string> は、
ジヤーナル記入コマンド用のシエル言語のバインデイン
グである。
【0496】これらの機能を使用するには、 tools bin
デイレクトリがPATH環境変数(すなわち、PATH=$PA
TH:austin/tools/rsbin )を使用するシステム経路内に
なければならない。
デイレクトリがPATH環境変数(すなわち、PATH=$PA
TH:austin/tools/rsbin )を使用するシステム経路内に
なければならない。
【0497】(説明)。以下は、4つの各ジヤーナル記
入コマンドの意図した用途の簡単な説明である。
入コマンドの意図した用途の簡単な説明である。
【0498】(1)auslog
【0499】auslogコマンドはエラー条件を示さないジ
ヤーナルエントリをタスクコードに行わせるために設け
られる。基本的にauslogコマンドはデバツグの支援に使
用され、タスクの実行中に実行される動作の追跡に使用
することができる。
ヤーナルエントリをタスクコードに行わせるために設け
られる。基本的にauslogコマンドはデバツグの支援に使
用され、タスクの実行中に実行される動作の追跡に使用
することができる。
【0500】(2)auswarning
【0501】auswarningコマンドは、全体のタスクを失
敗させる程には厳しくないエラー条件を示すジヤーナル
エントリをタスクコードに行わせるために設けられる。
基本的にこのauswarningコマンドは予期しない結果を示
すために使用されるが、失敗を是認するのに十分な程重
要ではない。
敗させる程には厳しくないエラー条件を示すジヤーナル
エントリをタスクコードに行わせるために設けられる。
基本的にこのauswarningコマンドは予期しない結果を示
すために使用されるが、失敗を是認するのに十分な程重
要ではない。
【0502】(3)auserror
【0503】auserrorコマンドは、実行中のタスクコー
ドを失敗させるすべてのエラー条件を示すジヤーナルエ
ントリをタスクコードに行わせるために設けられる。こ
のauserrorコマンドを使用して予期しない結果を指示
し、この予期しない結果の大きさがタスクを失敗させる
べきであるが、このタスクの連続した実行を中断すべき
ではない。
ドを失敗させるすべてのエラー条件を示すジヤーナルエ
ントリをタスクコードに行わせるために設けられる。こ
のauserrorコマンドを使用して予期しない結果を指示
し、この予期しない結果の大きさがタスクを失敗させる
べきであるが、このタスクの連続した実行を中断すべき
ではない。
【0504】(4)aussevere
【0505】aussevereコマンドは、実行中のタスクコ
ードを失敗させるエラー条件を示すジヤーナルエントリ
をタスクコードに行わせるために設けられる。この aus
severeコマンドを使用して予期しない結果を指示し、こ
の予期しない結果の大きさがタスクを失敗させるべきで
あり、かつタスクの実行を中断すべきである。一般的に
終了コマンド又はリターンコマンドはタスクコード内の
aussevereコマンドに従う。
ードを失敗させるエラー条件を示すジヤーナルエントリ
をタスクコードに行わせるために設けられる。この aus
severeコマンドを使用して予期しない結果を指示し、こ
の予期しない結果の大きさがタスクを失敗させるべきで
あり、かつタスクの実行を中断すべきである。一般的に
終了コマンド又はリターンコマンドはタスクコード内の
aussevereコマンドに従う。
【0506】(開始フツク及び終了フツク)
【0507】開始フツク及び終了フツクはドライバによ
つて実行される。これらは、図1のユーザコードジヤー
ナルプログラミングインタフエース74にアクセスす
る。開始及び終了フツクのためのジヤーナルエントリ
は、タスクジヤーナルフアイルの代わりにシナリオジヤ
ーナルフアイルにログされる。これは、タスクジヤーナ
ル72の代わりにシナリオジヤーナル62に記入を行う
唯一のユーザコードである。注意すべきは、冗長レベル
は、これがタスクジヤーナルのエントリに影響を及ぼす
のとは異なる方法でシナリオジヤーナルエントリに影響
を及ぼす。
つて実行される。これらは、図1のユーザコードジヤー
ナルプログラミングインタフエース74にアクセスす
る。開始及び終了フツクのためのジヤーナルエントリ
は、タスクジヤーナルフアイルの代わりにシナリオジヤ
ーナルフアイルにログされる。これは、タスクジヤーナ
ル72の代わりにシナリオジヤーナル62に記入を行う
唯一のユーザコードである。注意すべきは、冗長レベル
は、これがタスクジヤーナルのエントリに影響を及ぼす
のとは異なる方法でシナリオジヤーナルエントリに影響
を及ぼす。
【0508】ドライバは開始フツク及び終了フツクのス
クリプトによつて戻された値を使用することにより前進
すべきか否かを判定する。この値がゼロ以外であると
き、ドライバは実行を中断する。
クリプトによつて戻された値を使用することにより前進
すべきか否かを判定する。この値がゼロ以外であると
き、ドライバは実行を中断する。
【0509】機械シナリオドライバレベルで開始フツク
及び終了フツクを使用することにより、機械シナリオの
実行中に特定のホストのシステム資源を監視し、かつ特
定の機械シナリオに特有の他の特定のセツトアツプ項目
及びクリーンアツプ項目を監視することができるスクリ
プトの実行を開始及び中断することができる。また機械
シナリオレベルでの開始フツク及び終了フツクはいずれ
かのユーザとして実行することができる特定のタスクの
セツトアツプステツプを実行する優れた位置であるが、
あるセツトアツプとクリーンアツプとを実行するにはあ
る最小のルートのユーザ権限を必要とする。これは、通
常機械シナリオドライバがルートの権限によつて走り、
タスクシナリオドライバは恐らくこれによつて動作して
いないからである。
及び終了フツクを使用することにより、機械シナリオの
実行中に特定のホストのシステム資源を監視し、かつ特
定の機械シナリオに特有の他の特定のセツトアツプ項目
及びクリーンアツプ項目を監視することができるスクリ
プトの実行を開始及び中断することができる。また機械
シナリオレベルでの開始フツク及び終了フツクはいずれ
かのユーザとして実行することができる特定のタスクの
セツトアツプステツプを実行する優れた位置であるが、
あるセツトアツプとクリーンアツプとを実行するにはあ
る最小のルートのユーザ権限を必要とする。これは、通
常機械シナリオドライバがルートの権限によつて走り、
タスクシナリオドライバは恐らくこれによつて動作して
いないからである。
【0510】(タスク)
【0511】ユーザのタスクコードは、上述したよう
に、4つのユーザコードジヤーナルプログラミングコマ
ンドを使用して標準のタスクジヤーナルにログすること
ができる。前に述べた環境変数は、タスクコードが処理
する必要があるすべてのフアイルを配置させるために使
用することができる。タスクコードがタスクドライバに
リターンコードを戻してこれがパスしたか失敗かを指示
することが義務づけられている。値がゼロであると成功
を示し、これ以外のすべての値は失敗を示す。次にタス
クドライバはこのパス又は失敗の値をシナリオジヤーナ
ルに対して記入する。
に、4つのユーザコードジヤーナルプログラミングコマ
ンドを使用して標準のタスクジヤーナルにログすること
ができる。前に述べた環境変数は、タスクコードが処理
する必要があるすべてのフアイルを配置させるために使
用することができる。タスクコードがタスクドライバに
リターンコードを戻してこれがパスしたか失敗かを指示
することが義務づけられている。値がゼロであると成功
を示し、これ以外のすべての値は失敗を示す。次にタス
クドライバはこのパス又は失敗の値をシナリオジヤーナ
ルに対して記入する。
【0512】タスクセツトアツプコードはそのインタフ
エースに対して実際のタスクコードと非常に類似した動
作を行う。このタスクコードは上述したジヤーナルプロ
グラミングインタフエースにアクセスする。タスクセツ
トアツプコードに対するジヤーナルのエントリはタスク
ジヤーナルにログされる。
エースに対して実際のタスクコードと非常に類似した動
作を行う。このタスクコードは上述したジヤーナルプロ
グラミングインタフエースにアクセスする。タスクセツ
トアツプコードに対するジヤーナルのエントリはタスク
ジヤーナルにログされる。
【0513】タスクコードが実行時間中にソースフオー
マツト内にあるとき、タスクセツトアツプコードの目的
は、そのソースコードをコンパイルし、環境変数AUSBIN
によつて表される2進のコンパイルされたソースコード
用の実行時デイレクトリコードにこのソースコードを置
くことである。
マツト内にあるとき、タスクセツトアツプコードの目的
は、そのソースコードをコンパイルし、環境変数AUSBIN
によつて表される2進のコンパイルされたソースコード
用の実行時デイレクトリコードにこのソースコードを置
くことである。
【0514】セツトアツプフアイルの構文法はストリン
グ「.setup」が後に続くタスクの名前である。これは、
このタスクの binデイレクトリ(環境変数AUSCODEBINで
示す)内になければならない。タスクドライバが走ると
きこのフアイルが存在すれば、このフアイルはタスクコ
ードの実行の前に自動的に実行される。
グ「.setup」が後に続くタスクの名前である。これは、
このタスクの binデイレクトリ(環境変数AUSCODEBINで
示す)内になければならない。タスクドライバが走ると
きこのフアイルが存在すれば、このフアイルはタスクコ
ードの実行の前に自動的に実行される。
【0515】ドライバはタスクセツトアツプコードによ
つて戻された値を使用することにより前進すべきか否か
を判定する。この値がゼロ以外のいずれかの値であれ
ば、ドライバはタスクコードを実行しない。
つて戻された値を使用することにより前進すべきか否か
を判定する。この値がゼロ以外のいずれかの値であれ
ば、ドライバはタスクコードを実行しない。
【0516】タスクヘルプフアイルインタフエースはド
ライバを介するオンライン、ソフトコピー、タスクヘル
プを可能にするために存在する。この形式のヘルプを受
け取るために、 ausdriverコマンドは「h」コマンドラ
インフラグ及びタスクインスタンスフアイルによつて実
行される。このインスタンスフアイルを使用することに
よりタスクヘルプフアイルの予期されるロケーシヨンを
判定し、次にこれをstdoutに送る。
ライバを介するオンライン、ソフトコピー、タスクヘル
プを可能にするために存在する。この形式のヘルプを受
け取るために、 ausdriverコマンドは「h」コマンドラ
インフラグ及びタスクインスタンスフアイルによつて実
行される。このインスタンスフアイルを使用することに
よりタスクヘルプフアイルの予期されるロケーシヨンを
判定し、次にこれをstdoutに送る。
【0517】ヘルプフアイルの構文法は、ストリン
グ「.help 」が後に続くタスクの名前である。これはタ
スクの docデイレクトリ(環境変数AUASCODEDOC によつ
て示す)内になければならない。このフアイルは簡単な
ASCIIフアイルである。特定のヘルプフアイルのフオー
マツトを有することは優れたアイデアであるがこの種の
ヘルプフアイル内の情報はテストを行つている組織によ
つて決まる。
グ「.help 」が後に続くタスクの名前である。これはタ
スクの docデイレクトリ(環境変数AUASCODEDOC によつ
て示す)内になければならない。このフアイルは簡単な
ASCIIフアイルである。特定のヘルプフアイルのフオー
マツトを有することは優れたアイデアであるがこの種の
ヘルプフアイル内の情報はテストを行つている組織によ
つて決まる。
【0518】(タスクジヤーナル)
【0519】タスクジヤーナルフアイルは ASCIIテキス
トフアイルである。シナリオ実行ステージの間にテスト
シナリオで実行されるタスクの各インスタンスと関連す
るタスクジヤーナルフアイルは1つある。
トフアイルである。シナリオ実行ステージの間にテスト
シナリオで実行されるタスクの各インスタンスと関連す
るタスクジヤーナルフアイルは1つある。
【0520】タスクジヤーナルフアイルのすべてのエン
トリは同じレコードフオーマツトを有し、4つのタスク
ジヤーナル記入コマンド、auslog、auswarning、auserr
or、及びaussevere によつて作成される。
トリは同じレコードフオーマツトを有し、4つのタスク
ジヤーナル記入コマンド、auslog、auswarning、auserr
or、及びaussevere によつて作成される。
【0521】タスクジヤーナルのフイールドのフオーマ
ツトは次表(33)の通りである。
ツトは次表(33)の通りである。
【0522】
【表33】
【0523】各フイールドは文字「|」(パイプ文字)
によつて分離されている。第1のフイールドの前又は最
後のフイールドの次にはパイプ文字は存在しない。
によつて分離されている。第1のフイールドの前又は最
後のフイールドの次にはパイプ文字は存在しない。
【0524】図28はタスクジヤーナルフアイルがどの
ようなものであるかを示す1例である。これは、シナリ
オジヤーナルフアイルの例で走つたタスクshane.t.1 か
らの出力である。タスクが走ると、冗長レベルは「7」
に設定された。
ようなものであるかを示す1例である。これは、シナリ
オジヤーナルフアイルの例で走つたタスクshane.t.1 か
らの出力である。タスクが走ると、冗長レベルは「7」
に設定された。
【0525】(報告書フイルタ)
【0526】報告書フイルタ64によつて、異なるレベ
ルでシナリオの簡単な概要が与えられる。ユーザはどの
レベルで報告書ジエネレータが要約を行うかを指定する
ことができる。符号66で報告される情報は、指定され
たレベルの各特定の項目がパスした回数と失敗した回数
と成功の重み付けしないパーセントとである。報告書ジ
エネレータ64は異なる個人シナリオの下で走る同一の
2つのタスクを別のタスクとして報告する。この考え方
は各レベルで行われる。このような報告書ジエネレータ
の実行はシナリオがどのよう実行されているかについて
の高レベルの感触を得るのに有用であるが、実行回数に
基づくパーセントに重み付けしない。例えば、個人シナ
リオが1つのタスクを99回実行し、これが99回の試行す
べてでパスし、他のタスクは1回だけ実行されて失敗す
れば、この個人シナリオは成功率が99〔%〕ではなくて
0〔%〕としてマークされる。現在行われている報告書
では重み付けがないので、この報告書ジエネレータは重
み付けの必要がないタスクレベルだけで使用することを
推奨する。
ルでシナリオの簡単な概要が与えられる。ユーザはどの
レベルで報告書ジエネレータが要約を行うかを指定する
ことができる。符号66で報告される情報は、指定され
たレベルの各特定の項目がパスした回数と失敗した回数
と成功の重み付けしないパーセントとである。報告書ジ
エネレータ64は異なる個人シナリオの下で走る同一の
2つのタスクを別のタスクとして報告する。この考え方
は各レベルで行われる。このような報告書ジエネレータ
の実行はシナリオがどのよう実行されているかについて
の高レベルの感触を得るのに有用であるが、実行回数に
基づくパーセントに重み付けしない。例えば、個人シナ
リオが1つのタスクを99回実行し、これが99回の試行す
べてでパスし、他のタスクは1回だけ実行されて失敗す
れば、この個人シナリオは成功率が99〔%〕ではなくて
0〔%〕としてマークされる。現在行われている報告書
では重み付けがないので、この報告書ジエネレータは重
み付けの必要がないタスクレベルだけで使用することを
推奨する。
【0527】
【表34】
【0528】Ausreportの例を次表(35)に示す。
【0529】
【表35】
【0530】この報告書は個人シナリオを走らせた後に
発生された。この特定の個人シナリオ、pers.p.1は2つ
のタスクインスタンス、try 1.t.2 及びtry2.t.1から構
成される。try.2.t.1 は3回ループしたと報告され、tr
y1.t.2は1回だけループしたと報告された。シナリオジ
ヤーナルフアイルのサイズを小さくするため、冗長度は
0に設定された。図29はこのシナリオの実行時間に作
成されたシナリオジヤーナルフアイルを示す。
発生された。この特定の個人シナリオ、pers.p.1は2つ
のタスクインスタンス、try 1.t.2 及びtry2.t.1から構
成される。try.2.t.1 は3回ループしたと報告され、tr
y1.t.2は1回だけループしたと報告された。シナリオジ
ヤーナルフアイルのサイズを小さくするため、冗長度は
0に設定された。図29はこのシナリオの実行時間に作
成されたシナリオジヤーナルフアイルを示す。
【0531】(ユーテイリテイ)
【0532】(pkユーテイリテイ)
【0533】AIXユーテイリテイpkを使用してデイレク
トリ構造を1つのフアイルに圧縮する。この使用法の構
文は PK <directory> である。
トリ構造を1つのフアイルに圧縮する。この使用法の構
文は PK <directory> である。
【0534】図30に示すように、PKコマンドを使用す
る結果、<directory> で示すデイレクトリ構造320が
得られ、これは AIX tarコマンド322及び AIX圧縮コ
マンド324によつて処理される。このプロセスの結
果、このデイレクトリ構造内のすべてのフアイルは1つ
のフアイルに結合され、次にこのフアイルは圧縮され
る。このフアイルがpkコマンドによつて作成されたこと
を示すため、拡張子 .tar.Z 326を与える。
る結果、<directory> で示すデイレクトリ構造320が
得られ、これは AIX tarコマンド322及び AIX圧縮コ
マンド324によつて処理される。このプロセスの結
果、このデイレクトリ構造内のすべてのフアイルは1つ
のフアイルに結合され、次にこのフアイルは圧縮され
る。このフアイルがpkコマンドによつて作成されたこと
を示すため、拡張子 .tar.Z 326を与える。
【0535】pkコマンドの主な目的は、シナリオデイレ
クトリ構造のパス及びフアイルのデイレクトリ内のタス
クシナリオデイレクトリ構造の圧縮を可能にすることで
ある。pkユーテイリテイを使用する結果、システムデイ
スクの資源に対して一段と最適な記憶構造が得られる。
クトリ構造のパス及びフアイルのデイレクトリ内のタス
クシナリオデイレクトリ構造の圧縮を可能にすることで
ある。pkユーテイリテイを使用する結果、システムデイ
スクの資源に対して一段と最適な記憶構造が得られる。
【0536】(実行後のシナリオデイレクトリ構造の
例)
例)
【0537】図12はengineering.e .1という名前の環
境シナリオの実行によつて作成されるデイレクトリ構造
の1例を示す。この例は、シナリオのパスデイレクトリ
内でどのにようにrcp.t.2 タスクシナリオデイレクトリ
構造を圧縮するかを示す。
境シナリオの実行によつて作成されるデイレクトリ構造
の1例を示す。この例は、シナリオのパスデイレクトリ
内でどのにようにrcp.t.2 タスクシナリオデイレクトリ
構造を圧縮するかを示す。
【0538】
【表36】
【0539】pkコマンドはデイレクトリ構造rcp.t.2.cl
aussen.888.1の圧縮をもたらす。古いデイレクトリ名
は、これらがpkコマンドと共にパツクされたことを示し
ているtar.Z フアイル名拡張子を伴うフアイル名に変更
される。この図12について留意すべき1つの事柄は、
パスデイレクトリ内のrcp.t.1.claussen.999.1.tar.Zフ
アイルが既にpkプロセスを通過していることである。こ
れは、このフアイルがパスすれば、これを実行し、引き
続いてこのフアイルを自動的に圧縮するようにrcp.t.1
t.t.1インスタンスフアイルがタスクドライバに命令す
る。新しいデイレクトリ構造を図13に符号187で示
す。
aussen.888.1の圧縮をもたらす。古いデイレクトリ名
は、これらがpkコマンドと共にパツクされたことを示し
ているtar.Z フアイル名拡張子を伴うフアイル名に変更
される。この図12について留意すべき1つの事柄は、
パスデイレクトリ内のrcp.t.1.claussen.999.1.tar.Zフ
アイルが既にpkプロセスを通過していることである。こ
れは、このフアイルがパスすれば、これを実行し、引き
続いてこのフアイルを自動的に圧縮するようにrcp.t.1
t.t.1インスタンスフアイルがタスクドライバに命令す
る。新しいデイレクトリ構造を図13に符号187で示
す。
【0540】(unpkユーテイリテイ)
【0541】ユーテイリテイunpkを使用することにより
pkプロセスを通過したフアイルの圧縮を解除する。この
使用法の構文はunpk< packed_file_name> である。
pkプロセスを通過したフアイルの圧縮を解除する。この
使用法の構文はunpk< packed_file_name> である。
【0542】図31に示すように、unpkコマンドを使用
すると、< packed_file_name> で示すフアイル名32
8が得られ、これはAIX uncompressコマンド330及び
tarコマンド332を介して走る。このプロセスの結
果、フアイルは圧縮されず、次に untarされてデイレク
トリ構造334を作成する。デイレクトリ構造334の
名前は、.tar.Z拡張の付いていない< packed_file_na
me> によつて示される名前である。
すると、< packed_file_name> で示すフアイル名32
8が得られ、これはAIX uncompressコマンド330及び
tarコマンド332を介して走る。このプロセスの結
果、フアイルは圧縮されず、次に untarされてデイレク
トリ構造334を作成する。デイレクトリ構造334の
名前は、.tar.Z拡張の付いていない< packed_file_na
me> によつて示される名前である。
【0543】unpkコマンドの主な目的は、図13に示す
ような以前にパツクされた情報のパツクを外し、これを
検討できるようにすることである。例えば、ドライバが
自動的に検討する必要があるタスクデイレクトリ構造を
自動的にパツクすれば、unpkコマンドを使用することに
よりこれのパツクを外し、その通常のサイズ及び構造に
戻すことができる。
ような以前にパツクされた情報のパツクを外し、これを
検討できるようにすることである。例えば、ドライバが
自動的に検討する必要があるタスクデイレクトリ構造を
自動的にパツクすれば、unpkコマンドを使用することに
よりこれのパツクを外し、その通常のサイズ及び構造に
戻すことができる。
【0544】(実行後のシナリオデイレクトリ構造の
例)
例)
【0545】この例は、シナリオ構造のパスデイレクト
リ内のパツクされたフアイルのうち1つのパツクの取り
外しを示す。
リ内のパツクされたフアイルのうち1つのパツクの取り
外しを示す。
【0546】
【表37】
【0547】このunpkコマンドによつて、図13のrcp.
t.1.claussen.999.1デイレクトリ構造184が復元す
る。図14はunpkコマンドの終了後の構造185を示
す。
t.1.claussen.999.1デイレクトリ構造184が復元す
る。図14はunpkコマンドの終了後の構造185を示
す。
【0548】( ausstatユーテイリテイ)
【0549】ausstatユーテイリテイは、これが標準タ
スクジヤーナルで見つけたauserror及び aussevereのジ
ヤーナルレコードの数を戻す。このユーテイリテイの主
な目的はタスク開発者の失敗率を判定する場合にこれら
のタスク開発者を支援することである。
スクジヤーナルで見つけたauserror及び aussevereのジ
ヤーナルレコードの数を戻す。このユーテイリテイの主
な目的はタスク開発者の失敗率を判定する場合にこれら
のタスク開発者を支援することである。
【0550】ユーザタスクコードがリターンコードをタ
スクドライバに渡すことは義務であるので、この目的の
ためにユーザタスクコードの終端において ausstatコマ
ンドを使用することができる。
スクドライバに渡すことは義務であるので、この目的の
ためにユーザタスクコードの終端において ausstatコマ
ンドを使用することができる。
【0551】ausstatをこの目的のために使用すると
き、これはすべてのauserror及び aussevereレコードを
ジヤーナルフアイル内でカウントするので、予防策を使
用しなければならない。見いだした実際のエラーの数を
表すために ausstatが見つけた数を希望するなら、2つ
のauserrorコマンドを使用して1つのエラーを記述して
はいけない。1つのエラーを記述するために2本以上の
ラインが必要であれば、1つ又は2つ以上の auslogsの
前にあるauserror又は aussevereを使用する。
き、これはすべてのauserror及び aussevereレコードを
ジヤーナルフアイル内でカウントするので、予防策を使
用しなければならない。見いだした実際のエラーの数を
表すために ausstatが見つけた数を希望するなら、2つ
のauserrorコマンドを使用して1つのエラーを記述して
はいけない。1つのエラーを記述するために2本以上の
ラインが必要であれば、1つ又は2つ以上の auslogsの
前にあるauserror又は aussevereを使用する。
【0552】(C言語のインタフエース)
【0553】以下は ausstat機能に対するC言語のイン
タフエースのためのANSI Cプロトタイプの定義である。
タフエースのためのANSI Cプロトタイプの定義である。
【0554】int ausstat( void );
【0555】ユーザタスクコードはライブラリ/austin/
tools/lib/libaus.a. とリンクすることによつて ausat
at機能にアクセスすることができる。
tools/lib/libaus.a. とリンクすることによつて ausat
at機能にアクセスすることができる。
【0556】(例)。以下の例は、C言語で書かれたサ
ンプルタスクで ausstatコマンドをどのように使用する
ことができるかを示す。以下のコードはユーザのタスク
コードの1セクシヨンであり、これは標準のジヤーナル
コマンドを使用し、次に ausstatを使用してジヤーナル
記入されたエラー及び重大エラーの数をタスクシナリオ
ドライバに戻す。
ンプルタスクで ausstatコマンドをどのように使用する
ことができるかを示す。以下のコードはユーザのタスク
コードの1セクシヨンであり、これは標準のジヤーナル
コマンドを使用し、次に ausstatを使用してジヤーナル
記入されたエラー及び重大エラーの数をタスクシナリオ
ドライバに戻す。
【0557】
【表38】
【0558】次表(39)は上述のソースコード内の3
つのテスト機能(test1()、test2()及びtest3())に対す
る成功又は失敗の可能な組合わせを表すマトリツクスで
ある。第4番目のフイールドの値は ausstatが計算した
タスク全体のリターンコードである。
つのテスト機能(test1()、test2()及びtest3())に対す
る成功又は失敗の可能な組合わせを表すマトリツクスで
ある。第4番目のフイールドの値は ausstatが計算した
タスク全体のリターンコードである。
【0559】以前の失敗のためにテストケースが中止さ
れたため、実行しなかつた。
れたため、実行しなかつた。
【0560】(シエル言語インタフエース)
【0561】ausstatコマンドを出すことによつて簡単
に ausstatコマンドのシエルスクリプトインタフエース
を使用する。 ausstatシエルインタフエースはauserror
又はaussevereのジヤーナルエントリの数を2つの方
法、すなわちこの値をstdoutに反映させる方法及びその
リターンコードを適正な値に設定する方法によつて戻
す。
に ausstatコマンドのシエルスクリプトインタフエース
を使用する。 ausstatシエルインタフエースはauserror
又はaussevereのジヤーナルエントリの数を2つの方
法、すなわちこの値をstdoutに反映させる方法及びその
リターンコードを適正な値に設定する方法によつて戻
す。
【0562】次表(40)は上述の例のコードに対応す
るシエル言語である。
るシエル言語である。
【0563】
【表40】
【0564】aussevereに続くラインはauslogであり、
他の aussevereではないことに留意する。これが他の a
ussevereであるとき、タスクは値「1」の代わりに値
「2」を有して存在するが(test1 がパスしたと仮定し
て)、これは、 ausstatが実際の問題ではなく正にジヤ
ーナルレコードを考慮するからである。
他の aussevereではないことに留意する。これが他の a
ussevereであるとき、タスクは値「1」の代わりに値
「2」を有して存在するが(test1 がパスしたと仮定し
て)、これは、 ausstatが実際の問題ではなく正にジヤ
ーナルレコードを考慮するからである。
【0565】最後に、図37はこの多重コンピユータデ
ータ処理システムで使用されるデータ処理システム34
2の好適な実施例を示す。中央処理装置(CPU)51
0はバス512を介して読出し専用メモリ(ROM)5
16、ランダムアクセスメモリ(RAM)514、入出
力(I/O)アダプタ518、通信アダプタ534、ユ
ーザインタフエースアダプタ522及びデイスプレイア
ダプタ536に接続される。I/Oアダプタ518によ
り、データを記憶する不揮発性マス記憶装置520のよ
うな種々の入力/出力装置(例えば、直接アクセス記憶
装置(DASD)、テープ、ホログラフ記憶装置、カー
トリツジ等)にバス512をインタフエースすることが
できる。通信アダプタ534により、バス512と組み
合わせてCPU510から通信ネツトワーク348への
データフローを形成することができる。表示アダプタ5
36により、データ又は他の情報をデイスプレイ装置5
38に表示することができる。ユーザインタフエースア
ダプタ522により、キーボード524、マウス又は指
示装置532、キーパツド526又はスピーカ528の
ような種々のユーザ(個人)入力/出力装置を制御する
ことができる。
ータ処理システムで使用されるデータ処理システム34
2の好適な実施例を示す。中央処理装置(CPU)51
0はバス512を介して読出し専用メモリ(ROM)5
16、ランダムアクセスメモリ(RAM)514、入出
力(I/O)アダプタ518、通信アダプタ534、ユ
ーザインタフエースアダプタ522及びデイスプレイア
ダプタ536に接続される。I/Oアダプタ518によ
り、データを記憶する不揮発性マス記憶装置520のよ
うな種々の入力/出力装置(例えば、直接アクセス記憶
装置(DASD)、テープ、ホログラフ記憶装置、カー
トリツジ等)にバス512をインタフエースすることが
できる。通信アダプタ534により、バス512と組み
合わせてCPU510から通信ネツトワーク348への
データフローを形成することができる。表示アダプタ5
36により、データ又は他の情報をデイスプレイ装置5
38に表示することができる。ユーザインタフエースア
ダプタ522により、キーボード524、マウス又は指
示装置532、キーパツド526又はスピーカ528の
ような種々のユーザ(個人)入力/出力装置を制御する
ことができる。
【0566】このデータ処理システム342は上述した
ようにプロセス間通信を行い、さらに図32に示すよう
な多重コンピユータデータ処理システムで使用すること
ができる。
ようにプロセス間通信を行い、さらに図32に示すよう
な多重コンピユータデータ処理システムで使用すること
ができる。
【0567】上述のように本発明をその最適な実施例に
ついて図示、説明したが、本発明の精神及び範囲から脱
することなく形式及び詳細構成について種々の変更を加
えても良い。
ついて図示、説明したが、本発明の精神及び範囲から脱
することなく形式及び詳細構成について種々の変更を加
えても良い。
【0568】
【発明の効果】上述のように本発明によれば、複数コン
ピユータデータ処理システムによつて単一のシステム意
味規則を作成し、このシステム意味規則を用いてローカ
ルデータプロセツサ及び遠隔データプロセツサの双方に
おける多重プロセツサを呼び出すようにすることによ
り、多数のホストコンピユータシステムを含む大規模な
ネツトワークシステムレベルの統合試験に必要な大規模
試験環境用のフレームワークを提供することができる。
ピユータデータ処理システムによつて単一のシステム意
味規則を作成し、このシステム意味規則を用いてローカ
ルデータプロセツサ及び遠隔データプロセツサの双方に
おける多重プロセツサを呼び出すようにすることによ
り、多数のホストコンピユータシステムを含む大規模な
ネツトワークシステムレベルの統合試験に必要な大規模
試験環境用のフレームワークを提供することができる。
【図1】図1は階層的試験環境のフレームワークを示す
略線図である。
略線図である。
【図2】図2は階層的試験環境のためのアーキテクチヤ
モデルを示すブロツク図である。
モデルを示すブロツク図である。
【図3】図3は直接アクセス記憶装置(DASD)上に
記憶された試験用足場データ構造のトツプレベルのデイ
レクトリを示す略線図である。
記憶された試験用足場データ構造のトツプレベルのデイ
レクトリを示す略線図である。
【図4】図4は標準化した足場ツールを保持する tools
デイレクトリ構造を示す略線図である。
デイレクトリ構造を示す略線図である。
【図5】図5はユーザタスクコードを保持するtaskデイ
レクトリ構造を示す略線図である。
レクトリ構造を示す略線図である。
【図6】図6は特定のユーザタスクの下にあるデイレク
トリ構造を示す略線図である。
トリ構造を示す略線図である。
【図7】図7はシナリオデイレクトリの保持に使用する
runtimeデイレクトリ構造の略線図である。
runtimeデイレクトリ構造の略線図である。
【図8】図8はタスク情報の保持に使用するtaskデイレ
クトリの略線図である。
クトリの略線図である。
【図9】図9はタスク情報の保持に使用するtaskデイレ
クトリの略線図である。
クトリの略線図である。
【図10】図10は複数のシナリオインスタンスに対す
る結果を示す runtimeデイレクトリ構造の略線図であ
る。
る結果を示す runtimeデイレクトリ構造の略線図であ
る。
【図11】図11は複数のタスクに対する結果を示すta
skデイレクトリ構造の略線図である。
skデイレクトリ構造の略線図である。
【図12】図12は複数のタスクに対する結果を示すta
skデイレクトリ構造の略線図である。
skデイレクトリ構造の略線図である。
【図13】図13は複数のタスクに対する結果を示すta
skデイレクトリ構造の略線図である。
skデイレクトリ構造の略線図である。
【図14】図14は複数のタスクに対する結果を示すta
skデイレクトリ構造の略線図である。
skデイレクトリ構造の略線図である。
【図15】図15はシナリオドライバへの入力のための
フアイルの作成に使用されるシナリオ構築ツールの略線
図である。
フアイルの作成に使用されるシナリオ構築ツールの略線
図である。
【図16】図16はシナリオ構築ツールに関するユーザ
対話パネルのサンプルを示す略線図である。
対話パネルのサンプルを示す略線図である。
【図17】図17はタスク管理のためシナリオ構築ツー
ルによつて使用される対話パネルのサンプルを示す略線
図である。
ルによつて使用される対話パネルのサンプルを示す略線
図である。
【図18】図18はインスタンス付加のためシナリオ構
築ツールによつて使用される対話パネルのサンプルを示
す略線図である。
築ツールによつて使用される対話パネルのサンプルを示
す略線図である。
【図19】図19はシナリオドライバとの対話を示す略
線図である。
線図である。
【図20】図20は試験用足場のトツプ階層レベルの環
境シナリオを示す略線図である。
境シナリオを示す略線図である。
【図21】図21は試験用足場の中間階層レベルの機械
シナリオを示す略線図である。
シナリオを示す略線図である。
【図22】図22は試験用足場の、第2の中間レベルの
個人シナリオを示す略線図である。
個人シナリオを示す略線図である。
【図23】図23は試験用足場の下層レベルのタスクシ
ナリオを示す略線図である。
ナリオを示す略線図である。
【図24】図24はタスクドライバの動作の流れを示す
フローチヤートである。
フローチヤートである。
【図25】図25はシナリオジヤーナルを作成するため
の、シナリオドライバの対話を示す略線図である。
の、シナリオドライバの対話を示す略線図である。
【図26】図26は報告書を作成するための、シナリオ
ジヤーナルの対話を示す略線図である。
ジヤーナルの対話を示す略線図である。
【図27】図27はシナリオジヤーナルフアイルのサン
プルを示す略線図である。
プルを示す略線図である。
【図28】図28はタスクジヤーナルフアイルのサンプ
ルを示す略線図である。
ルを示す略線図である。
【図29】図29は表33に示す報告書を作成する際に
使用されるシナリオジヤーナルフアイルを示す略線図で
ある。
使用されるシナリオジヤーナルフアイルを示す略線図で
ある。
【図30】図30はpack(pk)コマンドに対する制御の流
れを示すフローチヤートである。
れを示すフローチヤートである。
【図31】図31はunpack(unpk)コマンドに対する制御
の流れを示すフローチヤートである。
の流れを示すフローチヤートである。
【図32】図32は複数コンピユータデータ処理システ
ムを示す略線図である。
ムを示す略線図である。
【図33】図33は子プロセスを始動する制御の流れを
示すフローチヤートである。
示すフローチヤートである。
【図34】図34はプロセスを登録する制御の流れを示
すフローチヤートである。
すフローチヤートである。
【図35】図35は多重プロセスデータ処理システム内
の2つのシステムの内部状態を示すブロツク図である。
の2つのシステムの内部状態を示すブロツク図である。
【図36】図36は図35に示す2つのシステムの内部
状態に関するクライアントプロセステーブルを示す図表
である。
状態に関するクライアントプロセステーブルを示す図表
である。
【図37】図37は一般的なデータ処理用コンピユータ
のブロツク図である。
のブロツク図である。
10……シナリオドライバの対話アーキテクチヤモデ
ル、12、230、232、240、244、250、
252、260……ドライバ、16……タスクシナリ
オ、18……個人シナリオ、20……機械シナリオ、2
2……環境シナリオ、26……タスクインスタンス、2
8……個人インスタンス、30……機械インスタンス、
32、234……環境インスタンス、50……構成要素
の対話アーキテクチヤモデル、52……シナリオ構築ツ
ール、54……シナリオインスタンスフアイル、56…
…シナリオ定義フアイル、58……シナリオ、60……
シナリオドライバ、62……シナリオジヤーナル、64
……報告書ジエネレータ、66……報告書、68……ユ
ーザタスクコード、70、74……アプリケーシヨンプ
ログラムインタフエース(API)、72……タスクジ
ヤーナル、342……データ処理システム、348……
ネツトワーク、510……中央処理装置(CPU)、5
14……RAM、516……ROM、518……I/O
アダプタ、520……非揮発性マス記憶装置、522…
…ユーザインタフエースアダプタ、524……キーボー
ド、526……キーパツド、528……スピーカ、53
2……指示装置、534……通信アダプタ、536……
表示アダプタ、538……デイスプレイ装置。
ル、12、230、232、240、244、250、
252、260……ドライバ、16……タスクシナリ
オ、18……個人シナリオ、20……機械シナリオ、2
2……環境シナリオ、26……タスクインスタンス、2
8……個人インスタンス、30……機械インスタンス、
32、234……環境インスタンス、50……構成要素
の対話アーキテクチヤモデル、52……シナリオ構築ツ
ール、54……シナリオインスタンスフアイル、56…
…シナリオ定義フアイル、58……シナリオ、60……
シナリオドライバ、62……シナリオジヤーナル、64
……報告書ジエネレータ、66……報告書、68……ユ
ーザタスクコード、70、74……アプリケーシヨンプ
ログラムインタフエース(API)、72……タスクジ
ヤーナル、342……データ処理システム、348……
ネツトワーク、510……中央処理装置(CPU)、5
14……RAM、516……ROM、518……I/O
アダプタ、520……非揮発性マス記憶装置、522…
…ユーザインタフエースアダプタ、524……キーボー
ド、526……キーパツド、528……スピーカ、53
2……指示装置、534……通信アダプタ、536……
表示アダプタ、538……デイスプレイ装置。
【表39】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 クリストフア・シエーン・クラウゼン アメリカ合衆国、テキサス州78758、オー ステイン、#2322、ウエルズ・ブランチ・ パークウエイ 1801番地 (72)発明者 ジエームズ・オテイス・コツクス アメリカ合衆国、テキサス州78750、オー ステイン、スプリツト・レール・パークウ エイ 12526番地
Claims (6)
- 【請求項1】複数コンピユータデータ処理システムにお
ける多重プロセスを呼び出す方法において、 上記複数コンピユータデータ処理システムによつて単一
のシステム意味規則を作成するステツプと、 上記単一のシステム意味規則を用いることによりローカ
ルデータプロセツサ及び遠隔データプロセツサの双方に
上記多重プロセスを呼び出すステツプとを含むことを特
徴とするデータ処理方法。 - 【請求項2】複数コンピユータデータ処理システムにお
ける多重プロセスを管理する方法において、 コンピユータ上で実行するプロセスのために上記コンピ
ユータの機械名を固有のプロセス識別コード(ID)と
結び付けることにより複数コンピユータの固有のプロセ
ス識別コード(ID)を作成するステツプと、 上記複数コンピユータの固有のプロセス識別コード(I
D)を用いることにより上記複数コンピユータデータ処
理システムにおける多重プロセスを制御するステツプと
を含むことを特徴とするデータ処理方法。 - 【請求項3】分散データ処理システムにおけるプロセス
間通信に透過性を提供する方法において、 ローカルプロセツサにおいて、遠隔プロセツサ上に存在
する遠隔プロセスの実行を初期化するステツプと、 上記遠隔プロセスを登録することによりアクセス情報を
動的に提供するステツプとを含むことを特徴とするデー
タ処理方法。 - 【請求項4】複数コンピユータデータ処理システムにお
ける多重プロセスを呼び出すシステムにおいて、 ローカルデータプロセツサと、 遠隔データプロセツサと、 単一のシステム意味規則を用いることによりローカルデ
ータプロセツサ及び遠隔データプロセツサの双方におけ
る上記多重プロセスを呼び出す手段とを具えることを特
徴とするデータ処理システム。 - 【請求項5】複数コンピユータデータ処理システムにお
ける多重プロセスを管理するシステムにおいて、 コンピユータ上で実行するプロセスのために上記コンピ
ユータの機械名を固有のプロセス識別コード(ID)と
結び付けることにより複数コンピユータの固有のプロセ
ス識別コード(ID)を作成する手段と、 上記複数コンピユータの固有のプロセス識別コード(I
D)を用いることにより上記複数コンピユータデータ処
理システムにおける多重プロセスを制御する手段とを具
えることを特徴とするデータ処理システム。 - 【請求項6】分散データ処理システムにおけるプロセス
間通信に透過性を提供するシステムにおいて、 ローカルプロセツサにおいて、遠隔プロセツサ上に存在
する遠隔プロセスの実行を初期化する手段と、 上記遠隔プロセスを登録することによりアクセス情報を
動的に提供する手段とを具えることを特徴とするデータ
処理システム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US95033192A | 1992-09-24 | 1992-09-24 | |
| US07/950331 | 1992-09-24 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH06295290A true JPH06295290A (ja) | 1994-10-21 |
Family
ID=25490284
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5230914A Pending JPH06295290A (ja) | 1992-09-24 | 1993-08-24 | データ処理システム及びデータ処理方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US5544316A (ja) |
| EP (1) | EP0592080A2 (ja) |
| JP (1) | JPH06295290A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2000253024A (ja) * | 1999-03-03 | 2000-09-14 | Kobe Steel Ltd | 通信システム及び通信装置 |
Families Citing this family (44)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH05173988A (ja) * | 1991-12-26 | 1993-07-13 | Toshiba Corp | 分散処理方式および該分散処理に適用されるトランザクション処理方式 |
| US5715460A (en) * | 1993-06-14 | 1998-02-03 | International Business Machine Corp. | Template based facility for formatting compiler output |
| EP0737922B1 (en) * | 1995-03-22 | 2003-05-14 | Sun Microsystems, Inc. | Method and apparatus for managing computer processes |
| CA2173695A1 (en) * | 1995-04-14 | 1996-10-15 | Panagiotis Kougiouris | Method and system for providing interoperability among processes written to execute on different operating systems |
| EP0752652B1 (en) * | 1995-07-03 | 1998-12-16 | Sun Microsystems, Inc. | System and method for implementing a hierarchical policy for computer system administration |
| US6041362A (en) * | 1995-10-20 | 2000-03-21 | Electronics Data Systems Corporation | Method and system for integrating disparate information technology applications and platforms across an enterprise |
| US6279028B1 (en) * | 1995-12-08 | 2001-08-21 | Silicon Graphics, Inc. | Operating system having a mechanism for handling a group of related processes residing on separate machines |
| US6625641B1 (en) * | 1996-06-03 | 2003-09-23 | Sun Microsystems, Inc. | Method and apparatus for providing client support without installation of server software |
| WO1998003910A1 (en) * | 1996-07-24 | 1998-01-29 | Hewlett-Packard Company | Ordered message reception in a distributed data processing system |
| US6353822B1 (en) * | 1996-08-22 | 2002-03-05 | Massachusetts Institute Of Technology | Program-listing appendix |
| US6038562A (en) * | 1996-09-05 | 2000-03-14 | International Business Machines Corporation | Interface to support state-dependent web applications accessing a relational database |
| US5969718A (en) * | 1996-09-27 | 1999-10-19 | Elsag International N.V. | Method and apparatus for providing a softkey prompted user interface |
| JPH10171701A (ja) * | 1996-12-10 | 1998-06-26 | Fuji Xerox Co Ltd | 手続実行装置及び方法 |
| US6119173A (en) * | 1997-01-27 | 2000-09-12 | Alcatel Usa Sourcing, L.P. | System and method for communications and process management in a distributed telecommunications switch |
| US6286050B1 (en) | 1997-01-27 | 2001-09-04 | Alcatel Usa Sourcing, L.P. | System and method for monitoring and management of telecommunications equipment using enhanced internet access |
| US6330608B1 (en) | 1997-03-31 | 2001-12-11 | Stiles Inventions L.L.C. | Method and system of a computer system for establishing communications between a service provider and a central service factory and registry in a computer system |
| US6298370B1 (en) * | 1997-04-04 | 2001-10-02 | Texas Instruments Incorporated | Computer operating process allocating tasks between first and second processors at run time based upon current processor load |
| US6047332A (en) * | 1997-06-30 | 2000-04-04 | Sun Microsystems, Inc. | Global file system-based system and method for rendering devices on a cluster globally visible |
| US6304912B1 (en) | 1997-07-24 | 2001-10-16 | Fujitsu Limited | Process and apparatus for speeding-up layer-2 and layer-3 routing, and for determining layer-2 reachability, through a plurality of subnetworks |
| US6253257B1 (en) * | 1997-07-31 | 2001-06-26 | Bea Systems, Inc. | Software Interface for dynamic API mapping |
| US6128759A (en) * | 1998-03-20 | 2000-10-03 | Teradyne, Inc. | Flexible test environment for automatic test equipment |
| US6907605B1 (en) * | 1998-05-18 | 2005-06-14 | International Business Machines Corporation | Method and apparatus for providing for notification of task termination |
| US6480877B1 (en) * | 1998-09-02 | 2002-11-12 | Advanced Micro Devices, Inc. | Orphan computer process identification |
| US6195682B1 (en) | 1998-10-27 | 2001-02-27 | International Business Machines Corporation | Concurrent server and method of operation having client-server affinity using exchanged client and server keys |
| US6704806B1 (en) * | 1999-05-27 | 2004-03-09 | Computer Associates Think, Inc. | Method and device for monitoring the creation and destruction of child processes within an application executing in a computer system |
| US7127471B1 (en) * | 1999-07-26 | 2006-10-24 | Microsoft Corporation | Automatic pruning of orphaned objects from directory services and other databases |
| WO2001013257A1 (en) * | 1999-08-17 | 2001-02-22 | Bullant Technology Pty. Ltd. | A distributed system for computer interaction |
| NO311656B1 (no) * | 1999-11-25 | 2001-12-27 | Ericsson Telefon Ab L M | Kommunikasjon mellom prosesser som kjörer på forskjellige prosessorer ved bruk av s¶rskilte kommunikasjonsprosesser |
| US6829769B2 (en) * | 2000-10-04 | 2004-12-07 | Microsoft Corporation | High performance interprocess communication |
| US20020091612A1 (en) * | 2000-12-21 | 2002-07-11 | International Business Machines Corporation | Method, system, and business method for providing a marketplace for computing capacity in a network |
| US7213175B2 (en) * | 2002-01-09 | 2007-05-01 | Microsoft Corporation | Methods and systems for managing an application's relationship to its run-time environment |
| EP1532782B1 (en) | 2002-07-29 | 2007-08-29 | Research In Motion Limited | System and method of mimetic messaging settings selection |
| WO2004036851A2 (en) * | 2002-10-18 | 2004-04-29 | Research In Motion Limited | Message settings selection |
| US7310724B2 (en) * | 2003-06-30 | 2007-12-18 | Intel Corporation | Parallel execution of enhanced EFI based BIOS drivers on a multi-processor or hyper-threading enabled platform |
| US7703100B2 (en) * | 2003-07-11 | 2010-04-20 | Computer Associates Think, Inc. | Modified auto remote agent for job scheduling and management applications |
| US9379910B2 (en) * | 2003-07-29 | 2016-06-28 | Blackberry Limited | System and method of mimetic messaging settings selection |
| US20050086667A1 (en) * | 2003-09-30 | 2005-04-21 | Feng Jin | Symmetric Scheduling for parallel execution |
| US7424154B2 (en) * | 2003-11-10 | 2008-09-09 | Microsoft Corporation | Boxed and lined input panel |
| US7454758B2 (en) | 2004-02-05 | 2008-11-18 | Aol Llc, A Delaware Limited Liability Company | Inter-process communication on a computer |
| WO2005114409A2 (en) * | 2004-05-21 | 2005-12-01 | Computer Associates Think, Inc. | System and method for managing a path environment variable |
| US8226477B1 (en) * | 2008-07-23 | 2012-07-24 | Liveops, Inc. | Automatic simulation of call center scenarios |
| US8897134B2 (en) * | 2010-06-25 | 2014-11-25 | Telefonaktiebolaget L M Ericsson (Publ) | Notifying a controller of a change to a packet forwarding configuration of a network element over a communication channel |
| WO2012093496A1 (ja) * | 2011-01-07 | 2012-07-12 | 富士通株式会社 | マルチタスクスケジューリング方法、およびマルチコアプロセッサシステム |
| US9378072B2 (en) | 2014-05-30 | 2016-06-28 | GM Global Technology Operations LLC | Mechanisms and apparatus for embedded controller reconfigurable inter-processor communications |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0298745A (ja) * | 1988-10-04 | 1990-04-11 | Nec Corp | プロセス間通信処理方式 |
Family Cites Families (26)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| FR2253421A5 (ja) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
| US4268905A (en) * | 1978-12-14 | 1981-05-19 | Sperry Rand Corporation | Autonomous fault diagnosis for disk drive using an internal microprocessor |
| US4251858A (en) * | 1979-03-06 | 1981-02-17 | The Boeing Company | Paging, status monitoring and report compiling system for support, maintenance and management of operator-supervised automatic industrial machines |
| US4413318A (en) * | 1980-11-20 | 1983-11-01 | International Business Machines Corporation | Use of nodes to uniquely identify processes |
| US4814979A (en) * | 1981-04-01 | 1989-03-21 | Teradata Corporation | Network to transmit prioritized subtask pockets to dedicated processors |
| US4589068A (en) * | 1983-10-03 | 1986-05-13 | Digital Equipment Corporation | Segmented debugger |
| US4694396A (en) * | 1985-05-06 | 1987-09-15 | Computer X, Inc. | Method of inter-process communication in a distributed data processing system |
| US5047925A (en) * | 1985-05-06 | 1991-09-10 | Motorola, Inc. | Logical ring in a virtual single machine |
| CA1244555A (en) * | 1985-06-17 | 1988-11-08 | Walter H. Schwane | Process transparent multi storage mode data transfer and buffer control |
| US4682330A (en) * | 1985-10-11 | 1987-07-21 | International Business Machines Corporation | Hierarchical test system architecture |
| US4825354A (en) * | 1985-11-12 | 1989-04-25 | American Telephone And Telegraph Company, At&T Bell Laboratories | Method of file access in a distributed processing computer network |
| US5301322A (en) * | 1986-05-23 | 1994-04-05 | Hitachi, Ltd. | System for converting job/process identifiers into processor/process identifiers in transferring data between processes in a multiprocessor system |
| US4780821A (en) * | 1986-07-29 | 1988-10-25 | International Business Machines Corp. | Method for multiple programs management within a network having a server computer and a plurality of remote computers |
| US5062040A (en) * | 1986-12-22 | 1991-10-29 | At&T Bell Laboratories | Handling of notification of asynchronous events by user and stub processes of a distributed process executing on a plurality of processors of a multi-processor system |
| US4914657A (en) * | 1987-04-15 | 1990-04-03 | Allied-Signal Inc. | Operations controller for a fault tolerant multiple node processing system |
| US5067072A (en) * | 1987-11-06 | 1991-11-19 | Visystems, Inc. | Virtual software machine which preprocesses application program to isolate execution dependencies and uses target computer processes to implement the execution dependencies |
| JP2996440B2 (ja) * | 1988-03-18 | 1999-12-27 | 富士通株式会社 | データ処理システムの診断方式 |
| US4914583A (en) * | 1988-04-13 | 1990-04-03 | Motorola, Inc. | Method of indicating processes resident within a cell of a data processing system |
| US5089954A (en) * | 1988-08-08 | 1992-02-18 | Bell Communications Research, Inc. | Method for handling conversational transactions in a distributed processing environment |
| US5025369A (en) * | 1988-08-25 | 1991-06-18 | David Schwartz Enterprises, Inc. | Computer system |
| US5072371A (en) * | 1989-03-01 | 1991-12-10 | The United States Of America As Represented By The United States Department Of Energy | Method for simultaneous overlapped communications between neighboring processors in a multiple |
| US5032979A (en) * | 1990-06-22 | 1991-07-16 | International Business Machines Corporation | Distributed security auditing subsystem for an operating system |
| AU630567B2 (en) * | 1990-07-31 | 1992-10-29 | Digital Equipment Corporation | System and method for emulating a window management environment having a uniform windowing interface |
| EP0546682A3 (en) * | 1991-12-12 | 1993-12-08 | Ibm | Parent class shadowing |
| US5325526A (en) * | 1992-05-12 | 1994-06-28 | Intel Corporation | Task scheduling in a multicomputer system |
| US5307490A (en) * | 1992-08-28 | 1994-04-26 | Tandem Computers, Inc. | Method and system for implementing remote procedure calls in a distributed computer system |
-
1993
- 1993-08-03 EP EP93306119A patent/EP0592080A2/en not_active Withdrawn
- 1993-08-24 JP JP5230914A patent/JPH06295290A/ja active Pending
-
1995
- 1995-06-07 US US08/483,783 patent/US5544316A/en not_active Expired - Fee Related
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0298745A (ja) * | 1988-10-04 | 1990-04-11 | Nec Corp | プロセス間通信処理方式 |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2000253024A (ja) * | 1999-03-03 | 2000-09-14 | Kobe Steel Ltd | 通信システム及び通信装置 |
| US6457079B1 (en) | 1999-03-03 | 2002-09-24 | Kobe Steel, Ltd. | Communication apparatus with means for allocating alternate designation information to each function unit, and communication system with said two communication apparatuses |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0592080A2 (en) | 1994-04-13 |
| US5544316A (en) | 1996-08-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2692775B2 (ja) | 試験環境を提供するシステム並びに試験ケースを駆動する方法及びシステム | |
| JPH06295290A (ja) | データ処理システム及びデータ処理方法 | |
| US10963317B2 (en) | System and method for non-programmatically constructing software solutions | |
| US6829771B1 (en) | Method and apparatus for selectable event dispatching | |
| US5758351A (en) | System and method for the creation and use of surrogate information system objects | |
| US6779177B1 (en) | Mechanism for cross channel multi-server multi-protocol multi-data model thin clients | |
| US6292933B1 (en) | Method and apparatus in a data processing system for systematically serializing complex data structures | |
| CN102656557B (zh) | 自动化企业软件开发 | |
| US7181686B1 (en) | Selecting screens in a GUI using events generated by a set of view controllers | |
| US6564368B1 (en) | System and method for visual application development without programming | |
| US8370811B2 (en) | Modularizing and aspectizing graphical user interface directed test scripts | |
| Li et al. | Effective GUI testing automation: Developing an automated GUI testing tool | |
| US20050086648A1 (en) | Object-based systematic state space exploration of software | |
| US20030149799A1 (en) | System supporting unified event handling in ECMAScript | |
| US20030126586A1 (en) | Organization of test cases | |
| US20040045013A1 (en) | Application integration model for dynamic software component assembly within an application at runtime | |
| JP2004520635A (ja) | 石油会社のモデル資産のアプリケーション・フレームワークを有するオブジェクト指向ソフトウェア・アプリケーション | |
| JPH1173322A (ja) | ソフトウエアコンポーネント解析のための装置及びその方法 | |
| WO2002021269A1 (en) | Software application development | |
| US6862686B1 (en) | Method and apparatus in a data processing system for the separation of role-based permissions specification from its corresponding implementation of its semantic behavior | |
| US20020143784A1 (en) | Method and system for application behavior analysis | |
| Murillo et al. | Distributed Seismic Unix: a tool for seismic data processing | |
| Erkan | Implementation of a monitoring system for distributed programs | |
| Smith | System support for design and development environments | |
| NIST | Reference model for frameworks of software engineering environments |