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 }