Skip to content

Commit

Permalink
Node: Fix version check - again. (valkey-io#2045)
Browse files Browse the repository at this point in the history
Fix version check.

Signed-off-by: Yury-Fridlyand <[email protected]>
  • Loading branch information
Yury-Fridlyand authored Jul 30, 2024
1 parent 089be12 commit eb1bbcf
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 28 deletions.
2 changes: 1 addition & 1 deletion node/jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ module.exports = {
"cjs",
"mjs",
],
testTimeout: 20000,
testTimeout: 600000,
reporters: [
"default",
[
Expand Down
2 changes: 1 addition & 1 deletion node/tests/RedisClient.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ describe("GlideClient", () => {
parseCommandLineArgs()["standalone-endpoints"];
// Connect to cluster or create a new one based on the parsed addresses
cluster = standaloneAddresses
? RedisCluster.initFromExistingCluster(
? await RedisCluster.initFromExistingCluster(
parseEndpoints(standaloneAddresses),
)
: await RedisCluster.createCluster(false, 1, 1);
Expand Down
2 changes: 1 addition & 1 deletion node/tests/RedisClusterClient.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ describe("GlideClusterClient", () => {
const clusterAddresses = parseCommandLineArgs()["cluster-endpoints"];
// Connect to cluster or create a new one based on the parsed addresses
cluster = clusterAddresses
? RedisCluster.initFromExistingCluster(
? await RedisCluster.initFromExistingCluster(
parseEndpoints(clusterAddresses),
)
: // setting replicaCount to 1 to facilitate tests routed to replicas
Expand Down
18 changes: 9 additions & 9 deletions node/tests/TestUtilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,7 @@ export async function transactionTest(
baseTransaction.lrange(key5, 0, -1);
responseData.push(["lrange(key5, 0, -1)", [field + "3", field + "2"]]);

if (gte("6.2.0", version)) {
if (gte(version, "6.2.0")) {
baseTransaction.lmove(
key5,
key20,
Expand Down Expand Up @@ -613,7 +613,7 @@ export async function transactionTest(
baseTransaction.sismember(key7, "bar");
responseData.push(['sismember(key7, "bar")', true]);

if (gte("6.2.0", version)) {
if (gte(version, "6.2.0")) {
baseTransaction.smismember(key7, ["bar", "foo", "baz"]);
responseData.push([
'smismember(key7, ["bar", "foo", "baz"])',
Expand Down Expand Up @@ -642,15 +642,15 @@ export async function transactionTest(
baseTransaction.zrank(key8, "member1");
responseData.push(['zrank(key8, "member1")', 0]);

if (gte("7.2.0", version)) {
if (gte(version, "7.2.0")) {
baseTransaction.zrankWithScore(key8, "member1");
responseData.push(['zrankWithScore(key8, "member1")', [0, 1]]);
}

baseTransaction.zrevrank(key8, "member5");
responseData.push(['zrevrank(key8, "member5")', 0]);

if (gte("7.2.0", version)) {
if (gte(version, "7.2.0")) {
baseTransaction.zrevrankWithScore(key8, "member5");
responseData.push(['zrevrankWithScore(key8, "member5")', [0, 5]]);
}
Expand Down Expand Up @@ -681,7 +681,7 @@ export async function transactionTest(
baseTransaction.zadd(key13, { one: 1, two: 2, three: 3.5 });
responseData.push(["zadd(key13, { one: 1, two: 2, three: 3.5 })", 3]);

if (gte("6.2.0", version)) {
if (gte(version, "6.2.0")) {
baseTransaction.zdiff([key13, key12]);
responseData.push(["zdiff([key13, key12])", ["three"]]);
baseTransaction.zdiffWithScores([key13, key12]);
Expand Down Expand Up @@ -712,7 +712,7 @@ export async function transactionTest(
);
responseData.push(["zremRangeByScore(key8, -Inf, +Inf)", 1]); // key8 is now empty

if (gte("7.0.0", version)) {
if (gte(version, "7.0.0")) {
baseTransaction.zadd(key14, { one: 1.0, two: 2.0 });
responseData.push(["zadd(key14, { one: 1.0, two: 2.0 })", 2]);
baseTransaction.zintercard([key8, key14]);
Expand Down Expand Up @@ -814,7 +814,7 @@ export async function transactionTest(
baseTransaction.get(key19);
responseData.push(["get(key19)", "`bc`ab"]);

if (gte("7.0.0", version)) {
if (gte(version, "7.0.0")) {
baseTransaction.bitcount(key17, {
start: 5,
end: 30,
Expand Down Expand Up @@ -875,7 +875,7 @@ export async function transactionTest(
[Buffer.from("one"), 1.0],
]);

if (gte("6.2.0", version)) {
if (gte(version, "6.2.0")) {
baseTransaction
.geosearch(
key18,
Expand Down Expand Up @@ -972,7 +972,7 @@ export async function transactionTest(
true,
);

if (gte("7.0.0", version)) {
if (gte(version, "7.0.0")) {
baseTransaction.functionLoad(code);
responseData.push(["functionLoad(code)", libName]);
baseTransaction.functionLoad(code, true);
Expand Down
45 changes: 29 additions & 16 deletions utils/TestUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,21 +40,26 @@ export class RedisCluster {
private clusterFolder: string | undefined;
private version: string;

private constructor(addresses: [string, number][], clusterFolder?: string) {
private constructor(
version: string,
addresses: [string, number][],
clusterFolder?: string
) {
this.addresses = addresses;
this.clusterFolder = clusterFolder;
this.version = RedisCluster.detectVersion();
this.version = version;
}

private static detectVersion(): string {
exec(`redis-server -v`, (error, stdout) => {
if (error) {
throw error;
} else {
return stdout.split("v=")[1].split(" ")[0];
}
});
return "0.0.0"; // unreachable;
private static async detectVersion(): Promise<string> {
return new Promise<string>((resolve, reject) =>
exec(`redis-server -v`, (error, stdout) => {
if (error) {
reject(error);
} else {
resolve(stdout.split("v=")[1].split(" ")[0]);
}
})
);
}

public static createCluster(
Expand Down Expand Up @@ -93,17 +98,25 @@ export class RedisCluster {
} else {
const { clusterFolder, addresses: ports } =
parseOutput(stdout);
resolve(new RedisCluster(ports, clusterFolder));

resolve(
RedisCluster.detectVersion().then(
(ver) =>
new RedisCluster(ver, ports, clusterFolder)
)
);
}
}
);
});
}

public static initFromExistingCluster(
public static async initFromExistingCluster(
addresses: [string, number][]
): RedisCluster {
return new RedisCluster(addresses, "");
): Promise<RedisCluster> {
return RedisCluster.detectVersion().then(
(ver) => new RedisCluster(ver, addresses, "")
);
}

public ports(): number[] {
Expand All @@ -119,7 +132,7 @@ export class RedisCluster {
}

public checkIfServerVersionLessThan(minVersion: string): boolean {
return lt(minVersion, this.version);
return lt(this.version, minVersion);
}

public async close() {
Expand Down

0 comments on commit eb1bbcf

Please sign in to comment.