snapshot of https://github.com/pion/webrtc.git (main, 2026-09-15; blobs > 131072B omitted)
Some checks failed
REUSE Compliance Check / lint (push) Failing after 0s
Browser E2E / Test (push) Failing after 3s
Test / test (1.24) (push) Failing after 0s
Test / test-i386 (1.25) (push) Failing after 0s
Test / test-i386 (1.24) (push) Failing after 0s
Test / test-windows (1.25) (push) Failing after 0s
Test / test-windows (1.24) (push) Failing after 0s
Test / test (1.25) (push) Failing after 0s
Examples Tests / Test (push) Failing after 3s
Test / test-macos (1.25) (push) Failing after 0s
Test / test-macos (1.24) (push) Failing after 0s
Go mod tidy / tidy (push) Failing after 0s
Test / test-wasm (push) Failing after 0s
CodeQL / analyze (push) Failing after 1s
Fuzz / fuzz (push) Failing after 0s
Some checks failed
REUSE Compliance Check / lint (push) Failing after 0s
Browser E2E / Test (push) Failing after 3s
Test / test (1.24) (push) Failing after 0s
Test / test-i386 (1.25) (push) Failing after 0s
Test / test-i386 (1.24) (push) Failing after 0s
Test / test-windows (1.25) (push) Failing after 0s
Test / test-windows (1.24) (push) Failing after 0s
Test / test (1.25) (push) Failing after 0s
Examples Tests / Test (push) Failing after 3s
Test / test-macos (1.25) (push) Failing after 0s
Test / test-macos (1.24) (push) Failing after 0s
Go mod tidy / tidy (push) Failing after 0s
Test / test-wasm (push) Failing after 0s
CodeQL / analyze (push) Failing after 1s
Fuzz / fuzz (push) Failing after 0s
This commit is contained in:
83
operations_test.go
Normal file
83
operations_test.go
Normal file
@@ -0,0 +1,83 @@
|
||||
// SPDX-FileCopyrightText: 2026 The Pion community <https://pion.ly>
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package webrtc
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestOperations_Enqueue(t *testing.T) {
|
||||
updateNegotiationNeededFlagOnEmptyChain := &atomic.Bool{}
|
||||
onNegotiationNeededCalledCount := 0
|
||||
var onNegotiationNeededCalledCountMu sync.Mutex
|
||||
ops := newOperations(updateNegotiationNeededFlagOnEmptyChain, func() {
|
||||
onNegotiationNeededCalledCountMu.Lock()
|
||||
onNegotiationNeededCalledCount++
|
||||
onNegotiationNeededCalledCountMu.Unlock()
|
||||
})
|
||||
defer ops.GracefulClose()
|
||||
|
||||
for resultSet := range 100 {
|
||||
results := make([]int, 16)
|
||||
resultSetCopy := resultSet
|
||||
for i := range results {
|
||||
func(j int) {
|
||||
ops.Enqueue(func() {
|
||||
results[j] = j * j
|
||||
if resultSetCopy > 50 {
|
||||
updateNegotiationNeededFlagOnEmptyChain.Store(true)
|
||||
}
|
||||
})
|
||||
}(i)
|
||||
}
|
||||
|
||||
ops.Done()
|
||||
expected := []int{0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225}
|
||||
assert.Equal(t, len(expected), len(results))
|
||||
assert.Equal(t, expected, results)
|
||||
}
|
||||
onNegotiationNeededCalledCountMu.Lock()
|
||||
defer onNegotiationNeededCalledCountMu.Unlock()
|
||||
assert.NotEqual(t, onNegotiationNeededCalledCount, 0)
|
||||
}
|
||||
|
||||
func TestOperations_Done(*testing.T) {
|
||||
ops := newOperations(&atomic.Bool{}, func() {
|
||||
})
|
||||
defer ops.GracefulClose()
|
||||
ops.Done()
|
||||
}
|
||||
|
||||
func TestOperations_GracefulClose(t *testing.T) {
|
||||
ops := newOperations(&atomic.Bool{}, func() {
|
||||
})
|
||||
|
||||
counter := 0
|
||||
var counterMu sync.Mutex
|
||||
incFunc := func() {
|
||||
counterMu.Lock()
|
||||
counter++
|
||||
counterMu.Unlock()
|
||||
}
|
||||
const times = 25
|
||||
for range times {
|
||||
ops.Enqueue(incFunc)
|
||||
}
|
||||
ops.Done()
|
||||
counterMu.Lock()
|
||||
counterCur := counter
|
||||
counterMu.Unlock()
|
||||
assert.Equal(t, counterCur, times)
|
||||
|
||||
ops.GracefulClose()
|
||||
for range times {
|
||||
ops.Enqueue(incFunc)
|
||||
}
|
||||
ops.Done()
|
||||
assert.Equal(t, counterCur, times)
|
||||
}
|
||||
Reference in New Issue
Block a user