付録A Directory Server で利用可能なスクリプトのテスト

Red Hat Directory Server には、ストレスや負荷の異なる条件で Directory Server のパフォーマンスを テスト するために使用できるスクリプトが 2 つ用意されています。テストスクリプトは各種環境をシミュレートします。これにより、管理者は設定やマシンの変更を実稼働環境に配置する前に評価できます。

ldclt および rsearch はどちらも /usr/bin ディレクトリーにあります。

A.1. ldclt (負荷ストレステスト)

LDAP クライアントスクリプト (ldclt) は、Directory Server のロードテストを行うために、ユーザー定義のシナリオで、サーバーへの複数のクライアント接続を確立します。クライアント操作には、ディレクトリーの追加、検索、変更、modRDN、削除、LDIF ファイルの生成などの設定操作が含まれます。操作は、ディレクトリーのより現実的な使用環境をシミュレートするために、ランダムなユーザーとしてバインディングとバインディング解除を行い、ランダムなタスクを実行して、操作をランダムに行うことができます。

ldclt ツールは、Directory Server のパフォーマンスを測定するために、継続的に繰り返し実行される操作の完了時間を測定します。複数のスレッドを使用すると、負荷の高い状態でパフォーマンスをテストできます。各テストは、同じタイプの LDAP 操作を実行しますが、異なる設定 (ユーザーの認証情報が異なる、属性タイプやサイズが異なる、ターゲットサブツリーが異なる等) を使用します。

LDAP 操作変数の定義に加えて、管理者はサーバーに特定の負荷を設定するために、スレッドのパフォーマンスを制御できます。

ldclt ツールは、特に自動テストに使用することが意図されているため、複雑なテスト操作に対しても、オプションは広範囲で柔軟で簡単にスクリプト化されます。

注記

ldclt は負荷テストであるため、大量のシステムリソースを使用することに注意してください。このツールは、最低 8MB のメモリーを使用します。スレッドの数、操作のタイプ、およびその他の設定によっては、より多くのメモリーを使用する場合があります。

操作のタイプと、それらの操作に使用されるディレクトリーデータに応じて、ldclt は独自のリソース制限を設定する可能性があります。システムリソース制限の管理の詳細は、ulimit および getrlimit の man ページを参照してください。

ldclt ユーティリティーは、/usr/bin ディレクトリーにあります。

A.1.1. 構文

ldlt-q-Q-v-V-Emax_errors-bbase_DN-hhost-pport-ttimeout-Dbind_DN-wpassword-oSASL_options-eexecution_params-amax_pending-nnumber_of_threads-iinactivity_times-Nnumber_of_samples-Ierror_code-Ttotal_number_of_operations-rlow_range-Rhigh_range-ffilter-sscope-Sconsumer-Psupplier_port-Wwait_time-Zcertificate_file

A.1.2. ldclt オプション

表A.1 ldclt オプション

オプション説明

-a max_pending_ops

定義された最大保留操作数で、ツールを非同期モードで実行します。

-b base_dn

LDAP 操作テストの実行に使用するベース DN を指定します。指定しないと、デフォルト値は dc=example,dc=com になります。

-D bind_dn

サーバーへの接続に使用する ldclt ユーティリティーのバインド DN を指定します。

-E max_errors

ツールの終了までに、テスト LDAP 操作で許容されるエラー発生の最大数を設定します。デフォルトは 1000 です。

-e execution_params

テストに使用する操作のタイプおよび他のテスト環境パラメーターを指定します。-e の可能な値は、表A.2「実行パラメーター」 にリスト表示されています。このオプションには、コンマ区切りリストで複数の値を指定できます。

-f filter

検索テストに使用する LDAP 検索フィルターを指定します。

-h

テストを実行する Directory Server のホスト名または IP アドレスを指定します。ホストが指定されていない場合、ldclt はローカルホストを使用します。

-I error_code

特定のレスポンスコードにマッチするエラーが発生した場合に無視するように ldclt に指示します。たとえば、-I 89 は、エラーコード 89 を無視するようにサーバーに指示します。

