go.opentelemetry.io/contrib/instrumentation/github.com/Shopify/sarama/otelsarama@v0.43.0/message_test.go (about) 1 // Copyright The OpenTelemetry Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package otelsarama 16 17 import ( 18 "testing" 19 20 "github.com/Shopify/sarama" 21 "github.com/stretchr/testify/assert" 22 ) 23 24 func TestProducerMessageCarrierGet(t *testing.T) { 25 testCases := []struct { 26 name string 27 carrier ProducerMessageCarrier 28 key string 29 expected string 30 }{ 31 { 32 name: "exists", 33 carrier: ProducerMessageCarrier{msg: &sarama.ProducerMessage{Headers: []sarama.RecordHeader{ 34 {Key: []byte("foo"), Value: []byte("bar")}, 35 }}}, 36 key: "foo", 37 expected: "bar", 38 }, 39 { 40 name: "not exists", 41 carrier: ProducerMessageCarrier{msg: &sarama.ProducerMessage{Headers: []sarama.RecordHeader{}}}, 42 key: "foo", 43 expected: "", 44 }, 45 } 46 47 for _, tc := range testCases { 48 t.Run(tc.name, func(t *testing.T) { 49 result := tc.carrier.Get(tc.key) 50 assert.Equal(t, tc.expected, result) 51 }) 52 } 53 } 54 55 func TestProducerMessageCarrierSet(t *testing.T) { 56 msg := sarama.ProducerMessage{Headers: []sarama.RecordHeader{ 57 {Key: []byte("foo"), Value: []byte("bar")}, 58 }} 59 carrier := ProducerMessageCarrier{msg: &msg} 60 61 carrier.Set("foo", "bar2") 62 carrier.Set("foo2", "bar2") 63 carrier.Set("foo2", "bar3") 64 carrier.Set("foo3", "bar4") 65 66 assert.ElementsMatch(t, carrier.msg.Headers, []sarama.RecordHeader{ 67 {Key: []byte("foo"), Value: []byte("bar2")}, 68 {Key: []byte("foo2"), Value: []byte("bar3")}, 69 {Key: []byte("foo3"), Value: []byte("bar4")}, 70 }) 71 } 72 73 func TestProducerMessageCarrierKeys(t *testing.T) { 74 testCases := []struct { 75 name string 76 carrier ProducerMessageCarrier 77 expected []string 78 }{ 79 { 80 name: "one", 81 carrier: ProducerMessageCarrier{msg: &sarama.ProducerMessage{Headers: []sarama.RecordHeader{ 82 {Key: []byte("foo"), Value: []byte("bar")}, 83 }}}, 84 expected: []string{"foo"}, 85 }, 86 { 87 name: "none", 88 carrier: ProducerMessageCarrier{msg: &sarama.ProducerMessage{Headers: []sarama.RecordHeader{}}}, 89 expected: []string{}, 90 }, 91 { 92 name: "many", 93 carrier: ProducerMessageCarrier{msg: &sarama.ProducerMessage{Headers: []sarama.RecordHeader{ 94 {Key: []byte("foo"), Value: []byte("bar")}, 95 {Key: []byte("baz"), Value: []byte("quux")}, 96 }}}, 97 expected: []string{"foo", "baz"}, 98 }, 99 } 100 101 for _, tc := range testCases { 102 t.Run(tc.name, func(t *testing.T) { 103 result := tc.carrier.Keys() 104 assert.Equal(t, tc.expected, result) 105 }) 106 } 107 } 108 109 func TestConsumerMessageCarrierGet(t *testing.T) { 110 testCases := []struct { 111 name string 112 carrier ConsumerMessageCarrier 113 key string 114 expected string 115 }{ 116 { 117 name: "exists", 118 carrier: ConsumerMessageCarrier{msg: &sarama.ConsumerMessage{Headers: []*sarama.RecordHeader{ 119 {Key: []byte("foo"), Value: []byte("bar")}, 120 }}}, 121 key: "foo", 122 expected: "bar", 123 }, 124 { 125 name: "not exists", 126 carrier: ConsumerMessageCarrier{msg: &sarama.ConsumerMessage{Headers: []*sarama.RecordHeader{}}}, 127 key: "foo", 128 expected: "", 129 }, 130 } 131 132 for _, tc := range testCases { 133 t.Run(tc.name, func(t *testing.T) { 134 result := tc.carrier.Get(tc.key) 135 assert.Equal(t, tc.expected, result) 136 }) 137 } 138 } 139 140 func TestConsumerMessageCarrierSet(t *testing.T) { 141 msg := sarama.ConsumerMessage{Headers: []*sarama.RecordHeader{ 142 {Key: []byte("foo"), Value: []byte("bar")}, 143 }} 144 carrier := ConsumerMessageCarrier{msg: &msg} 145 146 carrier.Set("foo", "bar2") 147 carrier.Set("foo2", "bar2") 148 carrier.Set("foo2", "bar3") 149 carrier.Set("foo3", "bar4") 150 151 assert.ElementsMatch(t, carrier.msg.Headers, []*sarama.RecordHeader{ 152 {Key: []byte("foo"), Value: []byte("bar2")}, 153 {Key: []byte("foo2"), Value: []byte("bar3")}, 154 {Key: []byte("foo3"), Value: []byte("bar4")}, 155 }) 156 } 157 158 func TestConsumerMessageCarrierKeys(t *testing.T) { 159 testCases := []struct { 160 name string 161 carrier ConsumerMessageCarrier 162 expected []string 163 }{ 164 { 165 name: "one", 166 carrier: ConsumerMessageCarrier{msg: &sarama.ConsumerMessage{Headers: []*sarama.RecordHeader{ 167 {Key: []byte("foo"), Value: []byte("bar")}, 168 }}}, 169 expected: []string{"foo"}, 170 }, 171 { 172 name: "none", 173 carrier: ConsumerMessageCarrier{msg: &sarama.ConsumerMessage{Headers: []*sarama.RecordHeader{}}}, 174 expected: []string{}, 175 }, 176 { 177 name: "many", 178 carrier: ConsumerMessageCarrier{msg: &sarama.ConsumerMessage{Headers: []*sarama.RecordHeader{ 179 {Key: []byte("foo"), Value: []byte("bar")}, 180 {Key: []byte("baz"), Value: []byte("quux")}, 181 }}}, 182 expected: []string{"foo", "baz"}, 183 }, 184 } 185 186 for _, tc := range testCases { 187 t.Run(tc.name, func(t *testing.T) { 188 result := tc.carrier.Keys() 189 assert.Equal(t, tc.expected, result) 190 }) 191 } 192 }