@@ -247,6 +247,44 @@ func TestConvertToTaskDefinition(t *testing.T) {
247
247
}
248
248
249
249
// ConvertToContainerDefinition tests
250
+
251
+ func TestConvertToTaskDefinitionWithECSParams_DefaultMemoryLessThanMemoryRes (t * testing.T ) {
252
+ // set up containerConfig w/o value for Memory
253
+ containerConfig := & adapter.ContainerConfig {
254
+ Name : "web" ,
255
+ Image : "httpd" ,
256
+ CPU : int64 (5 ),
257
+ }
258
+
259
+ // define ecs-params value we expect to be present in final containerDefinition
260
+ ecsParamsString := `version: 1
261
+ task_definition:
262
+ services:
263
+ web:
264
+ mem_reservation: 1g`
265
+
266
+ content := []byte (ecsParamsString )
267
+
268
+ tmpfile , err := ioutil .TempFile ("" , "ecs-params" )
269
+ assert .NoError (t , err , "Could not create ecs params tempfile" )
270
+
271
+ defer os .Remove (tmpfile .Name ())
272
+
273
+ _ , err = tmpfile .Write (content )
274
+ assert .NoError (t , err , "Could not write data to ecs params tempfile" )
275
+
276
+ err = tmpfile .Close ()
277
+ assert .NoError (t , err , "Could not close tempfile" )
278
+
279
+ ecsParamsFileName := tmpfile .Name ()
280
+ ecsParams , err := ReadECSParams (ecsParamsFileName )
281
+ assert .NoError (t , err , "Could not read ECS Params file" )
282
+
283
+ containerConfigs := []adapter.ContainerConfig {* containerConfig }
284
+ _ , err = convertToTaskDefWithEcsParamsInTest (t , containerConfigs , "" , ecsParams )
285
+
286
+ assert .Error (t , err , "Expected error because memory reservation is greater than memory limit" )
287
+ }
250
288
func TestConvertToTaskDefinitionWithNoSharedMemorySize (t * testing.T ) {
251
289
containerConfig := & adapter.ContainerConfig {
252
290
ShmSize : int64 (0 ),
@@ -757,12 +795,12 @@ task_definition:
757
795
content := []byte (ecsParamsString )
758
796
759
797
tmpfile , err := ioutil .TempFile ("" , "ecs-params" )
760
- assert .NoError (t , err , "Could not create ecs fields tempfile" )
798
+ assert .NoError (t , err , "Could not create ecs params tempfile" )
761
799
762
800
defer os .Remove (tmpfile .Name ())
763
801
764
802
_ , err = tmpfile .Write (content )
765
- assert .NoError (t , err , "Could not write data to ecs fields tempfile" )
803
+ assert .NoError (t , err , "Could not write data to ecs params tempfile" )
766
804
767
805
err = tmpfile .Close ()
768
806
assert .NoError (t , err , "Could not close tempfile" )
@@ -813,12 +851,12 @@ task_definition:
813
851
content := []byte (ecsParamsString )
814
852
815
853
tmpfile , err := ioutil .TempFile ("" , "ecs-params" )
816
- assert .NoError (t , err , "Could not create ecs fields tempfile" )
854
+ assert .NoError (t , err , "Could not create ecs params tempfile" )
817
855
818
856
defer os .Remove (tmpfile .Name ())
819
857
820
858
_ , err = tmpfile .Write (content )
821
- assert .NoError (t , err , "Could not write data to ecs fields tempfile" )
859
+ assert .NoError (t , err , "Could not write data to ecs params tempfile" )
822
860
823
861
err = tmpfile .Close ()
824
862
assert .NoError (t , err , "Could not close tempfile" )
@@ -858,12 +896,12 @@ task_definition:
858
896
content := []byte (ecsParamsString )
859
897
860
898
tmpfile , err := ioutil .TempFile ("" , "ecs-params" )
861
- assert .NoError (t , err , "Could not create ecs fields tempfile" )
899
+ assert .NoError (t , err , "Could not create ecs params tempfile" )
862
900
863
901
defer os .Remove (tmpfile .Name ())
864
902
865
903
_ , err = tmpfile .Write (content )
866
- assert .NoError (t , err , "Could not write data to ecs fields tempfile" )
904
+ assert .NoError (t , err , "Could not write data to ecs params tempfile" )
867
905
868
906
err = tmpfile .Close ()
869
907
assert .NoError (t , err , "Could not close tempfile" )
@@ -885,6 +923,89 @@ task_definition:
885
923
}
886
924
}
887
925
926
+ func TestConvertToTaskDefinitionWithECSParams_SomeContainerResourcesProvided (t * testing.T ) {
927
+ // set up containerConfig w/o value for Memory
928
+ containerConfig := & adapter.ContainerConfig {
929
+ Name : "web" ,
930
+ Image : "httpd" ,
931
+ CPU : int64 (5 ),
932
+ Memory : int64 (15 ),
933
+ MemoryReservation : int64 (10 ),
934
+ }
935
+
936
+ // define ecs-params value we expect to be present in final containerDefinition
937
+ webMem := int64 (20 )
938
+
939
+ ecsParamsString := `version: 1
940
+ task_definition:
941
+ services:
942
+ web:
943
+ mem_limit: 20m`
944
+
945
+ content := []byte (ecsParamsString )
946
+
947
+ tmpfile , err := ioutil .TempFile ("" , "ecs-params" )
948
+ assert .NoError (t , err , "Could not create ecs params tempfile" )
949
+
950
+ defer os .Remove (tmpfile .Name ())
951
+
952
+ _ , err = tmpfile .Write (content )
953
+ assert .NoError (t , err , "Could not write data to ecs params tempfile" )
954
+
955
+ err = tmpfile .Close ()
956
+ assert .NoError (t , err , "Could not close tempfile" )
957
+
958
+ ecsParamsFileName := tmpfile .Name ()
959
+ ecsParams , err := ReadECSParams (ecsParamsFileName )
960
+ assert .NoError (t , err , "Could not read ECS Params file" )
961
+
962
+ containerConfigs := []adapter.ContainerConfig {* containerConfig }
963
+ taskDefinition , err := convertToTaskDefWithEcsParamsInTest (t , containerConfigs , "" , ecsParams )
964
+
965
+ containerDefs := taskDefinition .ContainerDefinitions
966
+ web := findContainerByName ("web" , containerDefs )
967
+
968
+ if assert .NoError (t , err ) {
969
+ // check ecs-params override value is present
970
+ assert .Equal (t , webMem , aws .Int64Value (web .Memory ), "Expected Memory to match" )
971
+ // check config values not present in ecs-params are present
972
+ assert .Equal (t , containerConfig .CPU , aws .Int64Value (web .Cpu ), "Expected CPU to match" )
973
+ assert .Equal (t , containerConfig .MemoryReservation , aws .Int64Value (web .MemoryReservation ), "Expected MemoryReservation to match" )
974
+ }
975
+ }
976
+
977
+ func TestConvertToTaskDefinitionWithECSParams_MemResGreaterThanMemLimit (t * testing.T ) {
978
+ containerConfig := & adapter.ContainerConfig {Name : "web" }
979
+ ecsParamsString := `version: 1
980
+ task_definition:
981
+ services:
982
+ web:
983
+ mem_limit: 10m
984
+ mem_reservation: 15m`
985
+
986
+ content := []byte (ecsParamsString )
987
+
988
+ tmpfile , err := ioutil .TempFile ("" , "ecs-params" )
989
+ assert .NoError (t , err , "Could not create ecs params tempfile" )
990
+
991
+ defer os .Remove (tmpfile .Name ())
992
+
993
+ _ , err = tmpfile .Write (content )
994
+ assert .NoError (t , err , "Could not write data to ecs params tempfile" )
995
+
996
+ err = tmpfile .Close ()
997
+ assert .NoError (t , err , "Could not close tempfile" )
998
+
999
+ ecsParamsFileName := tmpfile .Name ()
1000
+ ecsParams , err := ReadECSParams (ecsParamsFileName )
1001
+ assert .NoError (t , err , "Could not read ECS Params file" )
1002
+
1003
+ containerConfigs := []adapter.ContainerConfig {* containerConfig }
1004
+ _ , err = convertToTaskDefWithEcsParamsInTest (t , containerConfigs , "" , ecsParams )
1005
+
1006
+ assert .Error (t , err , "Expected error if mem_reservation was more than mem_limit" )
1007
+ }
1008
+
888
1009
func TestConvertToTaskDefinition_WithTaskSize (t * testing.T ) {
889
1010
containerConfigs := testContainerConfigs ([]string {"mysql" , "wordpress" })
890
1011
ecsParamsString := `version: 1
0 commit comments