1
0
Fork 0
mirror of https://github.com/eosswedenorg/thalos synced 2026-06-16 04:24:56 +02:00

Adding cmd/tools/mock_publisher.go

This commit is contained in:
Henrik Hautakoski 2023-10-22 20:26:10 +02:00
parent 1356b58b55
commit 809f42f5af
2 changed files with 108 additions and 0 deletions

View file

@ -19,6 +19,7 @@ func main() {
validateCmd,
benchCmd,
RedisACLCmd,
MockPublisherCmd,
},
}

107
cmd/tools/mock_publisher.go Normal file
View file

@ -0,0 +1,107 @@
package main
import (
"context"
"time"
"github.com/urfave/cli/v2"
"github.com/eosswedenorg/thalos/api"
"github.com/eosswedenorg/thalos/api/message"
_ "github.com/eosswedenorg/thalos/api/message/json"
api_redis "github.com/eosswedenorg/thalos/api/redis"
"github.com/redis/go-redis/v9"
)
var MockPublisherCmd = &cli.Command{
Name: "mock_publisher",
Usage: "Run a publisher that mocks messages to a redis server. tries to send as many messages as possible",
Flags: []cli.Flag{
redisUrlFlag,
redisUserFlag,
redisPasswordFlag,
redisDbFlag,
redisPrefixFlag,
chainIdFlag,
&cli.StringFlag{
Name: "codec",
Value: "json",
},
},
Action: func(ctx *cli.Context) error {
// Create redis client
rdb := redis.NewClient(&redis.Options{
Addr: ctx.String("redis-url"),
Username: ctx.String("redis-user"),
Password: ctx.String("redis-pw"),
DB: ctx.Int("redis-db"),
})
codec, err := message.GetCodec(ctx.String("codec"))
if err != nil {
return err
}
ns := api_redis.Namespace{
Prefix: ctx.String("redis-prefix"),
ChainID: ctx.String("chain_id"),
}
publisher := api_redis.NewPublisher(context.Background(), rdb, ns)
msg := message.ActionTrace{
TxID: "401e8a7e5deb18a2a69fc6559f49509a155f4355c85efb69c1c1fab5b60ee532",
BlockNum: 18237917,
Timestamp: time.Date(2014, 3, 22, 11, 36, 43, 0, time.UTC),
Receipt: &message.ActionReceipt{
Receiver: "acc1",
ActDigest: "4c5c08be612e937564fc526ebb5fadf34ae8c2a571fe9d7cdb3ffcdfc53b0e8d",
GlobalSequence: 12314,
RecvSequence: 237187239,
AuthSequence: []message.AccountAuthSequence{
{
Account: "acc1",
Sequence: 2732863,
},
{
Account: "acc2",
Sequence: 263762,
},
},
CodeSequence: 2327832,
ABISequence: 12376189,
},
Name: "fake",
Contract: "fake",
Receiver: "acc1",
Data: map[string]interface{}{
"one": 238771832,
"two": "str",
},
Authorization: []message.PermissionLevel{
{
Actor: "acc1",
Permission: "active",
},
{
Actor: "acc2",
Permission: "owner",
},
},
Except: "err",
Error: 2,
Return: []byte{0xbe, 0xef},
}
payload, err := codec.Encoder(msg)
if err != nil {
return err
}
channel := api.ActionChannel{}.Channel()
for {
_ = publisher.Write(channel, payload)
publisher.Flush()
}
},
}