2016-03-22 7 views
2

JMeter(v2.13 r1665067)では、tearDownスレッドグループを使用して、テスト実行後に残っているすべての残存レコードを削除しています。JMeter:JDBCの削除が一貫していない

私はかなり理解することはできません奇妙なこと:

  • スレッドグループが単独で実行された場合(すなわち、自身で)、私は左オーバーの記録を見ることができていますデータベース内から削除されます。

  • スレッドグループは、完全な実行の一部として実行されている(、すなわち、完全なエンドツーエンドテスト計画)、左上のレコードがデータベース内からを削除されません。

SQLプロファイラを見ると、「表示されます」とDELETEが送信されますが、レコードはdbに残ります。私のコンスタントスループットの設定やその他のタイミングになりますか?誰もが完全な実行中にのみ発生する理由については、誰に光を当てることはできますか?

メインスレッドのシャットダウン後にtearDownスレッドグループを実行するが有効になっています。

JDBCコネクション構成

Variable Name = myPool 
Connection Pool Config 
    Max # of Connections = 10 
    Pool Timeout = 5000 
    Idle Cleanup Interval (ms) = 60000 
    Auto Commit = True 
    Transaction Isolation = TRANSACTION_SERIALIZEABLE 
Connection Validation by Pool 
    Keep-Alive = True 
    Max Connections Age = 5000 
    Validation Query = null 

JDBCリクエスト1

Variable Name = myPool 
Query Type = Prepared Update Statement 
    DELETE FROM Foo 
    WHERE Foo.QualifierObjId IN 
    (SELECT Bar.ObjId FROM Bar WHERE Bar.DsplyName like '%myTest%'); 

JDBCリクエスト2

は、ここに私のティアダウンスレッドグループにあるものです

Variable Name = myPool 
Query Type = Prepared Update Statement 
    DELETE FROM Bar WHERE Bar.DsplyName like '%myTest%'; 

JDBCリクエスト3

Variable Name = myPool 
Query Type = Prepared Update Statement 
    DELETE FROM Master WHERE Master.DsplyName like '%myTest%'; 
+0

使用しているJMeterのバージョンを指定してください。それは最新ですか? – user1697575

+0

JMeterバージョン2.13 r1665067。 – David

+0

おそらく "変数名= myPool"と関係があります...どこでvar名を使用していますかわからないのですか?完全に実行されると、削除の呼び出しの一部を抑制する結果として同期の問題が発生する可能性がありますか? – user1697575

答えて

1

ソリューション

あなたが複数のスレッドグループにまたがって複数のJDBC接続を使用している場合は、各プールにバインドされたユニークな変数名を持つようにしてください。私は各JDBC接続(基本的にはコピー/貼り付けのため)に "myPool"を使用していましたが、問題を引き起こしていました。 (私の悪い!

解決策は以下のとおりです。

  • スレッドグループ1、JDBCコネクション構成、変数名= myFooPool
  • スレッドグループ2、JDBCコネクション構成、変数名= myBarPool
  • tearDownスレッドグループ、JDBC接続構成、変数名= myTearDownPool

プールごとに一意の変数名を作成すると、各JDBC設定が明快になり、鉱山などの問題が回避されます。これが他の人に役立つことを願っています

関連する問題