mirror of
https://github.com/postmannen/ctrl.git
synced 2025-01-05 20:09:16 +00:00
initial new table driven test for requests
This commit is contained in:
parent
f92e8a8e0a
commit
4f09dd406d
1 changed files with 115 additions and 2 deletions
117
requests_test.go
117
requests_test.go
|
@ -1,7 +1,120 @@
|
||||||
package steward
|
package steward
|
||||||
|
|
||||||
func requestTest() {
|
import (
|
||||||
|
"bytes"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
natsserver "github.com/nats-io/nats-server/v2/server"
|
||||||
|
)
|
||||||
|
|
||||||
|
func newServerForTesting(t *testing.T) *server {
|
||||||
|
//if !*logging {
|
||||||
|
// log.SetOutput(io.Discard)
|
||||||
|
//}
|
||||||
|
|
||||||
|
// Start Steward instance
|
||||||
|
// ---------------------------------------
|
||||||
|
// tempdir := t.TempDir()
|
||||||
|
|
||||||
|
// Create the config to run a steward instance.
|
||||||
|
tempdir := "./tmp"
|
||||||
|
conf := &Configuration{
|
||||||
|
SocketFolder: filepath.Join(tempdir, "tmp"),
|
||||||
|
DatabaseFolder: filepath.Join(tempdir, "var/lib"),
|
||||||
|
//SubscribersDataFolder: filepath.Join(tempdir, "data"),
|
||||||
|
SubscribersDataFolder: "./tmp/",
|
||||||
|
ConfigFolder: "./tmp/etc",
|
||||||
|
BrokerAddress: "127.0.0.1:42222",
|
||||||
|
PromHostAndPort: ":2112",
|
||||||
|
NodeName: "central",
|
||||||
|
CentralNodeName: "central",
|
||||||
|
DefaultMessageRetries: 1,
|
||||||
|
DefaultMessageTimeout: 3,
|
||||||
|
EnableSocket: true,
|
||||||
|
// AllowEmptySignature: true,
|
||||||
|
EnableDebug: true,
|
||||||
|
|
||||||
|
StartSubREQCliCommand: true,
|
||||||
|
StartSubREQCliCommandCont: true,
|
||||||
|
StartSubREQToConsole: true,
|
||||||
|
StartSubREQToFileAppend: true,
|
||||||
|
StartSubREQToFile: true,
|
||||||
|
StartSubREQHello: true,
|
||||||
|
StartSubREQErrorLog: true,
|
||||||
|
StartSubREQHttpGet: true,
|
||||||
|
StartSubREQTailFile: true,
|
||||||
|
// StartSubREQToSocket: flagNodeSlice{OK: true, Values: []Node{"*"}},
|
||||||
|
}
|
||||||
|
stewardServer, err := NewServer(conf, "test")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf(" * failed: could not start the Steward instance %v\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return stewardServer
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start up the nats-server message broker for testing purposes.
|
||||||
|
func newNatsServerForTesting(t *testing.T) *natsserver.Server {
|
||||||
|
// Start up the nats-server message broker.
|
||||||
|
nsOpt := &natsserver.Options{
|
||||||
|
Host: "127.0.0.1",
|
||||||
|
Port: 42222,
|
||||||
|
}
|
||||||
|
|
||||||
|
ns, err := natsserver.NewServer(nsOpt)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf(" * failed: could not start the nats-server %v\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ns
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRequest(t *testing.T) {
|
||||||
type test struct {
|
type test struct {
|
||||||
want []byte
|
message Message
|
||||||
|
want []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
ns := newNatsServerForTesting(t)
|
||||||
|
if err := natsserver.Run(ns); err != nil {
|
||||||
|
natsserver.PrintAndDie(err.Error())
|
||||||
|
}
|
||||||
|
defer ns.Shutdown()
|
||||||
|
|
||||||
|
srv := newServerForTesting(t)
|
||||||
|
srv.Start()
|
||||||
|
defer srv.Stop()
|
||||||
|
|
||||||
|
tests := []test{
|
||||||
|
{message: Message{
|
||||||
|
ToNode: "central",
|
||||||
|
FromNode: "central",
|
||||||
|
Method: REQCliCommand,
|
||||||
|
MethodArgs: []string{"bash", "-c", "echo apekatt"},
|
||||||
|
MethodTimeout: 5,
|
||||||
|
ReplyMethod: REQTest,
|
||||||
|
}, want: []byte("apekatt"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
|
||||||
|
sam, err := newSubjectAndMessage(tt.message)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("newSubjectAndMessage failed: %v\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
srv.toRingBufferCh <- []subjectAndMessage{sam}
|
||||||
|
|
||||||
|
result := <-srv.errorKernel.testCh
|
||||||
|
resStr := string(result)
|
||||||
|
resStr = strings.TrimSuffix(resStr, "\n")
|
||||||
|
result = []byte(resStr)
|
||||||
|
|
||||||
|
if !bytes.Equal(result, tt.want) {
|
||||||
|
t.Fatalf("\n **** want: %v, got: %v\n", tt.want, result)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue