

























@@ -115,6 +115,11 @@ type RunnerStub = {
115115isRunning: () => boolean;
116116};
117117118+const withLegacyPolling = (opts: MonitorTelegramOpts): MonitorTelegramOpts => ({
119+ ...opts,
120+isolatedIngress: { enabled: false, ...opts.isolatedIngress },
121+});
122+118123const makeRunnerStub = (overrides: Partial<RunnerStub> = {}): RunnerStub => ({
119124task: overrides.task ?? (() => Promise.resolve()),
120125stop: overrides.stop ?? vi.fn<() => void | Promise<void>>(),
@@ -197,7 +202,7 @@ async function expectOffsetConfirmationSkipped(offset: number | null) {
197202api.deleteWebhook.mockResolvedValueOnce(true);
198203mockRunOnceAndAbort(abort);
199204200-await monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
205+await monitorTelegramProvider(withLegacyPolling({ token: "tok", abortSignal: abort.signal }));
201206202207expect(api.getUpdates).not.toHaveBeenCalled();
203208}
@@ -225,7 +230,7 @@ async function runMonitorAndCaptureStartupOrder(params?: { persistedOffset?: num
225230return makeAbortRunner(abort);
226231});
227232228-await monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
233+await monitorTelegramProvider(withLegacyPolling({ token: "tok", abortSignal: abort.signal }));
229234return { order };
230235}
231236@@ -305,6 +310,7 @@ async function monitorWithAutoAbort(opts: Omit<MonitorTelegramOpts, "abortSignal
305310token: "tok",
306311 ...opts,
307312abortSignal: abort.signal,
313+isolatedIngress: { enabled: false, ...opts.isolatedIngress },
308314});
309315}
310316@@ -496,7 +502,7 @@ describe("monitorTelegramProvider (grammY)", () => {
496502)
497503.mockImplementationOnce(() => makeAbortRunner(abort));
498504499-await monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
505+await monitorTelegramProvider(withLegacyPolling({ token: "tok", abortSignal: abort.signal }));
500506501507expectRecoverableRetryState(2);
502508});
@@ -516,7 +522,7 @@ describe("monitorTelegramProvider (grammY)", () => {
516522api.deleteWebhook.mockRejectedValueOnce(cleanupError);
517523mockRunOnceAndAbort(abort);
518524519-await monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
525+await monitorTelegramProvider(withLegacyPolling({ token: "tok", abortSignal: abort.signal }));
520526521527expect(api.deleteWebhook).toHaveBeenCalledTimes(1);
522528expect(api.getWebhookInfo).not.toHaveBeenCalled();
@@ -531,7 +537,7 @@ describe("monitorTelegramProvider (grammY)", () => {
531537api.deleteWebhook.mockRejectedValueOnce(cleanupError);
532538mockRunOnceAndAbort(abort);
533539534-await monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
540+await monitorTelegramProvider(withLegacyPolling({ token: "tok", abortSignal: abort.signal }));
535541536542expect(api.deleteWebhook).toHaveBeenCalledTimes(1);
537543expect(api.getWebhookInfo).not.toHaveBeenCalled();
@@ -545,7 +551,7 @@ describe("monitorTelegramProvider (grammY)", () => {
545551createTelegramBotErrors.push(setupError);
546552mockRunOnceAndAbort(abort);
547553548-await monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
554+await monitorTelegramProvider(withLegacyPolling({ token: "tok", abortSignal: abort.signal }));
549555550556expectRecoverableRetryState(1);
551557});
@@ -571,7 +577,7 @@ describe("monitorTelegramProvider (grammY)", () => {
571577return makeAbortRunner(abort);
572578});
573579574-await monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
580+await monitorTelegramProvider(withLegacyPolling({ token: "tok", abortSignal: abort.signal }));
575581576582expect(firstStop).toHaveBeenCalled();
577583expectRecoverableRetryState(2);
@@ -581,7 +587,7 @@ describe("monitorTelegramProvider (grammY)", () => {
581587const abort = new AbortController();
582588mockRunOnceAndAbort(abort);
583589584-await monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
590+await monitorTelegramProvider(withLegacyPolling({ token: "tok", abortSignal: abort.signal }));
585591586592expect(createdBotStops.length).toBe(1);
587593expect(createdBotStops[0]).toHaveBeenCalledTimes(1);
@@ -591,10 +597,12 @@ describe("monitorTelegramProvider (grammY)", () => {
591597const abort = new AbortController();
592598const firstCycle = mockRunOnceWithStalledPollingRunner();
593599594-const monitor = monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
600+const monitor = monitorTelegramProvider(
601+withLegacyPolling({ token: "tok", abortSignal: abort.signal }),
602+);
595603await firstCycle.waitForRunStart();
596604597-await expect(monitorTelegramProvider({ token: "tok" })).rejects.toThrow(
605+await expect(monitorTelegramProvider(withLegacyPolling({ token: "tok" }))).rejects.toThrow(
598606"refusing duplicate poller",
599607);
600608expect(runSpy).toHaveBeenCalledTimes(1);
@@ -609,15 +617,19 @@ describe("monitorTelegramProvider (grammY)", () => {
609617const firstCycle = mockRunOnceWithStalledPollingRunner();
610618const secondCycle = mockRunOnceWithStalledPollingRunner();
611619612-const firstMonitor = monitorTelegramProvider({
613-token: "tok-a",
614-abortSignal: firstAbort.signal,
615-});
620+const firstMonitor = monitorTelegramProvider(
621+withLegacyPolling({
622+token: "tok-a",
623+abortSignal: firstAbort.signal,
624+}),
625+);
616626await firstCycle.waitForRunStart();
617-const secondMonitor = monitorTelegramProvider({
618-token: "tok-b",
619-abortSignal: secondAbort.signal,
620-});
627+const secondMonitor = monitorTelegramProvider(
628+withLegacyPolling({
629+token: "tok-b",
630+abortSignal: secondAbort.signal,
631+}),
632+);
621633await secondCycle.waitForRunStart();
622634623635expect(runSpy).toHaveBeenCalledTimes(2);
@@ -632,18 +644,22 @@ describe("monitorTelegramProvider (grammY)", () => {
632644const secondAbort = new AbortController();
633645const firstCycle = mockRunOnceWithStalledPollingRunner();
634646635-const firstMonitor = monitorTelegramProvider({
636-token: "tok",
637-abortSignal: firstAbort.signal,
638-});
647+const firstMonitor = monitorTelegramProvider(
648+withLegacyPolling({
649+token: "tok",
650+abortSignal: firstAbort.signal,
651+}),
652+);
639653await firstCycle.waitForRunStart();
640654firstAbort.abort();
641655642656const secondCycle = mockRunOnceAndAbort(secondAbort);
643-const secondMonitor = monitorTelegramProvider({
644-token: "tok",
645-abortSignal: secondAbort.signal,
646-});
657+const secondMonitor = monitorTelegramProvider(
658+withLegacyPolling({
659+token: "tok",
660+abortSignal: secondAbort.signal,
661+}),
662+);
647663await secondCycle.waitForRunStart();
648664await Promise.all([firstMonitor, secondMonitor]);
649665@@ -656,7 +672,7 @@ describe("monitorTelegramProvider (grammY)", () => {
656672const abort = new AbortController();
657673mockRunOnceAndAbort(abort);
658674659-await monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
675+await monitorTelegramProvider(withLegacyPolling({ token: "tok", abortSignal: abort.signal }));
660676661677expect(vi.getTimerCount()).toBe(0);
662678} finally {
@@ -671,15 +687,19 @@ describe("monitorTelegramProvider (grammY)", () => {
671687}),
672688);
673689674-await expect(monitorTelegramProvider({ token: "tok" })).rejects.toThrow("bad token");
690+await expect(monitorTelegramProvider(withLegacyPolling({ token: "tok" }))).rejects.toThrow(
691+"bad token",
692+);
675693});
676694677695it("force-restarts polling when unhandled network rejection stalls runner", async () => {
678696const abort = new AbortController();
679697const firstCycle = mockRunOnceWithStalledPollingRunner();
680698const secondCycle = mockRunOnceWithStalledPollingRunner();
681699682-const monitor = monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
700+const monitor = monitorTelegramProvider(
701+withLegacyPolling({ token: "tok", abortSignal: abort.signal }),
702+);
683703await firstCycle.waitForRunStart();
684704685705expect(emitUnhandledRejection(await makeTaggedPollingFetchError())).toBe(true);
@@ -697,7 +717,9 @@ describe("monitorTelegramProvider (grammY)", () => {
697717const firstCycle = mockRunOnceWithStalledPollingRunner();
698718const secondCycle = mockRunOnceWithStalledPollingRunner();
699719700-const monitor = monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
720+const monitor = monitorTelegramProvider(
721+withLegacyPolling({ token: "tok", abortSignal: abort.signal }),
722+);
701723await firstCycle.waitForRunStart();
702724703725expect(emitUncaughtException(await makeTaggedPollingFetchError())).toBe(true);
@@ -713,7 +735,9 @@ describe("monitorTelegramProvider (grammY)", () => {
713735const firstCycle = mockRunOnceWithStalledPollingRunner();
714736const secondCycle = mockRunOnceWithStalledPollingRunner();
715737716-const monitor = monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
738+const monitor = monitorTelegramProvider(
739+withLegacyPolling({ token: "tok", abortSignal: abort.signal }),
740+);
717741await firstCycle.waitForRunStart();
718742719743expect(emitUncaughtException(await makeTaggedPollingHttpError())).toBe(true);
@@ -745,7 +769,9 @@ describe("monitorTelegramProvider (grammY)", () => {
745769const firstCycle = mockRunOnceWithStalledPollingRunner();
746770const secondCycle = mockRunOnceAndAbort(abort);
747771748-const monitor = monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
772+const monitor = monitorTelegramProvider(
773+withLegacyPolling({ token: "tok", abortSignal: abort.signal }),
774+);
749775await firstCycle.waitForRunStart();
750776751777vi.advanceTimersByTime(150_000);
@@ -779,7 +805,9 @@ describe("monitorTelegramProvider (grammY)", () => {
779805.mockReturnValueOnce(rebuiltTransport);
780806const secondCycle = mockRunOnceAndAbort(abort);
781807782-const monitor = monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
808+const monitor = monitorTelegramProvider(
809+withLegacyPolling({ token: "tok", abortSignal: abort.signal }),
810+);
783811await firstCycle.waitForRunStart();
784812785813expect(emitUnhandledRejection(await makeTaggedPollingFetchError())).toBe(true);
@@ -798,7 +826,9 @@ describe("monitorTelegramProvider (grammY)", () => {
798826const { stop, waitForTaskStart } = mockRunOnceWithStalledPollingRunner();
799827const secondCycle = mockRunOnceAndAbort(abort);
800828801-const monitor = monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
829+const monitor = monitorTelegramProvider(
830+withLegacyPolling({ token: "tok", abortSignal: abort.signal }),
831+);
802832await waitForTaskStart();
803833const firstSignal = createTelegramBotCalls[0]?.fetchAbortSignal;
804834expect(firstSignal).toBeInstanceOf(AbortSignal);
@@ -817,7 +847,9 @@ describe("monitorTelegramProvider (grammY)", () => {
817847const firstCycle = mockRunOnceWithStalledPollingRunner();
818848const { stop } = firstCycle;
819849820-const monitor = monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
850+const monitor = monitorTelegramProvider(
851+withLegacyPolling({ token: "tok", abortSignal: abort.signal }),
852+);
821853await firstCycle.waitForRunStart();
822854823855const slackDnsError = Object.assign(
@@ -891,7 +923,9 @@ describe("monitorTelegramProvider (grammY)", () => {
891923const { stop } = firstCycle;
892924const secondCycle = mockRunOnceAndAbort(abort);
893925894-const monitor = monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
926+const monitor = monitorTelegramProvider(
927+withLegacyPolling({ token: "tok", abortSignal: abort.signal }),
928+);
895929await firstCycle.waitForRunStart();
896930897931// Advance time past the stall threshold (120s) + watchdog interval (30s)
@@ -910,14 +944,16 @@ describe("monitorTelegramProvider (grammY)", () => {
910944const firstCycle = mockRunOnceWithStalledPollingRunner();
911945const secondCycle = mockRunOnceAndAbort(abort);
912946913-const monitor = monitorTelegramProvider({
914-token: "tok",
915-abortSignal: abort.signal,
916-config: {
917-agents: { defaults: { maxConcurrent: 2 } },
918-channels: { telegram: { pollingStallThresholdMs: 30_000 } },
919-},
920-});
947+const monitor = monitorTelegramProvider(
948+withLegacyPolling({
949+token: "tok",
950+abortSignal: abort.signal,
951+config: {
952+agents: { defaults: { maxConcurrent: 2 } },
953+channels: { telegram: { pollingStallThresholdMs: 30_000 } },
954+},
955+}),
956+);
921957await firstCycle.waitForRunStart();
922958923959vi.advanceTimersByTime(60_000);
@@ -996,7 +1032,7 @@ describe("monitorTelegramProvider (grammY)", () => {
9961032return makeAbortRunner(abort);
9971033});
9981034999-await monitorTelegramProvider({ token: "tok", abortSignal: abort.signal });
1035+await monitorTelegramProvider(withLegacyPolling({ token: "tok", abortSignal: abort.signal }));
1000103610011037// deleteWebhook should be called twice: once on initial cleanup, once after 409 reset
10021038expect(api.deleteWebhook).toHaveBeenCalledTimes(2);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。