feat: upload audio, get a private Swedish transcript, discuss it (#33, ADR-033) #39
@@ -164,3 +164,43 @@ func TestEnsemble_AModelThatIsDownGivesTheBaseTextUnreconciledNotAFailedJob(t *t
|
|||||||
assert.Equal(t, domain.ReconcileSkipped, got.Reconciliation.Status)
|
assert.Equal(t, domain.ReconcileSkipped, got.Reconciliation.Status)
|
||||||
assert.Equal(t, 3, adj.calls)
|
assert.Equal(t, 3, adj.calls)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// cancelling is a backend that cancels the job's context while it runs, the way a
|
||||||
|
// shutdown arrives in the middle of a long transcription.
|
||||||
|
type cancelling struct {
|
||||||
|
name string
|
||||||
|
cancel context.CancelFunc
|
||||||
|
calls *[]string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *cancelling) Name() string { return c.name }
|
||||||
|
func (c *cancelling) Transcribe(_ context.Context, _ string) (domain.Transcription, error) {
|
||||||
|
*c.calls = append(*c.calls, c.name)
|
||||||
|
c.cancel()
|
||||||
|
return domain.Transcription{}, context.Canceled
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEnsemble_AShutdownDuringTheFirstEngineStopsBeforeTheSecondOrTheCloud(t *testing.T) {
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
calls := &[]string{}
|
||||||
|
base := &cancelling{name: "iguana/pianissimo", cancel: cancel, calls: calls}
|
||||||
|
alt := &orderedBackend{name: "iguana/kb-whisper", text: "alt", calls: calls}
|
||||||
|
fb := &orderedBackend{name: "berget/kb-whisper", text: "fb", calls: calls}
|
||||||
|
|
||||||
|
_, err := transcribe.NewEnsemble(base, alt, fb, &verdictAdj{}, ensembleOpts).Transcribe(ctx, "/a.wav")
|
||||||
|
|
||||||
|
assert.ErrorIs(t, err, context.Canceled)
|
||||||
|
assert.Equal(t, []string{"iguana/pianissimo"}, *calls, "no second engine and no cloud once the job is cancelled")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEnsemble_AShutdownDuringTheSecondEngineIsAnErrorNotASingleEngineSuccess(t *testing.T) {
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
calls := &[]string{}
|
||||||
|
base := &orderedBackend{name: "iguana/pianissimo", text: "base", calls: calls}
|
||||||
|
alt := &cancelling{name: "iguana/kb-whisper", cancel: cancel, calls: calls}
|
||||||
|
|
||||||
|
got, err := transcribe.NewEnsemble(base, alt, nil, &verdictAdj{}, ensembleOpts).Transcribe(ctx, "/a.wav")
|
||||||
|
|
||||||
|
assert.ErrorIs(t, err, context.Canceled, "a cancelled job must not be recorded as 'kb-whisper failed'")
|
||||||
|
assert.Empty(t, got.Text)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user