begin implementing rpc
This commit is contained in:
parent
2119403892
commit
76d49d57b8
2 changed files with 59 additions and 0 deletions
17
rpc/lux_rpc.go
Normal file
17
rpc/lux_rpc.go
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
package rpc
|
||||
|
||||
import "encoding/xml"
|
||||
|
||||
type LuxRpcRequest struct {
|
||||
XMLName xml.Name `xml:"request"`
|
||||
RequestID int `xml:"id,attr"`
|
||||
Controller string `xml:"controller,attr"`
|
||||
Command string `xml:"command,attr"`
|
||||
|
||||
// Commands specific fields
|
||||
Hosts []struct {
|
||||
XMLName xml.Name `xml:"host"`
|
||||
HostID string `xml:"id,attr"`
|
||||
Hostname string `xml:"hostname,attr"`
|
||||
} `xml:"host"`
|
||||
}
|
||||
42
tests/lux_rpc_test.go
Normal file
42
tests/lux_rpc_test.go
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
package tests
|
||||
|
||||
import (
|
||||
"encoding/xml"
|
||||
"lux/rpc"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestRequestDecoding(t *testing.T) {
|
||||
var request rpc.LuxRpcRequest
|
||||
|
||||
err := xml.Unmarshal([]byte(`<request id="1" controller="keystore" command="new-host" />`), &request)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(request)
|
||||
|
||||
err = xml.Unmarshal([]byte(`<request id="2" controller="router" command="show-routes" />`), &request)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(request)
|
||||
|
||||
err = xml.Unmarshal([]byte(`
|
||||
<request id="3" controller="node" command="query">
|
||||
<host hostname="test-host" />
|
||||
<host id="0002" />
|
||||
</request>`), &request)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(request)
|
||||
|
||||
err = xml.Unmarshal([]byte(`
|
||||
<request id="4" controller="node" command="resolve-wan">
|
||||
<host hostname="test-host" />
|
||||
</request>`), &request)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(request)
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue