From f6a851f9a6d86d2e68653c6cc6c4835485313432 Mon Sep 17 00:00:00 2001 From: Gregory Shimansky Date: Wed, 7 Nov 2018 14:37:10 -0600 Subject: [PATCH 1/7] Added benchmark test programs wrk and httpperfserv --- .gitmodules | 6 ++++++ Dockerfile | 4 ++++ Makefile | 12 +++++++++++- test/httpperfserv | 1 + test/wrk | 1 + 5 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 .gitmodules create mode 160000 test/httpperfserv create mode 160000 test/wrk diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a929de7 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "test/wrk"] + path = test/wrk + url = https://github.com/wg/wrk.git +[submodule "test/httpperfserv"] + path = test/httpperfserv + url = git@github.com:gshimansky/httpperfserv diff --git a/Dockerfile b/Dockerfile index 924f2b8..864a7ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,6 +23,10 @@ WORKDIR /workdir COPY nff-go-nat . COPY client/client . +# Test applications +COPY test/httpperfserv/httpperfserv . +COPY test/wrk/wrk . + # Configs without VLANs COPY config.json . COPY config-vlan.json . diff --git a/Makefile b/Makefile index 249375a..4753f3e 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ # --------- General build rules .PHONY: all -all: nff-go-nat client/client +all: nff-go-nat client/client httpperfserv wrk .PHONY: debug debug: | .set-debug all @@ -20,10 +20,20 @@ client/client: .check-env Makefile client/client.go nff-go-nat: .check-env Makefile nat.go $(wildcard nat/*.go) go build $(GO_COMPILE_FLAGS) +.PHONY: httpperfserv +httpperfserv: + cd test/httpperfserv && go build $(GO_COMPILE_FLAGS) + +.PHONY: wrk +wrk: + $(MAKE) -C test/wrk + .PHONY: clean clean: -rm nff-go-nat -rm client/client + -rm test/httpperfserv/httpperfserv + $(MAKE) -C test/wrk clean # --------- Docker images build rules diff --git a/test/httpperfserv b/test/httpperfserv new file mode 160000 index 0000000..d815d2f --- /dev/null +++ b/test/httpperfserv @@ -0,0 +1 @@ +Subproject commit d815d2f8844231427a4b00cb4eea872d67725ae7 diff --git a/test/wrk b/test/wrk new file mode 160000 index 0000000..7594a95 --- /dev/null +++ b/test/wrk @@ -0,0 +1 @@ +Subproject commit 7594a95186ebdfa7cb35477a8a811f84e2a31b62 From e8de1c0737d520510c52ad7d379871bc7a54bdbc Mon Sep 17 00:00:00 2001 From: Gregory Shimansky Date: Thu, 8 Nov 2018 08:56:45 -0600 Subject: [PATCH 2/7] Updated httpperfserv url to point to upstream --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index a929de7..e422ece 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,4 +3,4 @@ url = https://github.com/wg/wrk.git [submodule "test/httpperfserv"] path = test/httpperfserv - url = git@github.com:gshimansky/httpperfserv + url = https://github.com/vsukhoml/httpperfserv From 1cff8da5b1d8d2143aec275bf80a7e852057dbc4 Mon Sep 17 00:00:00 2001 From: Gregory Shimansky Date: Fri, 9 Nov 2018 14:13:18 -0600 Subject: [PATCH 3/7] Changed httpperfserv url to forked repository --- .gitmodules | 2 +- test/httpperfserv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index e422ece..2625721 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,4 +3,4 @@ url = https://github.com/wg/wrk.git [submodule "test/httpperfserv"] path = test/httpperfserv - url = https://github.com/vsukhoml/httpperfserv + url = https://github.com/gshimansky/httpperfserv diff --git a/test/httpperfserv b/test/httpperfserv index d815d2f..269f1c2 160000 --- a/test/httpperfserv +++ b/test/httpperfserv @@ -1 +1 @@ -Subproject commit d815d2f8844231427a4b00cb4eea872d67725ae7 +Subproject commit 269f1c2a406527ca8e64e9e28d2eb38c25fd65bc From 04de8137549206a8b426e29cb7b0e895f9ae3023 Mon Sep 17 00:00:00 2001 From: Gregory Shimansky Date: Tue, 13 Nov 2018 14:34:34 -0600 Subject: [PATCH 4/7] Fixed port reuse for TCP on IPv6 --- nat/config.go | 3 ++- nat/translation.go | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/nat/config.go b/nat/config.go index 4b83a59..081eb71 100644 --- a/nat/config.go +++ b/nat/config.go @@ -40,7 +40,8 @@ const ( ) var ( - zeroIPv6Addr = [common.IPv6AddrLen]uint8{} + zeroIPv6Addr = [common.IPv6AddrLen]uint8{} + portReuseSetLastusedTime = time.Duration(portReuseTimeout - connectionTimeout) ) type hostPort struct { diff --git a/nat/translation.go b/nat/translation.go index f04ba5a..b425c88 100644 --- a/nat/translation.go +++ b/nat/translation.go @@ -49,7 +49,7 @@ func (pp *portPair) allocateNewEgressConnection(ipv6 bool, protocol uint8, privE } } - pp.PublicPort.getPortmap(ipv6, protocol)[port] = portMapEntry{ + pp.getPublicPortPortmap(ipv6, protocol)[port] = portMapEntry{ lastused: time.Now(), finCount: 0, terminationDirection: 0, @@ -380,7 +380,7 @@ func (pp *portPair) checkTCPTermination(ipv6 bool, hdr *packet.TCPHdr, port int, // First check for FIN pp.mutex.Lock() - pme := &pp.PublicPort.portmap[common.TCPNumber][port] + pme := &pp.getPublicPortPortmap(ipv6, common.TCPNumber)[port] if pme.finCount == 0 { pme.finCount = 1 pme.terminationDirection = dir @@ -400,12 +400,12 @@ func (pp *portPair) checkTCPTermination(ipv6 bool, hdr *packet.TCPHdr, port int, // FIN pp.mutex.Lock() - pme := &pp.PublicPort.portmap[common.TCPNumber][port] + pme := &pp.getPublicPortPortmap(ipv6, common.TCPNumber)[port] if pme.finCount == 2 { pp.deleteOldConnection(ipv6, common.TCPNumber, port) // Set some time while port cannot be used before // connection timeout is reached - pme.lastused = time.Now().Add(time.Duration(portReuseTimeout - connectionTimeout)) + pme.lastused = time.Now().Add(portReuseSetLastusedTime) } pp.mutex.Unlock() From e42e22be7ca128b0cf42c7c18f7c157b7a106df3 Mon Sep 17 00:00:00 2001 From: Gregory Shimansky Date: Tue, 13 Nov 2018 14:38:22 -0600 Subject: [PATCH 5/7] Implemented performance tests using wrk --- Makefile | 8 + test/perf-nat-linux.json | 242 +++++++++++++++++++++++--- test/perf-nat.json | 355 +++++++++++++++++++++++++++++++++++---- 3 files changed, 553 insertions(+), 52 deletions(-) diff --git a/Makefile b/Makefile index 4753f3e..7169afa 100644 --- a/Makefile +++ b/Makefile @@ -106,6 +106,14 @@ test-performance: .check-test-env test/perf-nat.json test-performance-vlan: .check-test-env test/perf-nat-vlan.json $(NFF_GO)/test/framework/main/tf -directory nat-vlan-perfresults -config test/perf-nat-vlan.json -hosts $(NFF_GO_HOSTS) +.PHONY: test-linux-performance +test-linux-performance: .check-test-env test/perf-nat-linux.json + $(NFF_GO)/test/framework/main/tf -directory linux-nat-perfresults -config test/perf-nat-linux.json -hosts $(NFF_GO_HOSTS) + +.PHONY: test-linux-performance-vlan +test-linux-performance-vlan: .check-test-env test/perf-nat-linux-vlan.json + $(NFF_GO)/test/framework/main/tf -directory linux-nat-vlan-perfresults -config test/perf-nat-linux-vlan.json -hosts $(NFF_GO_HOSTS) + # --------- Utility rules .PHONY: .check-env diff --git a/test/perf-nat-linux.json b/test/perf-nat-linux.json index 063f562..e8fda0f 100644 --- a/test/perf-nat-linux.json +++ b/test/perf-nat-linux.json @@ -13,29 +13,43 @@ }, "tests": [ { - "name": "LinuxNAT-10k-1c", + "name": "LinuxNAT-1K-1c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "ab -c 1 -n 10000 http://192.168.16.2/10k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://192.168.16.2:8008/1024/test && echo TEST PASSED || echo TEST FAILED" ] } ] }, { - "name": "LinuxNAT-100k-1c", + "name": "LinuxNAT-10K-1c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "ab -c 1 -n 1000 http://192.168.16.2/100k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://192.168.16.2:8008/10240/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-100K-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://192.168.16.2:8008/102400/test && echo TEST PASSED || echo TEST FAILED" ] } ] @@ -43,55 +57,237 @@ { "name": "LinuxNAT-1M-1c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://192.168.16.2:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-1G-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://192.168.16.2:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-1K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://192.168.16.2:8008/1024/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-10K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://192.168.16.2:8008/10240/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-100K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://192.168.16.2:8008/102400/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-1M-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://192.168.16.2:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-1G-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://192.168.16.2:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-1K-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://[fd16::2]:8008/1024/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-10K-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://[fd16::2]:8008/10240/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-100K-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://[fd16::2]:8008/102400/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-1M-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://[fd16::2]:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-1G-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://[fd16::2]:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-1K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://[fd16::2]:8008/1024/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-10K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "ab -c 1 -n 1000 http://192.168.16.2/1m.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://[fd16::2]:8008/10240/test && echo TEST PASSED || echo TEST FAILED" ] } ] }, { - "name": "LinuxNAT-10k-10c", + "name": "LinuxNAT_V6-100K-30c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "ab -c 10 -n 10000 http://192.168.16.2/10k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://[fd16::2]:8008/102400/test && echo TEST PASSED || echo TEST FAILED" ] } ] }, { - "name": "LinuxNAT-100k-10c", + "name": "LinuxNAT_V6-1M-30c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "ab -c 10 -n 1000 http://192.168.16.2/100k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://[fd16::2]:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" ] } ] }, { - "name": "LinuxNAT-1M-10c", + "name": "LinuxNAT_V6-1G-30c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "ab -c 10 -n 1000 http://192.168.16.2/1m.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://[fd16::2]:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" ] } ] diff --git a/test/perf-nat.json b/test/perf-nat.json index 5a2b378..0149118 100644 --- a/test/perf-nat.json +++ b/test/perf-nat.json @@ -11,45 +11,69 @@ ], "pktgen-port": 22022 }, + "variables": { + "CORES": "0-43" + }, "tests": [ { - "name": "NFFGoNAT-10k-1c", + "name": "NFFGoNAT-1K-1c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "sleep 20; ab -c 1 -n 10000 http://192.168.16.2/10k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://192.168.16.2:8008/1024/test && echo TEST PASSED || echo TEST FAILED" ] }, { "image-name": "nff-go-nat", "app-type": "TestAppGo", "exec-cmd": [ - "./nff-go-nat", "-config", "config.json" + "./nff-go-nat", "-config", "config.json", "-cores=CORES" ] } ] }, { - "name": "NFFGoNAT-100k-1c", + "name": "NFFGoNAT-10K-1c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "sleep 20; ab -c 1 -n 1000 http://192.168.16.2/100k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://192.168.16.2:8008/10240/test && echo TEST PASSED || echo TEST FAILED" ] }, { "image-name": "nff-go-nat", "app-type": "TestAppGo", "exec-cmd": [ - "./nff-go-nat", "-config", "config.json" + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-100K-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://192.168.16.2:8008/102400/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" ] } ] @@ -57,83 +81,356 @@ { "name": "NFFGoNAT-1M-1c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://192.168.16.2:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-1G-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://192.168.16.2:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-1K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://192.168.16.2:8008/1024/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-10K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://192.168.16.2:8008/10240/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-100K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://192.168.16.2:8008/102400/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-1M-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://192.168.16.2:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-1G-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://192.168.16.2:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-1K-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://[fd16::2]:8008/1024/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-10K-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://[fd16::2]:8008/10240/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-100K-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://[fd16::2]:8008/102400/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-1M-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://[fd16::2]:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-1G-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://[fd16::2]:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-1K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://[fd16::2]:8008/1024/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-10K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "sleep 20; ab -c 1 -n 1000 http://192.168.16.2/1m.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://[fd16::2]:8008/10240/test && echo TEST PASSED || echo TEST FAILED" ] }, { "image-name": "nff-go-nat", "app-type": "TestAppGo", "exec-cmd": [ - "./nff-go-nat", "-config", "config.json" + "./nff-go-nat", "-config", "config.json", "-cores=CORES" ] } ] }, { - "name": "NFFGoNAT-10k-10c", + "name": "NFFGoNAT_V6-100K-30c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "sleep 20; ab -c 10 -n 10000 http://192.168.16.2/10k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://[fd16::2]:8008/102400/test && echo TEST PASSED || echo TEST FAILED" ] }, { "image-name": "nff-go-nat", "app-type": "TestAppGo", "exec-cmd": [ - "./nff-go-nat", "-config", "config.json" + "./nff-go-nat", "-config", "config.json", "-cores=CORES" ] } ] }, { - "name": "NFFGoNAT-100k-10c", + "name": "NFFGoNAT_V6-1M-30c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "sleep 20; ab -c 10 -n 1000 http://192.168.16.2/100k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://[fd16::2]:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" ] }, { "image-name": "nff-go-nat", "app-type": "TestAppGo", "exec-cmd": [ - "./nff-go-nat", "-config", "config.json" + "./nff-go-nat", "-config", "config.json", "-cores=CORES" ] } ] }, { - "name": "NFFGoNAT-1M-10c", + "name": "NFFGoNAT_V6-1G-30c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "sleep 20; ab -c 10 -n 1000 http://192.168.16.2/1m.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://[fd16::2]:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" ] }, { "image-name": "nff-go-nat", "app-type": "TestAppGo", "exec-cmd": [ - "./nff-go-nat", "-config", "config.json" + "./nff-go-nat", "-config", "config.json", "-cores=CORES" ] } ] From 40c341ba9c578d87c24729a52ec97d1304d172ac Mon Sep 17 00:00:00 2001 From: Gregory Shimansky Date: Wed, 14 Nov 2018 11:46:29 -0600 Subject: [PATCH 6/7] Implemented performance VLAN tests with wrk --- .gitignore | 7 + test/perf-nat-linux-vlan.json | 218 +++++++++++++++++++-- test/perf-nat-vlan.json | 355 +++++++++++++++++++++++++++++++--- 3 files changed, 540 insertions(+), 40 deletions(-) diff --git a/.gitignore b/.gitignore index bfb98f5..9ada941 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,10 @@ *~ doc nff-go-nat + +nat-stabilityresults +nat-vlan-stabilityresults +nat-perfresults +nat-vlan-perfresults +linux-nat-perfresults +linux-nat-vlan-perfresults diff --git a/test/perf-nat-linux-vlan.json b/test/perf-nat-linux-vlan.json index ea0d425..d20afb1 100644 --- a/test/perf-nat-linux-vlan.json +++ b/test/perf-nat-linux-vlan.json @@ -13,7 +13,7 @@ }, "tests": [ { - "name": "LinuxNAT-VLAN-10k-1c", + "name": "LinuxNAT-VLAN-1K-1c", "test-time": 90000000000, "test-type": "TestTypeApacheBenchmark", "test-apps": [ @@ -21,13 +21,13 @@ "image-name": "nff-go-nat", "app-type": "TestAppApacheBenchmark", "exec-cmd": [ - "sh", "-c", "ab -c 1 -n 10000 http://192.168.116.2/10k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://192.168.116.2:8008/1024/test && echo TEST PASSED || echo TEST FAILED" ] } ] }, { - "name": "LinuxNAT-VLAN-100k-1c", + "name": "LinuxNAT-VLAN-10K-1c", "test-time": 90000000000, "test-type": "TestTypeApacheBenchmark", "test-apps": [ @@ -35,7 +35,21 @@ "image-name": "nff-go-nat", "app-type": "TestAppApacheBenchmark", "exec-cmd": [ - "sh", "-c", "ab -c 1 -n 1000 http://192.168.116.2/100k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://192.168.116.2:8008/10240/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-VLAN-100K-1c", + "test-time": 90000000000, + "test-type": "TestTypeApacheBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppApacheBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://192.168.116.2:8008/102400/test && echo TEST PASSED || echo TEST FAILED" ] } ] @@ -49,13 +63,195 @@ "image-name": "nff-go-nat", "app-type": "TestAppApacheBenchmark", "exec-cmd": [ - "sh", "-c", "ab -c 1 -n 1000 http://192.168.116.2/1m.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://192.168.116.2:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-VLAN-1G-1c", + "test-time": 90000000000, + "test-type": "TestTypeApacheBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppApacheBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://192.168.116.2:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-VLAN-1K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://192.168.116.2:8008/1024/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-VLAN-10K-30c", + "test-time": 90000000000, + "test-type": "TestTypeApacheBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppApacheBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://192.168.116.2:8008/10240/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-VLAN-100K-30c", + "test-time": 90000000000, + "test-type": "TestTypeApacheBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppApacheBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://192.168.116.2:8008/102400/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-VLAN-1M-30c", + "test-time": 90000000000, + "test-type": "TestTypeApacheBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppApacheBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://192.168.116.2:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT-VLAN-1G-30c", + "test-time": 90000000000, + "test-type": "TestTypeApacheBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppApacheBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://192.168.116.2:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-VLAN-1K-1c", + "test-time": 90000000000, + "test-type": "TestTypeApacheBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppApacheBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://[fd86::2]:8008/1024/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-VLAN-10K-1c", + "test-time": 90000000000, + "test-type": "TestTypeApacheBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppApacheBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://[fd86::2]:8008/10240/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-VLAN-100K-1c", + "test-time": 90000000000, + "test-type": "TestTypeApacheBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppApacheBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://[fd86::2]:8008/102400/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-VLAN-1M-1c", + "test-time": 90000000000, + "test-type": "TestTypeApacheBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppApacheBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://[fd86::2]:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-VLAN-1G-1c", + "test-time": 90000000000, + "test-type": "TestTypeApacheBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppApacheBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 1 -c 1 --latency http://[fd86::2]:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-VLAN-1K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://[fd86::2]:8008/1024/test && echo TEST PASSED || echo TEST FAILED" + ] + } + ] + }, + { + "name": "LinuxNAT_V6-VLAN-10K-30c", + "test-time": 90000000000, + "test-type": "TestTypeApacheBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppApacheBenchmark", + "exec-cmd": [ + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://[fd86::2]:8008/10240/test && echo TEST PASSED || echo TEST FAILED" ] } ] }, { - "name": "LinuxNAT-VLAN-10k-10c", + "name": "LinuxNAT_V6-VLAN-100K-30c", "test-time": 90000000000, "test-type": "TestTypeApacheBenchmark", "test-apps": [ @@ -63,13 +259,13 @@ "image-name": "nff-go-nat", "app-type": "TestAppApacheBenchmark", "exec-cmd": [ - "sh", "-c", "ab -c 10 -n 10000 http://192.168.116.2/10k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://[fd86::2]:8008/102400/test && echo TEST PASSED || echo TEST FAILED" ] } ] }, { - "name": "LinuxNAT-VLAN-100k-10c", + "name": "LinuxNAT_V6-VLAN-1M-30c", "test-time": 90000000000, "test-type": "TestTypeApacheBenchmark", "test-apps": [ @@ -77,13 +273,13 @@ "image-name": "nff-go-nat", "app-type": "TestAppApacheBenchmark", "exec-cmd": [ - "sh", "-c", "ab -c 10 -n 1000 http://192.168.116.2/100k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://[fd86::2]:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" ] } ] }, { - "name": "LinuxNAT-VLAN-1M-10c", + "name": "LinuxNAT_V6-VLAN-1G-30c", "test-time": 90000000000, "test-type": "TestTypeApacheBenchmark", "test-apps": [ @@ -91,7 +287,7 @@ "image-name": "nff-go-nat", "app-type": "TestAppApacheBenchmark", "exec-cmd": [ - "sh", "-c", "ab -c 10 -n 1000 http://192.168.116.2/1m.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "./wrk -d 30s -t 30 -c 30 --latency http://[fd86::2]:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" ] } ] diff --git a/test/perf-nat-vlan.json b/test/perf-nat-vlan.json index d7b2ee8..fa47621 100644 --- a/test/perf-nat-vlan.json +++ b/test/perf-nat-vlan.json @@ -11,45 +11,69 @@ ], "pktgen-port": 22022 }, + "variables": { + "CORES": "0-43" + }, "tests": [ { - "name": "NFFGoNAT-VLAN-10k-1c", + "name": "NFFGoNAT-VLAN-1K-1c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "sleep 20; ab -c 1 -n 10000 http://192.168.116.2/10k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://192.168.116.2:8008/1024/test && echo TEST PASSED || echo TEST FAILED" ] }, { "image-name": "nff-go-nat", "app-type": "TestAppGo", "exec-cmd": [ - "./nff-go-nat", "-config", "config-vlan.json" + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" ] } ] }, { - "name": "NFFGoNAT-VLAN-100k-1c", + "name": "NFFGoNAT-VLAN-10K-1c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "sleep 20; ab -c 1 -n 1000 http://192.168.116.2/100k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://192.168.116.2:8008/10240/test && echo TEST PASSED || echo TEST FAILED" ] }, { "image-name": "nff-go-nat", "app-type": "TestAppGo", "exec-cmd": [ - "./nff-go-nat", "-config", "config-vlan.json" + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-VLAN-100K-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://192.168.116.2:8008/102400/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" ] } ] @@ -57,83 +81,356 @@ { "name": "NFFGoNAT-VLAN-1M-1c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://192.168.116.2:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-VLAN-1G-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://192.168.116.2:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-VLAN-1K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://192.168.116.2:8008/1024/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-VLAN-10K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://192.168.116.2:8008/10240/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-VLAN-100K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://192.168.116.2:8008/102400/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-VLAN-1M-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://192.168.116.2:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT-VLAN-1G-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://192.168.116.2:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-VLAN-1K-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://[fd86::2]:8008/1024/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-VLAN-10K-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://[fd86::2]:8008/10240/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-VLAN-100K-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://[fd86::2]:8008/102400/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-VLAN-1M-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://[fd86::2]:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-VLAN-1G-1c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 1 -c 1 --latency http://[fd86::2]:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-VLAN-1K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", + "test-apps": [ + { + "image-name": "nff-go-nat", + "app-type": "TestAppWrkBenchmark", + "exec-cmd": [ + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://[fd86::2]:8008/1024/test && echo TEST PASSED || echo TEST FAILED" + ] + }, + { + "image-name": "nff-go-nat", + "app-type": "TestAppGo", + "exec-cmd": [ + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" + ] + } + ] + }, + { + "name": "NFFGoNAT_V6-VLAN-10K-30c", + "test-time": 90000000000, + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "sleep 20; ab -c 1 -n 1000 http://192.168.116.2/1m.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://[fd86::2]:8008/10240/test && echo TEST PASSED || echo TEST FAILED" ] }, { "image-name": "nff-go-nat", "app-type": "TestAppGo", "exec-cmd": [ - "./nff-go-nat", "-config", "config-vlan.json" + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" ] } ] }, { - "name": "NFFGoNAT-VLAN-10k-10c", + "name": "NFFGoNAT_V6-VLAN-100K-30c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "sleep 20; ab -c 10 -n 10000 http://192.168.116.2/10k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://[fd86::2]:8008/102400/test && echo TEST PASSED || echo TEST FAILED" ] }, { "image-name": "nff-go-nat", "app-type": "TestAppGo", "exec-cmd": [ - "./nff-go-nat", "-config", "config-vlan.json" + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" ] } ] }, { - "name": "NFFGoNAT-VLAN-100k-10c", + "name": "NFFGoNAT_V6-VLAN-1M-30c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "sleep 20; ab -c 10 -n 1000 http://192.168.116.2/100k.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://[fd86::2]:8008/1048576/test && echo TEST PASSED || echo TEST FAILED" ] }, { "image-name": "nff-go-nat", "app-type": "TestAppGo", "exec-cmd": [ - "./nff-go-nat", "-config", "config-vlan.json" + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" ] } ] }, { - "name": "NFFGoNAT-VLAN-1M-10c", + "name": "NFFGoNAT_V6-VLAN-1G-30c", "test-time": 90000000000, - "test-type": "TestTypeApacheBenchmark", + "test-type": "TestTypeWrkBenchmark", "test-apps": [ { "image-name": "nff-go-nat", - "app-type": "TestAppApacheBenchmark", + "app-type": "TestAppWrkBenchmark", "exec-cmd": [ - "sh", "-c", "sleep 20; ab -c 10 -n 1000 http://192.168.116.2/1m.bin && echo TEST PASSED || echo TEST FAILED" + "sh", "-c", "sleep 10; ./wrk -d 30s -t 30 -c 30 --latency http://[fd86::2]:8008/1073741824/test && echo TEST PASSED || echo TEST FAILED" ] }, { "image-name": "nff-go-nat", "app-type": "TestAppGo", "exec-cmd": [ - "./nff-go-nat", "-config", "config-vlan.json" + "./nff-go-nat", "-config", "config-vlan.json", "-cores=CORES" ] } ] From 2ea6357499c6f8902b6fce25e579dfcd79e6ddd6 Mon Sep 17 00:00:00 2001 From: Gregory Shimansky Date: Thu, 15 Nov 2018 10:54:02 -0600 Subject: [PATCH 7/7] Updated NFF-Go dependency version to NFF-Go v0.6.2 --- go.mod | 9 +++++++-- go.sum | 13 +++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 05df68d..92f94b7 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,13 @@ module github.com/intel-go/nff-go-nat require ( github.com/golang/protobuf v1.2.0 github.com/google/gopacket v1.1.16-0.20181023151400-a35e09f9f224 - github.com/intel-go/nff-go v0.0.0-20181025212503-86076d68cc4a + github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect + github.com/intel-go/nff-go v0.6.2 + github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d // indirect + github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c // indirect github.com/vishvananda/netlink v1.0.0 - golang.org/x/net v0.0.0-20180926154720-4dfa2610cdf3 + golang.org/x/net v0.0.0-20181114220301-adae6a3d119a + golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8 // indirect + golang.org/x/tools v0.0.0-20181115190406-fc2e60c3c3d9 // indirect google.golang.org/grpc v1.15.0 ) diff --git a/go.sum b/go.sum index 8aa50da..ac0b551 100644 --- a/go.sum +++ b/go.sum @@ -17,6 +17,7 @@ github.com/google/gopacket v1.1.15/go.mod h1:UCLx9mCmAwsVbn6qQl1WIEt2SO7Nd2fD0th github.com/google/gopacket v1.1.16-0.20181023151400-a35e09f9f224 h1:78xLKlzgK/iEGI5iyrSMXEZu+kRRT+s08QqpSXonq7o= github.com/google/gopacket v1.1.16-0.20181023151400-a35e09f9f224/go.mod h1:UCLx9mCmAwsVbn6qQl1WIEt2SO7Nd2fD0th1TBAsqBw= github.com/gopherjs/gopherjs v0.0.0-20180825215210-0210a2f0f73c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/intel-go/nff-go v0.0.0-20180921201744-1fbebd4fd0f2 h1:KDM+zxw97jpFJq9oKfvHT4dguYvHVz45Ax9b5+VFZkk= @@ -26,14 +27,20 @@ github.com/intel-go/nff-go v0.0.0-20181002212532-f4887690e204 h1:qty4fLwai6XppC+ github.com/intel-go/nff-go v0.0.0-20181002212532-f4887690e204/go.mod h1:a8QAG6+aP/tFdsETySIAsI6dEuLT4/iI549Cxz6CubQ= github.com/intel-go/nff-go v0.0.0-20181025212503-86076d68cc4a h1:z1pdHMktxBobC29+8b4nhP5+QpImMHuoYND0cXrgpkQ= github.com/intel-go/nff-go v0.0.0-20181025212503-86076d68cc4a/go.mod h1:n+oCFN0hmbHg1l3ifQcowWg7sRcHaGpm+OWm6s8NKBk= +github.com/intel-go/nff-go v0.0.0-20181115164934-cccb9e9ee2c8 h1:4dvw2gcszp0UN4lBZOHjTv3rS0JCCqhCxhcAHI9GHOQ= +github.com/intel-go/nff-go v0.0.0-20181115164934-cccb9e9ee2c8/go.mod h1:n+oCFN0hmbHg1l3ifQcowWg7sRcHaGpm+OWm6s8NKBk= github.com/intel-go/nff-go v0.6.1 h1:C4BX9X52MtzQbEaFhT0RFl/mbKNQq5byn5/byK0Q6Vs= github.com/intel-go/nff-go v0.6.1/go.mod h1:n+oCFN0hmbHg1l3ifQcowWg7sRcHaGpm+OWm6s8NKBk= +github.com/intel-go/nff-go v0.6.2 h1:IfIV8ucmQ4eQnQuStvx44gd2PyMS6xAauFPnWKXNGFg= +github.com/intel-go/nff-go v0.6.2/go.mod h1:n+oCFN0hmbHg1l3ifQcowWg7sRcHaGpm+OWm6s8NKBk= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/smartystreets/assertions v0.0.0-20180820201707-7c9eb446e3cf/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= +github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/vishvananda/netlink v1.0.0 h1:bqNY2lgheFIu1meHUFSH3d7vG93AFyqg3oGbJCOJgSM= github.com/vishvananda/netlink v1.0.0/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc h1:R83G5ikgLMxrBvLh22JhdfI8K6YXEPHx5P03Uu3DRs4= @@ -42,6 +49,8 @@ golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTk golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180926154720-4dfa2610cdf3 h1:dgd4x4kJt7G4k4m93AYLzM8Ni6h2qLTfh9n9vXJT3/0= golang.org/x/net v0.0.0-20180926154720-4dfa2610cdf3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a h1:gOpx8G595UYyvj8UK4+OFyY4rx037g3fmfhe5SasG3U= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -49,10 +58,14 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 h1:Ve1ORMCxvRmSXBwJK+t3Oy+V2 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181004145325-8469e314837c h1:SJ7JoQNVl3mC7EWkkONgBWgCno8LcABIJwFMkWBC+EY= golang.org/x/sys v0.0.0-20181004145325-8469e314837c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8 h1:YoY1wS6JYVRpIfFngRf2HHo9R9dAne3xbkGOQ5rJXjU= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181002223833-cd09f19c2f7e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181115162256-f62bfb541538/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181115190406-fc2e60c3c3d9/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=