This commit is contained in:
+4
-4
@@ -36,7 +36,7 @@ func NewRedisRouter(server *Identity, redisUrl string, password string, db int,
|
|||||||
return &r
|
return &r
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RedisRouter) Route(msg *meowlib.ToServerMessage) (*meowlib.FromServerMessage, error) {
|
func (r *RedisRouter) Route(ctx context.Context, msg *meowlib.ToServerMessage) (*meowlib.FromServerMessage, error) {
|
||||||
var from_server *meowlib.FromServerMessage
|
var from_server *meowlib.FromServerMessage
|
||||||
// update messages counter
|
// update messages counter
|
||||||
err := r.Client.Incr("statistics:messages:total").Err()
|
err := r.Client.Incr("statistics:messages:total").Err()
|
||||||
@@ -60,7 +60,7 @@ func (r *RedisRouter) Route(msg *meowlib.ToServerMessage) (*meowlib.FromServerMe
|
|||||||
}
|
}
|
||||||
if msg.Timeout > 0 && len(from_server.Chat) == 0 && from_server.Invitation == nil {
|
if msg.Timeout > 0 && len(from_server.Chat) == 0 && from_server.Invitation == nil {
|
||||||
logger.Info().Msg("long poll, subscribing for messages")
|
logger.Info().Msg("long poll, subscribing for messages")
|
||||||
from_server, err = r.subscribe(msg, int(msg.Timeout))
|
from_server, err = r.subscribe(ctx, msg, int(msg.Timeout))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -205,7 +205,7 @@ func (r *RedisRouter) checkForMessage(msg *meowlib.ToServerMessage) (*meowlib.Fr
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func (r *RedisRouter) subscribe(msg *meowlib.ToServerMessage, timeout int) (*meowlib.FromServerMessage, error) {
|
func (r *RedisRouter) subscribe(reqCtx context.Context, msg *meowlib.ToServerMessage, timeout int) (*meowlib.FromServerMessage, error) {
|
||||||
if err := r.Client.Incr("statistics:messages:messagessubscription").Err(); err != nil {
|
if err := r.Client.Incr("statistics:messages:messagessubscription").Err(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -237,7 +237,7 @@ func (r *RedisRouter) subscribe(msg *meowlib.ToServerMessage, timeout int) (*meo
|
|||||||
return fromServer, nil
|
return fromServer, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, cancel := context.WithTimeout(r.Context, time.Duration(timeout)*time.Second)
|
ctx, cancel := context.WithTimeout(reqCtx, time.Duration(timeout)*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
ch := pubsub.Channel()
|
ch := pubsub.Channel()
|
||||||
|
|||||||
+12
-12
@@ -220,7 +220,7 @@ func TestRouteDispatchesStoreAndCheck(t *testing.T) {
|
|||||||
{Destination: dest, Payload: []byte("routed msg")},
|
{Destination: dest, Payload: []byte("routed msg")},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
resp, err := router.Route(storeReq)
|
resp, err := router.Route(context.Background(),storeReq)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "route-store-uuid", resp.UuidAck)
|
assert.Equal(t, "route-store-uuid", resp.UuidAck)
|
||||||
|
|
||||||
@@ -230,7 +230,7 @@ func TestRouteDispatchesStoreAndCheck(t *testing.T) {
|
|||||||
{LookupKey: dest},
|
{LookupKey: dest},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
resp, err = router.Route(pullReq)
|
resp, err = router.Route(context.Background(),pullReq)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Len(t, resp.Chat, 1)
|
assert.Len(t, resp.Chat, 1)
|
||||||
assert.Equal(t, []byte("routed msg"), resp.Chat[0].Payload)
|
assert.Equal(t, []byte("routed msg"), resp.Chat[0].Payload)
|
||||||
@@ -241,7 +241,7 @@ func TestRouteEmptyMessage(t *testing.T) {
|
|||||||
router, mr := newTestRouter(t)
|
router, mr := newTestRouter(t)
|
||||||
defer mr.Close()
|
defer mr.Close()
|
||||||
|
|
||||||
resp, err := router.Route(&meowlib.ToServerMessage{})
|
resp, err := router.Route(context.Background(),&meowlib.ToServerMessage{})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Nil(t, resp)
|
assert.Nil(t, resp)
|
||||||
}
|
}
|
||||||
@@ -251,9 +251,9 @@ func TestRouteIncrementsTotalCounter(t *testing.T) {
|
|||||||
router, mr := newTestRouter(t)
|
router, mr := newTestRouter(t)
|
||||||
defer mr.Close()
|
defer mr.Close()
|
||||||
|
|
||||||
router.Route(&meowlib.ToServerMessage{})
|
router.Route(context.Background(),&meowlib.ToServerMessage{})
|
||||||
router.Route(&meowlib.ToServerMessage{})
|
router.Route(context.Background(),&meowlib.ToServerMessage{})
|
||||||
router.Route(&meowlib.ToServerMessage{})
|
router.Route(context.Background(),&meowlib.ToServerMessage{})
|
||||||
|
|
||||||
val, err := router.Client.Get("statistics:messages:total").Int()
|
val, err := router.Client.Get("statistics:messages:total").Int()
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
@@ -554,7 +554,7 @@ func TestRouteMatriochka(t *testing.T) {
|
|||||||
Data: []byte("wrapped"),
|
Data: []byte("wrapped"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
resp, err := router.Route(msg)
|
resp, err := router.Route(context.Background(),msg)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "route-mtk", resp.UuidAck)
|
assert.Equal(t, "route-mtk", resp.UuidAck)
|
||||||
|
|
||||||
@@ -578,7 +578,7 @@ func TestRouteInvitation(t *testing.T) {
|
|||||||
ShortcodeLen: 6,
|
ShortcodeLen: 6,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
resp, err := router.Route(msg)
|
resp, err := router.Route(context.Background(),msg)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NotEmpty(t, resp.Invitation.Shortcode)
|
assert.NotEmpty(t, resp.Invitation.Shortcode)
|
||||||
assert.Len(t, resp.Invitation.Shortcode, 6)
|
assert.Len(t, resp.Invitation.Shortcode, 6)
|
||||||
@@ -595,7 +595,7 @@ func TestStatisticsCountersIncrement(t *testing.T) {
|
|||||||
dest := "stats-dest"
|
dest := "stats-dest"
|
||||||
|
|
||||||
// one store increments usermessages
|
// one store increments usermessages
|
||||||
router.Route(&meowlib.ToServerMessage{
|
router.Route(context.Background(),&meowlib.ToServerMessage{
|
||||||
Messages: []*meowlib.PackedUserMessage{
|
Messages: []*meowlib.PackedUserMessage{
|
||||||
{Destination: dest, Payload: []byte("x")},
|
{Destination: dest, Payload: []byte("x")},
|
||||||
},
|
},
|
||||||
@@ -604,7 +604,7 @@ func TestStatisticsCountersIncrement(t *testing.T) {
|
|||||||
assert.Equal(t, 1, val)
|
assert.Equal(t, 1, val)
|
||||||
|
|
||||||
// one pull increments messagelookups
|
// one pull increments messagelookups
|
||||||
router.Route(&meowlib.ToServerMessage{
|
router.Route(context.Background(),&meowlib.ToServerMessage{
|
||||||
PullRequest: []*meowlib.ConversationRequest{
|
PullRequest: []*meowlib.ConversationRequest{
|
||||||
{LookupKey: dest},
|
{LookupKey: dest},
|
||||||
},
|
},
|
||||||
@@ -613,14 +613,14 @@ func TestStatisticsCountersIncrement(t *testing.T) {
|
|||||||
assert.Equal(t, 1, val)
|
assert.Equal(t, 1, val)
|
||||||
|
|
||||||
// one matriochka increments matriochka counter
|
// one matriochka increments matriochka counter
|
||||||
router.Route(&meowlib.ToServerMessage{
|
router.Route(context.Background(),&meowlib.ToServerMessage{
|
||||||
MatriochkaMessage: &meowlib.Matriochka{Data: []byte("m")},
|
MatriochkaMessage: &meowlib.Matriochka{Data: []byte("m")},
|
||||||
})
|
})
|
||||||
val, _ = router.Client.Get("statistics:messages:matriochka").Int()
|
val, _ = router.Client.Get("statistics:messages:matriochka").Int()
|
||||||
assert.Equal(t, 1, val)
|
assert.Equal(t, 1, val)
|
||||||
|
|
||||||
// one invitation increments invitation counter
|
// one invitation increments invitation counter
|
||||||
router.Route(&meowlib.ToServerMessage{
|
router.Route(context.Background(),&meowlib.ToServerMessage{
|
||||||
Invitation: &meowlib.Invitation{
|
Invitation: &meowlib.Invitation{
|
||||||
Step: 1,
|
Step: 1,
|
||||||
Payload: []byte("i"),
|
Payload: []byte("i"),
|
||||||
|
|||||||
Reference in New Issue
Block a user