Skip to content

Commit 882bcb2

Browse files
committed
Move utils function Uint16SliceToStringSlice to shared lib
1 parent 06931a5 commit 882bcb2

File tree

8 files changed

+72
-21
lines changed

8 files changed

+72
-21
lines changed

agent/api/ecsclient/client.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"github.com/aws/amazon-ecs-agent/ecs-agent/ecs_client/model/ecs"
3434
"github.com/aws/amazon-ecs-agent/ecs-agent/httpclient"
3535
"github.com/aws/amazon-ecs-agent/ecs-agent/logger"
36+
commonutils "github.com/aws/amazon-ecs-agent/ecs-agent/utils"
3637
"github.com/aws/amazon-ecs-agent/ecs-agent/utils/retry"
3738

3839
"github.com/aws/aws-sdk-go/aws"
@@ -322,12 +323,12 @@ func (client *APIECSClient) getResources() ([]*ecs.Resource, error) {
322323
portResource := ecs.Resource{
323324
Name: utils.Strptr("PORTS"),
324325
Type: utils.Strptr("STRINGSET"),
325-
StringSetValue: utils.Uint16SliceToStringSlice(client.config.ReservedPorts),
326+
StringSetValue: commonutils.Uint16SliceToStringSlice(client.config.ReservedPorts),
326327
}
327328
udpPortResource := ecs.Resource{
328329
Name: utils.Strptr("PORTS_UDP"),
329330
Type: utils.Strptr("STRINGSET"),
330-
StringSetValue: utils.Uint16SliceToStringSlice(client.config.ReservedPortsUDP),
331+
StringSetValue: commonutils.Uint16SliceToStringSlice(client.config.ReservedPortsUDP),
331332
}
332333

333334
return []*ecs.Resource{&cpuResource, &memResource, &portResource, &udpPortResource}, nil

agent/api/task/task.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import (
5050
"github.com/aws/amazon-ecs-agent/ecs-agent/logger/field"
5151
nlappmesh "github.com/aws/amazon-ecs-agent/ecs-agent/netlib/model/appmesh"
5252
ni "github.com/aws/amazon-ecs-agent/ecs-agent/netlib/model/networkinterface"
53+
commonutils "github.com/aws/amazon-ecs-agent/ecs-agent/utils"
5354
"github.com/aws/amazon-ecs-agent/ecs-agent/utils/arn"
5455
"github.com/aws/amazon-ecs-agent/ecs-agent/utils/ttime"
5556

@@ -3649,12 +3650,12 @@ func (task *Task) ToHostResources() map[string]*ecs.Resource {
36493650
resources["PORTS_TCP"] = &ecs.Resource{
36503651
Name: utils.Strptr("PORTS_TCP"),
36513652
Type: utils.Strptr("STRINGSET"),
3652-
StringSetValue: utils.Uint16SliceToStringSlice(tcpPortSet),
3653+
StringSetValue: commonutils.Uint16SliceToStringSlice(tcpPortSet),
36533654
}
36543655
resources["PORTS_UDP"] = &ecs.Resource{
36553656
Name: utils.Strptr("PORTS_UDP"),
36563657
Type: utils.Strptr("STRINGSET"),
3657-
StringSetValue: utils.Uint16SliceToStringSlice(udpPortSet),
3658+
StringSetValue: commonutils.Uint16SliceToStringSlice(udpPortSet),
36583659
}
36593660

36603661
// GPU

agent/api/task/task_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ import (
5555
mock_credentials "github.com/aws/amazon-ecs-agent/ecs-agent/credentials/mocks"
5656
"github.com/aws/amazon-ecs-agent/ecs-agent/ecs_client/model/ecs"
5757
ni "github.com/aws/amazon-ecs-agent/ecs-agent/netlib/model/networkinterface"
58+
commonutils "github.com/aws/amazon-ecs-agent/ecs-agent/utils"
5859
"github.com/aws/aws-sdk-go/service/secretsmanager"
5960

6061
"github.com/aws/amazon-ecs-agent/agent/taskresource/asmsecret"
@@ -5178,7 +5179,7 @@ func TestToHostResources(t *testing.T) {
51785179
},
51795180
{
51805181
task: testTask4,
5181-
expectedResources: getTestTaskResourceMap(int64(1024), int64(512), utils.Uint16SliceToStringSlice(portsTCP), utils.Uint16SliceToStringSlice(portsUDP), []*string{}),
5182+
expectedResources: getTestTaskResourceMap(int64(1024), int64(512), commonutils.Uint16SliceToStringSlice(portsTCP), commonutils.Uint16SliceToStringSlice(portsUDP), []*string{}),
51825183
},
51835184
{
51845185
task: testTask5,

agent/engine/host_resource_manager_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121

2222
"github.com/aws/amazon-ecs-agent/agent/utils"
2323
"github.com/aws/amazon-ecs-agent/ecs-agent/ecs_client/model/ecs"
24+
commonutils "github.com/aws/amazon-ecs-agent/ecs-agent/utils"
2425
"github.com/aws/aws-sdk-go/aws"
2526
"github.com/stretchr/testify/assert"
2627
)
@@ -231,7 +232,7 @@ func TestConsumable(t *testing.T) {
231232
}
232233

233234
for _, tc := range testCases {
234-
resources := getTestTaskResourceMap(tc.cpu, tc.mem, utils.Uint16SliceToStringSlice(tc.ports), utils.Uint16SliceToStringSlice(tc.portsUdp), aws.StringSlice(tc.gpus))
235+
resources := getTestTaskResourceMap(tc.cpu, tc.mem, commonutils.Uint16SliceToStringSlice(tc.ports), commonutils.Uint16SliceToStringSlice(tc.portsUdp), aws.StringSlice(tc.gpus))
235236
canBeConsumed, err := h.consumable(resources)
236237
assert.Equal(t, canBeConsumed, tc.canBeConsumed, "Error in checking if resources can be successfully consumed")
237238
assert.Equal(t, err, nil, "Error in checking if resources can be successfully consumed, error returned from consumable")
@@ -244,7 +245,7 @@ func TestResourceHealthTrue(t *testing.T) {
244245
gpuIDs := []string{"gpu1", "gpu2", "gpu3", "gpu4"}
245246
h := getTestHostResourceManager(int64(2048), int64(2048), []*string{&hostResourcePort1}, []*string{&hostResourcePort2}, aws.StringSlice(gpuIDs))
246247

247-
resources := getTestTaskResourceMap(1024, 1024, utils.Uint16SliceToStringSlice([]uint16{22}), utils.Uint16SliceToStringSlice([]uint16{1000}), aws.StringSlice([]string{"gpu1", "gpu2"}))
248+
resources := getTestTaskResourceMap(1024, 1024, commonutils.Uint16SliceToStringSlice([]uint16{22}), commonutils.Uint16SliceToStringSlice([]uint16{1000}), aws.StringSlice([]string{"gpu1", "gpu2"}))
248249
err := h.checkResourcesHealth(resources)
249250
assert.NoError(t, err, "Error in checking healthy resource map status")
250251
}
@@ -256,7 +257,7 @@ func TestResourceHealthGPUFalse(t *testing.T) {
256257
gpuIDs := []string{"gpu1", "gpu2", "gpu3", "gpu4"}
257258
h := getTestHostResourceManager(int64(2048), int64(2048), []*string{&hostResourcePort1}, []*string{&hostResourcePort2}, aws.StringSlice(gpuIDs))
258259

259-
resources := getTestTaskResourceMap(1024, 1024, utils.Uint16SliceToStringSlice([]uint16{22}), utils.Uint16SliceToStringSlice([]uint16{1000}), aws.StringSlice([]string{"gpu1", "gpu5"}))
260+
resources := getTestTaskResourceMap(1024, 1024, commonutils.Uint16SliceToStringSlice([]uint16{22}), commonutils.Uint16SliceToStringSlice([]uint16{1000}), aws.StringSlice([]string{"gpu1", "gpu5"}))
260261
err := h.checkResourcesHealth(resources)
261262
assert.Error(t, err, "Error in checking unhealthy resource map status")
262263
}

agent/utils/utils.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -98,17 +98,6 @@ func BoolPtr(b bool) *bool {
9898
return &b
9999
}
100100

101-
// Uint16SliceToStringSlice converts a slice of type uint16 to a slice of type
102-
// *string. It uses strconv.Itoa on each element
103-
func Uint16SliceToStringSlice(slice []uint16) []*string {
104-
stringSlice := make([]*string, len(slice))
105-
for i, el := range slice {
106-
str := strconv.Itoa(int(el))
107-
stringSlice[i] = &str
108-
}
109-
return stringSlice
110-
}
111-
112101
func StrSliceEqual(s1, s2 []string) bool {
113102
if len(s1) != len(s2) {
114103
return false

agent/vendor/github.com/aws/amazon-ecs-agent/ecs-agent/utils/utils.go

Lines changed: 15 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ecs-agent/utils/utils.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
// permissions and limitations under the License.
1313
package utils
1414

15-
import "reflect"
15+
import (
16+
"reflect"
17+
"strconv"
18+
)
1619

1720
func ZeroOrNil(obj interface{}) bool {
1821
value := reflect.ValueOf(obj)
@@ -35,3 +38,14 @@ func ZeroOrNil(obj interface{}) bool {
3538
}
3639
return false
3740
}
41+
42+
// Uint16SliceToStringSlice converts a slice of type uint16 to a slice of type
43+
// *string. It uses strconv.Itoa on each element
44+
func Uint16SliceToStringSlice(slice []uint16) []*string {
45+
stringSlice := make([]*string, len(slice))
46+
for i, el := range slice {
47+
str := strconv.Itoa(int(el))
48+
stringSlice[i] = &str
49+
}
50+
return stringSlice
51+
}

ecs-agent/utils/utils_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
package utils
1414

1515
import (
16+
"strconv"
1617
"testing"
1718

1819
"github.com/stretchr/testify/assert"
@@ -59,3 +60,32 @@ func TestZeroOrNil(t *testing.T) {
5960
}
6061

6162
}
63+
64+
// TestUint16SliceToStringSlice tests the utils method Uint16SliceToStringSlice
65+
// By taking in a slice of untyped 16 bit ints, asserting the util function
66+
// returns the correct size of array, and asserts their equality.
67+
// This is done by re-converting the string into a uint16.
68+
func TestUint16SliceToStringSlice(t *testing.T) {
69+
testCases := []struct {
70+
param []uint16
71+
expected int
72+
name string
73+
}{
74+
{nil, 0, "Nil argument"},
75+
{[]uint16{0, 1, 2, 3}, 4, "Basic set"},
76+
{[]uint16{65535}, 1, "Max Value"},
77+
}
78+
79+
for _, tc := range testCases {
80+
t.Run(tc.name, func(t *testing.T) {
81+
output := Uint16SliceToStringSlice(tc.param)
82+
assert.Equal(t, tc.expected, len(output), tc.name)
83+
for idx, num := range tc.param {
84+
reconverted, err := strconv.Atoi(*output[idx])
85+
assert.NoError(t, err)
86+
assert.Equal(t, num, uint16(reconverted))
87+
}
88+
89+
})
90+
}
91+
}

0 commit comments

Comments
 (0)