mirror of
https://github.com/eosswedenorg/thalos
synced 2026-06-20 09:56:47 +02:00
Adding internal/redis/channel.go
This commit is contained in:
parent
177b715ba4
commit
e91951d7ed
2 changed files with 121 additions and 0 deletions
49
internal/redis/channel.go
Normal file
49
internal/redis/channel.go
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
package redis
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Generic interface for all channel types.
|
||||||
|
type ChannelInterface interface {
|
||||||
|
String() string
|
||||||
|
}
|
||||||
|
|
||||||
|
// Standard channel. Just a wrapper around string slice
|
||||||
|
type Channel []string
|
||||||
|
|
||||||
|
func (c *Channel) Append(name string) {
|
||||||
|
*c = append(*c, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c Channel) String() string {
|
||||||
|
return strings.Join(c, ".")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define channels without any variables.
|
||||||
|
var (
|
||||||
|
TransactionChannel = Channel{"transaction"}
|
||||||
|
HeartbeatChannel = Channel{"heartbeat"}
|
||||||
|
)
|
||||||
|
|
||||||
|
// Action channel.
|
||||||
|
|
||||||
|
type ActionChannel struct {
|
||||||
|
Contract string
|
||||||
|
Action string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ac ActionChannel) String() string {
|
||||||
|
ch := Channel{"actions"}
|
||||||
|
|
||||||
|
if len(ac.Contract) > 0 {
|
||||||
|
ch.Append(fmt.Sprintf("contract:%s", ac.Contract))
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(ac.Action) > 0 {
|
||||||
|
ch.Append(fmt.Sprintf("action:%s", ac.Action))
|
||||||
|
}
|
||||||
|
|
||||||
|
return ch.String()
|
||||||
|
}
|
||||||
72
internal/redis/channel_test.go
Normal file
72
internal/redis/channel_test.go
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
package redis
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestChannel_Append(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
arg string
|
||||||
|
obj Channel
|
||||||
|
expected Channel
|
||||||
|
}{
|
||||||
|
{"One", "one", Channel{}, Channel{"one"}},
|
||||||
|
{"More", "more", Channel{"one", "two"}, Channel{"one", "two", "more"}},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
tt.obj.Append(tt.arg)
|
||||||
|
if reflect.DeepEqual(tt.obj, tt.expected) == false {
|
||||||
|
t.Errorf("Channel.Append() expected %v, got %v", tt.expected, tt.obj)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestChannel_String(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
c Channel
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{"Empty", Channel{}, ""},
|
||||||
|
{"Alot", Channel{"one", "two", "three"}, "one.two.three"},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
if got := tt.c.String(); got != tt.want {
|
||||||
|
t.Errorf("Channel.String() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestActionChannel_String(t *testing.T) {
|
||||||
|
type fields struct {
|
||||||
|
Contract string
|
||||||
|
Action string
|
||||||
|
}
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
fields fields
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{"Empty", fields{}, "actions"},
|
||||||
|
{"Contract", fields{Contract: "mycontract"}, "actions.contract:mycontract"},
|
||||||
|
{"Action", fields{Action: "myaction"}, "actions.action:myaction"},
|
||||||
|
{"ContractAction", fields{Contract: "mycontract", Action: "myaction"}, "actions.contract:mycontract.action:myaction"},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
ac := ActionChannel{
|
||||||
|
Contract: tt.fields.Contract,
|
||||||
|
Action: tt.fields.Action,
|
||||||
|
}
|
||||||
|
if got := ac.String(); got != tt.want {
|
||||||
|
t.Errorf("ActionChannel.String() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue