Skip to content

Commit

Permalink
Fix merge map of payload (#3412)
Browse files Browse the repository at this point in the history
  • Loading branch information
rodrigozhou authored and dnr committed Sep 29, 2022
1 parent 86966c5 commit 0603535
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 2 deletions.
7 changes: 5 additions & 2 deletions common/payload/payload.go
Expand Up @@ -86,10 +86,13 @@ func MergeMapOfPayload(
m1 map[string]*commonpb.Payload,
m2 map[string]*commonpb.Payload,
) map[string]*commonpb.Payload {
if len(m1) == 0 {
return maps.Clone(m2)
if m2 == nil {
return maps.Clone(m1)
}
ret := maps.Clone(m1)
if ret == nil {
ret = make(map[string]*commonpb.Payload)
}
for k, v := range m2 {
if proto.Equal(v, nilPayload) || proto.Equal(v, emptySlicePayload) {
delete(ret, k)
Expand Down
12 changes: 12 additions & 0 deletions common/payload/payload_test.go
Expand Up @@ -81,10 +81,22 @@ func TestMergeMapOfPayload(t *testing.T) {
resultMap := MergeMapOfPayload(currentMap, newMap)
assert.Equal(make(map[string]*commonpb.Payload), resultMap)

newMap = make(map[string]*commonpb.Payload)
resultMap = MergeMapOfPayload(currentMap, newMap)
assert.Equal(newMap, resultMap)

newMap = map[string]*commonpb.Payload{"key": EncodeString("val")}
resultMap = MergeMapOfPayload(currentMap, newMap)
assert.Equal(newMap, resultMap)

newMap = map[string]*commonpb.Payload{
"key": EncodeString("val"),
"nil": nilPayload,
"emptyArray": emptySlicePayload,
}
resultMap = MergeMapOfPayload(currentMap, newMap)
assert.Equal(map[string]*commonpb.Payload{"key": EncodeString("val")}, resultMap)

currentMap = map[string]*commonpb.Payload{"number": EncodeString("1")}
resultMap = MergeMapOfPayload(currentMap, newMap)
assert.Equal(
Expand Down
29 changes: 29 additions & 0 deletions host/elasticsearch_test.go
Expand Up @@ -1333,6 +1333,35 @@ func (s *elasticsearchIntegrationSuite) TestUpsertWorkflowExecutionSearchAttribu
time.Sleep(waitTimeInMs * time.Millisecond)
}
s.True(verified)

// verify search attributes from DescribeWorkflowExecution
descRequest := &workflowservice.DescribeWorkflowExecutionRequest{
Namespace: s.namespace,
Execution: &commonpb.WorkflowExecution{
WorkflowId: id,
},
}
descResp, err := s.engine.DescribeWorkflowExecution(NewContext(), descRequest)
s.NoError(err)
expectedSearchAttributes, _ := searchattribute.Encode(
map[string]interface{}{
"CustomDoubleField": 22.0878,
searchattribute.BinaryChecksums: []string{"binary-v1", "binary-v2"},
},
nil,
)
s.Equal(
len(expectedSearchAttributes.GetIndexedFields()),
len(descResp.WorkflowExecutionInfo.GetSearchAttributes().GetIndexedFields()),
)
for attrName, expectedPayload := range expectedSearchAttributes.GetIndexedFields() {
respAttr, ok := descResp.WorkflowExecutionInfo.GetSearchAttributes().GetIndexedFields()[attrName]
s.True(ok)
s.Equal(expectedPayload.GetData(), respAttr.GetData())
attrType, typeSet := respAttr.GetMetadata()[searchattribute.MetadataType]
s.True(typeSet)
s.True(len(attrType) > 0)
}
}

func (s *elasticsearchIntegrationSuite) TestModifyWorkflowExecutionProperties() {
Expand Down

0 comments on commit 0603535

Please sign in to comment.