Skip to content

Commit 68205a8

Browse files
committed
ci: split race tests and merge coverage
Signed-off-by: Jiyong Huang <huangjy@emqx.io>
1 parent 6d77e1d commit 68205a8

File tree

4 files changed

+41
-12
lines changed

4 files changed

+41
-12
lines changed

.github/workflows/run_test_case.yaml

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,38 @@ jobs:
6363
cd extensions/functions/onnx
6464
sudo ./install.sh
6565
66+
- name: Install Merge Tool
67+
run: go install github.com/wadey/gocovmerge@latest
68+
6669
- name: Run test case
6770
run: |
6871
make failpoint-enable
69-
go test -trimpath -race -tags="edgex msgpack script parquet test rpc" --cover -covermode=atomic -coverpkg=./... -coverprofile=coverage.xml $(go list ./... | grep -v "github.com/lf-edge/ekuiper/v2/fvt")
72+
73+
# 1. Run MAIN tests (With Race)
74+
# We ADD -skip to avoid running the special tests here
75+
go test -trimpath -race -tags="edgex msgpack script parquet test rpc" \
76+
-skip "TestMsgpackService|TestExtensions|TestFuncState|TestFuncStateCheckpoint|TestStartCPUProfiling" \
77+
-cover -covermode=atomic -coverpkg=./... -coverprofile=cover_race.out \
78+
$(go list ./... | grep -v "github.com/lf-edge/ekuiper/v2/fvt")
79+
80+
# 2. Run SPECIAL tests (No Race)
81+
go test -trimpath -tags="edgex msgpack script parquet test rpc" \
82+
-run "TestMsgpackService|TestExtensions|TestFuncState|TestFuncStateCheckpoint|TestStartCPUProfiling" \
83+
-cover -covermode=atomic -coverpkg=./... -coverprofile=cover_norace.out \
84+
./internal/server ./internal/service ./internal/topo/topotest
85+
86+
# 3. Safe Merge using gocovmerge
87+
# This correctly sums up the counters for shared code
88+
$HOME/go/bin/gocovmerge cover_race.out cover_norace.out > coverage.xml
89+
90+
# 4. Calculate Total
7091
total_coverage=$(go tool cover -func=coverage.xml 2>/dev/null | grep total | awk '{print $3}')
71-
make failpoint-disable
7292
echo "Total coverage: $total_coverage"
93+
94+
# 5. Ensure failpoints disable even if tests fail
95+
- name: Cleanup Failpoints
96+
if: always() # Runs even if previous step failed
97+
run: make failpoint-disable
7398
- uses: actions/upload-artifact@v4
7499
if: failure()
75100
with:

internal/io/http/httpserver/data_server.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ type GlobalServerManager struct {
4545
websocketEndpoint map[string]*websocketEndpointContext
4646
}
4747

48-
var manager *GlobalServerManager
49-
var managerLock sync.RWMutex
48+
var (
49+
manager *GlobalServerManager
50+
managerLock syncx.RWMutex
51+
)
5052

5153
func InitGlobalServerManager(ip string, port int, tlsConf *model.TlsConf) {
5254
r := mux.NewRouter()
@@ -100,20 +102,22 @@ func ShutDown() {
100102

101103
func RegisterEndpoint(endpoint string, method string) (string, error) {
102104
managerLock.RLock()
103-
defer managerLock.RUnlock()
104-
if manager == nil {
105+
m := manager
106+
managerLock.RUnlock()
107+
if m == nil {
105108
return "", fmt.Errorf("http server is not running")
106109
}
107-
return manager.RegisterEndpoint(endpoint, method)
110+
return m.RegisterEndpoint(endpoint, method)
108111
}
109112

110113
func UnregisterEndpoint(endpoint, method string) {
111114
managerLock.RLock()
112-
defer managerLock.RUnlock()
113-
if manager == nil {
115+
m := manager
116+
managerLock.RUnlock()
117+
if m == nil {
114118
return
115119
}
116-
manager.UnregisterEndpoint(endpoint, method)
120+
m.UnregisterEndpoint(endpoint, method)
117121
}
118122

119123
const (

internal/topo/node/node_test/window_inc_agg_op_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ func TestIncAggSlidingWindowDelay(t *testing.T) {
525525
}
526526

527527
func waitExecute() {
528-
time.Sleep(100 * time.Millisecond)
528+
time.Sleep(500 * time.Millisecond)
529529
}
530530

531531
func TestIncHoppingWindow(t *testing.T) {

internal/topo/topotest/mocknode/mock_source.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ func (m *MockSource) Subscribe(ctx api.StreamContext, ingest api.TupleIngest, in
7676
m.Lock()
7777
m.offset = i + 1
7878
m.Unlock()
79-
ingest(ctx, map[string]any(d.Message), map[string]any{"topic": "mock"}, timex.GetNow())
8079
log.Debugf("%d: mock source %s is sending data %d:%v", timex.GetNowInMilli(), ctx.GetOpId(), i, d)
80+
ingest(ctx, map[string]any(d.Message), map[string]any{"topic": "mock"}, timex.GetNow())
8181
case <-ctx.Done():
8282
log.Debugf("mock source open DONE")
8383
return nil

0 commit comments

Comments
 (0)