Skip to content

Commit

Permalink
fixed testing
Browse files Browse the repository at this point in the history
  • Loading branch information
avifenesh committed Jun 4, 2024
1 parent e93129a commit 49c9421
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 44 deletions.
3 changes: 1 addition & 2 deletions .github/workflows/build-node-wrapper/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,5 @@ runs:
working-directory: ./node
run: |
source "$HOME/.cargo/env"
TARGET_FLAG=`if [ "${{ inputs.target }}" != '' ]; then echo "--target ${{ inputs.target }}"; fi`
BUILD_FLAG=`if [ "${{ inputs.publish }}" == 'true' ]; then echo "build:release"; else echo "build"; fi`
npm run $BUILD_FLAG --build-flags="$TARGET_FLAG"
npm run $BUILD_FLAG
2 changes: 1 addition & 1 deletion node/tests/RedisClusterClient.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ type Context = {
client: RedisClusterClient;
};

const TIMEOUT = 10000;
const TIMEOUT = 50000;

describe("RedisClusterClient", () => {
let testsFailed = 0;
Expand Down
107 changes: 66 additions & 41 deletions node/tests/SharedTests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2473,7 +2473,7 @@ export function runBaseTests<Context>(config: {

// Set command tests

async function setWithExpiryOptions(client: BaseClient) {
async function setWithExpiryOptions(client: BaseClient): Promise<boolean> {
const key = uuidv4();
const value = uuidv4();
const setResWithExpirySetMilli = await client.set(key, value, {
Expand All @@ -2499,7 +2499,7 @@ export function runBaseTests<Context>(config: {
const setWithUnixSec = await client.set(key, value, {
expiry: {
type: "unixSeconds",
count: 1,
count: Math.floor(Date.now() / 1000) + 1,
},
});
expect(setWithUnixSec).toEqual("OK");
Expand All @@ -2513,46 +2513,59 @@ export function runBaseTests<Context>(config: {
const getResWithExpiryKeep = await client.get(key);
expect(getResWithExpiryKeep).toEqual(value);
// wait for the key to expire base on the previous set
setTimeout(() => {}, 1000);
let sleep = new Promise((resolve) => setTimeout(resolve, 1000));
await sleep;
const getResExpire = await client.get(key);
// key should have expired
expect(getResExpire).toEqual(null);

const setResWithExpiryWithUmilli = await client.set(key, value, {
expiry: {
type: "unixMilliseconds",
count: 2,
count: Date.now() + 1000,
},
});
expect(setResWithExpiryWithUmilli).toEqual("OK");
// wait for the key to expire
setTimeout(() => {}, 3);
sleep = new Promise((resolve) => setTimeout(resolve, 1001));
await sleep;
const getResWithExpiryWithUmilli = await client.get(key);
// key should have expired
expect(getResWithExpiryWithUmilli).toEqual(null);

return true;
}

async function setWithOnlyIfExistOptions(client: BaseClient) {
async function setWithOnlyIfExistOptions(
client: BaseClient,
): Promise<boolean> {
const key = uuidv4();
const value = uuidv4();
const setKey = await client.set(key, value);
expect(setKey).toEqual("OK");
const getRes = await client.get(key);
expect(getRes).toEqual(value);
const setExistingKeyRes = await client.set(key, value, {
conditionalSet: "onlyIfExists",
});
expect(setExistingKeyRes).toEqual("OK");
const getExistingKeyRes = await client.get(key);
expect(getExistingKeyRes).toEqual(value);

const notExistingKeyRes = await client.set(key, value + "1", {
const notExistingKeyRes = await client.set(key + 1, value, {
conditionalSet: "onlyIfExists",
});
// key does not exist, so it should not be set
expect(notExistingKeyRes).toEqual(null);
const getNotExistingKey = await client.get(key);
const getNotExistingKey = await client.get(key + 1);
// key should not have been set
expect(getNotExistingKey).toEqual(null);

return true;
}

async function setWithOnlyIfNotExistOptions(client: BaseClient) {
async function setWithOnlyIfNotExistOptions(
client: BaseClient,
): Promise<boolean> {
const key = uuidv4();
const value = uuidv4();
const notExistingKeyRes = await client.set(key, value, {
Expand All @@ -2572,9 +2585,11 @@ export function runBaseTests<Context>(config: {
const getExistingKey = await client.get(key);
// key should not have been set
expect(getExistingKey).toEqual(value);

return true;
}

async function setWithGetOldOptions(client: BaseClient) {
async function setWithGetOldOptions(client: BaseClient): Promise<boolean> {
const key = uuidv4();
const value = uuidv4();

Expand All @@ -2595,18 +2610,20 @@ export function runBaseTests<Context>(config: {
// key should have been set
const getResGetExistOld = await client.get(key);
expect(getResGetExistOld).toEqual(value);

return true;
}

async function setWithAllOptions(client: BaseClient) {
async function setWithAllOptions(client: BaseClient): Promise<boolean> {
const key = uuidv4();
const value = uuidv4();

const setResWithAllOptions = await client.set(key, value, {
expiry: {
type: "unixSeconds",
count: 1,
count: Math.floor(Date.now() / 1000) + 1,
},
conditionalSet: "onlyIfExists",
conditionalSet: "onlyIfDoesNotExist",
returnOldValue: true,
});
// key does not exist, so old value should be null
Expand All @@ -2616,13 +2633,18 @@ export function runBaseTests<Context>(config: {
expect(getResWithAllOptions).toEqual(value);

// wait for the key to expire
setTimeout(() => {}, 1000);
const sleep = new Promise((resolve) => setTimeout(resolve, 1001));
await sleep;
// key should have expired
const gettResWithAllOptions = await client.get(key);
expect(gettResWithAllOptions).toEqual(null);

return true;
}

async function testSetWithAllCombination(client: BaseClient) {
async function testSetWithAllCombination(
client: BaseClient,
): Promise<boolean> {
const key = uuidv4();
const value = uuidv4();
const count = 1;
Expand All @@ -2644,40 +2666,43 @@ export function runBaseTests<Context>(config: {
for (const expiryVal of expiryCombination) {
for (const conditionalSetVal of conditionalSetCombination) {
for (const returnOldValueVal of returnOldValueCombination) {
const setRes = await client.set(key, value, {
expiry: expiryVal as
| "keepExisting"
| {
type:
| "seconds"
| "milliseconds"
| "unixSeconds"
| "unixMilliseconds";
count: number;
}
| undefined,
conditionalSet: conditionalSetVal as
| "onlyIfExists"
| "onlyIfDoesNotExist"
| undefined,
returnOldValue: returnOldValueVal,
});
expect(setRes).not.toBeNull();
expect(async () => {
await client.set(key, value, {
expiry: expiryVal as
| "keepExisting"
| {
type:
| "seconds"
| "milliseconds"
| "unixSeconds"
| "unixMilliseconds";
count: number;
}
| undefined,
conditionalSet: conditionalSetVal as
| "onlyIfExists"
| "onlyIfDoesNotExist"
| undefined,
returnOldValue: returnOldValueVal,
});
}).not.toThrowError();
}
}
}

return true;
}

it.each([ProtocolVersion.RESP2, ProtocolVersion.RESP3])(
"Set commands with options test_%p",
async (protocol) => {
await runTest(async (client: BaseClient) => {
await setWithExpiryOptions(client);
await setWithOnlyIfExistOptions(client);
await setWithOnlyIfNotExistOptions(client);
await setWithGetOldOptions(client);
await setWithAllOptions(client);
await testSetWithAllCombination(client);
expect(await setWithExpiryOptions(client)).toBeTruthy();
expect(await setWithOnlyIfExistOptions(client)).toBeTruthy();
expect(await setWithOnlyIfNotExistOptions(client)).toBeTruthy();
expect(await setWithGetOldOptions(client)).toBeTruthy();
expect(await setWithAllOptions(client)).toBeTruthy();
expect(await testSetWithAllCombination(client)).toBeTruthy();
}, protocol);
},
config.timeout,
Expand Down

0 comments on commit 49c9421

Please sign in to comment.