1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-24 13:48:49 +08:00

475 lines
15 KiB
Go
Raw Normal View History

// Copyright (c) Mainflux
// SPDX-License-Identifier: Apache-2.0
package mqtt_test
import (
MF-786 - Tracing over NATS using opentracing standard (#1739) * send and receive span context Signed-off-by: SammyOina <sammyoina@gmail.com> * initilize tracer in cmd Signed-off-by: SammyOina <sammyoina@gmail.com> * add span context to mainflux message Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate span context from adapters Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * fix linting error Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to coap service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to http service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to mqtt service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to broker Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to ws service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing to services Signed-off-by: SammyOina <sammyoina@gmail.com> * fix naming convention of functions Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * remove tracer from mqtt svc Signed-off-by: SammyOina <sammyoina@gmail.com> * format code and removed unused code Signed-off-by: SammyOina <sammyoina@gmail.com> * rename tracing files Signed-off-by: SammyOina <sammyoina@gmail.com> * - rename nats tracer - intialize tracing at the broker Signed-off-by: SammyOina <sammyoina@gmail.com> * check for nil spans Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate spans to consumers writers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove unused variable Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate traces to notifiers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove comments Signed-off-by: SammyOina <sammyoina@gmail.com> * remove span from message Signed-off-by: SammyOina <sammyoina@gmail.com> * remove span from message Signed-off-by: SammyOina <sammyoina@gmail.com> * trace over rabbitmq and mqtt Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * trace subscribe and unsuscribe ops Signed-off-by: SammyOina <sammyoina@gmail.com> * add create span method Signed-off-by: SammyOina <sammyoina@gmail.com> * pass context from main Signed-off-by: SammyOina <sammyoina@gmail.com> * add span tags Signed-off-by: SammyOina <sammyoina@gmail.com> * restore coap transport.go Signed-off-by: SammyOina <sammyoina@gmail.com> * add context to ops Signed-off-by: SammyOina <sammyoina@gmail.com> * add cancel to tracing Signed-off-by: SammyOina <sammyoina@gmail.com> * refactor handler Signed-off-by: SammyOina <sammyoina@gmail.com> * add comments to exported functions return interfaces Signed-off-by: SammyOina <sammyoina@gmail.com> * remove channel span tag Signed-off-by: SammyOina <sammyoina@gmail.com> * add pub sub tracer Signed-off-by: SammyOina <sammyoina@gmail.com> * add pub sub tracer Signed-off-by: SammyOina <sammyoina@gmail.com> * remove prefixes from operations Signed-off-by: SammyOina <sammyoina@gmail.com> * perpetuate context from root remove protocol from span tag Signed-off-by: SammyOina <sammyoina@gmail.com> * reorder functions Signed-off-by: SammyOina <sammyoina@gmail.com> * create span function Signed-off-by: SammyOina <sammyoina@gmail.com> * add suffixes add pubsub tags Signed-off-by: SammyOina <sammyoina@gmail.com> * move from if to switch Signed-off-by: SammyOina <sammyoina@gmail.com> * add jaeger url to docker compose Signed-off-by: SammyOina <sammyoina@gmail.com> * remove snake case variables add comments to exported functions Signed-off-by: SammyOina <sammyoina@gmail.com> * check for empty sub topics Signed-off-by: SammyOina <sammyoina@gmail.com> * remove tracing on consumers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove duplicate tracers Signed-off-by: SammyOina <sammyoina@gmail.com> * clean up unused variables Signed-off-by: SammyOina <sammyoina@gmail.com> * remove empty lines Signed-off-by: SammyOina <sammyoina@gmail.com> * write better comments Signed-off-by: SammyOina <sammyoina@gmail.com> * update readme jaeger url Signed-off-by: SammyOina <sammyoina@gmail.com> * initialize tracing midlleware on main update readme jaeger urls Signed-off-by: SammyOina <sammyoina@gmail.com> * reorder arguments for tracing middleware Signed-off-by: SammyOina <sammyoina@gmail.com> * add context to subscribe Signed-off-by: SammyOina <sammyoina@gmail.com> --------- Signed-off-by: SammyOina <sammyoina@gmail.com>
2023-04-20 22:39:33 +03:00
"context"
NOISSUE - Update pubsub tests for rabbitmq (#1656) * testPubSub failing on channel Signed-off-by: aryan <aryangodara03@gmail.com> * testPubSub failing, rest passing Signed-off-by: aryan <aryangodara03@gmail.com> * all tests passing Signed-off-by: aryan <aryangodara03@gmail.com> * removed unnecessary lines Signed-off-by: aryan <aryangodara03@gmail.com> * rename subunsub to unsubscribe Signed-off-by: aryan <aryangodara03@gmail.com> * nats tests working, rabbitmq left Signed-off-by: aryan <aryangodara03@gmail.com> * fix TestPublisher Signed-off-by: aryan <aryangodara03@gmail.com> * changed clientID of pubsub Signed-off-by: aryan <aryangodara03@gmail.com> * testSubscribe failing, rest all passing Signed-off-by: aryan <aryangodara03@gmail.com> * testPubsub failing Signed-off-by: aryan <aryangodara03@gmail.com> * TestSubscribe(s) failing, rest tests passing. Signed-off-by: aryan <aryangodara03@gmail.com> * For Rabbitmq, all tests are passing. Signed-off-by: aryan <aryangodara03@gmail.com> * For Nats, All tests passing, but unreliable Signed-off-by: aryan <aryangodara03@gmail.com> * Fix typos and improve variable names. Signed-off-by: aryan <aryangodara03@gmail.com> * nats tests passing, rabbitmq half tests passing. Signed-off-by: aryan <aryangodara03@gmail.com> * all tests working. Signed-off-by: aryan <aryangodara03@gmail.com> * removed commented out, dead code. Signed-off-by: aryan <aryangodara03@gmail.com> * fix errors, queuesubscribe tests for nats. Signed-off-by: aryan <aryangodara03@gmail.com> * updated broker.Connect to opts.Connect for nats. Signed-off-by: aryan <aryangodara03@gmail.com> * experimental soluton Signed-off-by: aryan <aryangodara03@gmail.com> * Revert nats back to original status. Signed-off-by: aryan <aryangodara03@gmail.com> * Remove unnecessary commit Signed-off-by: aryan <aryangodara03@gmail.com> Signed-off-by: aryan <aryangodara03@gmail.com>
2022-12-31 06:48:31 +05:30
"errors"
"fmt"
"testing"
"time"
mqtt "github.com/eclipse/paho.mqtt.golang"
"github.com/mainflux/mainflux/pkg/messaging"
NOISSUE - Change import name aliases (#1868) * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
2023-08-11 02:30:25 -07:00
mqttpubsub "github.com/mainflux/mainflux/pkg/messaging/mqtt"
"github.com/stretchr/testify/assert"
"google.golang.org/protobuf/proto"
)
const (
topic = "topic"
chansPrefix = "channels"
channel = "9b7b1b3f-b1b0-46a8-a717-b8213f9eda3b"
subtopic = "engine"
tokenTimeout = 100 * time.Millisecond
)
NOISSUE - Change import name aliases (#1868) * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
2023-08-11 02:30:25 -07:00
var data = []byte("payload")
NOISSUE - Update pubsub tests for rabbitmq (#1656) * testPubSub failing on channel Signed-off-by: aryan <aryangodara03@gmail.com> * testPubSub failing, rest passing Signed-off-by: aryan <aryangodara03@gmail.com> * all tests passing Signed-off-by: aryan <aryangodara03@gmail.com> * removed unnecessary lines Signed-off-by: aryan <aryangodara03@gmail.com> * rename subunsub to unsubscribe Signed-off-by: aryan <aryangodara03@gmail.com> * nats tests working, rabbitmq left Signed-off-by: aryan <aryangodara03@gmail.com> * fix TestPublisher Signed-off-by: aryan <aryangodara03@gmail.com> * changed clientID of pubsub Signed-off-by: aryan <aryangodara03@gmail.com> * testSubscribe failing, rest all passing Signed-off-by: aryan <aryangodara03@gmail.com> * testPubsub failing Signed-off-by: aryan <aryangodara03@gmail.com> * TestSubscribe(s) failing, rest tests passing. Signed-off-by: aryan <aryangodara03@gmail.com> * For Rabbitmq, all tests are passing. Signed-off-by: aryan <aryangodara03@gmail.com> * For Nats, All tests passing, but unreliable Signed-off-by: aryan <aryangodara03@gmail.com> * Fix typos and improve variable names. Signed-off-by: aryan <aryangodara03@gmail.com> * nats tests passing, rabbitmq half tests passing. Signed-off-by: aryan <aryangodara03@gmail.com> * all tests working. Signed-off-by: aryan <aryangodara03@gmail.com> * removed commented out, dead code. Signed-off-by: aryan <aryangodara03@gmail.com> * fix errors, queuesubscribe tests for nats. Signed-off-by: aryan <aryangodara03@gmail.com> * updated broker.Connect to opts.Connect for nats. Signed-off-by: aryan <aryangodara03@gmail.com> * experimental soluton Signed-off-by: aryan <aryangodara03@gmail.com> * Revert nats back to original status. Signed-off-by: aryan <aryangodara03@gmail.com> * Remove unnecessary commit Signed-off-by: aryan <aryangodara03@gmail.com> Signed-off-by: aryan <aryangodara03@gmail.com>
2022-12-31 06:48:31 +05:30
// ErrFailedHandleMessage indicates that the message couldn't be handled.
var errFailedHandleMessage = errors.New("failed to handle mainflux message")
func TestPublisher(t *testing.T) {
msgChan := make(chan []byte)
// Subscribing with topic, and with subtopic, so that we can publish messages.
client, err := newClient(address, "clientID1", brokerTimeout)
assert.Nil(t, err, fmt.Sprintf("got unexpected error: %s", err))
token := client.Subscribe(topic, qos, func(_ mqtt.Client, m mqtt.Message) {
msgChan <- m.Payload()
})
if ok := token.WaitTimeout(tokenTimeout); !ok {
assert.Fail(t, fmt.Sprintf("failed to subscribe to topic %s", topic))
}
assert.Nil(t, token.Error(), fmt.Sprintf("got unexpected error: %s", token.Error()))
token = client.Subscribe(fmt.Sprintf("%s.%s", topic, subtopic), qos, func(_ mqtt.Client, m mqtt.Message) {
msgChan <- m.Payload()
})
if ok := token.WaitTimeout(tokenTimeout); !ok {
assert.Fail(t, fmt.Sprintf("failed to subscribe to topic %s", fmt.Sprintf("%s.%s", topic, subtopic)))
}
assert.Nil(t, token.Error(), fmt.Sprintf("got unexpected error: %s", token.Error()))
t.Cleanup(func() {
token := client.Unsubscribe(topic, fmt.Sprintf("%s.%s", topic, subtopic))
token.WaitTimeout(tokenTimeout)
assert.Nil(t, token.Error(), fmt.Sprintf("got unexpected error: %s", token.Error()))
client.Disconnect(100)
})
// Test publish with an empty topic.
MF-786 - Tracing over NATS using opentracing standard (#1739) * send and receive span context Signed-off-by: SammyOina <sammyoina@gmail.com> * initilize tracer in cmd Signed-off-by: SammyOina <sammyoina@gmail.com> * add span context to mainflux message Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate span context from adapters Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * fix linting error Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to coap service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to http service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to mqtt service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to broker Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to ws service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing to services Signed-off-by: SammyOina <sammyoina@gmail.com> * fix naming convention of functions Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * remove tracer from mqtt svc Signed-off-by: SammyOina <sammyoina@gmail.com> * format code and removed unused code Signed-off-by: SammyOina <sammyoina@gmail.com> * rename tracing files Signed-off-by: SammyOina <sammyoina@gmail.com> * - rename nats tracer - intialize tracing at the broker Signed-off-by: SammyOina <sammyoina@gmail.com> * check for nil spans Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate spans to consumers writers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove unused variable Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate traces to notifiers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove comments Signed-off-by: SammyOina <sammyoina@gmail.com> * remove span from message Signed-off-by: SammyOina <sammyoina@gmail.com> * remove span from message Signed-off-by: SammyOina <sammyoina@gmail.com> * trace over rabbitmq and mqtt Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * trace subscribe and unsuscribe ops Signed-off-by: SammyOina <sammyoina@gmail.com> * add create span method Signed-off-by: SammyOina <sammyoina@gmail.com> * pass context from main Signed-off-by: SammyOina <sammyoina@gmail.com> * add span tags Signed-off-by: SammyOina <sammyoina@gmail.com> * restore coap transport.go Signed-off-by: SammyOina <sammyoina@gmail.com> * add context to ops Signed-off-by: SammyOina <sammyoina@gmail.com> * add cancel to tracing Signed-off-by: SammyOina <sammyoina@gmail.com> * refactor handler Signed-off-by: SammyOina <sammyoina@gmail.com> * add comments to exported functions return interfaces Signed-off-by: SammyOina <sammyoina@gmail.com> * remove channel span tag Signed-off-by: SammyOina <sammyoina@gmail.com> * add pub sub tracer Signed-off-by: SammyOina <sammyoina@gmail.com> * add pub sub tracer Signed-off-by: SammyOina <sammyoina@gmail.com> * remove prefixes from operations Signed-off-by: SammyOina <sammyoina@gmail.com> * perpetuate context from root remove protocol from span tag Signed-off-by: SammyOina <sammyoina@gmail.com> * reorder functions Signed-off-by: SammyOina <sammyoina@gmail.com> * create span function Signed-off-by: SammyOina <sammyoina@gmail.com> * add suffixes add pubsub tags Signed-off-by: SammyOina <sammyoina@gmail.com> * move from if to switch Signed-off-by: SammyOina <sammyoina@gmail.com> * add jaeger url to docker compose Signed-off-by: SammyOina <sammyoina@gmail.com> * remove snake case variables add comments to exported functions Signed-off-by: SammyOina <sammyoina@gmail.com> * check for empty sub topics Signed-off-by: SammyOina <sammyoina@gmail.com> * remove tracing on consumers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove duplicate tracers Signed-off-by: SammyOina <sammyoina@gmail.com> * clean up unused variables Signed-off-by: SammyOina <sammyoina@gmail.com> * remove empty lines Signed-off-by: SammyOina <sammyoina@gmail.com> * write better comments Signed-off-by: SammyOina <sammyoina@gmail.com> * update readme jaeger url Signed-off-by: SammyOina <sammyoina@gmail.com> * initialize tracing midlleware on main update readme jaeger urls Signed-off-by: SammyOina <sammyoina@gmail.com> * reorder arguments for tracing middleware Signed-off-by: SammyOina <sammyoina@gmail.com> * add context to subscribe Signed-off-by: SammyOina <sammyoina@gmail.com> --------- Signed-off-by: SammyOina <sammyoina@gmail.com>
2023-04-20 22:39:33 +03:00
err = pubsub.Publish(context.TODO(), "", &messaging.Message{Payload: data})
NOISSUE - Change import name aliases (#1868) * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
2023-08-11 02:30:25 -07:00
assert.Equal(t, err, mqttpubsub.ErrEmptyTopic, fmt.Sprintf("Publish with empty topic: expected: %s, got: %s", mqttpubsub.ErrEmptyTopic, err))
cases := []struct {
desc string
channel string
subtopic string
payload []byte
}{
{
desc: "publish message with nil payload",
payload: nil,
},
{
desc: "publish message with string payload",
payload: data,
},
{
desc: "publish message with channel",
payload: data,
channel: channel,
},
{
desc: "publish message with subtopic",
payload: data,
subtopic: subtopic,
},
{
desc: "publish message with channel and subtopic",
payload: data,
channel: channel,
subtopic: subtopic,
},
}
for _, tc := range cases {
expectedMsg := messaging.Message{
Publisher: "clientID11",
Channel: tc.channel,
Subtopic: tc.subtopic,
Payload: tc.payload,
}
MF-786 - Tracing over NATS using opentracing standard (#1739) * send and receive span context Signed-off-by: SammyOina <sammyoina@gmail.com> * initilize tracer in cmd Signed-off-by: SammyOina <sammyoina@gmail.com> * add span context to mainflux message Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate span context from adapters Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * fix linting error Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to coap service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to http service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to mqtt service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to broker Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to ws service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing to services Signed-off-by: SammyOina <sammyoina@gmail.com> * fix naming convention of functions Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * remove tracer from mqtt svc Signed-off-by: SammyOina <sammyoina@gmail.com> * format code and removed unused code Signed-off-by: SammyOina <sammyoina@gmail.com> * rename tracing files Signed-off-by: SammyOina <sammyoina@gmail.com> * - rename nats tracer - intialize tracing at the broker Signed-off-by: SammyOina <sammyoina@gmail.com> * check for nil spans Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate spans to consumers writers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove unused variable Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate traces to notifiers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove comments Signed-off-by: SammyOina <sammyoina@gmail.com> * remove span from message Signed-off-by: SammyOina <sammyoina@gmail.com> * remove span from message Signed-off-by: SammyOina <sammyoina@gmail.com> * trace over rabbitmq and mqtt Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * trace subscribe and unsuscribe ops Signed-off-by: SammyOina <sammyoina@gmail.com> * add create span method Signed-off-by: SammyOina <sammyoina@gmail.com> * pass context from main Signed-off-by: SammyOina <sammyoina@gmail.com> * add span tags Signed-off-by: SammyOina <sammyoina@gmail.com> * restore coap transport.go Signed-off-by: SammyOina <sammyoina@gmail.com> * add context to ops Signed-off-by: SammyOina <sammyoina@gmail.com> * add cancel to tracing Signed-off-by: SammyOina <sammyoina@gmail.com> * refactor handler Signed-off-by: SammyOina <sammyoina@gmail.com> * add comments to exported functions return interfaces Signed-off-by: SammyOina <sammyoina@gmail.com> * remove channel span tag Signed-off-by: SammyOina <sammyoina@gmail.com> * add pub sub tracer Signed-off-by: SammyOina <sammyoina@gmail.com> * add pub sub tracer Signed-off-by: SammyOina <sammyoina@gmail.com> * remove prefixes from operations Signed-off-by: SammyOina <sammyoina@gmail.com> * perpetuate context from root remove protocol from span tag Signed-off-by: SammyOina <sammyoina@gmail.com> * reorder functions Signed-off-by: SammyOina <sammyoina@gmail.com> * create span function Signed-off-by: SammyOina <sammyoina@gmail.com> * add suffixes add pubsub tags Signed-off-by: SammyOina <sammyoina@gmail.com> * move from if to switch Signed-off-by: SammyOina <sammyoina@gmail.com> * add jaeger url to docker compose Signed-off-by: SammyOina <sammyoina@gmail.com> * remove snake case variables add comments to exported functions Signed-off-by: SammyOina <sammyoina@gmail.com> * check for empty sub topics Signed-off-by: SammyOina <sammyoina@gmail.com> * remove tracing on consumers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove duplicate tracers Signed-off-by: SammyOina <sammyoina@gmail.com> * clean up unused variables Signed-off-by: SammyOina <sammyoina@gmail.com> * remove empty lines Signed-off-by: SammyOina <sammyoina@gmail.com> * write better comments Signed-off-by: SammyOina <sammyoina@gmail.com> * update readme jaeger url Signed-off-by: SammyOina <sammyoina@gmail.com> * initialize tracing midlleware on main update readme jaeger urls Signed-off-by: SammyOina <sammyoina@gmail.com> * reorder arguments for tracing middleware Signed-off-by: SammyOina <sammyoina@gmail.com> * add context to subscribe Signed-off-by: SammyOina <sammyoina@gmail.com> --------- Signed-off-by: SammyOina <sammyoina@gmail.com>
2023-04-20 22:39:33 +03:00
err := pubsub.Publish(context.TODO(), topic, &expectedMsg)
assert.Nil(t, err, fmt.Sprintf("%s: got unexpected error: %s\n", tc.desc, err))
data, err := proto.Marshal(&expectedMsg)
assert.Nil(t, err, fmt.Sprintf("%s: failed to serialize protobuf error: %s\n", tc.desc, err))
receivedMsg := <-msgChan
if tc.payload != nil {
assert.Equal(t, expectedMsg.GetPayload(), receivedMsg, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, data, receivedMsg))
}
}
}
func TestSubscribe(t *testing.T) {
msgChan := make(chan *messaging.Message)
// Creating client to Publish messages to subscribed topic.
client, err := newClient(address, "mainflux", brokerTimeout)
assert.Nil(t, err, fmt.Sprintf("got unexpected error: %s", err))
t.Cleanup(func() {
client.Unsubscribe()
client.Disconnect(100)
})
cases := []struct {
desc string
topic string
clientID string
err error
handler messaging.MessageHandler
}{
{
desc: "Subscribe to a topic with an ID",
topic: topic,
clientID: "clientid1",
err: nil,
handler: handler{false, "clientid1", msgChan},
},
{
desc: "Subscribe to the same topic with a different ID",
topic: topic,
clientID: "clientid2",
err: nil,
handler: handler{false, "clientid2", msgChan},
},
{
desc: "Subscribe to an already subscribed topic with an ID",
topic: topic,
clientID: "clientid1",
err: nil,
handler: handler{false, "clientid1", msgChan},
},
{
desc: "Subscribe to a topic with a subtopic with an ID",
topic: fmt.Sprintf("%s.%s", topic, subtopic),
clientID: "clientid1",
err: nil,
handler: handler{false, "clientid1", msgChan},
},
{
desc: "Subscribe to an already subscribed topic with a subtopic with an ID",
topic: fmt.Sprintf("%s.%s", topic, subtopic),
clientID: "clientid1",
err: nil,
handler: handler{false, "clientid1", msgChan},
},
{
desc: "Subscribe to an empty topic with an ID",
topic: "",
clientID: "clientid1",
NOISSUE - Change import name aliases (#1868) * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
2023-08-11 02:30:25 -07:00
err: mqttpubsub.ErrEmptyTopic,
handler: handler{false, "clientid1", msgChan},
},
{
desc: "Subscribe to a topic with empty id",
topic: topic,
clientID: "",
NOISSUE - Change import name aliases (#1868) * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
2023-08-11 02:30:25 -07:00
err: mqttpubsub.ErrEmptyID,
handler: handler{false, "", msgChan},
},
}
for _, tc := range cases {
NOISSUE - Add Subscriber Config (#1896) * Replace Nats with Nats Jestream For PubSub Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Add Stream Description Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Fix connection leak in NATS publisher The publisher struct in pkg/messaging/nats/publisher.go was modified to include a new `conn` field of type `*broker.Conn`. This change was made to fix a connection leak issue in the NATS publisher. The `NewPublisher` function was updated to assign the `conn` parameter to the new `conn` field in the publisher struct. Additionally, the `Close` method in the publisher struct was modified to close the `conn` connection. This commit fixes the connection leak issue in the NATS publisher and ensures that connections are properly closed. Signed-off-by: Rodney Osodo <socials@rodneyosodo.com> * Setup subscriber config to contain handler topic and ID Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Add delivery policy Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Avoid duplicate messages Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Rename to DeliveryPolicy Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Fix tests Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Not check for data result set when we are returning subset of messages Signed-off-by: Rodney Osodo <socials@rodneyosodo.com> Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * For unsubscribe remove config Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * Fix comment Signed-off-by: rodneyosodo <blackd0t@protonmail.com> --------- Signed-off-by: rodneyosodo <blackd0t@protonmail.com> Signed-off-by: Rodney Osodo <socials@rodneyosodo.com> Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
2023-10-23 16:27:15 +03:00
subCfg := messaging.SubscriberConfig{
ID: tc.clientID,
Topic: tc.topic,
Handler: tc.handler,
}
err = pubsub.Subscribe(context.TODO(), subCfg)
assert.Equal(t, err, tc.err, fmt.Sprintf("%s: expected: %s, but got: %s", tc.desc, err, tc.err))
if tc.err == nil {
expectedMsg := messaging.Message{
Publisher: "clientID1",
Channel: channel,
Subtopic: subtopic,
Payload: data,
}
data, err := proto.Marshal(&expectedMsg)
assert.Nil(t, err, fmt.Sprintf("%s: failed to serialize protobuf error: %s\n", tc.desc, err))
token := client.Publish(tc.topic, qos, false, data)
token.WaitTimeout(tokenTimeout)
assert.Nil(t, token.Error(), fmt.Sprintf("got unexpected error: %s", token.Error()))
receivedMsg := <-msgChan
assert.Equal(t, expectedMsg.Channel, receivedMsg.Channel, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, &expectedMsg, receivedMsg))
assert.Equal(t, expectedMsg.Created, receivedMsg.Created, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, &expectedMsg, receivedMsg))
assert.Equal(t, expectedMsg.Protocol, receivedMsg.Protocol, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, &expectedMsg, receivedMsg))
assert.Equal(t, expectedMsg.Publisher, receivedMsg.Publisher, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, &expectedMsg, receivedMsg))
assert.Equal(t, expectedMsg.Subtopic, receivedMsg.Subtopic, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, &expectedMsg, receivedMsg))
assert.Equal(t, expectedMsg.Payload, receivedMsg.Payload, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, &expectedMsg, receivedMsg))
}
}
}
func TestPubSub(t *testing.T) {
msgChan := make(chan *messaging.Message)
cases := []struct {
desc string
topic string
clientID string
err error
handler messaging.MessageHandler
}{
{
desc: "Subscribe to a topic with an ID",
topic: topic,
clientID: "clientid7",
err: nil,
handler: handler{false, "clientid7", msgChan},
},
{
desc: "Subscribe to the same topic with a different ID",
topic: topic,
clientID: "clientid8",
err: nil,
handler: handler{false, "clientid8", msgChan},
},
{
desc: "Subscribe to a topic with a subtopic with an ID",
topic: fmt.Sprintf("%s.%s", topic, subtopic),
clientID: "clientid7",
err: nil,
handler: handler{false, "clientid7", msgChan},
},
{
desc: "Subscribe to an empty topic with an ID",
topic: "",
clientID: "clientid7",
NOISSUE - Change import name aliases (#1868) * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
2023-08-11 02:30:25 -07:00
err: mqttpubsub.ErrEmptyTopic,
handler: handler{false, "clientid7", msgChan},
},
{
desc: "Subscribe to a topic with empty id",
topic: topic,
clientID: "",
NOISSUE - Change import name aliases (#1868) * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
2023-08-11 02:30:25 -07:00
err: mqttpubsub.ErrEmptyID,
handler: handler{false, "", msgChan},
},
}
for _, tc := range cases {
NOISSUE - Add Subscriber Config (#1896) * Replace Nats with Nats Jestream For PubSub Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Add Stream Description Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Fix connection leak in NATS publisher The publisher struct in pkg/messaging/nats/publisher.go was modified to include a new `conn` field of type `*broker.Conn`. This change was made to fix a connection leak issue in the NATS publisher. The `NewPublisher` function was updated to assign the `conn` parameter to the new `conn` field in the publisher struct. Additionally, the `Close` method in the publisher struct was modified to close the `conn` connection. This commit fixes the connection leak issue in the NATS publisher and ensures that connections are properly closed. Signed-off-by: Rodney Osodo <socials@rodneyosodo.com> * Setup subscriber config to contain handler topic and ID Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Add delivery policy Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Avoid duplicate messages Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Rename to DeliveryPolicy Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Fix tests Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Not check for data result set when we are returning subset of messages Signed-off-by: Rodney Osodo <socials@rodneyosodo.com> Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * For unsubscribe remove config Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * Fix comment Signed-off-by: rodneyosodo <blackd0t@protonmail.com> --------- Signed-off-by: rodneyosodo <blackd0t@protonmail.com> Signed-off-by: Rodney Osodo <socials@rodneyosodo.com> Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
2023-10-23 16:27:15 +03:00
subCfg := messaging.SubscriberConfig{
ID: tc.clientID,
Topic: tc.topic,
Handler: tc.handler,
}
err := pubsub.Subscribe(context.TODO(), subCfg)
assert.Equal(t, err, tc.err, fmt.Sprintf("%s: expected: %s, but got: %s", tc.desc, err, tc.err))
if tc.err == nil {
// Use pubsub to subscribe to a topic, and then publish messages to that topic.
expectedMsg := messaging.Message{
Publisher: "clientID",
Channel: channel,
Subtopic: subtopic,
Payload: data,
}
data, err := proto.Marshal(&expectedMsg)
assert.Nil(t, err, fmt.Sprintf("%s: failed to serialize protobuf error: %s\n", tc.desc, err))
msg := messaging.Message{
Payload: data,
}
// Publish message, and then receive it on message channel.
err = pubsub.Publish(context.TODO(), topic, &msg)
assert.Nil(t, err, fmt.Sprintf("%s: got unexpected error: %s\n", tc.desc, err))
receivedMsg := <-msgChan
assert.Equal(t, expectedMsg.Channel, receivedMsg.Channel, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, &expectedMsg, receivedMsg))
assert.Equal(t, expectedMsg.Created, receivedMsg.Created, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, &expectedMsg, receivedMsg))
assert.Equal(t, expectedMsg.Protocol, receivedMsg.Protocol, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, &expectedMsg, receivedMsg))
assert.Equal(t, expectedMsg.Publisher, receivedMsg.Publisher, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, &expectedMsg, receivedMsg))
assert.Equal(t, expectedMsg.Subtopic, receivedMsg.Subtopic, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, &expectedMsg, receivedMsg))
assert.Equal(t, expectedMsg.Payload, receivedMsg.Payload, fmt.Sprintf("%s: expected %+v got %+v\n", tc.desc, &expectedMsg, receivedMsg))
}
}
}
func TestUnsubscribe(t *testing.T) {
msgChan := make(chan *messaging.Message)
cases := []struct {
desc string
topic string
clientID string
err error
subscribe bool // True for subscribe and false for unsubscribe.
handler messaging.MessageHandler
}{
{
desc: "Subscribe to a topic with an ID",
topic: fmt.Sprintf("%s.%s", chansPrefix, topic),
clientID: "clientid4",
err: nil,
subscribe: true,
handler: handler{false, "clientid4", msgChan},
},
{
desc: "Subscribe to the same topic with a different ID",
topic: fmt.Sprintf("%s.%s", chansPrefix, topic),
clientID: "clientid9",
err: nil,
subscribe: true,
handler: handler{false, "clientid9", msgChan},
},
{
desc: "Unsubscribe from a topic with an ID",
topic: fmt.Sprintf("%s.%s", chansPrefix, topic),
clientID: "clientid4",
err: nil,
subscribe: false,
handler: handler{false, "clientid4", msgChan},
},
{
desc: "Unsubscribe from same topic with different ID",
topic: fmt.Sprintf("%s.%s", chansPrefix, topic),
clientID: "clientid9",
err: nil,
subscribe: false,
handler: handler{false, "clientid9", msgChan},
},
{
desc: "Unsubscribe from a non-existent topic with an ID",
topic: "h",
clientID: "clientid4",
NOISSUE - Change import name aliases (#1868) * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
2023-08-11 02:30:25 -07:00
err: mqttpubsub.ErrNotSubscribed,
subscribe: false,
handler: handler{false, "clientid4", msgChan},
},
{
desc: "Unsubscribe from an already unsubscribed topic with an ID",
topic: fmt.Sprintf("%s.%s", chansPrefix, topic),
clientID: "clientid4",
NOISSUE - Change import name aliases (#1868) * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
2023-08-11 02:30:25 -07:00
err: mqttpubsub.ErrNotSubscribed,
subscribe: false,
handler: handler{false, "clientid4", msgChan},
},
{
desc: "Subscribe to a topic with a subtopic with an ID",
topic: fmt.Sprintf("%s.%s.%s", chansPrefix, topic, subtopic),
clientID: "clientidd4",
err: nil,
subscribe: true,
handler: handler{false, "clientidd4", msgChan},
},
{
desc: "Unsubscribe from a topic with a subtopic with an ID",
topic: fmt.Sprintf("%s.%s.%s", chansPrefix, topic, subtopic),
clientID: "clientidd4",
err: nil,
subscribe: false,
handler: handler{false, "clientidd4", msgChan},
},
{
desc: "Unsubscribe from an already unsubscribed topic with a subtopic with an ID",
topic: fmt.Sprintf("%s.%s.%s", chansPrefix, topic, subtopic),
clientID: "clientid4",
NOISSUE - Change import name aliases (#1868) * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
2023-08-11 02:30:25 -07:00
err: mqttpubsub.ErrNotSubscribed,
subscribe: false,
handler: handler{false, "clientid4", msgChan},
},
{
desc: "Unsubscribe from an empty topic with an ID",
topic: "",
clientID: "clientid4",
NOISSUE - Change import name aliases (#1868) * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
2023-08-11 02:30:25 -07:00
err: mqttpubsub.ErrEmptyTopic,
subscribe: false,
handler: handler{false, "clientid4", msgChan},
},
{
desc: "Unsubscribe from a topic with empty ID",
topic: fmt.Sprintf("%s.%s", chansPrefix, topic),
clientID: "",
NOISSUE - Change import name aliases (#1868) * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import name aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Change import aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> Fix error Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> FIx merge Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import alias Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix errors Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix import Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add linter to CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unused aliases Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix merge issues Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix gci Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Add gofumpt Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove multiple gofupmt in CI Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Remove unnecessary changes Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix linter Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * Fix CI pipeline Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
2023-08-11 02:30:25 -07:00
err: mqttpubsub.ErrEmptyID,
subscribe: false,
handler: handler{false, "", msgChan},
},
{
desc: "Subscribe to a new topic with an ID",
topic: fmt.Sprintf("%s.%s", chansPrefix, topic+"2"),
clientID: "clientid55",
err: nil,
subscribe: true,
handler: handler{true, "clientid5", msgChan},
},
{
desc: "Unsubscribe from a topic with an ID with failing handler",
topic: fmt.Sprintf("%s.%s", chansPrefix, topic+"2"),
clientID: "clientid55",
NOISSUE - Update pubsub tests for rabbitmq (#1656) * testPubSub failing on channel Signed-off-by: aryan <aryangodara03@gmail.com> * testPubSub failing, rest passing Signed-off-by: aryan <aryangodara03@gmail.com> * all tests passing Signed-off-by: aryan <aryangodara03@gmail.com> * removed unnecessary lines Signed-off-by: aryan <aryangodara03@gmail.com> * rename subunsub to unsubscribe Signed-off-by: aryan <aryangodara03@gmail.com> * nats tests working, rabbitmq left Signed-off-by: aryan <aryangodara03@gmail.com> * fix TestPublisher Signed-off-by: aryan <aryangodara03@gmail.com> * changed clientID of pubsub Signed-off-by: aryan <aryangodara03@gmail.com> * testSubscribe failing, rest all passing Signed-off-by: aryan <aryangodara03@gmail.com> * testPubsub failing Signed-off-by: aryan <aryangodara03@gmail.com> * TestSubscribe(s) failing, rest tests passing. Signed-off-by: aryan <aryangodara03@gmail.com> * For Rabbitmq, all tests are passing. Signed-off-by: aryan <aryangodara03@gmail.com> * For Nats, All tests passing, but unreliable Signed-off-by: aryan <aryangodara03@gmail.com> * Fix typos and improve variable names. Signed-off-by: aryan <aryangodara03@gmail.com> * nats tests passing, rabbitmq half tests passing. Signed-off-by: aryan <aryangodara03@gmail.com> * all tests working. Signed-off-by: aryan <aryangodara03@gmail.com> * removed commented out, dead code. Signed-off-by: aryan <aryangodara03@gmail.com> * fix errors, queuesubscribe tests for nats. Signed-off-by: aryan <aryangodara03@gmail.com> * updated broker.Connect to opts.Connect for nats. Signed-off-by: aryan <aryangodara03@gmail.com> * experimental soluton Signed-off-by: aryan <aryangodara03@gmail.com> * Revert nats back to original status. Signed-off-by: aryan <aryangodara03@gmail.com> * Remove unnecessary commit Signed-off-by: aryan <aryangodara03@gmail.com> Signed-off-by: aryan <aryangodara03@gmail.com>
2022-12-31 06:48:31 +05:30
err: errFailedHandleMessage,
subscribe: false,
handler: handler{true, "clientid5", msgChan},
},
{
desc: "Subscribe to a new topic with subtopic with an ID",
topic: fmt.Sprintf("%s.%s.%s", chansPrefix, topic+"2", subtopic),
clientID: "clientid55",
err: nil,
subscribe: true,
handler: handler{true, "clientid5", msgChan},
},
{
desc: "Unsubscribe from a topic with subtopic with an ID with failing handler",
topic: fmt.Sprintf("%s.%s.%s", chansPrefix, topic+"2", subtopic),
clientID: "clientid55",
NOISSUE - Update pubsub tests for rabbitmq (#1656) * testPubSub failing on channel Signed-off-by: aryan <aryangodara03@gmail.com> * testPubSub failing, rest passing Signed-off-by: aryan <aryangodara03@gmail.com> * all tests passing Signed-off-by: aryan <aryangodara03@gmail.com> * removed unnecessary lines Signed-off-by: aryan <aryangodara03@gmail.com> * rename subunsub to unsubscribe Signed-off-by: aryan <aryangodara03@gmail.com> * nats tests working, rabbitmq left Signed-off-by: aryan <aryangodara03@gmail.com> * fix TestPublisher Signed-off-by: aryan <aryangodara03@gmail.com> * changed clientID of pubsub Signed-off-by: aryan <aryangodara03@gmail.com> * testSubscribe failing, rest all passing Signed-off-by: aryan <aryangodara03@gmail.com> * testPubsub failing Signed-off-by: aryan <aryangodara03@gmail.com> * TestSubscribe(s) failing, rest tests passing. Signed-off-by: aryan <aryangodara03@gmail.com> * For Rabbitmq, all tests are passing. Signed-off-by: aryan <aryangodara03@gmail.com> * For Nats, All tests passing, but unreliable Signed-off-by: aryan <aryangodara03@gmail.com> * Fix typos and improve variable names. Signed-off-by: aryan <aryangodara03@gmail.com> * nats tests passing, rabbitmq half tests passing. Signed-off-by: aryan <aryangodara03@gmail.com> * all tests working. Signed-off-by: aryan <aryangodara03@gmail.com> * removed commented out, dead code. Signed-off-by: aryan <aryangodara03@gmail.com> * fix errors, queuesubscribe tests for nats. Signed-off-by: aryan <aryangodara03@gmail.com> * updated broker.Connect to opts.Connect for nats. Signed-off-by: aryan <aryangodara03@gmail.com> * experimental soluton Signed-off-by: aryan <aryangodara03@gmail.com> * Revert nats back to original status. Signed-off-by: aryan <aryangodara03@gmail.com> * Remove unnecessary commit Signed-off-by: aryan <aryangodara03@gmail.com> Signed-off-by: aryan <aryangodara03@gmail.com>
2022-12-31 06:48:31 +05:30
err: errFailedHandleMessage,
subscribe: false,
handler: handler{true, "clientid5", msgChan},
},
}
for _, tc := range cases {
NOISSUE - Add Subscriber Config (#1896) * Replace Nats with Nats Jestream For PubSub Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Add Stream Description Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Fix connection leak in NATS publisher The publisher struct in pkg/messaging/nats/publisher.go was modified to include a new `conn` field of type `*broker.Conn`. This change was made to fix a connection leak issue in the NATS publisher. The `NewPublisher` function was updated to assign the `conn` parameter to the new `conn` field in the publisher struct. Additionally, the `Close` method in the publisher struct was modified to close the `conn` connection. This commit fixes the connection leak issue in the NATS publisher and ensures that connections are properly closed. Signed-off-by: Rodney Osodo <socials@rodneyosodo.com> * Setup subscriber config to contain handler topic and ID Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Add delivery policy Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Avoid duplicate messages Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Rename to DeliveryPolicy Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Fix tests Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Not check for data result set when we are returning subset of messages Signed-off-by: Rodney Osodo <socials@rodneyosodo.com> Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * For unsubscribe remove config Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * Fix comment Signed-off-by: rodneyosodo <blackd0t@protonmail.com> --------- Signed-off-by: rodneyosodo <blackd0t@protonmail.com> Signed-off-by: Rodney Osodo <socials@rodneyosodo.com> Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
2023-10-23 16:27:15 +03:00
subCfg := messaging.SubscriberConfig{
ID: tc.clientID,
Topic: tc.topic,
Handler: tc.handler,
}
switch tc.subscribe {
case true:
NOISSUE - Add Subscriber Config (#1896) * Replace Nats with Nats Jestream For PubSub Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Add Stream Description Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Fix connection leak in NATS publisher The publisher struct in pkg/messaging/nats/publisher.go was modified to include a new `conn` field of type `*broker.Conn`. This change was made to fix a connection leak issue in the NATS publisher. The `NewPublisher` function was updated to assign the `conn` parameter to the new `conn` field in the publisher struct. Additionally, the `Close` method in the publisher struct was modified to close the `conn` connection. This commit fixes the connection leak issue in the NATS publisher and ensures that connections are properly closed. Signed-off-by: Rodney Osodo <socials@rodneyosodo.com> * Setup subscriber config to contain handler topic and ID Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Add delivery policy Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Avoid duplicate messages Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Rename to DeliveryPolicy Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Fix tests Signed-off-by: rodneyosodo <blackd0t@protonmail.com> * Not check for data result set when we are returning subset of messages Signed-off-by: Rodney Osodo <socials@rodneyosodo.com> Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * For unsubscribe remove config Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * Fix comment Signed-off-by: rodneyosodo <blackd0t@protonmail.com> --------- Signed-off-by: rodneyosodo <blackd0t@protonmail.com> Signed-off-by: Rodney Osodo <socials@rodneyosodo.com> Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
2023-10-23 16:27:15 +03:00
err := pubsub.Subscribe(context.TODO(), subCfg)
assert.Equal(t, tc.err, err, fmt.Sprintf("%s: expected: %s, but got: %s", tc.desc, tc.err, err))
default:
MF-786 - Tracing over NATS using opentracing standard (#1739) * send and receive span context Signed-off-by: SammyOina <sammyoina@gmail.com> * initilize tracer in cmd Signed-off-by: SammyOina <sammyoina@gmail.com> * add span context to mainflux message Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate span context from adapters Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * fix linting error Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to coap service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to http service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to mqtt service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to broker Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to ws service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing to services Signed-off-by: SammyOina <sammyoina@gmail.com> * fix naming convention of functions Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * remove tracer from mqtt svc Signed-off-by: SammyOina <sammyoina@gmail.com> * format code and removed unused code Signed-off-by: SammyOina <sammyoina@gmail.com> * rename tracing files Signed-off-by: SammyOina <sammyoina@gmail.com> * - rename nats tracer - intialize tracing at the broker Signed-off-by: SammyOina <sammyoina@gmail.com> * check for nil spans Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate spans to consumers writers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove unused variable Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate traces to notifiers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove comments Signed-off-by: SammyOina <sammyoina@gmail.com> * remove span from message Signed-off-by: SammyOina <sammyoina@gmail.com> * remove span from message Signed-off-by: SammyOina <sammyoina@gmail.com> * trace over rabbitmq and mqtt Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * trace subscribe and unsuscribe ops Signed-off-by: SammyOina <sammyoina@gmail.com> * add create span method Signed-off-by: SammyOina <sammyoina@gmail.com> * pass context from main Signed-off-by: SammyOina <sammyoina@gmail.com> * add span tags Signed-off-by: SammyOina <sammyoina@gmail.com> * restore coap transport.go Signed-off-by: SammyOina <sammyoina@gmail.com> * add context to ops Signed-off-by: SammyOina <sammyoina@gmail.com> * add cancel to tracing Signed-off-by: SammyOina <sammyoina@gmail.com> * refactor handler Signed-off-by: SammyOina <sammyoina@gmail.com> * add comments to exported functions return interfaces Signed-off-by: SammyOina <sammyoina@gmail.com> * remove channel span tag Signed-off-by: SammyOina <sammyoina@gmail.com> * add pub sub tracer Signed-off-by: SammyOina <sammyoina@gmail.com> * add pub sub tracer Signed-off-by: SammyOina <sammyoina@gmail.com> * remove prefixes from operations Signed-off-by: SammyOina <sammyoina@gmail.com> * perpetuate context from root remove protocol from span tag Signed-off-by: SammyOina <sammyoina@gmail.com> * reorder functions Signed-off-by: SammyOina <sammyoina@gmail.com> * create span function Signed-off-by: SammyOina <sammyoina@gmail.com> * add suffixes add pubsub tags Signed-off-by: SammyOina <sammyoina@gmail.com> * move from if to switch Signed-off-by: SammyOina <sammyoina@gmail.com> * add jaeger url to docker compose Signed-off-by: SammyOina <sammyoina@gmail.com> * remove snake case variables add comments to exported functions Signed-off-by: SammyOina <sammyoina@gmail.com> * check for empty sub topics Signed-off-by: SammyOina <sammyoina@gmail.com> * remove tracing on consumers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove duplicate tracers Signed-off-by: SammyOina <sammyoina@gmail.com> * clean up unused variables Signed-off-by: SammyOina <sammyoina@gmail.com> * remove empty lines Signed-off-by: SammyOina <sammyoina@gmail.com> * write better comments Signed-off-by: SammyOina <sammyoina@gmail.com> * update readme jaeger url Signed-off-by: SammyOina <sammyoina@gmail.com> * initialize tracing midlleware on main update readme jaeger urls Signed-off-by: SammyOina <sammyoina@gmail.com> * reorder arguments for tracing middleware Signed-off-by: SammyOina <sammyoina@gmail.com> * add context to subscribe Signed-off-by: SammyOina <sammyoina@gmail.com> --------- Signed-off-by: SammyOina <sammyoina@gmail.com>
2023-04-20 22:39:33 +03:00
err := pubsub.Unsubscribe(context.TODO(), tc.clientID, tc.topic)
assert.Equal(t, tc.err, err, fmt.Sprintf("%s: expected: %s, but got: %s", tc.desc, tc.err, err))
}
}
}
type handler struct {
fail bool
publisher string
msgChan chan *messaging.Message
}
func (h handler) Handle(msg *messaging.Message) error {
if msg.Publisher != h.publisher {
h.msgChan <- msg
}
return nil
}
func (h handler) Cancel() error {
if h.fail {
NOISSUE - Update pubsub tests for rabbitmq (#1656) * testPubSub failing on channel Signed-off-by: aryan <aryangodara03@gmail.com> * testPubSub failing, rest passing Signed-off-by: aryan <aryangodara03@gmail.com> * all tests passing Signed-off-by: aryan <aryangodara03@gmail.com> * removed unnecessary lines Signed-off-by: aryan <aryangodara03@gmail.com> * rename subunsub to unsubscribe Signed-off-by: aryan <aryangodara03@gmail.com> * nats tests working, rabbitmq left Signed-off-by: aryan <aryangodara03@gmail.com> * fix TestPublisher Signed-off-by: aryan <aryangodara03@gmail.com> * changed clientID of pubsub Signed-off-by: aryan <aryangodara03@gmail.com> * testSubscribe failing, rest all passing Signed-off-by: aryan <aryangodara03@gmail.com> * testPubsub failing Signed-off-by: aryan <aryangodara03@gmail.com> * TestSubscribe(s) failing, rest tests passing. Signed-off-by: aryan <aryangodara03@gmail.com> * For Rabbitmq, all tests are passing. Signed-off-by: aryan <aryangodara03@gmail.com> * For Nats, All tests passing, but unreliable Signed-off-by: aryan <aryangodara03@gmail.com> * Fix typos and improve variable names. Signed-off-by: aryan <aryangodara03@gmail.com> * nats tests passing, rabbitmq half tests passing. Signed-off-by: aryan <aryangodara03@gmail.com> * all tests working. Signed-off-by: aryan <aryangodara03@gmail.com> * removed commented out, dead code. Signed-off-by: aryan <aryangodara03@gmail.com> * fix errors, queuesubscribe tests for nats. Signed-off-by: aryan <aryangodara03@gmail.com> * updated broker.Connect to opts.Connect for nats. Signed-off-by: aryan <aryangodara03@gmail.com> * experimental soluton Signed-off-by: aryan <aryangodara03@gmail.com> * Revert nats back to original status. Signed-off-by: aryan <aryangodara03@gmail.com> * Remove unnecessary commit Signed-off-by: aryan <aryangodara03@gmail.com> Signed-off-by: aryan <aryangodara03@gmail.com>
2022-12-31 06:48:31 +05:30
return errFailedHandleMessage
}
return nil
}