mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-12-24 11:51:13 +08:00
feat: add ut coverage (#192)
This commit is contained in:
79
.github/workflows/coverage.yml
vendored
Normal file
79
.github/workflows/coverage.yml
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
name: Coverage
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
macos:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: '1.20'
|
||||
check-latest: true
|
||||
- name: Set up Docker
|
||||
uses: crazy-max/ghaction-setup-docker@v3
|
||||
|
||||
- name: Install minikube
|
||||
run: |
|
||||
set -x
|
||||
docker version
|
||||
brew install minikube
|
||||
minikube start --driver=docker
|
||||
kubectl get pod -A -o wide
|
||||
minikube kubectl -- get pod -A -o wide
|
||||
|
||||
- name: Kubernetes info
|
||||
run: |
|
||||
kubectl cluster-info
|
||||
cat ~/.kube/config
|
||||
kubectl get pods -n kube-system -o wide
|
||||
|
||||
- name: Install demo bookinfo
|
||||
run: |
|
||||
minikube image load --remote istio/examples-bookinfo-details-v1:1.16.2
|
||||
minikube image load --remote istio/examples-bookinfo-ratings-v1:1.16.2
|
||||
minikube image load --remote istio/examples-bookinfo-reviews-v1:1.16.2
|
||||
minikube image load --remote istio/examples-bookinfo-productpage-v1:1.16.2
|
||||
minikube image load --remote naison/authors:latest
|
||||
minikube image load --remote nginx:latest
|
||||
minikube image load --remote naison/kubevpn:test
|
||||
minikube image ls
|
||||
eval $(minikube docker-env)
|
||||
kubectl apply -f https://raw.githubusercontent.com/kubenetworks/kubevpn/master/samples/bookinfo.yaml
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
export VERSION=test
|
||||
make kubevpn-darwin-amd64
|
||||
chmod +x ./bin/kubevpn
|
||||
cp ./bin/kubevpn /usr/local/bin/kubevpn
|
||||
kubevpn version
|
||||
|
||||
- name: Wait for pods reviews to be ready
|
||||
run: |
|
||||
kubectl wait pods -l app=reviews --for=condition=Ready --timeout=3600s
|
||||
kubectl wait pods -l app=productpage --for=condition=Ready --timeout=3600s
|
||||
kubectl get svc -A -o wide || true
|
||||
kubectl get pod -A -o wide || true
|
||||
kubectl get all -o wide || true
|
||||
kubectl get nodes -o yaml || true
|
||||
ifconfig
|
||||
netstat -anr
|
||||
|
||||
- name: Test
|
||||
run: make ut
|
||||
|
||||
- name: Upload coverage reports to Codecov
|
||||
uses: codecov/codecov-action@0cfda1dd0a4ad9efc75517f399d859cd1ea4ced1 # v4.0.2
|
||||
env:
|
||||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
||||
with:
|
||||
verbose: true
|
||||
slug: wencaiwulue/kubevpn
|
||||
16
.github/workflows/test.yml
vendored
16
.github/workflows/test.yml
vendored
@@ -79,7 +79,7 @@ jobs:
|
||||
sudo ln /usr/bin/resolvectl /usr/bin/systemd-resolve
|
||||
|
||||
- name: Test
|
||||
run: go test -v -failfast ./... -timeout=60m
|
||||
run: make ut
|
||||
|
||||
macos:
|
||||
runs-on: macos-latest
|
||||
@@ -143,7 +143,7 @@ jobs:
|
||||
netstat -anr
|
||||
|
||||
- name: Test
|
||||
run: go test -v -failfast ./... -timeout=60m
|
||||
run: make ut
|
||||
|
||||
windows:
|
||||
runs-on: windows-latest
|
||||
@@ -166,14 +166,4 @@ jobs:
|
||||
choco install make
|
||||
|
||||
- name: Build
|
||||
run: make kubevpn-windows-amd64
|
||||
|
||||
upload-coverage-reports-to-codecov:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ always() }}
|
||||
needs: [ "linux", "macos", "windows" ]
|
||||
steps:
|
||||
- name: Upload coverage reports to Codecov
|
||||
uses: codecov/codecov-action@v3
|
||||
env:
|
||||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
||||
run: make kubevpn-windows-amd64
|
||||
8
Makefile
8
Makefile
@@ -102,3 +102,11 @@ version:
|
||||
.PHONY: gen
|
||||
gen:
|
||||
go generate ./...
|
||||
|
||||
.PHONY: ut
|
||||
ut:
|
||||
go test -coverprofile=coverage.txt -coverpkg=./... -v ./... -timeout=60m
|
||||
|
||||
.PHONY: cover
|
||||
cover: ut
|
||||
go tool cover -html=coverage.txt
|
||||
@@ -7,7 +7,6 @@ import (
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@@ -16,7 +15,11 @@ import (
|
||||
)
|
||||
|
||||
func TestHttpOverUnix(t *testing.T) {
|
||||
file := filepath.Join(os.TempDir(), "kubevpn.socks")
|
||||
temp, err2 := os.CreateTemp("", "kubevpn.socks")
|
||||
if err2 != nil {
|
||||
t.Fatal(err2)
|
||||
}
|
||||
os.Remove(temp.Name())
|
||||
client := http.Client{
|
||||
Transport: &http.Transport{
|
||||
Proxy: http.ProxyFromEnvironment,
|
||||
@@ -25,13 +28,13 @@ func TestHttpOverUnix(t *testing.T) {
|
||||
var d net.Dialer
|
||||
d.Timeout = 30 * time.Second
|
||||
d.KeepAlive = 30 * time.Second
|
||||
return d.DialContext(ctx, "unix", file)
|
||||
return d.DialContext(ctx, "unix", temp.Name())
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
go func() {
|
||||
listener, err := net.Listen("unix", file)
|
||||
listener, err := net.Listen("unix", temp.Name())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user