Skip to content

Commit 4465113

Browse files
committed
test: use seelog in agent introspection validator func test
1 parent a694eb9 commit 4465113

File tree

1 file changed

+62
-47
lines changed

1 file changed

+62
-47
lines changed

misc/agent-introspection-validator/agent-introspection-validator.go

+62-47
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import (
2020
"net/http"
2121
"os"
2222
"time"
23+
24+
"github.com/cihub/seelog"
2325
)
2426

2527
const (
@@ -76,17 +78,17 @@ func getTasksMetadata(client *http.Client, path string) (*TasksResponse, error)
7678
return nil, err
7779
}
7880

79-
fmt.Printf("Received tasks metadata: %s \n", string(body))
81+
seelog.Infof("Received tasks metadata: %s \n", string(body))
8082

81-
var tasksMetadata TasksResponse
82-
err = json.Unmarshal(body, &tasksMetadata)
83+
err = verifyTasksMetadata(body)
8384
if err != nil {
84-
return nil, fmt.Errorf("%s: unable to parse response body: %v", tasksMetadataRespType, err)
85+
return nil, fmt.Errorf("%s: unable to verify response: %v", tasksMetadataRespType, err)
8586
}
8687

87-
err = verifyTasksMetadata(&tasksMetadata)
88+
var tasksMetadata TasksResponse
89+
err = json.Unmarshal(body, &tasksMetadata)
8890
if err != nil {
89-
return nil, fmt.Errorf("%s: unable to verify response: %v", tasksMetadataRespType, err)
91+
return nil, fmt.Errorf("%s: unable to parse response body: %v", tasksMetadataRespType, err)
9092
}
9193

9294
return &tasksMetadata, nil
@@ -98,90 +100,103 @@ func getTaskMetadata(client *http.Client, path string) (*TaskResponse, error) {
98100
return nil, err
99101
}
100102

101-
fmt.Printf("Received task metadata: %s \n", string(body))
103+
seelog.Infof("Received task metadata: %s \n", string(body))
102104

103-
var taskMetadata TaskResponse
104-
err = json.Unmarshal(body, &taskMetadata)
105+
err = verifyTaskMetadata(body)
105106
if err != nil {
106-
return nil, fmt.Errorf("%s: unable to parse response body: %v", taskMetadataRespType, err)
107+
return nil, fmt.Errorf("%s: unable to verify response: %v", taskMetadataRespType, err)
107108
}
108109

109-
err = verifyTaskMetadata(&taskMetadata)
110+
var taskMetadata TaskResponse
111+
err = json.Unmarshal(body, &taskMetadata)
110112
if err != nil {
111-
return nil, fmt.Errorf("%s: unable to verify response: %v", taskMetadataRespType, err)
113+
return nil, fmt.Errorf("%s: unable to parse response body: %v", taskMetadataRespType, err)
112114
}
113115

114116
return &taskMetadata, nil
115117
}
116118

