Skip to content

Commit f422612

Browse files
Merge branch 'master' into acl-fc
2 parents 94f1ee7 + e14a071 commit f422612

File tree

103 files changed

+9018
-2574
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+9018
-2574
lines changed

.azure-pipelines/build-template.yml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ parameters:
2626

2727
- name: buildimage_pipeline
2828
type: number
29-
default: 1
3029

3130
- name: sairedis_artifact_name
3231
type: string
@@ -41,6 +40,10 @@ parameters:
4140
type: boolean
4241
default: false
4342

43+
- name: archive_gcov
44+
type: boolean
45+
default: false
46+
4447
jobs:
4548
- job:
4649
displayName: ${{ parameters.arch }}
@@ -56,6 +59,9 @@ jobs:
5659
image: sonicdev-microsoft.azurecr.io:443/${{ parameters.sonic_slave }}:latest
5760

5861
steps:
62+
- checkout: self
63+
clean: true
64+
submodules: true
5965
- script: |
6066
sudo apt-get install -y libhiredis0.14 libhiredis-dev
6167
sudo apt-get install -y libzmq5 libzmq3-dev
@@ -75,6 +81,7 @@ jobs:
7581
artifact: ${{ parameters.swss_common_artifact_name }}
7682
runVersion: 'latestFromBranch'
7783
runBranch: 'refs/heads/master'
84+
path: '$(Build.SourcesDirectory)/${{ parameters.swss_common_artifact_name }}'
7885
displayName: "Download sonic swss common deb packages"
7986
- task: DownloadPipelineArtifact@2
8087
inputs:
@@ -84,6 +91,7 @@ jobs:
8491
artifact: ${{ parameters.sairedis_artifact_name }}
8592
runVersion: 'latestFromBranch'
8693
runBranch: 'refs/heads/master'
94+
path: '$(Build.SourcesDirectory)/${{ parameters.sairedis_artifact_name }}'
8795
displayName: "Download sonic sairedis deb packages"
8896
- task: DownloadPipelineArtifact@2
8997
inputs:
@@ -93,8 +101,10 @@ jobs:
93101
artifact: ${{ parameters.buildimage_artifact_name }}
94102
runVersion: 'latestFromBranch'
95103
runBranch: 'refs/heads/master'
104+
path: '$(Build.SourcesDirectory)/${{ parameters.buildimage_artifact_name }}'
96105
displayName: "Download sonic buildimage deb packages"
97106
- script: |
107+
cd $(Build.SourcesDirectory)/${{ parameters.buildimage_artifact_name }}
98108
sudo dpkg -i target/debs/buster/libnl-3-200_*.deb
99109
sudo dpkg -i target/debs/buster/libnl-3-dev_*.deb
100110
sudo dpkg -i target/debs/buster/libnl-genl-3-200_*.deb
@@ -103,8 +113,10 @@ jobs:
103113
sudo dpkg -i target/debs/buster/libnl-route-3-dev_*.deb
104114
sudo dpkg -i target/debs/buster/libnl-nf-3-200_*.deb
105115
sudo dpkg -i target/debs/buster/libnl-nf-3-dev_*.deb
116+
cd $(Build.SourcesDirectory)/${{ parameters.swss_common_artifact_name }}
106117
sudo dpkg -i libswsscommon_1.0.0_${{ parameters.arch }}.deb
107118
sudo dpkg -i libswsscommon-dev_1.0.0_${{ parameters.arch }}.deb
119+
cd $(Build.SourcesDirectory)/${{ parameters.sairedis_artifact_name }}
108120
sudo dpkg -i libsaivs_*.deb
109121
sudo dpkg -i libsaivs-dev_*.deb
110122
sudo dpkg -i libsairedis_*.deb
@@ -114,12 +126,13 @@ jobs:
114126
sudo dpkg -i syncd-vs_*.deb
115127
workingDirectory: $(Pipeline.Workspace)
116128
displayName: "Install libnl3, sonic swss common and sairedis"
117-
- checkout: self
118-
submodules: true
119129
- script: |
120130
set -x
121131
tar czf pytest.tgz tests
122132
cp -r pytest.tgz $(Build.ArtifactStagingDirectory)/
133+
if [ '${{ parameters.archive_gcov }}' == True ]; then
134+
export ENABLE_GCOV=y
135+
fi
123136
./autogen.sh
124137
dpkg-buildpackage -us -uc -b -j$(nproc) && cp ../*.deb .
125138
displayName: "Compile sonic swss"

.azure-pipelines/build_and_install_module.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ function build_and_install_kmodule()
5050
echo CONFIG_MACSEC=m >> .config
5151
echo CONFIG_NET_VENDOR_MICROSOFT=y >> .config
5252
echo CONFIG_MICROSOFT_MANA=m >> .config
53+
echo CONFIG_SYSTEM_REVOCATION_LIST=n >> .config
5354
make VERSION=$VERSION PATCHLEVEL=$PATCHLEVEL SUBLEVEL=$SUBLEVEL EXTRAVERSION=-${EXTRAVERSION} LOCALVERSION=-${LOCALVERSION} modules_prepare
5455
make M=drivers/net/team
5556
mv drivers/net/Makefile drivers/net/Makefile.bak

.azure-pipelines/docker-sonic-vs/Dockerfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,7 @@ RUN dpkg -i /debs/syncd-vs_1.0.0_amd64.deb
2424

2525
RUN dpkg --purge swss
2626
RUN dpkg -i /debs/swss_1.0.0_amd64.deb
27+
28+
RUN apt-get update
29+
30+
RUN apt-get -y install lcov

.azure-pipelines/gcov.yml

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
parameters:
2+
- name: arch
3+
type: string
4+
values:
5+
- amd64
6+
default: amd64
7+
8+
- name: pool
9+
type: string
10+
values:
11+
- sonicbld
12+
- default
13+
default: default
14+
15+
- name: timeout
16+
type: number
17+
default: 180
18+
19+
- name: sonic_slave
20+
type: string
21+
22+
- name: sairedis_artifact_name
23+
type: string
24+
25+
- name: swss_common_artifact_name
26+
type: string
27+
28+
- name: swss_artifact_name
29+
type: string
30+
31+
- name: artifact_name
32+
type: string
33+
34+
- name: archive_gcov
35+
type: boolean
36+
default: false
37+
38+
jobs:
39+
- job:
40+
displayName: ${{ parameters.arch }}
41+
timeoutInMinutes: ${{ parameters.timeout }}
42+
43+
pool:
44+
${{ if ne(parameters.pool, 'default') }}:
45+
name: ${{ parameters.pool }}
46+
${{ if eq(parameters.pool, 'default') }}:
47+
vmImage: 'ubuntu-20.04'
48+
49+
container:
50+
image: sonicdev-microsoft.azurecr.io:443/${{ parameters.sonic_slave }}:latest
51+
52+
53+
steps:
54+
- script: |
55+
sudo apt-get install -y lcov
56+
displayName: "Install dependencies"
57+
condition: eq('${{ parameters.archive_gcov }}', true)
58+
- task: DownloadPipelineArtifact@2
59+
inputs:
60+
artifact: ${{ parameters.artifact_name }}
61+
displayName: "Download gcov artifact"
62+
condition: eq('${{ parameters.archive_gcov }}', true)
63+
- script: |
64+
set -x
65+
ls -lh
66+
sudo tar -zxvf sonic-gcov.tar.gz
67+
sudo cp -rf sonic-gcov $(Build.ArtifactStagingDirectory)
68+
sudo rm sonic-gcov.tar.gz
69+
ls -lh
70+
workingDirectory: $(Pipeline.Workspace)
71+
displayName: "store sonic-gcov"
72+
condition: eq('${{ parameters.archive_gcov }}', true)
73+
- checkout: self
74+
submodules: true
75+
condition: eq('${{ parameters.archive_gcov }}', true)
76+
- script: |
77+
set -x
78+
wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
79+
sudo dpkg -i packages-microsoft-prod.deb
80+
sudo apt-get update
81+
sudo apt-get install -y dotnet-sdk-5.0
82+
pushd ./s/
83+
sudo tar -zcvf swss.tar.gz ./*
84+
ls -lh ./*
85+
cp ./gcovpreload/lcov_cobertura.py $(Build.ArtifactStagingDirectory)/
86+
cp ./tests/gcov_support.sh $(Build.ArtifactStagingDirectory)/sonic-gcov
87+
sudo cp -rf swss.tar.gz $(Build.ArtifactStagingDirectory)/sonic-gcov
88+
popd
89+
sudo cp -rf $(Build.ArtifactStagingDirectory)/sonic-gcov ./
90+
pushd sonic-gcov
91+
ls -lh ./*
92+
sudo chmod +x ./gcov_support.sh
93+
sudo ./gcov_support.sh generate
94+
sudo ./gcov_support.sh merge_container_info $(Build.ArtifactStagingDirectory)
95+
sudo cp -rf gcov_output $(Build.ArtifactStagingDirectory)
96+
ls -lh $(Build.ArtifactStagingDirectory)
97+
popd
98+
workingDirectory: $(Pipeline.Workspace)
99+
displayName: "generate gcov reports"
100+
condition: eq('${{ parameters.archive_gcov }}', true)
101+
102+
- publish: $(Build.ArtifactStagingDirectory)/gcov_output
103+
artifact: gcov_info
104+
displayName: "Archive gcov info"
105+
condition: eq('${{ parameters.archive_gcov }}', true)
106+
107+
- task: PublishCodeCoverageResults@1
108+
inputs:
109+
codeCoverageTool: Cobertura
110+
summaryFileLocation: '$(Build.ArtifactStagingDirectory)/gcov_output/AllMergeReport/coverage.xml'
111+
reportDirectory: '$(Build.ArtifactStagingDirectory)/gcov_output/AllMergeReport/'
112+
displayName: 'Publish c c++ test coverage'
113+
condition: eq('${{ parameters.archive_gcov }}', true)
114+

.azure-pipelines/test-docker-sonic-vs-template.yml

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
11
parameters:
22
- name: timeout
33
type: number
4-
default: 180
4+
default: 240
55

66
- name: log_artifact_name
77
type: string
88

9+
- name: gcov_artifact_name
10+
type: string
11+
12+
- name: sonic_slave
13+
type: string
14+
15+
- name: archive_gcov
16+
type: boolean
17+
default: false
18+
919
jobs:
1020
- job:
1121
displayName: vstest
@@ -53,7 +63,12 @@ jobs:
5363
sudo /sbin/ip link add Vrf1 type vrf table 1001 || { echo 'vrf command failed' ; exit 1; }
5464
sudo /sbin/ip link del Vrf1 type vrf table 1001
5565
pushd tests
56-
sudo py.test -v --force-flaky --junitxml=tr.xml --imgname=docker-sonic-vs:$(Build.DefinitionName).$(Build.BuildNumber)
66+
67+
if [ '${{ parameters.archive_gcov }}' == True ]; then
68+
sudo py.test -v --force-flaky --junitxml=tr.xml --keeptb --imgname=docker-sonic-vs:$(Build.DefinitionName).$(Build.BuildNumber)
69+
else
70+
sudo py.test -v --force-flaky --junitxml=tr.xml --imgname=docker-sonic-vs:$(Build.DefinitionName).$(Build.BuildNumber)
71+
fi
5772
displayName: "Run vs tests"
5873
5974
- task: PublishTestResults@2
@@ -64,9 +79,21 @@ jobs:
6479

6580
- script: |
6681
cp -r tests/log $(Build.ArtifactStagingDirectory)/
82+
83+
if [ '${{ parameters.archive_gcov }}' == True ]; then
84+
sudo apt-get install -y lcov
85+
./tests/gcov_support.sh set_environment $(Build.ArtifactStagingDirectory)
86+
docker stop $(docker ps -q -a)
87+
docker rm $(docker ps -q -a)
88+
fi
6789
displayName: "Collect logs"
6890
condition: always()
6991
92+
- publish: $(Build.ArtifactStagingDirectory)/gcov_tmp
93+
artifact: ${{ parameters.gcov_artifact_name }}
94+
displayName: "Publish gcov output"
95+
condition: eq('${{ parameters.archive_gcov }}', true)
96+
7097
- publish: $(Build.ArtifactStagingDirectory)/
7198
artifact: ${{ parameters.log_artifact_name }}@$(System.JobAttempt)
7299
displayName: "Publish logs"

Makefile.am

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
SUBDIRS = fpmsyncd neighsyncd fdbsyncd portsyncd mclagsyncd natsyncd orchagent swssconfig cfgmgr tests gearsyncd
1+
if GCOV_ENABLED
2+
SUBDIRS = gcovpreload fpmsyncd neighsyncd portsyncd mclagsyncd natsyncd fdbsyncd orchagent swssconfig cfgmgr tests gearsyncd
3+
else
4+
SUBDIRS = fpmsyncd neighsyncd portsyncd mclagsyncd natsyncd fdbsyncd orchagent swssconfig cfgmgr tests gearsyncd
5+
endif
6+
27

38
if HAVE_LIBTEAM
49
SUBDIRS += teamsyncd tlm_teamd

azure-pipelines.yml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@ stages:
1717
arch: amd64
1818
sonic_slave: sonic-slave-buster
1919
buildimage_artifact_name: sonic-buildimage.vs
20-
buildimage_pipeline: 1
20+
buildimage_pipeline: 142
2121
swss_common_artifact_name: sonic-swss-common
2222
sairedis_artifact_name: sonic-sairedis
2323
artifact_name: sonic-swss
2424
archive_pytests: true
25+
archive_gcov: true
2526

2627
- stage: BuildArm
2728
dependsOn: Build
@@ -38,6 +39,7 @@ stages:
3839
swss_common_artifact_name: sonic-swss-common.armhf
3940
sairedis_artifact_name: sonic-sairedis.armhf
4041
artifact_name: sonic-swss.armhf
42+
archive_gcov: false
4143

4244
- template: .azure-pipelines/build-template.yml
4345
parameters:
@@ -50,6 +52,7 @@ stages:
5052
buildimage_pipeline: 140
5153
sairedis_artifact_name: sonic-sairedis.arm64
5254
artifact_name: sonic-swss.arm64
55+
archive_gcov: false
5356

5457
- stage: BuildDocker
5558
dependsOn: Build
@@ -69,3 +72,20 @@ stages:
6972
- template: .azure-pipelines/test-docker-sonic-vs-template.yml
7073
parameters:
7174
log_artifact_name: log
75+
gcov_artifact_name: sonic-gcov
76+
sonic_slave: sonic-slave-buster
77+
archive_gcov: true
78+
79+
- stage: Gcov
80+
dependsOn: Test
81+
condition: always()
82+
jobs:
83+
- template: .azure-pipelines/gcov.yml
84+
parameters:
85+
arch: amd64
86+
sonic_slave: sonic-slave-buster
87+
swss_common_artifact_name: sonic-swss-common
88+
sairedis_artifact_name: sonic-sairedis
89+
swss_artifact_name: sonic-swss
90+
artifact_name: sonic-gcov
91+
archive_gcov: true

cfgmgr/Makefile.am

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,20 @@ macsecmgrd_SOURCES = macsecmgrd.cpp macsecmgr.cpp $(top_srcdir)/orchagent/orch.c
8787
macsecmgrd_CFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI)
8888
macsecmgrd_CPPFLAGS = $(DBGFLAGS) $(AM_CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_SAI)
8989
macsecmgrd_LDADD = $(COMMON_LIBS) $(SAIMETA_LIBS)
90+
91+
if GCOV_ENABLED
92+
vlanmgrd_LDADD += -lgcovpreload
93+
teammgrd_LDADD += -lgcovpreload
94+
portmgrd_LDADD += -lgcovpreload
95+
intfmgrd_LDADD+= -lgcovpreload
96+
buffermgrd_LDADD += -lgcovpreload
97+
vrfmgrd_LDADD += -lgcovpreload
98+
nbrmgrd_LDADD += -lgcovpreload
99+
vxlanmgrd_LDADD += -lgcovpreload
100+
sflowmgrd_LDADD += -lgcovpreload
101+
natmgrd_LDADD += -lgcovpreload
102+
coppmgrd_LDADD += -lgcovpreload
103+
tunnelmgrd_LDADD += -lgcovpreload
104+
macsecmgrd_LDADD += -lgcovpreload
105+
endif
106+

0 commit comments

Comments
 (0)