summaryrefslogtreecommitdiffhomepage
path: root/server/server_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/server_test.go')
-rw-r--r--server/server_test.go87
1 files changed, 87 insertions, 0 deletions
diff --git a/server/server_test.go b/server/server_test.go
index c3553932..b9d8263f 100644
--- a/server/server_test.go
+++ b/server/server_test.go
@@ -16,10 +16,13 @@
package server
import (
+ log "github.com/Sirupsen/logrus"
"github.com/osrg/gobgp/config"
+ "github.com/osrg/gobgp/packet/bgp"
"github.com/osrg/gobgp/table"
"github.com/stretchr/testify/assert"
"testing"
+ "time"
)
func TestModPolicyAssign(t *testing.T) {
@@ -52,3 +55,87 @@ func TestModPolicyAssign(t *testing.T) {
_, ps, _ := s.GetPolicyAssignment("", table.POLICY_DIRECTION_IMPORT)
assert.Equal(len(ps), 2)
}
+
+func TestMonitor(test *testing.T) {
+ assert := assert.New(test)
+ s := NewBgpServer()
+ go s.Serve()
+ s.Start(&config.Global{
+ Config: config.GlobalConfig{
+ As: 1,
+ RouterId: "1.1.1.1",
+ Port: 10179,
+ },
+ })
+ n := &config.Neighbor{
+ Config: config.NeighborConfig{
+ NeighborAddress: "127.0.0.1",
+ PeerAs: 2,
+ },
+ Transport: config.Transport{
+ Config: config.TransportConfig{
+ PassiveMode: true,
+ },
+ },
+ }
+ if err := s.AddNeighbor(n); err != nil {
+ log.Fatal(err)
+ }
+ t := NewBgpServer()
+ go t.Serve()
+ t.Start(&config.Global{
+ Config: config.GlobalConfig{
+ As: 2,
+ RouterId: "2.2.2.2",
+ Port: -1,
+ },
+ })
+ m := &config.Neighbor{
+ Config: config.NeighborConfig{
+ NeighborAddress: "127.0.0.1",
+ PeerAs: 1,
+ },
+ Transport: config.Transport{
+ Config: config.TransportConfig{
+ RemotePort: 10179,
+ },
+ },
+ }
+ if err := t.AddNeighbor(m); err != nil {
+ log.Fatal(err)
+ }
+
+ for {
+ time.Sleep(time.Second)
+ if t.GetNeighbor()[0].State.SessionState == config.SESSION_STATE_ESTABLISHED {
+ break
+ }
+ }
+
+ w := s.Watch(WatchBestPath())
+
+ attrs := []bgp.PathAttributeInterface{
+ bgp.NewPathAttributeOrigin(0),
+ bgp.NewPathAttributeNextHop("10.0.0.1"),
+ }
+ if _, err := t.AddPath("", []*table.Path{table.NewPath(nil, bgp.NewIPAddrPrefix(24, "10.0.0.0"), false, attrs, time.Now(), false)}); err != nil {
+ log.Fatal(err)
+ }
+
+ ev := <-w.Event()
+ b := ev.(*WatchEventBestPath)
+ assert.Equal(len(b.PathList), 1)
+ assert.Equal(b.PathList[0].GetNlri().String(), "10.0.0.0/24")
+ assert.Equal(b.PathList[0].IsWithdraw, false)
+
+ if _, err := t.AddPath("", []*table.Path{table.NewPath(nil, bgp.NewIPAddrPrefix(24, "10.0.0.0"), true, attrs, time.Now(), false)}); err != nil {
+ log.Fatal(err)
+ }
+
+ ev = <-w.Event()
+ b = ev.(*WatchEventBestPath)
+ assert.Equal(len(b.PathList), 1)
+ assert.Equal(b.PathList[0].GetNlri().String(), "10.0.0.0/24")
+ assert.Equal(b.PathList[0].IsWithdraw, true)
+
+}