fixes mm-1348 removing dependency on redis
Этот коммит содержится в:
@@ -1,75 +0,0 @@
|
||||
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
package store
|
||||
|
||||
import (
|
||||
l4g "code.google.com/p/log4go"
|
||||
"github.com/mattermost/platform/model"
|
||||
"github.com/mattermost/platform/utils"
|
||||
"gopkg.in/redis.v2"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
var client *redis.Client
|
||||
|
||||
func RedisClient() *redis.Client {
|
||||
|
||||
if client == nil {
|
||||
|
||||
addr := utils.Cfg.RedisSettings.DataSource
|
||||
|
||||
client = redis.NewTCPClient(&redis.Options{
|
||||
Addr: addr,
|
||||
Password: "",
|
||||
DB: 0,
|
||||
PoolSize: utils.Cfg.RedisSettings.MaxOpenConns,
|
||||
})
|
||||
|
||||
l4g.Info("Pinging redis at '%v'", addr)
|
||||
pong, err := client.Ping().Result()
|
||||
|
||||
if err != nil {
|
||||
l4g.Critical("Failed to open redis connection to '%v' err:%v", addr, err)
|
||||
time.Sleep(time.Second)
|
||||
panic("Failed to open redis connection " + err.Error())
|
||||
}
|
||||
|
||||
if pong != "PONG" {
|
||||
l4g.Critical("Failed to ping redis connection to '%v' err:%v", addr, err)
|
||||
time.Sleep(time.Second)
|
||||
panic("Failed to open ping connection " + err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
return client
|
||||
}
|
||||
|
||||
func RedisClose() {
|
||||
l4g.Info("Closing redis")
|
||||
|
||||
if client != nil {
|
||||
client.Close()
|
||||
client = nil
|
||||
}
|
||||
}
|
||||
|
||||
func PublishAndForget(message *model.Message) {
|
||||
|
||||
go func() {
|
||||
c := RedisClient()
|
||||
result := c.Publish(message.TeamId, message.ToJson())
|
||||
if result.Err() != nil {
|
||||
l4g.Error("Failed to publish message err=%v, payload=%v", result.Err(), message.ToJson())
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func GetMessageFromPayload(m interface{}) *model.Message {
|
||||
if msg, found := m.(*redis.Message); found {
|
||||
return model.MessageFromJson(strings.NewReader(msg.Payload))
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
package store
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/mattermost/platform/model"
|
||||
"github.com/mattermost/platform/utils"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestRedis(t *testing.T) {
|
||||
utils.LoadConfig("config.json")
|
||||
|
||||
c := RedisClient()
|
||||
|
||||
if c == nil {
|
||||
t.Fatal("should have a valid redis connection")
|
||||
}
|
||||
|
||||
pubsub := c.PubSub()
|
||||
defer pubsub.Close()
|
||||
|
||||
m := model.NewMessage(model.NewId(), model.NewId(), model.NewId(), model.ACTION_TYPING)
|
||||
m.Add("RootId", model.NewId())
|
||||
|
||||
err := pubsub.Subscribe(m.TeamId)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// should be the subscribe success message
|
||||
// lets gobble that up
|
||||
if _, err := pubsub.Receive(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
PublishAndForget(m)
|
||||
|
||||
fmt.Println("here1")
|
||||
|
||||
if msg, err := pubsub.Receive(); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
|
||||
rmsg := GetMessageFromPayload(msg)
|
||||
|
||||
if m.TeamId != rmsg.TeamId {
|
||||
t.Fatal("Ids do not match")
|
||||
}
|
||||
|
||||
if m.Props["RootId"] != rmsg.Props["RootId"] {
|
||||
t.Fatal("Ids do not match")
|
||||
}
|
||||
}
|
||||
|
||||
RedisClose()
|
||||
}
|
||||
Ссылка в новой задаче
Block a user