github.com/kata-containers/runtime@v0.0.0-20210505125100-04f29832a923/virtcontainers/types/container_test.go (about)

     1  // Copyright (c) 2020 Intel Corporation
     2  //
     3  // SPDX-License-Identifier: Apache-2.0
     4  //
     5  
     6  package types
     7  
     8  import (
     9  	"fmt"
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  func testContainerStateTransition(t *testing.T, state StateString, newState StateString) error {
    16  	s := ContainerState{
    17  		State: state,
    18  	}
    19  
    20  	return s.ValidTransition(state, newState)
    21  }
    22  
    23  func TestContainerStateReadyRunning(t *testing.T) {
    24  	err := testContainerStateTransition(t, StateReady, StateRunning)
    25  	assert.NoError(t, err)
    26  }
    27  
    28  func TestContainerStateRunningPaused(t *testing.T) {
    29  	err := testContainerStateTransition(t, StateRunning, StatePaused)
    30  	assert.NoError(t, err)
    31  }
    32  
    33  func TestContainerStatePausedRunning(t *testing.T) {
    34  	err := testContainerStateTransition(t, StatePaused, StateRunning)
    35  	assert.NoError(t, err)
    36  }
    37  
    38  func TestContainerStatePausedStopped(t *testing.T) {
    39  	err := testContainerStateTransition(t, StatePaused, StateStopped)
    40  	assert.NoError(t, err)
    41  }
    42  
    43  func TestContainerStateRunningStopped(t *testing.T) {
    44  	err := testContainerStateTransition(t, StateRunning, StateStopped)
    45  	assert.NoError(t, err)
    46  }
    47  
    48  func TestContainerStateReadyStopped(t *testing.T) {
    49  	err := testContainerStateTransition(t, StateReady, StateStopped)
    50  	assert.NoError(t, err)
    51  }
    52  
    53  func TestContainerStateStoppedRunning(t *testing.T) {
    54  	err := testContainerStateTransition(t, StateStopped, StateRunning)
    55  	assert.NoError(t, err)
    56  }
    57  
    58  func TestContainerStateStoppedReady(t *testing.T) {
    59  	err := testContainerStateTransition(t, StateStopped, StateReady)
    60  	assert.Error(t, err)
    61  }
    62  
    63  func TestContainerStatePausedPaused(t *testing.T) {
    64  	err := testContainerStateTransition(t, StatePaused, StatePaused)
    65  	assert.Error(t, err)
    66  }
    67  
    68  func testContainerStateValid(t *testing.T, stateStr StateString, expected bool) {
    69  	state := &ContainerState{
    70  		State: stateStr,
    71  	}
    72  
    73  	ok := state.Valid()
    74  	msg := fmt.Sprintf("state: %+v, expected: %v", stateStr, expected)
    75  	assert.Equal(t, ok, expected, msg)
    76  }
    77  
    78  func TestContainerStateValidSuccessful(t *testing.T) {
    79  	testContainerStateValid(t, StateReady, true)
    80  	testContainerStateValid(t, StateRunning, true)
    81  	testContainerStateValid(t, StatePaused, true)
    82  	testContainerStateValid(t, StateStopped, true)
    83  }
    84  
    85  func TestContainerStateValidFailing(t *testing.T) {
    86  	testContainerStateValid(t, "", false)
    87  }