Skip to content

Commit 9cb1976

Browse files
authored
[CI] change tests to use node test runner and assertions (#15)
removed tests that target the core/jetstream/kv/obj modules, as these are module tests which are covered in their respective modules.
1 parent 6a768bc commit 9cb1976

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1329
-7317
lines changed

deno.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@
3131
"check-dependencies": "bin/check-dep-versions.ts"
3232
},
3333
"fmt": {
34-
"include": ["transport-deno/", "bin/", "core/", "debug/", "jetstream/", "kv/", "obj/", "services/", "*.md"],
35-
"exclude": ["*/lib", "*/build", "docs/", "transport-node/"]
34+
"include": ["transport-deno/", "bin/", "core/", "debug/", "jetstream/", "kv/", "obj/", "services/", "*.md", "transport-node/"],
35+
"exclude": ["*/lib", "*/build", "docs/"]
3636
},
3737
"lint": {
38-
"exclude": ["*/lib", "*/build", "docs/", "transport-node/"]
38+
"exclude": ["*/lib", "*/build", "docs/"]
3939
},
4040
"scopes": {
4141
"*": {

jetstream/tests/jsm_test.ts

+59-55
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ import {
6161
assertThrowsAsyncErrorCode,
6262
cleanup,
6363
connect,
64+
flakyTest,
6465
jetstreamExportServerConf,
6566
jetstreamServerConf,
6667
NatsServer,
@@ -946,68 +947,71 @@ Deno.test("jsm - cross account streams", async () => {
946947
await cleanup(ns, nc, admin);
947948
});
948949

949-
Deno.test("jsm - cross account consumers", async () => {
950-
const { ns, nc } = await _setup(connect, jetstreamExportServerConf(), {
951-
user: "a",
952-
pass: "s3cret",
953-
});
954-
955-
const sawIPA = deferred();
956-
nc.subscribe("IPA.>", {
957-
callback: () => {
958-
sawIPA.resolve();
959-
},
960-
max: 1,
961-
});
962-
963-
const jsm = await jetstreamManager(nc, { apiPrefix: "IPA" });
964-
await sawIPA;
965-
966-
// add a stream
967-
const stream = nuid.next();
968-
const subj = `${stream}.A`;
969-
await jsm.streams.add({ name: stream, subjects: [subj] });
970-
971-
let consumers = await jsm.consumers.list(stream).next();
972-
assertEquals(consumers.length, 0);
950+
Deno.test(
951+
"jsm - cross account consumers",
952+
flakyTest(async () => {
953+
const { ns, nc } = await _setup(connect, jetstreamExportServerConf(), {
954+
user: "a",
955+
pass: "s3cret",
956+
});
973957

974-
await jsm.consumers.add(stream, {
975-
durable_name: "me",
976-
ack_policy: AckPolicy.Explicit,
977-
});
958+
const sawIPA = deferred();
959+
nc.subscribe("IPA.>", {
960+
callback: () => {
961+
sawIPA.resolve();
962+
},
963+
max: 1,
964+
});
978965

979-
// cannot publish to the stream from the client account
980-
// publish from the js account
981-
const admin = await connect({ port: ns.port, user: "js", pass: "js" });
982-
admin.publish(subj);
983-
admin.publish(subj);
984-
await admin.flush();
966+
const jsm = await jetstreamManager(nc, { apiPrefix: "IPA" });
967+
await sawIPA;
985968

986-
consumers = await jsm.consumers.list(stream).next();
987-
assertEquals(consumers.length, 1);
988-
assertEquals(consumers[0].name, "me");
989-
assertEquals(consumers[0].config.durable_name, "me");
990-
assertEquals(consumers[0].num_pending, 2);
969+
// add a stream
970+
const stream = nuid.next();
971+
const subj = `${stream}.A`;
972+
await jsm.streams.add({ name: stream, subjects: [subj] });
991973

992-
const ci = await jsm.consumers.info(stream, "me");
993-
assertEquals(ci.name, "me");
994-
assertEquals(ci.config.durable_name, "me");
995-
assertEquals(ci.num_pending, 2);
974+
let consumers = await jsm.consumers.list(stream).next();
975+
assertEquals(consumers.length, 0);
996976

997-
const ok = await jsm.consumers.delete(stream, "me");
998-
assertEquals(ok, true);
977+
await jsm.consumers.add(stream, {
978+
durable_name: "me",
979+
ack_policy: AckPolicy.Explicit,
980+
});
999981

1000-
await assertRejects(
1001-
async () => {
1002-
await jsm.consumers.info(stream, "me");
1003-
},
1004-
Error,
1005-
"consumer not found",
1006-
undefined,
1007-
);
982+
// cannot publish to the stream from the client account
983+
// publish from the js account
984+
const admin = await connect({ port: ns.port, user: "js", pass: "js" });
985+
admin.publish(subj);
986+
admin.publish(subj);
987+
await admin.flush();
988+
989+
consumers = await jsm.consumers.list(stream).next();
990+
assertEquals(consumers.length, 1);
991+
assertEquals(consumers[0].name, "me");
992+
assertEquals(consumers[0].config.durable_name, "me");
993+
assertEquals(consumers[0].num_pending, 2);
994+
995+
const ci = await jsm.consumers.info(stream, "me");
996+
assertEquals(ci.name, "me");
997+
assertEquals(ci.config.durable_name, "me");
998+
assertEquals(ci.num_pending, 2);
999+
1000+
const ok = await jsm.consumers.delete(stream, "me");
1001+
assertEquals(ok, true);
1002+
1003+
await assertRejects(
1004+
async () => {
1005+
await jsm.consumers.info(stream, "me");
1006+
},
1007+
Error,
1008+
"consumer not found",
1009+
undefined,
1010+
);
10081011

1009-
await cleanup(ns, nc, admin);
1010-
});
1012+
await cleanup(ns, nc, admin);
1013+
}),
1014+
);
10111015

10121016
Deno.test("jsm - jetstream error info", async () => {
10131017
const { ns, nc } = await _setup(connect, jetstreamServerConf({}));

jetstream/tests/next_test.ts

+37-28
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,13 @@
1313
* limitations under the License.
1414
*/
1515

16-
import { _setup, cleanup, connect, jetstreamServerConf } from "test_helpers";
16+
import {
17+
_setup,
18+
cleanup,
19+
connect,
20+
flakyTest,
21+
jetstreamServerConf,
22+
} from "test_helpers";
1723
import { initStream } from "./jstest_util.ts";
1824
import { AckPolicy, DeliverPolicy } from "../src/jsapi_types.ts";
1925
import { assertEquals, assertRejects } from "jsr:@std/assert";
@@ -111,33 +117,36 @@ Deno.test("next - listener leaks", async () => {
111117
await cleanup(ns, nc);
112118
});
113119

114-
Deno.test("next - consumer not found", async () => {
115-
const { ns, nc } = await _setup(connect, jetstreamServerConf());
116-
const jsm = await jetstreamManager(nc);
117-
await jsm.streams.add({ name: "A", subjects: ["hello"] });
118-
119-
await jsm.consumers.add("A", {
120-
durable_name: "a",
121-
deliver_policy: DeliverPolicy.All,
122-
ack_policy: AckPolicy.Explicit,
123-
});
124-
125-
const js = jetstream(nc);
126-
const c = await js.consumers.get("A", "a");
127-
await c.delete();
128-
await delay(1000);
129-
130-
const exited = assertRejects(
131-
async () => {
132-
await c.next({ expires: 1000 });
133-
},
134-
Error,
135-
"consumer not found",
136-
);
137-
138-
await exited;
139-
await cleanup(ns, nc);
140-
});
120+
Deno.test(
121+
"next - consumer not found",
122+
flakyTest(async () => {
123+
const { ns, nc } = await _setup(connect, jetstreamServerConf());
124+
const jsm = await jetstreamManager(nc);
125+
await jsm.streams.add({ name: "A", subjects: ["hello"] });
126+
127+
await jsm.consumers.add("A", {
128+
durable_name: "a",
129+
deliver_policy: DeliverPolicy.All,
130+
ack_policy: AckPolicy.Explicit,
131+
});
132+
133+
const js = jetstream(nc);
134+
const c = await js.consumers.get("A", "a");
135+
await c.delete();
136+
await delay(1000);
137+
138+
const exited = assertRejects(
139+
async () => {
140+
await c.next({ expires: 1000 });
141+
},
142+
Error,
143+
"consumer not found",
144+
);
145+
146+
await exited;
147+
await cleanup(ns, nc);
148+
}),
149+
);
141150

142151
Deno.test("next - deleted consumer", async () => {
143152
const { ns, nc } = await _setup(connect, jetstreamServerConf());

test_helpers/mod.ts

+17
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,20 @@ export async function notCompatible(
144144
}
145145
return false;
146146
}
147+
148+
export function flakyTest(
149+
fn: () => void | Promise<void>,
150+
{ count = 3 } = {},
151+
): () => Promise<void> {
152+
return async () => {
153+
const errors: Error[] = [];
154+
for (let i = 0; i < count; i++) {
155+
try {
156+
return await fn();
157+
} catch (error) {
158+
errors.push(error);
159+
}
160+
}
161+
throw new AggregateError(errors);
162+
}
163+
}

transport-node/bin/check-bundle-version.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,20 @@ if (m.version !== VERSION) {
5454
}
5555

5656
let tag = Deno.env.get("RELEASE_VERSION");
57-
if(tag) {
58-
if(tag.startsWith("v")) {
57+
if (tag) {
58+
if (tag.startsWith("v")) {
5959
tag = tag.substring(1);
6060
}
6161

62-
if(m.version !== tag) {
63-
console.error(`[ERROR] expected RELEASE_VERSION and package versions to match ${tag} !== ${m.version}`);
62+
if (m.version !== tag) {
63+
console.error(
64+
`[ERROR] expected RELEASE_VERSION and package versions to match ${tag} !== ${m.version}`,
65+
);
6466
Deno.exit(1);
6567
}
6668
console.log(`[OK] RELEASE_VERSION and package versions match ${tag}`);
6769
} else {
6870
console.log(`[SKIP] tag check`);
6971
}
7072

71-
7273
Deno.exit(0);

transport-node/bin/cjs-fix-imports.ts

-104
This file was deleted.

transport-node/dependencies.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
This file lists the dependencies used in this repository.
44

55
| Dependency | License |
6-
|---------------------------------------------| ---------- |
6+
| ------------------------------------------- | ---------- |
77
| https://github.com/nats-io/nats.deno | Apache-2.0 |
88
| https://github.com/nats-io/[email protected] | Apache-2.0 |
99
| Dev Dependencies | |

0 commit comments

Comments
 (0)