-i inactivity_times

終了するまでにツールが非アクティブでいられる間隔を設定します。デフォルトでは、この設定は 3 で、これは 30 秒 (各操作の間隔が 10 秒) と解釈されます。

-N number_of_samples

実行する反復回数を設定します (10 秒間のテストを実行する回数)。デフォルトでは、この設定は無制限で、ツールは手動で停止した場合にのみ終了します。

-n number_of_threads

操作に対して同時に実行するスレッドの数を設定します。デフォルト値は 10 です。

-o SASL_option

SASL を使用してサーバーに接続するようにツールに指示し、使用する SASL メカニズムを指定します。形式は -o saslOption=value です。saslOption は、次の 6 つの値のいずれかになります。

* mech: SASL 認証メカニズム

* authid: サーバーにバインドしているユーザー (Kerberos プリンシパル)

* authzid: プロキシー認可 (プロキシー認可はサポートされていないため、サーバーによって無視されます)

* secProp: セキュリティープロパティー

* realm: Kerberos レルム

* flags

想定される値は、サポートされるメカニズムによって異なります。-o を複数回使用して、メカニズムに必要なすべての SASL 情報を渡すことができます。以下に例を示します。

[literal,subs="+quotes,verbatim"] …​. -o "mech=DIGEST-MD5" -o "authzid=test_user" -o "authid=test_user" …​.

-P supplier_port

レプリケーションテストのためにサプライヤーサーバーに接続するのに使用するポートを指定します。指定されていない場合のデフォルトは 16000 です。

-p port

テストしている Directory Server インスタンスのサーバーポート番号を指定します。

-Q

ツールをスーパー quiet モードで実行します。これは、ldclt が実行する操作で発生したエラーを無視します。

-q

ツールを quiet モードで実行します。

-R number

範囲の上限の数値を設定します。

-r number

範囲の下限の数値を設定します。

-S consumer_name

レプリケーションテストを実行するために接続するコンシューマーサーバーのホスト名を指定します。

-s scope

検索条件を指定します。ldapsearch と同様に、値は subtree、one、または base に設定することができます。

-T ops_per_thread

1 スレッドで許容される最大操作数を設定します。

-t timeout

LDAP 操作のタイムアウト期間を設定します。デフォルトは 30 秒です。

-V

ツールを高冗長モードで実行します。

-v

ツールを冗長モードで実行します。

-W wait_time

1 つの操作の終了後に次の操作を開始するまで ldclt ツールが待機する時間を秒単位で設定します。デフォルトは 0 で、待機時間がないことを意味します。

-w password

テストのために Directory Server にバインドする際に、-D アイデンティティーで使用するパスワードを指定します。

-Z /path/to/cert.db

テスト接続用に TLS を有効にし、証明書データベースとして使用するファイルを参照します。

-e オプションは、ldclt テスト操作の実行パラメーターを設定します。複数のパラメーターをコンマ区切りリストで設定できます。以下に例を示します。

-e add,bindeach,genldif=/var/lib/dirsrv/slapd-instance/ldif/generated.ldif,inetOrgPerson

表A.2 実行パラメーター

パラメーター説明

abandon

非同期検索リクエストについて破棄操作を開始します。

add

ディレクトリーにエントリーを追加します (ldapadd)。

append

genldif オプションで生成された LDIF ファイルの最後にエントリーを追加します。

ascii

ASCII 7 ビットの文字列を生成します。

attreplace=name:mask

既存のエントリーの属性 (name) を置き換える変更操作を実行します。

attrlist=name:name:name

検索操作で返す属性のリストを指定します。

attrsonly=#

検索操作で使用して、属性値を読み取るかどうかを設定します。設定できる値は 0 (値を読み取る) または 1(値を読み取らない) です。

bindeach

ldclt ツールに対し、試行する各操作とバインドするように指示します。

bindonly

ldclt ツールに対し、バインド/バインド解除操作のみを実行するように指示します。他の操作は実行されません。

close

バインド解除操作を実行するのではなく、接続を終了するようにツールに指示します。

