Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { setup } from "rivetkit";

Check failure on line 1 in rivetkit-typescript/packages/rivetkit/fixtures/driver-test-suite/registry-static.ts

View workflow job for this annotation

GitHub Actions / RivetKit / Quality Check

format

Formatter would have printed the following content:
// This file is the single static registry source for the driver fixtures.
// Static runs import this registry directly, and dynamic runs reuse its types and actor metadata.
import {
Expand Down Expand Up @@ -40,7 +40,6 @@
hibernationActor,
hibernationSleepWindowActor,
} from "./hibernation";
import { inlineClientActor } from "./inline-client";
import {
beforeConnectTimeoutActor,
beforeConnectRejectActor,
Expand Down Expand Up @@ -213,8 +212,6 @@
// From error-handling.ts
errorHandlingActor,
customTimeoutActor,
// From inline-client.ts
inlineClientActor,
// From kv.ts
kvActor,
// From queue.ts
Expand Down
138 changes: 59 additions & 79 deletions rivetkit-typescript/packages/rivetkit/src/driver-test-suite/mod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import { runActorStateTests } from "./tests/actor-state";
import { runActorConnStatusTests } from "./tests/actor-conn-status";
import { runActorErrorHandlingTests } from "./tests/actor-error-handling";
import { runActorHandleTests } from "./tests/actor-handle";
import { runActorInlineClientTests } from "./tests/actor-inline-client";
import { runActorInspectorTests } from "./tests/actor-inspector";
import { runActorKvTests } from "./tests/actor-kv";
import { runActorMetadataTests } from "./tests/actor-metadata";
Expand Down Expand Up @@ -56,7 +55,6 @@ export interface SkipTests {
schedule?: boolean;
sleep?: boolean;
hibernation?: boolean;
inline?: boolean;
sandbox?: boolean;
agentOs?: boolean;
}
Expand Down Expand Up @@ -85,25 +83,13 @@ export interface DriverTestConfig {
/** Restrict which encodings to test. Defaults to all (bare, cbor, json). */
encodings?: Encoding[];

/** Restrict which client types to test. Defaults to http + inline (unless skip.inline is set). */
clientTypes?: ClientType[];

encoding?: Encoding;

isDynamic?: boolean;

clientType: ClientType;

cleanup?: () => Promise<void>;
}

/**
* The type of client to run the test with.
*
* The logic for HTTP vs inline is very different, so this helps validate all behavior matches.
**/
type ClientType = "http" | "inline";

export interface DriverDeployOutput {
endpoint: string;
namespace: string;
Expand All @@ -117,115 +103,109 @@ export interface DriverDeployOutput {

/** Runs all Vitest tests against the provided drivers. */
export function runDriverTests(
driverTestConfigPartial: Omit<DriverTestConfig, "clientType" | "encoding">,
driverTestConfigPartial: Omit<DriverTestConfig, "encoding">,
) {
describe("Driver Tests", () => {
const clientTypes: ClientType[] = driverTestConfigPartial.clientTypes
?? (driverTestConfigPartial.skip?.inline ? ["http"] : ["http", "inline"]);
for (const clientType of clientTypes) {
describe(`client type (${clientType})`, () => {
const encodings: Encoding[] = driverTestConfigPartial.encodings ?? ["bare", "cbor", "json"];

for (const encoding of encodings) {
describe(`encoding (${encoding})`, () => {
const driverTestConfig: DriverTestConfig = {
...driverTestConfigPartial,
clientType,
encoding,
};
const encodings: Encoding[] = driverTestConfigPartial.encodings ?? [
"bare",
"cbor",
"json",
];

runActorStateTests(driverTestConfig);
runActorScheduleTests(driverTestConfig);
runActorSleepTests(driverTestConfig);
runActorSleepDbTests(driverTestConfig);
runActorLifecycleTests(driverTestConfig);
runManagerDriverTests(driverTestConfig);
for (const encoding of encodings) {
describe(`encoding (${encoding})`, () => {
const driverTestConfig: DriverTestConfig = {
...driverTestConfigPartial,
encoding,
};

runActorConnTests(driverTestConfig);
runActorStateTests(driverTestConfig);
runActorScheduleTests(driverTestConfig);
runActorSleepTests(driverTestConfig);
runActorSleepDbTests(driverTestConfig);
runActorLifecycleTests(driverTestConfig);
runManagerDriverTests(driverTestConfig);

runActorConnStateTests(driverTestConfig);
runActorConnTests(driverTestConfig);

runActorConnHibernationTests(driverTestConfig);
runActorConnStateTests(driverTestConfig);

runActorConnStatusTests(driverTestConfig);
runActorConnHibernationTests(driverTestConfig);

runConnErrorSerializationTests(driverTestConfig);
runActorConnStatusTests(driverTestConfig);

runActorDbTests(driverTestConfig);
runConnErrorSerializationTests(driverTestConfig);

runActorDestroyTests(driverTestConfig);
runActorDbTests(driverTestConfig);

runRequestAccessTests(driverTestConfig);
runActorDestroyTests(driverTestConfig);

runActorHandleTests(driverTestConfig);
runRequestAccessTests(driverTestConfig);

runActionFeaturesTests(driverTestConfig);
runActorHandleTests(driverTestConfig);

runAccessControlTests(driverTestConfig);
runActionFeaturesTests(driverTestConfig);

runActorVarsTests(driverTestConfig);
runAccessControlTests(driverTestConfig);

runActorMetadataTests(driverTestConfig);
runActorVarsTests(driverTestConfig);

runActorOnStateChangeTests(driverTestConfig);
runActorMetadataTests(driverTestConfig);

runActorErrorHandlingTests(driverTestConfig);
runActorOnStateChangeTests(driverTestConfig);

runActorQueueTests(driverTestConfig);
runActorErrorHandlingTests(driverTestConfig);

runActorRunTests(driverTestConfig);
runActorQueueTests(driverTestConfig);

runActorSandboxTests(driverTestConfig);
runActorRunTests(driverTestConfig);

if (
driverTestConfig.isDynamic &&
!driverTestConfig.skip?.sleep
) {
runDynamicReloadTests(driverTestConfig);
}
runActorSandboxTests(driverTestConfig);

runActorInlineClientTests(driverTestConfig);
if (
driverTestConfig.isDynamic &&
!driverTestConfig.skip?.sleep
) {
runDynamicReloadTests(driverTestConfig);
}

runActorKvTests(driverTestConfig);
runActorKvTests(driverTestConfig);

runActorWorkflowTests(driverTestConfig);
runActorWorkflowTests(driverTestConfig);

runActorStatelessTests(driverTestConfig);
runActorStatelessTests(driverTestConfig);

runRawHttpTests(driverTestConfig);
runRawHttpTests(driverTestConfig);

runRawHttpRequestPropertiesTests(driverTestConfig);
runRawHttpRequestPropertiesTests(driverTestConfig);

runRawWebSocketTests(driverTestConfig);
runHibernatableWebSocketProtocolTests(driverTestConfig);
runRawWebSocketTests(driverTestConfig);
runHibernatableWebSocketProtocolTests(driverTestConfig);

runRawHttpDirectRegistryTests(driverTestConfig);
runRawHttpDirectRegistryTests(driverTestConfig);

runRawWebSocketDirectRegistryTests(driverTestConfig);
runRawWebSocketDirectRegistryTests(driverTestConfig);

runActorInspectorTests(driverTestConfig);
runGatewayQueryUrlTests(driverTestConfig);
runGatewayRoutingTests(driverTestConfig);
runActorInspectorTests(driverTestConfig);
runGatewayQueryUrlTests(driverTestConfig);
runGatewayRoutingTests(driverTestConfig);

runLifecycleHooksTests(driverTestConfig);
runLifecycleHooksTests(driverTestConfig);

runActorDbRawTests(driverTestConfig);
runActorDbRawTests(driverTestConfig);

runActorDbPragmaMigrationTests(driverTestConfig);
runActorDbPragmaMigrationTests(driverTestConfig);

runActorStateZodCoercionTests(driverTestConfig);
runActorStateZodCoercionTests(driverTestConfig);

runActorAgentOsTests(driverTestConfig);
});
}
runActorAgentOsTests(driverTestConfig);
});
}

// Stress tests for DB lifecycle races, event loop blocking, and
// native database behavior. Run once, not per-encoding.
runActorDbStressTests({
...driverTestConfigPartial,
clientType: "http",
encoding: "bare",
});
});
Expand Down
Loading
Loading