mirror of
https://github.com/soypat/lneto.git
synced 2026-09-13 01:59:30 +00:00
add dhcp failing test
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package dhcpv4
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestClientServer(t *testing.T) {
|
||||
svAddr := [4]byte{192, 168, 1, 1}
|
||||
clAddr := svAddr
|
||||
clAddr[3]++
|
||||
var sv Server
|
||||
var cl Client
|
||||
err := cl.BeginRequest(123, RequestConfig{
|
||||
RequestedAddr: clAddr,
|
||||
ClientHardwareAddr: [6]byte{1, 2, 3, 4, 5, 6},
|
||||
Hostname: "lneto",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
assertClState := func(state ClientState) {
|
||||
t.Helper()
|
||||
if state != cl.State() {
|
||||
t.Errorf("want client state %s, got %s", state.String(), cl.State().String())
|
||||
}
|
||||
}
|
||||
sv.Reset(svAddr, DefaultServerPort)
|
||||
// CLIENT DISCOVER.
|
||||
assertClState(StateInit)
|
||||
var buf [1024]byte
|
||||
n, err := cl.Encapsulate(buf[:], 0)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n == 0 {
|
||||
t.Fatal("no data exchanged")
|
||||
}
|
||||
assertClState(StateSelecting)
|
||||
err = sv.Demux(buf[:n], 0)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
// SERVER REPLY OFFER
|
||||
n, err = sv.Encapsulate(buf[:], 0)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n == 0 {
|
||||
t.Fatal("no data exchanged")
|
||||
}
|
||||
err = cl.Demux(buf[:n], 0)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
assertClState(StateRequesting)
|
||||
|
||||
// CLIENT SEND OUT ACK.
|
||||
n, err = cl.Encapsulate(buf[:], 0)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n == 0 {
|
||||
t.Fatal("no data exchanged")
|
||||
}
|
||||
err = sv.Demux(buf[:n], 0)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user