cltcertname=name

TLS 接続に使用する TLS クライアント証明書の名前を指定します。

commoncounter

ldclt ツールにより開いたすべてのスレッドが同じカウンターを共有します。

counteach

ツールに対し、成功した操作だけでなく、各操作をカウントするように指示します。

delete

削除操作を開始します。

deref

検索操作 (esearch) に間接参照制御を追加します。adds で、これは ldclt に、新しいエントリーに secretary 属性を追加するよう指示し、間接参照を許可します。

dontsleeponserverdown

サーバーが停止すると、ツールのループが非常に高速になります。

emailPerson

これにより、emailPerson オブジェクトクラスが生成されたエントリーに追加されます。これは add 操作でのみ有効です (-e add)。

esearch

完全一致の検索を実行します。

genldif=filename

操作で使用する LDIF ファイルを生成します。

imagesdir=path

テストで使用するイメージの場所を指定します。

incr

増分値を有効にします。

inetOrgPerson

これにより、inetOrgPerson オブジェクトクラスが生成されたエントリーに追加されます。これは add 操作でのみ有効です (-e add)。

keydbfile=file

TLS 接続で使用するキーデータベースのパスおよびファイル名を含めます。

keydbpin=password

キーデータベースにアクセスするためのトークンパスワードを含めます。

noglobalstats

定期的なグローバル統計値を 出力しない ようにツールに指示します。

noloop

増分数をループしません。

object=filename

入力ファイルからエントリーオブジェクトを作成します。

person

これにより、person オブジェクトクラスが生成されたエントリーに追加されます。これは add 操作でのみ有効です (-e add)。

random

ldclt ユーティリティーに、ランダムなフィルターやベース DNS などすべてのランダムな要素を使用するように指示します。

randomattrlist=name:name:name

ldclt ユーティリティーに対して、指定のリストからランダムな属性を選択するように指示します。

randombase

ldclt ユーティリティーに、ディレクトリーからランダムなベース DN を選択するように指示します。

randombaselow=value

乱数ジェネレーターの低い値を設定します。

randombasehigh=value

乱数ジェネレーターの高い値を設定します。

randombinddn

ldclt ユーティリティーに、ランダムなバインド DN を使用するように指示を出します。

randombinddnfromfile=file

ldclt ユーティリティーに対して、ファイルから選択したランダムなバインド DN を使用するように指示します。ファイルの各エントリーには、適切な DN/パスワードのペアが必要です。

randombinddnlow=value

乱数ジェネレーターの低い値を設定します。

randombinddnhigh=value

乱数ジェネレーターの高い値を設定します。

rdn=attrname:value

検索フィルターとして使用する RDN を提供します。これは、-f フィルターの代わりに使用されます。

referral=value

操作の参照動作を設定します。on (参照を許可する)、off (参照を許可しない)、または rebind(再度接続を試みる) の 3 つのオプションを選択できます。

smoothshutdown

ldclt ユーティリティーに、ワーカースレッドが終了するまでメインスレッドをシャットダウンしないように指示します。

string

ldclt ユーティリティーに、ランダムな数値ではなくランダムな文字列を作成するように指示します。

v2

テスト操作に LDAPv2 を使用するように ldclt ユーティリティーに指示します。

withnewparent

modRDN 操作を実行し、エントリーの名前を引数として設定した newparent に変更します。

randomauthid

ランダムな SASL 認証 ID を使用します。

randomauthidlow=value

ランダムな SASL 認証 ID の下限値を設定します。

randomauthidhigh=value

ランダムな SASL 認証 ID の上限値を設定します。

A.1.3. ldclt の結果

ldclt は、指定された数のスレッドで、指定したあらゆる操作を継続的に実行します。デフォルトでは、10 秒間隔でパフォーマンスの統計値を画面に出力します。

結果には、1 スレッドあたりおよび 1 秒あたりの平均操作数と、次にその 10 秒間のウィンドウで実行された操作の合計数が示されます。

ldclt[process_id] Average rate: number_of_ops/thr (number_of_ops/sec), total: total_number_of_ops

