// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 import React, {FunctionComponent} from 'react'; import {Container, Button, ExpandableSection} from "aws-northstar"; import Stack from "aws-northstar/layouts/Stack"; import '../home/styles.css'; import Grid from "aws-northstar/esm/layouts/Grid"; import { executeRunbook, } from "../../data"; import Flashbar, {FlashbarMessage} from "aws-northstar/components/Flashbar"; import Alert from "aws-northstar/components/Alert"; const IntegrationTesting: FunctionComponent = () => { const [errors, setErrors] = React.useState([]); const [message, setMessage] = React.useState(""); const renderMessage = () => { return (message == ""?
: setMessage("")} > {message} ); } const executeUC01 = async () => { setMessage("Initiated Settlement App Rotation") await executeRunbook("us-east-1", "approtation-Runbook-Managed-Failover", "settlement", "App Rotation", "prod").then( (result: any) => { console.log("Received Result :" + JSON.stringify(result)) }); } const executeUC02 = async () => { setMessage("Initiated Settlement App Rotation") await executeRunbook("us-east-1", "approtation-Runbook-Managed-Failover", "settlement", "App Rotation", "prod").then( (result: any) => { console.log("Received Result :" + JSON.stringify(result)) }); } const executeUC03 = async () => { setMessage("Initiated Settlement DR Failover") await executeRunbook("us-east-1", "approtation-Runbook-Detach-And-Promote", "settlement", "DR", "test").then( (result: any) => { console.log("Received Result :" + JSON.stringify(result)) }); } const executeUC04 = async () => { setMessage("Initiated Settlement DR Failover") await executeRunbook("us-east-1", "approtation-Runbook-Detach-And-Promote", "settlement", "DR", "test").then( (result: any) => { console.log("Received Result :" + JSON.stringify(result)) }); } const executeUC05 = async () => { setMessage("Initiated Trade Matching App Rotation") await executeRunbook("us-east-1", "approtation-Runbook-Managed-Failover", "trade-matching", "App Rotation", "prod").then( (result: any) => { console.log("Received Result :" + JSON.stringify(result)) }); } const executeUC06 = async () => { setMessage("Initiated Trade Matching App Rotation") await executeRunbook("us-east-1", "approtation-Runbook-Managed-Failover", "trade-matching", "App Rotation", "prod").then( (result: any) => { console.log("Received Result :" + JSON.stringify(result)) }); } const executeUC07 = async () => { setMessage("Initiated Trade Matching DR Failover") await executeRunbook("us-east-1", "approtation-Runbook-Detach-And-Promote", "trade-matching", "DR", "test").then( (result: any) => { console.log("Received Result :" + JSON.stringify(result)) }); } const executeUC08 = async () => { setMessage("Initiated Trade Matching DR Failover") await executeRunbook("us-east-1", "approtation-Runbook-Detach-And-Promote", "trade-matching", "DR", "test").then( (result: any) => { console.log("Received Result :" + JSON.stringify(result)) }); } return (
Rotation Testing
Use Case ID
Description
Execute
Use Case 1
  • Quiesce external facing inbound channels so no new messages are received. Note that if we can operationally rotate without quiescing inbound channels from external clients, that would be ideal.
  • Inspect all queues to ensure all messages have been drained. Files need to be processed or copied to the West region.
  • Shut down Settlement application in the East
  • Rotate Settlement application to West
  • Start application, messages could be received from the Trade Matching Application. There should be no lost messages, missing messages should be in the Outbound Gateway of the Trade Matching Application
  • Reconcile for missing messages/gaps after app is running. Missing messages can be replayed out of order.
        
Use Case 2
  • Quiesce external facing inbound channels so no new messages are received. Note that if we can operationally rotate without quiescing inbound channels from external clients, that would be ideal.
  • Inspect all queues to ensure all messages have been drained. Files need to be processed or copied to the West region.
  • Shut down Settlement application in the West
  • Rotate Settlement application to East
  • Start application, messages could be received from the Trade Matching Application. There should be no lost messages, missing messages should be in the Outbound Gateway of the Trade Matching Application.
  • Reconcile for missing messages/gaps after app is running. Missing messages can be replayed out of order.
        
Use Case 3
  • Fail Settlement application while messages are in flight through entire system. Messages should be in ingest, egress, and OLTP within the Settlement Application. Introduce delays at each process if necessary.
  • Recover and Start Settlement application in West. Keep external entry points disabled.
  • Inspect Settlement Application. Ensure internal application is in sync. Comparison of Ingestion and Egress databases within the Settlement Application. Replay messages from Ingestion if required. There should be lost messages.
  • Start Settlement Application
  • Reconcile for missing messages/gaps after app is running. There is no need to worry about maintaining order between applications. Missing messages can be replayed out of order.
        
Use Case 4
  • Fail Settlement application while messages are in flight through entire system. Messages should be in ingest, egress, and OLTP within the Settlement Application. Introduce delays at each process if necessary.
  • Recover and Start Settlement application in East. Keep external entry points disabled.
  • Inspect Settlement Application. Ensure internal application is in sync. Comparison of Ingestion and Egress databases within the Settlement Application. Replay messages from Ingestion if required. There should be lost messages.
  • Start Settlement Application
  • Reconcile for missing messages/gaps after app is running. There is no need to worry about maintaining order between applications. Missing messages can be replayed out of order.
        
Use Case 5
  • Quiesce external facing inbound queues so no new messages are received. Note that if we can operationally rotate without quiescing inbound channels from external clients, that would be ideal.
  • Inspect all queues to ensure all messages have been drained. Files need to be processed or copied to the West region.
  • Shut down Trade Match application in the East.
  • Rotate Trade Match application to West.
  • Start application, messages could be received from the Settlement Application. There should be no lost messages, missing messages should be in the Outbound Gateway of the Settlement Application.
  • Reconcile for missing messages/gaps after app is running. Missing messages can be replayed out of order.
        
Use Case 6
  • Quiesce external facing inbound queues so no new messages are received. Note that if we can operationally rotate without quiescing inbound channels from external clients, that would be ideal.
  • Inspect all queues to ensure all messages have been drained. Files need to be processed or copied to the West region.
  • Shut down Trade Match application in the West.
  • Rotate Trade Match application to East.
  • Start application, messages could be received from the Settlement Application. There should be no lost messages, missing messages should be in the Outbound Gateway of the Settlement Application.
  • Reconcile for missing messages/gaps after app is running. Missing messages can be replayed out of order.
        
Use Case 7
  • Fail Trade Matching application while messages are in flight through entire system. Messages should be in ingest, egress, and OLTP within the Trade Matching Application. Introduce delays at each process if necessary.
  • Recover and Start Trade Matching application in West. Keep external entry points disabled.
  • Inspect Trade Matching Application. Ensure internal application is in sync. Comparison of Ingestion and Egress databases within the Trade Match Application. Replay messages from Ingestion if required. There should be lost messages.
  • Start Trade Match Application
  • Reconcile for missing messages/gaps after app is running. There is no need to worry about maintaining order between applications. Missing messages can be replayed out of order.
        
Use Case 8
  • Fail Trade Matching application while messages are in flight through entire system. Messages should be in ingest, egress, and OLTP within the Trade Matching Application. Introduce delays at each process if necessary.
  • Recover and Start Trade Matching application in East. Keep external entry points disabled.
  • Inspect Trade Matching Application. Ensure internal application is in sync. Comparison of Ingestion and Egress databases within the Trade Match Application. Replay messages from Ingestion if required. There should be lost messages.
  • Start Trade Match Application
  • Reconcile for missing messages/gaps after app is running. There is no need to worry about maintaining order between applications. Missing messages can be replayed out of order.
        
{renderMessage()}
); } export default IntegrationTesting;