@@ -721,6 +721,104 @@ def test_compare_image(self):
721
721
self .dw .dc .images .assert_called_once_with ()
722
722
self .assertTrue (return_data )
723
723
724
+ def test_compare_config_unchanged (self ):
725
+ self .dw = get_DockerWorker (FAKE_DATA ['params' ])
726
+ job = mock .MagicMock ()
727
+ self .dw .dc .exec_create .return_value = job
728
+ self .dw .dc .exec_start .return_value = 'fake output'
729
+ self .dw .dc .exec_inspect .return_value = {'ExitCode' : 0 }
730
+ return_data = self .dw .compare_config ()
731
+ self .dw .dc .exec_create .assert_called_once_with (
732
+ FAKE_DATA ['params' ]['name' ],
733
+ kd .COMPARE_CONFIG_CMD ,
734
+ user = 'root' )
735
+ self .dw .dc .exec_start .assert_called_once_with (job )
736
+ self .dw .dc .exec_inspect .assert_called_once_with (job )
737
+ self .assertFalse (return_data )
738
+
739
+ def test_compare_config_changed (self ):
740
+ self .dw = get_DockerWorker (FAKE_DATA ['params' ])
741
+ job = mock .MagicMock ()
742
+ self .dw .dc .exec_create .return_value = job
743
+ self .dw .dc .exec_start .return_value = 'fake output'
744
+ self .dw .dc .exec_inspect .return_value = {'ExitCode' : 1 }
745
+ return_data = self .dw .compare_config ()
746
+ self .dw .dc .exec_create .assert_called_once_with (
747
+ FAKE_DATA ['params' ]['name' ],
748
+ kd .COMPARE_CONFIG_CMD ,
749
+ user = 'root' )
750
+ self .dw .dc .exec_start .assert_called_once_with (job )
751
+ self .dw .dc .exec_inspect .assert_called_once_with (job )
752
+ self .assertTrue (return_data )
753
+
754
+ def test_compare_config_changed_container_exited (self ):
755
+ self .dw = get_DockerWorker (FAKE_DATA ['params' ])
756
+ job = mock .MagicMock ()
757
+ self .dw .dc .exec_create .return_value = job
758
+ self .dw .dc .exec_start .return_value = 'fake output'
759
+ self .dw .dc .exec_inspect .return_value = {'ExitCode' : 137 }
760
+ return_data = self .dw .compare_config ()
761
+ self .dw .dc .exec_create .assert_called_once_with (
762
+ FAKE_DATA ['params' ]['name' ],
763
+ kd .COMPARE_CONFIG_CMD ,
764
+ user = 'root' )
765
+ self .dw .dc .exec_start .assert_called_once_with (job )
766
+ self .dw .dc .exec_inspect .assert_called_once_with (job )
767
+ self .assertTrue (return_data )
768
+
769
+ def test_compare_config_changed_client_failure (self ):
770
+ self .dw = get_DockerWorker (FAKE_DATA ['params' ])
771
+ job = mock .MagicMock ()
772
+ self .dw .dc .exec_create .return_value = job
773
+ self .dw .dc .exec_start .return_value = 'fake output'
774
+ failure_response = mock .MagicMock ()
775
+ failure_response .status_code = 409 # any client error should do here
776
+ self .dw .dc .exec_inspect .side_effect = docker_error .APIError (
777
+ message = "foo" ,
778
+ response = failure_response ,
779
+ )
780
+ return_data = self .dw .compare_config ()
781
+ self .dw .dc .exec_create .assert_called_once_with (
782
+ FAKE_DATA ['params' ]['name' ],
783
+ kd .COMPARE_CONFIG_CMD ,
784
+ user = 'root' )
785
+ self .dw .dc .exec_start .assert_called_once_with (job )
786
+ self .dw .dc .exec_inspect .assert_called_once_with (job )
787
+ self .assertTrue (return_data )
788
+
789
+ def test_compare_config_error (self ):
790
+ self .dw = get_DockerWorker (FAKE_DATA ['params' ])
791
+ job = mock .MagicMock ()
792
+ self .dw .dc .exec_create .return_value = job
793
+ self .dw .dc .exec_start .return_value = 'fake output'
794
+ self .dw .dc .exec_inspect .return_value = {'ExitCode' : - 1 }
795
+ self .assertRaises (Exception , self .dw .compare_config ) # noqa: H202
796
+ self .dw .dc .exec_create .assert_called_once_with (
797
+ FAKE_DATA ['params' ]['name' ],
798
+ kd .COMPARE_CONFIG_CMD ,
799
+ user = 'root' )
800
+ self .dw .dc .exec_start .assert_called_once_with (job )
801
+ self .dw .dc .exec_inspect .assert_called_once_with (job )
802
+
803
+ def test_compare_config_error_server_failure (self ):
804
+ self .dw = get_DockerWorker (FAKE_DATA ['params' ])
805
+ job = mock .MagicMock ()
806
+ self .dw .dc .exec_create .return_value = job
807
+ self .dw .dc .exec_start .return_value = 'fake output'
808
+ failure_response = mock .MagicMock ()
809
+ failure_response .status_code = 500 # any server error should do here
810
+ self .dw .dc .exec_inspect .side_effect = docker_error .APIError (
811
+ message = "foo" ,
812
+ response = failure_response ,
813
+ )
814
+ self .assertRaises (docker_error .APIError , self .dw .compare_config )
815
+ self .dw .dc .exec_create .assert_called_once_with (
816
+ FAKE_DATA ['params' ]['name' ],
817
+ kd .COMPARE_CONFIG_CMD ,
818
+ user = 'root' )
819
+ self .dw .dc .exec_start .assert_called_once_with (job )
820
+ self .dw .dc .exec_inspect .assert_called_once_with (job )
821
+
724
822
def test_get_image_id_not_exists (self ):
725
823
self .dw = get_DockerWorker (
726
824
{'image' : 'myregistrydomain.com:5000/ubuntu:16.04' })
0 commit comments