mirror of
https://github.com/planetmint/planetmint-go.git
synced 2025-11-24 14:35:47 +00:00
feat: add call logging to MQTT mock
Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com>
This commit is contained in:
parent
8db8d53889
commit
e55d1af36b
@ -6,6 +6,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"math"
|
"math"
|
||||||
"os"
|
"os"
|
||||||
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -19,6 +20,7 @@ import (
|
|||||||
e2etestutil "github.com/planetmint/planetmint-go/testutil/e2e"
|
e2etestutil "github.com/planetmint/planetmint-go/testutil/e2e"
|
||||||
"github.com/planetmint/planetmint-go/testutil/network"
|
"github.com/planetmint/planetmint-go/testutil/network"
|
||||||
"github.com/planetmint/planetmint-go/testutil/sample"
|
"github.com/planetmint/planetmint-go/testutil/sample"
|
||||||
|
"github.com/planetmint/planetmint-go/util/mocks"
|
||||||
daocli "github.com/planetmint/planetmint-go/x/dao/client/cli"
|
daocli "github.com/planetmint/planetmint-go/x/dao/client/cli"
|
||||||
daotypes "github.com/planetmint/planetmint-go/x/dao/types"
|
daotypes "github.com/planetmint/planetmint-go/x/dao/types"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@ -323,6 +325,28 @@ func (s *SelectionE2ETestSuite) TestTokenRedeemClaim() {
|
|||||||
qOut, err = clitestutil.ExecTestCLICmd(val.ClientCtx, daocli.CmdRedeemClaimByLiquidTxHash(), []string{"0000000000000000000000000000000000000000000000000000000000000000"})
|
qOut, err = clitestutil.ExecTestCLICmd(val.ClientCtx, daocli.CmdRedeemClaimByLiquidTxHash(), []string{"0000000000000000000000000000000000000000000000000000000000000000"})
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
assert.Equal(s.T(), "redeemClaim:\n amount: \"5993150682\"\n beneficiary: liquidAddress\n confirmed: true\n creator: plmnt1kp93kns6hs2066d8qw0uz84fw3vlthewt2ck6p\n id: \"0\"\n liquidTxHash: \"0000000000000000000000000000000000000000000000000000000000000000\"\n", qOut.String())
|
assert.Equal(s.T(), "redeemClaim:\n amount: \"5993150682\"\n beneficiary: liquidAddress\n confirmed: true\n creator: plmnt1kp93kns6hs2066d8qw0uz84fw3vlthewt2ck6p\n id: \"0\"\n liquidTxHash: \"0000000000000000000000000000000000000000000000000000000000000000\"\n", qOut.String())
|
||||||
|
|
||||||
|
// Make sure "Publish" has been called with PoPInit cmnd
|
||||||
|
calls := mocks.GetCallLog()
|
||||||
|
|
||||||
|
var popInitCalls []mocks.Call
|
||||||
|
regex := regexp.MustCompile(`cmnd\/[a-zA-Z0-9]{15,50}\/PoPInit`)
|
||||||
|
for _, call := range calls {
|
||||||
|
if call.FuncName != "Publish" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
cmnd, ok := call.Params[0].(string)
|
||||||
|
if !ok {
|
||||||
|
assert.True(s.T(), ok) // fails test case if !ok
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if regex.MatchString(cmnd) {
|
||||||
|
popInitCalls = append(popInitCalls, call)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert.Greater(s.T(), len(popInitCalls), 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SelectionE2ETestSuite) createValAccount(cfg network.Config) (address sdk.AccAddress, err error) {
|
func (s *SelectionE2ETestSuite) createValAccount(cfg network.Config) (address sdk.AccAddress, err error) {
|
||||||
|
|||||||
@ -7,6 +7,16 @@ import (
|
|||||||
mqtt "github.com/eclipse/paho.mqtt.golang"
|
mqtt "github.com/eclipse/paho.mqtt.golang"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
callLog []Call
|
||||||
|
logMutex sync.Mutex
|
||||||
|
)
|
||||||
|
|
||||||
|
type Call struct {
|
||||||
|
FuncName string
|
||||||
|
Params []interface{}
|
||||||
|
}
|
||||||
|
|
||||||
// MockMQTTClient is the mock mqtt client
|
// MockMQTTClient is the mock mqtt client
|
||||||
type MockMQTTClient struct {
|
type MockMQTTClient struct {
|
||||||
ConnectFunc func() mqtt.Token
|
ConnectFunc func() mqtt.Token
|
||||||
@ -100,6 +110,7 @@ func GetUnsubscribeFunc(_ ...string) mqtt.Token {
|
|||||||
|
|
||||||
// Connect is the mock client's `Disconnect` func
|
// Connect is the mock client's `Disconnect` func
|
||||||
func (m *MockMQTTClient) Connect() mqtt.Token {
|
func (m *MockMQTTClient) Connect() mqtt.Token {
|
||||||
|
m.logCall("Connect")
|
||||||
m.connectedMutex.Lock()
|
m.connectedMutex.Lock()
|
||||||
m.connected = true
|
m.connected = true
|
||||||
m.connectedMutex.Unlock()
|
m.connectedMutex.Unlock()
|
||||||
@ -108,23 +119,28 @@ func (m *MockMQTTClient) Connect() mqtt.Token {
|
|||||||
|
|
||||||
// Disconnect is the mock client's `Disconnect` func
|
// Disconnect is the mock client's `Disconnect` func
|
||||||
func (m *MockMQTTClient) Disconnect(quiesce uint) {
|
func (m *MockMQTTClient) Disconnect(quiesce uint) {
|
||||||
|
m.logCall("Disconnect")
|
||||||
GetDisconnectFunc(quiesce)
|
GetDisconnectFunc(quiesce)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Publish is the mock client's `Publish` func
|
// Publish is the mock client's `Publish` func
|
||||||
func (m *MockMQTTClient) Publish(topic string, qos byte, retained bool, payload interface{}) mqtt.Token {
|
func (m *MockMQTTClient) Publish(topic string, qos byte, retained bool, payload interface{}) mqtt.Token {
|
||||||
|
m.logCall("Publish", topic, qos, retained, payload)
|
||||||
return GetPublishFunc(topic, qos, retained, payload)
|
return GetPublishFunc(topic, qos, retained, payload)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MockMQTTClient) Subscribe(topic string, qos byte, callback mqtt.MessageHandler) mqtt.Token {
|
func (m *MockMQTTClient) Subscribe(topic string, qos byte, callback mqtt.MessageHandler) mqtt.Token {
|
||||||
|
m.logCall("Subscribe", topic, qos, callback)
|
||||||
return GetSubscribeFunc(topic, qos, callback)
|
return GetSubscribeFunc(topic, qos, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MockMQTTClient) Unsubscribe(topics ...string) mqtt.Token {
|
func (m *MockMQTTClient) Unsubscribe(topics ...string) mqtt.Token {
|
||||||
|
m.logCall("Unsubscribe", topics)
|
||||||
return GetUnsubscribeFunc(topics...)
|
return GetUnsubscribeFunc(topics...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MockMQTTClient) IsConnected() bool {
|
func (m *MockMQTTClient) IsConnected() bool {
|
||||||
|
m.logCall("IsConnected")
|
||||||
m.connectedMutex.Lock()
|
m.connectedMutex.Lock()
|
||||||
connected := m.connected
|
connected := m.connected
|
||||||
m.connectedMutex.Unlock()
|
m.connectedMutex.Unlock()
|
||||||
@ -132,8 +148,21 @@ func (m *MockMQTTClient) IsConnected() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *MockMQTTClient) IsConnectionOpen() bool {
|
func (m *MockMQTTClient) IsConnectionOpen() bool {
|
||||||
|
m.logCall("IsConnectedOpen")
|
||||||
m.connectedMutex.Lock()
|
m.connectedMutex.Lock()
|
||||||
connected := m.connected
|
connected := m.connected
|
||||||
m.connectedMutex.Unlock()
|
m.connectedMutex.Unlock()
|
||||||
return connected
|
return connected
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetCallLog() []Call {
|
||||||
|
logMutex.Lock()
|
||||||
|
defer logMutex.Unlock()
|
||||||
|
return callLog
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MockMQTTClient) logCall(funcName string, params ...interface{}) {
|
||||||
|
logMutex.Lock()
|
||||||
|
defer logMutex.Unlock()
|
||||||
|
callLog = append(callLog, Call{FuncName: funcName, Params: params})
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user