---
title: "フォールト注入"
slug: "fault-injection-559551"
abstract: "Sitecoreの使い方。複雑な分散ソリューションの故障をテストするためのCommerce.Plugin.FaultInjectionプラグイン。"
---
# フォールト注入

フォールトインジェクションは、複雑な分散ソリューションにおける失敗をテストするために、意図的にサービスの失敗を引き起こす機能を提供します。Sitecore XCは単一のフォールトインジェクションパターンを持ち、コマースエンティティの永続性における並行フォールトをカバーします。

Sitecore.Commerce.Plugin.FaultInjectionプラグインは、Sitecore.Commerce.Engine.SDKパッケージに含まれるサンプルのCommerce Engineプロジェクトに含まれています。

定義された並行フォールトを注入するために:

1.  Sitecore.Commerce.EngineプロジェクトにはSitecore.Commerce.Plugin.FaultInjectionへの言及が含まれていることを確認してください。
2.  APIリクエストで、 FaultInjectionという名前のヘッダーを追加します。
3.  前のステップで追加したヘッダーに値 ConcurrencyFault を割り当てます。
4.  Commerce Entityに永続するAPIメソッドを呼び出します。

この時点で並行性の故障が指摘されているはずです。

以下は、Postmanを用いて故障注入ヘッダーを挿入したAddCartLine呼び出しのサンプル結果です。

ヘッダーの生表示:

Content-Type:application/json

ShopName:{{ShopName}}

ShopperId:{{ShopperId}}

Language:{{Language}}

Currency:{{Currency}}

Environment:{{Environment}}

IpAddress:{{IpAddress}}

CustomerId:{{CustomerId}}

Roles:{{Roles}}

FaultInjection:ConcurencyFault

Postmanの回答本文は以下の通りです:

"ResponseCode": "Error",
 "Messages": 
 { 
 "MessageDate": "2016-09-01T12:\`12:45\`.0287079-\`05:00\`",
 "Code": "Error" 
 "Text": "SQL.UpdateEntity.Fail:Id=Cart01|Try=1|Environment=Entity-CommerceEnvironment-
 AdventureWorks|Message='Concurrency error: The Entity version supplied (1) is lower or equal to the current version
  (1).'|Number=50000|Procedure='sp\_CommerceEntitiesUpdate'|Line=22", 
"CommerceTermKey": "EntityPersistException"
 }