@@ -14,6 +14,8 @@ export GOBIN := $(abspath $(BUILD_DIR))
1414export PATH := $(PATH ) :$(GOBIN ) :$(shell dirname $(GO ) )
1515export CGO_LDFLAGS := -lswsscommon -lhiredis
1616export CGO_CXXFLAGS := -I/usr/include/swss -w -Wall -fpermissive
17+ export MEMCHECK_CGO_LDFLAGS := $(CGO_LDFLAGS ) -fsanitize=address
18+ export MEMCHECK_CGO_CXXFLAGS := $(CGO_CXXFLAGS ) -fsanitize=leak
1719
1820ifeq ($(ENABLE_TRANSLIB_WRITE ) ,y)
1921BLD_TAGS := gnmi_translib_write
@@ -26,6 +28,11 @@ ifneq ($(BLD_TAGS),)
2628BLD_FLAGS := -tags "$(strip $(BLD_TAGS ) ) "
2729endif
2830
31+ MEMCHECK_TAGS := $(BLD_TAGS ) gnmi_memcheck
32+ ifneq ($(MEMCHECK_TAGS ) ,)
33+ MEMCHECK_FLAGS := -tags "$(strip $(MEMCHECK_TAGS ) ) "
34+ endif
35+
2936ENABLE_DIALOUT_VALUE := 1
3037ifeq ($(ENABLE_DIALOUT ) ,n)
3138ENABLE_DIALOUT_VALUE = 0
@@ -133,6 +140,13 @@ endif
133140 gocov convert coverage-*.txt | gocov-xml -source $(shell pwd) > coverage.xml
134141 rm -rf coverage-*.txt
135142
143+ check_memleak : $(DBCONFG ) $(ENVFILE )
144+ sudo CGO_LDFLAGS=" $( MEMCHECK_CGO_LDFLAGS) " CGO_CXXFLAGS=" $( MEMCHECK_CGO_CXXFLAGS) " $(GO ) test -mod=vendor $(MEMCHECK_FLAGS ) -v github.com/sonic-net/sonic-gnmi/telemetry
145+ sudo CGO_LDFLAGS=" $( MEMCHECK_CGO_LDFLAGS) " CGO_CXXFLAGS=" $( MEMCHECK_CGO_CXXFLAGS) " $(GO ) test $(MEMCHECK_FLAGS ) -v github.com/sonic-net/sonic-gnmi/sonic_db_config
146+ sudo CGO_LDFLAGS=" $( MEMCHECK_CGO_LDFLAGS) " CGO_CXXFLAGS=" $( MEMCHECK_CGO_CXXFLAGS) " $(GO ) test -mod=vendor $(MEMCHECK_FLAGS ) -v github.com/sonic-net/sonic-gnmi/gnmi_server -run TestGNMINative
147+ sudo CGO_LDFLAGS=" $( MEMCHECK_CGO_LDFLAGS) " CGO_CXXFLAGS=" $( MEMCHECK_CGO_CXXFLAGS) " $(GO ) test -mod=vendor $(MEMCHECK_FLAGS ) -v github.com/sonic-net/sonic-gnmi/sonic_data_client
148+
149+
136150clean :
137151 $(RM ) -r build
138152 $(RM ) -r vendor
0 commit comments