以下に例を示します。

ldclt[22774]: Average rate: 10298.20/thr  (15447.30/sec), total: 154473

ldclt は、15 分ごとおよびツールの終了時に、累積の平均と合計を出力します。

ldclt[22774]: Global average rate: 821203.00/thr  (16424.06/sec), total: 12318045
ldclt[22774]: Global number times "no activity" reports: never
ldclt[22774]: Global no error occurs during this session.
Catch SIGINT - exit...
ldclt[22774]: Ending at Wed Feb 24 18:39:38 2010
ldclt[22774]: Exit status 0 - No problem during execution.

一部の操作 (adds など) や、-v-V などの詳細出力オプションを使用して、追加のデータを画面に出力します。情報の種類は操作のタイプによって異なりますが、通常、操作を実行するスレッドと、操作によって呼び出されるプラグインが表示されます。以下に例を示します。

ldclt -b ou=people,dc=example,dc=com -D "cn=Directory Manager" -w secret12 -e add,person,incr,noloop,commoncounter -r90000 -R99999 -f "cn=testXXXXX" -V

...
ldclt[11176]: T002: After ldap_simple_bind_s (cn=Directory Manager, secret12)
ldclt[11176]: T002: incremental mode:filter="cn=test00009"
ldclt[11176]: T002: tttctx->bufFilter="cn=test00009"
ldclt[11176]: T002: attrs[0]=("objectclass" , "person")
ldclt[11176]: T002: attrs[1]=("cn" , "test00009")
ldclt[11176]: T002: attrs[2]=("sn" , "toto sn")
...
ldclt[11176]: Average rate:   195.00/thr  (  195.00/sec), total:    1950
ldclt[10627]: Global average rate:  238.80/thr  (238.80/sec), total:   2388
ldclt[10627]: Global number times "no activity" reports: never
ldclt[10627]: Global no error occurs during this session.
Catch SIGINT - exit...
ldclt[10627]: Ending at Tue Feb 23 11:46:04 2010
ldclt[10627]: Exit status 0 - No problem during execution.

ほとんどのエラーは、テストを中断せずに ldclt により処理されます。発生した致命的なエラーはツールの終了ステータスでリスト表示され、累積合計で返されます。

Global no error occurs during this session.

発生した LDAP 操作エラーはスレッド内で処理されます。接続エラーは、テスト全体に影響を与えることなくスレッドを強制終了します。ldclt ユーティリティーは、各 LDAP エラーが発生する回数をカウントします。記録されるエラーの合計数が 1000(デフォルト) を超える場合、スクリプト自体はエラーになります。

ldclt が LDAP エラーに応答する方法を設定できます。-E オプションを使用して、LDAP エラーの発生後にスクリプトがエラーになる際のしきい値に異なる値を設定します。-I オプションを使用して、全スレッドで指定された LDAP エラーコードを無視するようにスクリプトに指示します。エラーによる終了の上限値を変更し、特定のエラーコードを無視することで、テストスクリプトまたはテスト設定を調整したり、改善したりできます。

A.1.4. ldclt の終了および ldclt 終了コード

ldclt コマンドは無期限に実行されます。このスクリプトは、致命的なランタイムや初期化エラーが発生した、LDAP エラーの上限値に達した、すべてのスレッドの機能が停止した、または操作や時間の制限に達したなど、さまざまな状況で自身を停止できます。

実行の統計値は、スクリプトが終了するか、ユーザーがスクリプトを終了するのいずれかによってコマンドが完了するまで表示されません。ldclt スクリプトを中断する方法は 2 つあります。

  • Ctrl+バックスラッシュ (kbd:[^\]) キーを押すか、kill -3 コマンドを実行すると、スクリプトを終了せずに現在の統計値を表示します。
  • Ctrl+C (^C) キーを押すか、kill -2 コマンドを実行すると、スクリプトを終了してグローバル統計値を出力します。

ldclt スクリプトが終了するか、中断されると、統計値およびエラー情報と共に終了コードが返されます。

表A.3 ldclt 終了コード

終了コード説明

