protocol version test implemented between agent and server (and found
that it did not work)
This commit is contained in:
parent
ea0b4282ba
commit
465dc1108f
@ -146,7 +146,9 @@ func ListenForServerEvents(channel CommChannel) {
|
||||
func AgentInitialization(conn io.ReadWriter, agentInto EnvironmentInfo) (ServerInfo, error) {
|
||||
channel := NewGOBChannel(conn)
|
||||
err := CheckProtocolVersion(Agent, channel)
|
||||
|
||||
if err != nil {
|
||||
return ServerInfo{}, err
|
||||
}
|
||||
err = SendWithTimeout(channel, agentInto)
|
||||
if err != nil {
|
||||
return ServerInfo{}, nil
|
||||
@ -155,16 +157,16 @@ func AgentInitialization(conn io.ReadWriter, agentInto EnvironmentInfo) (ServerI
|
||||
if err != nil {
|
||||
return ServerInfo{}, nil
|
||||
}
|
||||
// TODO remove logging
|
||||
log.Println("Agent configuration received from server")
|
||||
|
||||
return serverInfo, err
|
||||
}
|
||||
|
||||
func ServerInitialization(conn io.ReadWriter, serverInfo ServerInfo) (EnvironmentInfo, error) {
|
||||
channel := NewGOBChannel(conn)
|
||||
err := CheckProtocolVersion(ConvergeServer, channel)
|
||||
|
||||
if err != nil {
|
||||
return EnvironmentInfo{}, err
|
||||
}
|
||||
agentInfo, err := ReceiveWithTimeout[EnvironmentInfo](channel)
|
||||
if err != nil {
|
||||
return EnvironmentInfo{}, err
|
||||
@ -187,7 +189,7 @@ func ServerInitialization(conn io.ReadWriter, serverInfo ServerInfo) (Environmen
|
||||
func CheckProtocolVersion(role Role, channel GOBChannel) error {
|
||||
switch role {
|
||||
case Agent:
|
||||
err := SendWithTimeout(channel, ProtocolVersion{Version: PROTOCOL_VERSION})
|
||||
err := SendWithTimeout(channel, ProtocolVersion{Version: agentProtocolVersion})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -195,9 +197,9 @@ func CheckProtocolVersion(role Role, channel GOBChannel) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if version.Version != PROTOCOL_VERSION {
|
||||
if version.Version != agentProtocolVersion {
|
||||
return fmt.Errorf("Protocol version mismatch: agent %d, converge server %d",
|
||||
PROTOCOL_VERSION, version.Version)
|
||||
agentProtocolVersion, version.Version)
|
||||
}
|
||||
return nil
|
||||
case ConvergeServer:
|
||||
@ -205,13 +207,13 @@ func CheckProtocolVersion(role Role, channel GOBChannel) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = SendWithTimeout(channel, ProtocolVersion{Version: PROTOCOL_VERSION})
|
||||
err = SendWithTimeout(channel, ProtocolVersion{Version: serverProtocolVersion})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if version.Version != PROTOCOL_VERSION {
|
||||
if version.Version != serverProtocolVersion {
|
||||
return fmt.Errorf("Protocol version mismatch: agent %d, converge server %d",
|
||||
PROTOCOL_VERSION, version.Version)
|
||||
serverProtocolVersion, version.Version)
|
||||
}
|
||||
return nil
|
||||
default:
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"log"
|
||||
"math/rand"
|
||||
"net/http"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
@ -48,6 +49,8 @@ func (s *AgentServerTestSuite) SetupTest() {
|
||||
}
|
||||
|
||||
func (suite *AgentServerTestSuite) TearDownTest() {
|
||||
agentProtocolVersion = PROTOCOL_VERSION
|
||||
serverProtocolVersion = PROTOCOL_VERSION
|
||||
}
|
||||
|
||||
func TestAgentServerTestSuite(t *testing.T) {
|
||||
@ -163,6 +166,32 @@ func (s *AgentServerTestSuite) Test_Initialization() {
|
||||
})
|
||||
}
|
||||
|
||||
func (s *AgentServerTestSuite) Test_InitializationProtocolVersionMismatch() {
|
||||
serverProtocolVersion++
|
||||
testsupport.RunAndWait(
|
||||
&s.Suite,
|
||||
func() any {
|
||||
serverInfo, err := AgentInitialization(s.agentConnection,
|
||||
NewEnvironmentInfo("myshell"))
|
||||
s.NotNil(err)
|
||||
s.True(strings.Contains(strings.ToLower(err.Error()), "protocol"))
|
||||
s.Equal(ServerInfo{}, serverInfo)
|
||||
return nil
|
||||
},
|
||||
func() any {
|
||||
serverInfo := ServerInfo{TestId: 1000}
|
||||
environmentInfo, err := ServerInitialization(s.serverConnection, serverInfo)
|
||||
s.NotNil(err)
|
||||
s.True(strings.Contains(strings.ToLower(err.Error()), "protocol"))
|
||||
s.Equal(EnvironmentInfo{}, environmentInfo)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
// TODO:
|
||||
// Test for protocolversion mismatch: verify error is returned. Use sentinel error
|
||||
// Tests when connection is close from agent and from server: verify error is returned
|
||||
|
||||
func (s *AgentServerTestSuite) Test_ListenForAgentEvents() {
|
||||
|
||||
agentEvents := []any{
|
||||
@ -217,6 +246,7 @@ func (s *AgentServerTestSuite) Test_ListenForAgentEvents() {
|
||||
})
|
||||
}
|
||||
|
||||
func (s *AgentServerTestSuite) Test_LIstenForServerEvents() {
|
||||
|
||||
}
|
||||
// This is currently a Noop. No need to test it.
|
||||
//func (s *AgentServerTestSuite) Test_LIstenForServerEvents() {
|
||||
//
|
||||
//}
|
||||
|
@ -8,7 +8,12 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
const PROTOCOL_VERSION = 4
|
||||
const PROTOCOL_VERSION = 5
|
||||
|
||||
// for testing protocol version mismatch we define a separate protocol version
|
||||
// for the agent and server
|
||||
var agentProtocolVersion = PROTOCOL_VERSION
|
||||
var serverProtocolVersion = PROTOCOL_VERSION
|
||||
|
||||
func init() {
|
||||
RegisterEventsWithGob()
|
||||
|
Loading…
Reference in New Issue
Block a user