+ var name1, name2 = "vpp1", "vpp2"
+ ch1, statsConn1, disconnect1 := connectVPP(name1, *binapiSockAddrVpp1, *statsSockAddrVpp1)
+ defer disconnect1()
+
+ ch2, statsConn2, disconnect2 := connectVPP(name2, *binapiSockAddrVpp2, *statsSockAddrVpp2)
+ defer disconnect2()
+
+ fmt.Println()
+
+ // retrieve VPP1 version
+ logHeader("Retrieving %s version", name1)
+ getVppVersion(ch1, name1)
+
+ // retrieve VPP2 version
+ logHeader("Retrieving %s version", name2)
+ getVppVersion(ch1, name2)
+
+ // configure VPP1
+ logHeader("Configuring %s", name1)
+ ifIdx1 := createLoopback(ch1, name1)
+ addIPsToInterface(ch1, ifIdx1, []string{"10.10.0.1/24", "15.10.0.1/24"})
+
+ // configure VPP2
+ logHeader("Configuring %s", name2)
+ ifIdx2 := createLoopback(ch2, name2)
+ addIPsToInterface(ch2, ifIdx2, []string{"20.10.0.1/24", "25.10.0.1/24"})
+
+ // retrieve configuration from VPPs
+ retrieveIPAddresses(ch1, name1, ifIdx1)
+ retrieveIPAddresses(ch2, name2, ifIdx2)
+
+ // retrieve stats from VPPs
+ retrieveStats(statsConn1, name1)
+ retrieveStats(statsConn2, name2)
+
+ // cleanup
+ logHeader("Cleaning up %s", name1)
+ deleteIPsToInterface(ch1, ifIdx1, []string{"10.10.0.1/24", "15.10.0.1/24"})
+ deleteLoopback(ch1, ifIdx1)
+ logHeader("Cleaning up %s", name2)
+ deleteIPsToInterface(ch2, ifIdx2, []string{"20.10.0.1/24", "25.10.0.1/24"})
+ deleteLoopback(ch2, ifIdx2)
+}