0

成功 (エラーなし)。

1

操作で深刻な致命的なエラーが発生した。

2

ツールで渡されたパラメーターにエラーがあった。

3

ツールが LDAP エラー数の上限に達した。

4

このツールが Directory Server インスタンスにバインドできなかった。

5

このツールが TLS 経由で接続するための TLS ライブラリーを読み込むことができなかった。

6

マルチスレッド (mutex) エラーが発生しました。

7

初期化に問題があった。

8

このツールが、メモリー割り当てエラーなどのリソース制限に達した。

99

スクリプトで不明なエラーが発生した。

A.1.5. 使用方法

ここでは、ldclt を使用して Directory Server をテストする一般的な例を説明します。より複雑な例を含むテストスクリプトは、ldclt ソースファイルにあります。このファイルは、389 Directory Server プロジェクト (https://github.com/389ds/389-ds-base/tree/master/ldap/servers/slapd/tools/ldclt/examples) からダウンロードできます。

すべての ldclt コマンドには、(テストのタイプによって異なる) 実行パラメーターと (すべての操作タイプで同じ) 接続パラメーターのセットが必要です。以下に例を示します。

# ldclt -e execution_parameters -h localhost -p 389 -D "cn=Directory Manager" -w secret -b "ou=people,dc=example,dc=com"

ldclt を実行すると、まずそのテスト用に設定されたすべてのパラメーターを出力します。

Process ID         = 1464
Host to connect    = localhost
Port number        = 389
Bind DN            = cn=Directory Manager
Passwd             = secret
Referral           = on
Base DN            = ou=people,dc=example,dc=com
Filter             = "cn=MrXXX"
Max times inactive = 3
Max allowed errors = 1000
Number of samples  = -1
Number of threads  = 10
Total op. req.     = -1
Running mode       = 0xa0000009
Running mode       = quiet verbose random exact_search
LDAP oper. timeout = 30 sec
Sampling interval  = 10 sec
Scope              = subtree
Attrsonly          = 0
Values range       = [0 , 1000000]
Filter's head      = "cn=Mr"
Filter's tail      = ""

A.1.5.1. LDIF の生成

ldclt ツール自体を使用して、テストに使用できる LDIF ファイルを生成できます。

注記

LDIF ファイルを生成する際に、ldclt ツールはサーバーへの接続や操作の実行を試みません。

LDIF ファイルの生成には、エントリーの作成にツールが使用する基本的なテンプレートファイル (-e object) と、指定した出力ファイル (-e genldif) が必要です。

テンプレートファイルでは、エントリー属性に明示的な値を指定することや、変数を使用することができます。エントリー属性に一意の値を簡単に指定する場合は、/usr/share/dirsrv/data ディレクトリーに、姓、名、および組織単位を生成する 3 つのデータファイルが含まれます。これらの値のリストは、テストユーザーおよびディレクトリーツリー (それぞれ dbgen-FamilyNamesdbgen-GivenNames、および dbgen-OrgUnits) を作成するために使用できます。これらのファイルは、rndfromfile オプション、incrfromfile オプション、または incrfromfilenoloop オプションで使用できます。

テンプレートファイルの基本的な形式は次のとおりです。

# comment

attribute: string | variable=keyword(value)

変数は A から H までの任意の文字にすることができます。使用できるキーワードは、表A.4「ldclt テンプレート LDIF ファイルのキーワード」にリスト表示されています。

一部の変数およびキーワードは、-e object オプションおよびその他の利用可能なパラメーター (rdn など) で渡すことができます。

-e object=inet.txt,rdn='uid:[A=INCRNNOLOOP(0;99999;5)]'

表A.4 ldclt テンプレート LDIF ファイルのキーワード

キーワード説明形式

RNDN

指定された範囲 (low - high) 内で指定の長さの、ランダムな値を生成します。

RNDN(low;high;length)

RNDFROMFILE

指定されたファイルで利用可能な値からランダムな値を取得します。

RNDFROMFILE(filename)

INCRN

指定された範囲 (low - high) 内で指定の長さの、連続した値を生成します。

INCRN(low;high;length)

INCRNOLOOP

(インクリメント範囲をループすることなく) 指定された範囲内 (low - high) で、指定された長さの連続した値を作成します。

INCRNOLOOP(low;high;length)

INCRFROMFILE

指定のファイルの値全体をインクリメントして値を作成します。

INCRFROMFILE(filename)

INCRFROMFILENOLOOP

値をループバックすることなく、ファイルの値全体をインクリメントして値を作成します。

INCRFROMFILENOLOOP(filename)

RNDS

指定された長さのランダムな値を生成します。

RNDS(length)

たとえば、このテンプレートファイルは /usr/share/dirsrv/data のサンプルファイルから名前を取得し、他の属性を動的にビルドします。

例A.1 テンプレートファイルの例

objectclass: inetOrgPerson
sn: [B=RNDFROMFILE(/usr/share/dirsrv/data/dbgen-FamilyNames)]
cn: [C=RNDFROMFILE(/usr/share/dirsrv/data/dbgen-GivenNames)] [B]
password: test[A]
description: user id [A]
mail: [C].[B]@example.com
telephonenumber: (555) [RNDN(0;999;3)]-[RNDN(0;9999;4)]

続いて、ldclt コマンドは、そのテンプレートを使用して 100,000 エントリーを持つ LDIF ファイルをビルドします。

# ldclt -b "ou=people,dc=csb" -e object=inet.txt,rdn='uid:[A=INCRNNOLOOP(0;99999;5)]' -e genldif=100Kinet.ldif,commoncounter

A.1.5.2. エントリーの追加

ldclt ツールは、2 つのテンプレートのいずれかにマッチするエントリーを追加できます。

  • person
  • inetorgperson

-f フィルターは、ユーザーエントリーの命名属性の形式を設定します。たとえば、-f "cn=MrXXXXX" は、-f "cn=Mr01234" ような名前を作成します。-fperson または inetorgperson パラメーターを使用すると、基本的なエントリーが作成されます。

objectclass: person
sn: ex sn
cn: Mr01234

rdn パラメーターと object ファイルを使用して、さらに複雑なエントリー (検索とテストの変更に適切) を作成できます。エントリーの全オプションについては、「LDIF の生成」で説明されています。rdn パラメーターおよび object パラメーターは、ディレクトリーに追加または変更するエントリーの形式です。rdn 実行パラメーターはキーワードパターン (表A.4「ldclt テンプレート LDIF ファイルのキーワード」に記載) を取り、テキストファイルに記載されているエントリーからエントリープールを取得します。

-e rdn='uid:[A=INCRNNOLOOP(0;99999;5)]',object=inet.txt

ldclt ツールは、数値順にエントリーを作成します。つまり、これらのエントリーを追加する方法およびシーケンスをカウントする方法も定義する必要があります。このためのいくつかの可能なオプションは次のとおりです。

  • -r および -R: エントリーの数値の範囲を設定します
  • incr または random: 番号の割り当て方法を設定します (-f でのみ使用されます)
  • -r および -R: エントリーの数値の範囲を設定します
  • noloop: 範囲の最後に到達したら、ループバックするのではなく add 操作を停止します

例A.2 エントリーの追加

# ldclt -b ou=people,dc=example,dc=com -D "cn=Directory Manager" -w secret -e add,person,incr,noloop,commoncounter -r0 -R99999 -f "cn=MrXXXXX" -v -q

add 操作は、より複雑なテスト用にディレクトリーツリーをビルドするのにも使用できます。存在しないブランチに属するディレクトリーにエントリーが追加されるたびに、ldclt ツールはそのブランチエントリーを自動的に作成します。

注記

存在しないブランチの子であるエントリーを初めて追加すると、ブランチエントリーがディレクトリーに追加されます。ただし、エントリー自体は追加されません。これ以降のエントリーは新しいブランチに追加されます。

ブランチエントリーを自動的に追加するには、その命名属性を cno、または ou にする必要があります。

例A.3 ディレクトリーツリーの作成

# ldclt -b ou=DeptXXX,dc=example,dc=com -D "cn=Directory Manager" -w secret -e add,person,incr,noloop,commoncounter -r0 -R99999 -f "cn=MrXXXXX" -v -q

A.1.5.4. 操作の変更

attreplace 実行パラメーターは、エントリーの特定属性を置き換えます。

変更操作では、RDN フィルターを使用して更新するエントリーを検索します。rdn パラメーターおよび object パラメーターは、ディレクトリーに追加または変更するエントリーの形式です。rdn 実行パラメーターはキーワードパターン (表A.4「ldclt テンプレート LDIF ファイルのキーワード」に記載) を取り、テキストファイルに記載されているエントリーからエントリープールを取得します。

例A.9 変更操作

# ldclt -h localhost  -p 389 -D "cn=Directory Manager" -w secret -b "ou=people,dc=example,dc=com" -e rdn='uid:[RNDN(0;99999;5)]' -I 32 -e attreplace='description: random modify XXXXX'

A.1.5.5. modrdn 操作

ldclt コマンドは、2 種類の modrdn 操作をサポートします。

  • エントリーの名称変更
  • エントリーの新しい親への移動

ldclt ユーティリティーは、無作為に選択された DN から新しいエントリー名または親を作成します。

基本的な名称変更操作には、3 つの実行パラメーターが必要です。

  • rename
  • rdn='pattern'
  • object=file

rdn パラメーターおよび object パラメーターは、ディレクトリーに追加または変更するエントリーの形式です。rdn 実行パラメーターはキーワードパターン (表A.4「ldclt テンプレート LDIF ファイルのキーワード」に記載) を取り、テキストファイルに記載されているエントリーからエントリープールを取得します。

例A.10 単純な名前操作

# ldclt -h localhost -p 389 -D "cn=Directory Manager" -w secret -b "ou=people,dc=example,dc=com" -I 32 -I 68 -e rename,rdn='uid:[RNDN(0;999;5)]',object="inet.txt"

withnewparent 実行パラメーターを使用すると、エントリーの名前が変更され、新しい親エントリーの下に移動します。親エントリーが存在しない場合は、ldclt ツールがこれを作成します。[3]

例A.11 エントリーの名前を変更して新しい親に移動する

# ldclt -h localhost -p 389 -D "cn=Directory Manager" -w secret12 -b "ou=DeptXXX,dc=example,dc-com" -I 32 -I 68 -e rename,withnewparent,rdn='uid:Mr[RNDN(0;99999;5)]',object="inet.txt"

A.1.5.6. 操作の削除

ldclt の削除操作は、追加操作のまったく逆になります。追加と同様に、削除操作は複数の方法でエントリーを削除できます。

  • ランダムに (-e delete,random)
  • RDN-ranges (-e delete,rdn=[pattern])
  • 順次 (-e delete,incr)

ランダム削除は、指定されたエントリーの範囲内で実行されるように設定されます。これには以下のオプションが必要です。

  • -e delete,random
  • バインドされた範囲の -r および -R
  • -f (フィルターがエントリーと一致する)

例A.12 ランダム削除操作

# ldclt -b "ou=people,dc=example,dc=com" -D "cn=Directory Manager" -w secret -e delete,random -r0 -R99999 -f "uid=XXXXXX" -I 32 -v -q

RDN ベースの削除は、キーワード (表A.4「ldclt テンプレート LDIF ファイルのキーワード」にリスト表示されている) と共に rdn 実行パラメーターを使用して、テキストファイルにリスト表示されているエントリーからエントリープールを取得します。この形式には 3 つの実行パラメーターが必要です。

  • -e delete
  • -e rdn='pattern'
  • -e object='file'

例A.13 RDN ベースの削除操作

# ldclt -b "ou=people,dc=example,dc=com" -D "cn=Directory Manager" -w secret -e delete,rdn='uid:[INCRNNOLOOP(0;99999;5)]',object="inet.txt" -I 32 -v -q

最後の削除操作形式はランダム削除形式と似ていますが、ランダムではなく、指定した範囲を順番に処理するだけです。

  • -e delete,incr
  • バインドされた範囲の -r および -R
  • -f (フィルターがエントリーと一致する)

例A.14 順次削除操作

# ldclt -b "ou=people,dc=example,dc=com" -D "cn=Directory Manager" -w secret -e delete,incr -r0 -R99999 -f "uid=XXXXXX" -I 32 -v -q

A.1.5.7. バインド操作

デフォルトでは、各 ldclt スレッドはサーバーに一度バインドし、そのすべての操作を 1 つのセッションで実行します。-e bindeach は他の操作と併用して、操作ごとにバインドしてから、次の操作を開始する前にバインドを解除することを ldclt ツールに指示します。

-e add,bindeach ...

バインドおよびバインド解除操作のみをテストするには、-e bindeach,bindonly 実行パラメーターを使用し、他の操作情報は使用しません。以下に例を示します。

# ldclt -h localhost -p 389 -b "ou=people,dc=example,dc=com" -e bindeach,bindonly -e bind_info

バインド操作は、接続パラメーターで -D および -w ユーザー名/パスワードペアを使用して、テストに使用する単一のユーザーを指定できます。

注記

-e close オプションをバインドパラメーターと共に使用して、完全にバインドを解除するのではなく、接続を破棄することが Directory Server に及ぼす影響をテストします。

例A.15 バインドのみおよびテスト終了

# ldclt -h localhost -p 389 -D "cn=Directory Manager" -w secret -e bindeach,bindonly,close

指定のファイル (randombinddnfromfile) からランダムなバインドアイデンティティーを選択するために使用できる、または範囲内からランダムに選択された DN(-e randombinddn,randombinddnhigh=Y) を使用する実行パラメーターもあります。

例A.16 ファイル内の ID からのランダムバインド

# ldclt -h localhost -p 389 -e bindeach,bindonly -e randombinddnfromfile=/tmp/testbind.txt

ランダムなアイデンティティーとのバインディングは、生成された LDIF からアイデンティティーが追加されている場合や、-e add を使用してアカウントが範囲に追加された場合に便利です。ldclt ツールは、X を変数として使用し、指定された範囲でインクリメントして値を自動生成できます。

例A.17 ランダムベース DN からのランダムバインド

# ldclt -h localhost -p 389 -e bindeach,bindonly -D "uid=XXXXX,dc=example,dc=com" -w testXXXXX -e randombinddn,randombinddnlow=0,randombinddnhigh=99999

A.1.5.8. ランダムベース DN での操作の実行

ランダムに選択されたベース DN に対して、任意の操作を実行できます。3 つの randombase パラメーターは、選択元となる組織単位の範囲を設定します。-b ベースエントリーの変数はベース DN の形式を設定します。

-b "ou=DeptXXX,dc=example,dc=com" -e randombase,randombaselow=0,randombasehigh=999 ...

A.1.5.9. TLS 認証

セキュアな認証およびセキュアな接続のパフォーマンスをテストするために、すべての操作を TLS 経由で実行できます。TLS 認証には 2 つのパラメーターが必要です。

  • Directory Server のセキュリティーデータベースへのパスを指定する接続パラメーター -Z
  • TLS データベースにアクセスするためにサーバーが要求する情報が含まれる実行パラメーター cltcertnamekeydbfile、および keydbpin

たとえば、これは TLS を介してバインドテストを実行します。

# ldclt -h host -p port -e bindeach,bindonly -Z certPath -e cltcertname=certName,keydbfile=filename,keydbpin=password

A.1.5.10. 破棄操作

-e abandon パラメーターを開いてから、サーバーでの操作をキャンセルします。この操作はそれ自体で、または他のタイプの操作 ( -e add-e esearch など) と共に実行できます。

# ldclt -e abandon -h localhost -p 389 -D "cn=Directory Manager" -w secret -v -q -b "ou=people,dc=example,dc=com"


[3] 追加操作と同様に、親がツールで最初に参照される際に親エントリーが作成されますが、追加操作を求めたエントリーは 作成されません