Skip to content

Commit

Permalink
fix bug found with the system-tests
Browse files Browse the repository at this point in the history
Signed-off-by: Eliott Bouhana <[email protected]>
  • Loading branch information
eliottness committed Feb 3, 2025
1 parent 373e2fd commit 09cab87
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 26 deletions.
43 changes: 29 additions & 14 deletions internal/newtelemetry/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,11 +117,11 @@ func TestClientFlush(t *testing.T) {
payload := payloads[0]
require.IsType(t, transport.MessageBatch{}, payload)
batch := payload.(transport.MessageBatch)
require.Len(t, batch.Payload, 2)
assert.Equal(t, transport.RequestTypeAppClientConfigurationChange, batch.Payload[0].RequestType)
assert.Equal(t, transport.RequestTypeAppExtendedHeartBeat, batch.Payload[1].RequestType)
require.Len(t, batch, 2)
assert.Equal(t, transport.RequestTypeAppClientConfigurationChange, batch[0].RequestType)
assert.Equal(t, transport.RequestTypeAppExtendedHeartBeat, batch[1].RequestType)

assert.Len(t, batch.Payload[1].Payload.(transport.AppExtendedHeartbeat).Configuration, 0)
assert.Len(t, batch[1].Payload.(transport.AppExtendedHeartbeat).Configuration, 0)
},
},
{
Expand All @@ -137,12 +137,12 @@ func TestClientFlush(t *testing.T) {
payload := payloads[0]
require.IsType(t, transport.MessageBatch{}, payload)
batch := payload.(transport.MessageBatch)
require.Len(t, batch.Payload, 2)
assert.Equal(t, transport.RequestTypeAppIntegrationsChange, batch.Payload[0].RequestType)
assert.Equal(t, transport.RequestTypeAppExtendedHeartBeat, batch.Payload[1].RequestType)
assert.Len(t, batch.Payload[1].Payload.(transport.AppExtendedHeartbeat).Integrations, 1)
assert.Equal(t, batch.Payload[1].Payload.(transport.AppExtendedHeartbeat).Integrations[0].Name, "test-integration")
assert.Equal(t, batch.Payload[1].Payload.(transport.AppExtendedHeartbeat).Integrations[0].Version, "1.0.0")
require.Len(t, batch, 2)
assert.Equal(t, transport.RequestTypeAppIntegrationsChange, batch[0].RequestType)
assert.Equal(t, transport.RequestTypeAppExtendedHeartBeat, batch[1].RequestType)
assert.Len(t, batch[1].Payload.(transport.AppExtendedHeartbeat).Integrations, 1)
assert.Equal(t, batch[1].Payload.(transport.AppExtendedHeartbeat).Integrations[0].Name, "test-integration")
assert.Equal(t, batch[1].Payload.(transport.AppExtendedHeartbeat).Integrations[0].Version, "1.0.0")
},
},
{
Expand Down Expand Up @@ -296,8 +296,8 @@ func TestClientFlush(t *testing.T) {
payload := payloads[0]
require.IsType(t, transport.MessageBatch{}, payload)
batch := payload.(transport.MessageBatch)
assert.Len(t, batch.Payload, 2)
for _, payload := range batch.Payload {
assert.Len(t, batch, 2)
for _, payload := range batch {
switch p := payload.Payload.(type) {
case transport.AppProductChange:
assert.Equal(t, transport.RequestTypeAppProductChange, payload.RequestType)
Expand Down Expand Up @@ -328,8 +328,8 @@ func TestClientFlush(t *testing.T) {
payload := payloads[0]
require.IsType(t, transport.MessageBatch{}, payload)
batch := payload.(transport.MessageBatch)
assert.Len(t, batch.Payload, 3)
for _, payload := range batch.Payload {
assert.Len(t, batch, 3)
for _, payload := range batch {
switch p := payload.Payload.(type) {
case transport.AppProductChange:
assert.Equal(t, transport.RequestTypeAppProductChange, payload.RequestType)
Expand Down Expand Up @@ -1097,6 +1097,21 @@ func TestClientEnd2End(t *testing.T) {
assert.Equal(t, transport.RequestTypeAppClosing, bodies[1].RequestType)
},
},
{
name: "message-batch",
when: func(c *client) {
c.RegisterAppConfig("key", "value", OriginCode)
c.ProductStarted(NamespaceAppSec)
},
expect: func(t *testing.T, bodies []transport.Body) {
require.Len(t, bodies, 1)
assert.Equal(t, transport.RequestTypeMessageBatch, bodies[0].RequestType)
batch := bodies[0].Payload.(transport.MessageBatch)
require.Len(t, batch, 2)
assert.Equal(t, transport.RequestTypeAppProductChange, batch[0].RequestType)
assert.Equal(t, transport.RequestTypeAppClientConfigurationChange, batch[1].RequestType)
},
},
{
name: "fail-agent-endpoint",
when: func(c *client) {
Expand Down
2 changes: 1 addition & 1 deletion internal/newtelemetry/internal/mapper/default.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ func (t *messageBatchReducer) Transform(payloads []transport.Payload) ([]transpo
}
}

return []transport.Payload{transport.MessageBatch{Payload: messages}}, t
return []transport.Payload{transport.MessageBatch(messages)}, t
}

type heartbeatEnricher struct {
Expand Down
14 changes: 6 additions & 8 deletions internal/newtelemetry/internal/transport/body.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,26 +89,24 @@ func (b *Body) UnmarshalJSON(bytes []byte) error {
}

if b.RequestType == RequestTypeMessageBatch {
var messageBatch struct {
Payload []struct {
RequestType RequestType `json:"request_type"`
Payload json.RawMessage `json:"payload"`
} `json:"payload"`
var messageBatch []struct {
RequestType RequestType `json:"request_type"`
Payload json.RawMessage `json:"payload"`
}

if err = json.Unmarshal(anyMap["payload"], &messageBatch); err != nil {
return err
}

batch := make([]Message, len(messageBatch.Payload))
for i, message := range messageBatch.Payload {
batch := make([]Message, len(messageBatch))
for i, message := range messageBatch {
payload, err := unmarshalPayload(message.Payload, message.RequestType)
if err != nil {
return err
}
batch[i] = Message{RequestType: message.RequestType, Payload: payload}
}
b.Payload = MessageBatch{Payload: batch}
b.Payload = MessageBatch(batch)
return nil
}

Expand Down
4 changes: 1 addition & 3 deletions internal/newtelemetry/internal/transport/message_batch.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@

package transport

type MessageBatch struct {
Payload []Message `json:"payload"`
}
type MessageBatch []Message

func (MessageBatch) RequestType() RequestType {
return RequestTypeMessageBatch
Expand Down

0 comments on commit 09cab87

Please sign in to comment.