mirror of
https://github.com/openlibrecommunity/olcrtc.git
synced 2026-05-26 07:08:11 +00:00
test(e2e): mark sei transport on jitsi as unstable
This commit is contained in:
@@ -97,6 +97,13 @@ type realE2EExpectation int
|
||||
const (
|
||||
realE2EExpectFail realE2EExpectation = iota
|
||||
realE2EExpectPass
|
||||
// realE2EExpectUnstable marks a carrier×transport combo that is
|
||||
// known to flap: it sometimes succeeds and sometimes fails for
|
||||
// reasons outside our control (third-party server load, lossy SFU
|
||||
// paths, etc.). The matrix runner records the outcome but does
|
||||
// not fail the test either way. Use this sparingly — prefer
|
||||
// ExpectPass / ExpectFail when the behaviour is deterministic.
|
||||
realE2EExpectUnstable
|
||||
)
|
||||
|
||||
type memorySession struct {
|
||||
@@ -375,6 +382,19 @@ func realE2ECaseExpectation(carrierName, transportName string) realE2EExpectatio
|
||||
// datachannel transport (raw bytes broadcast through
|
||||
// EndpointMessage). Video transports go through pion's
|
||||
// PeerConnection negotiated via Jingle session-accept.
|
||||
//
|
||||
// seichannel is marked Unstable: SEI NAL data piggybacks on
|
||||
// the H.264 video stream, and Jicofo's bandwidth allocator
|
||||
// for self-hosted Jitsi instances (e.g. meet.cryptopro.ru)
|
||||
// periodically suppresses the video upstream when there's
|
||||
// no obvious viewer demand, which manifests as recurring
|
||||
// "seichannel ack timeout" against an otherwise healthy
|
||||
// PeerConnection. The transport works in steady state but
|
||||
// is not deterministic enough to gate CI on; flag it but
|
||||
// don't fail the suite when it flaps.
|
||||
if transportName == transportSEI {
|
||||
return realE2EExpectUnstable
|
||||
}
|
||||
return realE2EExpectPass
|
||||
default:
|
||||
return realE2EExpectPass
|
||||
@@ -385,8 +405,10 @@ func realE2EExpectationLabel(expectation realE2EExpectation) string {
|
||||
switch expectation {
|
||||
case realE2EExpectPass:
|
||||
return "SUCCESS"
|
||||
case realE2EExpectFail:
|
||||
case realE2EExpectFail:
|
||||
return "EXPECTED FAIL"
|
||||
case realE2EExpectUnstable:
|
||||
return "UNSTABLE"
|
||||
default:
|
||||
return "UNKNOWN"
|
||||
}
|
||||
@@ -460,10 +482,10 @@ func TestRealE2ECaseExpectation(t *testing.T) {
|
||||
want: realE2EExpectPass,
|
||||
},
|
||||
{
|
||||
name: "jitsi seichannel is expected to pass",
|
||||
name: "jitsi seichannel is unstable",
|
||||
carrier: "jitsi",
|
||||
transport: transportSEI,
|
||||
want: realE2EExpectPass,
|
||||
want: realE2EExpectUnstable,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1027,6 +1049,16 @@ func TestRealProviderTransportMatrix(t *testing.T) {
|
||||
t.Fatalf("EXPECTED SUCCESS %s/%s failed: %v", carrierName, transportName, err)
|
||||
case err != nil && expectation == realE2EExpectFail:
|
||||
t.Logf("%s %s/%s: %v", label, carrierName, transportName, err)
|
||||
case expectation == realE2EExpectUnstable:
|
||||
// Unstable combos record the outcome but
|
||||
// never fail the suite; they exist to keep
|
||||
// the matrix honest when a transport flaps
|
||||
// against a particular carrier.
|
||||
if err == nil {
|
||||
t.Logf("%s PASS %s/%s", label, carrierName, transportName)
|
||||
} else {
|
||||
t.Logf("%s FAIL %s/%s: %v", label, carrierName, transportName, err)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user