117119
// verifyTasksMetadata verifies the number of tasks in tasks metadata.
118-
func verifyTasksMetadata(tasksMetadata *TasksResponse) error {
119-
if len(tasksMetadata.Tasks) != 1 {
120+
func verifyTasksMetadata(tasksMetadataRawMsg json.RawMessage) error {
121+
var tasksMetadataArray []json.RawMessage
122+
json.Unmarshal(tasksMetadataRawMsg, &tasksMetadataArray)
123+
124+
if len(tasksMetadataArray) != 1 {
120125
return fmt.Errorf("incorrect number of tasks, expected 1, received %d",
121-
len(tasksMetadata.Tasks))
126+
len(tasksMetadataArray))
122127
}
123128

124-
return nil
129+
return verifyTaskMetadata(tasksMetadataArray[0])
125130
}
126131

127132
// verifyTaskMetadata verifies the number of containers in task metadata, make
128133
// sure each necessary field is not empty, we cannot check the values of those fields
129134
// since they are dynamic. It also verifies the container metadata.
130-
func verifyTaskMetadata(taskMetadata *TaskResponse) error {
131-
if len(taskMetadata.Containers) != 1 {
132-
return fmt.Errorf("incorrect number of containers, expected 1, received %d",
133-
len(taskMetadata.Containers))
134-
}
135+
func verifyTaskMetadata(taskMetadataRawMsg json.RawMessage) error {
136+
taskMetadataMap := make(map[string]json.RawMessage)
137+
json.Unmarshal(taskMetadataRawMsg, &taskMetadataMap)
135138

136-
if isEmpty(taskMetadata.Arn) {
139+
if taskMetadataMap["Arn"] == nil {
137140
return notEmptyErrMsg("Arn")
138141
}
139142

140-
if isEmpty(taskMetadata.Version) {
141-
return notEmptyErrMsg("Version")
143+
if taskMetadataMap["DesiredStatus"] == nil {
144+
return notEmptyErrMsg("DesiredStatus")
142145
}
143146

144-
if isEmpty(taskMetadata.KnownStatus) {
147+
if taskMetadataMap["KnownStatus"] == nil {
145148
return notEmptyErrMsg("KnownStatus")
146149
}
147150

148-
if isEmpty(taskMetadata.DesiredStatus) {
149-
return notEmptyErrMsg("DesiredStatus")
151+
if taskMetadataMap["Family"] == nil {
152+
return notEmptyErrMsg("Family")
150153
}
151154

152-
if isEmpty(taskMetadata.Family) {
153-
return notEmptyErrMsg("Family")
155+
if taskMetadataMap["Version"] == nil {
156+
return notEmptyErrMsg("Version")
157+
}
158+
159+
if taskMetadataMap["Containers"] == nil {
160+
return notEmptyErrMsg("Containers")
161+
}
162+
163+
var containersMetadataArray []json.RawMessage
164+
json.Unmarshal(taskMetadataMap["Containers"], &containersMetadataArray)
165+
if len(containersMetadataArray) != 1 {
166+
return fmt.Errorf("incorrect number of containers, expected 1, received %d",
167+
len(containersMetadataArray))
154168
}
155169

156-
container := taskMetadata.Containers[0]
157-
return verifyContainerMetadata(container)
170+
return verifyContainerMetadata(containersMetadataArray[0])
158171
}
159172

160173
// verifyContainerMetadata verifies the container name of the container metadata,
161174
// and each necessary field is not empty.
162-
func verifyContainerMetadata(containerMetadata ContainerResponse) error {
163-
if containerMetadata.Name != containerName {
164-
return fmt.Errorf("incorrect container name, expected %s, received %s",
165-
containerName, containerMetadata.Name)
166-
}
175+
func verifyContainerMetadata(containerMetadataRawMsg json.RawMessage) error {
176+
containerMetadataMap := make(map[string]json.RawMessage)
177+
json.Unmarshal(containerMetadataRawMsg, &containerMetadataMap)
167178

168-
if isEmpty(containerMetadata.DockerID) {
169-
return notEmptyErrMsg("DockerID")
179+
if containerMetadataMap["Name"] == nil {
180+
return notEmptyErrMsg("Containers")
170181
}
171182

172-
if isEmpty(containerMetadata.DockerName) {
173-
return notEmptyErrMsg("DockerName")
183+
var actualContainerName string
184+
json.Unmarshal(containerMetadataMap["Name"] ,&actualContainerName)
185+
186+
if actualContainerName != containerName {
187+
return fmt.Errorf("incorrect container name, expected %s, received %s",
188+
containerName, actualContainerName)
174189
}
175190

176-
return nil
177-
}
191+
if containerMetadataMap["DockerID"] == nil {
192+
return notEmptyErrMsg("Containers")
193+
}
178194

179-
func isEmpty(field string) bool {
180-
if field == "" {
181-
return true
195+
if containerMetadataMap["DockerName"] == nil {
196+
return notEmptyErrMsg("Containers")
182197
}
183198

184-
return false
199+
return nil
185200
}
186201

187202
func notEmptyErrMsg(fieldName string) error {
@@ -196,7 +211,7 @@ func metadataResponse(client *http.Client, endpoint string, respType string) ([]
196211
if err == nil {
197212
return resp, nil
198213
}
199-
fmt.Fprintf(os.Stderr, "Attempt [%d/%d]: unable to get metadata response for '%s' from '%s': %v",
214+
seelog.Infof(os.Stderr, "Attempt [%d/%d]: unable to get metadata response for '%s' from '%s': %v",
200215
i, maxRetries, respType, endpoint, err)
201216
time.Sleep(durationBetweenRetries)
202217
}

0 commit comments

Comments
 (0)