Module tests.AwsResourceStartStopTest

AwsEc2StartStopTest module.

Copyright: ycookjp

Note

RDSのAWS clientのモックは、RDSのインスタンス1つしかサポートしないため、 テストでは有効なインスタンスが常に1つであるようにシナリオを構成している。

Classes

class AwsEc2InstanceOperatorTest (methodName='runTest')

aws_resource_start_stop モジュール用のテストクラス

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

Ancestors

  • unittest.case.TestCase

Static methods

def setUpClass()

テストクラスの set up を実行します。

Args

cls
テストクラスのインスタンス
def tearDownClass()

テストクラスの tear down を実行します。

Args

cls
テストクラスのインスタンス

Methods

def setUp(self)

テスト関数の set up を実行します。

def tearDown(self)

テストクラスの tear down を実行します。

def test01_ng_event_start_stop_aws_resources(self)

configKeyにtest01_ngを設定して、start_stop_aws_resources関数のテストを実行します。

テストの内容は、以下のとおりです。

  • 設定ファイルに、EC2インスタンスとDBクラスターが実行中のインスタンス IDと存在しないインスタンスIDが設定されている状態で、イベントに test01_ngの停止を指定して、start_stop_aws_resources関数を実行する。
    • => 例外が発生すること。
    • => EC2インスタンスが停止していること。
    • => RDS DB Clusterが停止していること。
  • 設定ファイルに、EC2インスタンスとDBクラスターが停止中のインスタンス IDと存在しないインスタンスIDが設定されている状態で、イベントに test01_ngの開始を指定して、start_stop_aws_resources関数を実行する。
    • => 例外が発生すること。
    • => EC2インスタンスが開始していること。
    • => RDS DB Clusterが開始していること。
def test01_ok_event_start_stop_aws_resources(self)

configKeyにtest01_okを設定して、start_stop_aws_resources関数のテストを実行します。

テストの内容は、以下のとおりです。

  • EC2インスタンスとDBCクラスターが実行中の状態で、イベントにtest01_okの 停止を指定して、start_stop_aws_resources関数を実行する。
    • => EC2インスタンスが停止していること。
    • => RDS DB Clusterが停止していること。
  • EC2インスタンスとDBCクラスターが停止中の状態で、イベントにtest01_okの 開始を指定して、start_stop_aws_resources関数を実行する。
    • => EC2インスタンスが開始していること。
    • => RDS DB Clusterが開始していること。
def test02_ng_event_start_stop_aws_resources(self)

configKeyにtest02_okを設定して、start_stop_aws_resources関数のテストを実行します。

テストの内容は、以下のとおりです。

  • 設定ファイルに、EC2インスタンスとDBインスタンスが実行中のインスタンス IDと存在しないインスタンスIDが設定されている状態で、コンテキストの Lambda関数名に「ec2_stop_test02_ok」を指定して、 start_stop_aws_resources関数を実行する。
    • => 例外が発生すること。
    • => EC2インスタンスが停止していること。
    • => RDS DB Clusterが停止していること。
  • 設定ファイルに、EC2インスタンスとDBインスタンスが停止中のインスタンス IDと存在しないインスタンスIDが設定されている状態で、コンテキストの Lambda関数名に「ec2_stop_test02_ok」を指定して、 start_stop_aws_resources関数を実行する。
    • => 例外が発生すること。
    • => EC2インスタンスが開始していること。
    • => RDS DB Clusterが開始していること。
def test02_ok_event_start_stop_aws_resources(self)

configKeyにtest02_okを設定して、start_stop_aws_resources関数のテストを実行します。

テストの内容は、以下のとおりです。

  • EC2インスタンスとDBCインスタンスが実行中の状態で、コンテキストの Lambda関数名に「ec2_stop_test02_ok」を指定して、 start_stop_aws_resources関数を実行する。
    • => EC2インスタンスが停止していること。
    • => RDS DB Clusterが停止していること。
  • EC2インスタンスとDBCインスタンスが停止中の状態で、コンテキストの Lambda関数名に「ec2_stop_test02_ok」を指定して、 start_stop_aws_resources関数を実行する。
    • => EC2インスタンスが開始していること。
    • => RDS DB Clusterが開始していること。
def test_error_load_config(self)

_load_config 関数のエラーが発生する場合のテストを実行します。

  • 設定ファイルに存在しないキー名を指定するとエラーとなること
def test_event_list_start_stop_aws_resources(self)

start_stop_aws_resources関数にconfigKeyのリストを渡して関数を実行します。

start_stop_aws_resources関数を以下の用にして実行し、2つのconfigKeyに 設定されたEC2、DBインスタンスが停止、開始できることを確認します。

  • 以下の構成の設定ファイルを使用する
  • test01_okのEC2、test02_okのDBインスタンスを起動状態にする
  • configKeyのリスト [test01_ok、test02_ok] をstart_stop_aws_resources 関数に渡して関数を実行する

    test01_ok:
      - type: ec2.instance
        ids:
          - i-xxxxxxxxxxxxxxxxx
      - type: rds.db_cluster
        ids:
          - myrds_cluster01
    test02_ok:
      - type: ec2.instance
        ids:
          - i-xxxxxxxxxxxxxxxxx
          - i-yyyyyyyyyyyyyyyyy
      - type: rds.db_instance
        ids:
          - myrds_instance01
    
    • => DB Clusterの停止失敗の例外が発生すること。
    • => EC2インスタンスが1台停止していること
    • => RDS DB Instanceが停止していること。
    • EC2インスタンスとDBインスタンスが停止している状態で、configKeyのリスト [test01_ok、test02_ok] をstart_stop_aws_resources関数に渡して インスタンスを開始する。
    • => EC2インスタンスの開始失敗の例外が発生すること。
    • => EC2インスタンスの開始失敗の例外が発生すること。
    • => RDS DB Instanceが開始していること。
def test_get_action_from_context(self)

_get_action_from_context 関数をテストします。

  • contextオブジェクトのfunction_nameプロパティに'ec2_start_test01_ok' を指定すると、'start'が返される

  • contextオブジェクトのfunction_nameプロパティに 'ec2_stop_resources_test_ok' を指定すると、'stop'が返される

def test_get_action_from_event(self)

_get_action_from_event 関数をテストします。

  • event dictionary のキー:action の値 に 'start' を指定すると、 'start'が返される

  • event dictionary のキー:action の値に 'stop' を指定すると、 'stop'が返される

def test_get_configkey_from_context(self)

_get_configkey_from_context 関数をテストします。

  • contextオブジェクトのfunction_nameプロパティに 'ec2_start_resources01' を指定すると、'resources01'が返される

  • contextオブジェクトのfunction_nameプロパティに'ec2_start_test01_ok' を指定すると、'test01_ok'が返される

def test_get_configkey_from_event(self)

_get_configkey_from_event 関数をテストします。

  • event dictionary の キー:configKey の値に 'resources01' を 設定すると、'resources01'が返される

  • event dictionary の キー:configKey の値に 'test01_ok' を 指定すると、'test01_ok'が返される

def test_load_config(self)

_load_config 関数のテストを実行します。

  • 設定ファイルのキーを指定して読み込んだ AwsResourceStartStopConfig オブジェクトの内容が設定ファイルの内容と一致すること

  • 設定ファイルのキー配列を指定して読み込んだ AwsResourceStartStopConfig オブジェクトの内容が設定ファイルの内容と一致すること

class MyContext

テスト用の context オブジェクト

Class variables

var function_name

The type of the None singleton.