diff --git a/tests/e2e/.desktop.env b/tests/e2e/.desktop.env index a67cb0e06d..a4f603c76c 100644 --- a/tests/e2e/.desktop.env +++ b/tests/e2e/.desktop.env @@ -24,6 +24,9 @@ OSS_STANDALONE_EMPTY_PORT=8105 OSS_STANDALONE_REDISGEARS_HOST=localhost OSS_STANDALONE_REDISGEARS_PORT=8106 +OSS_CLUSTER_REDISGEARS_2_HOST=localhost +OSS_CLUSTER_REDISGEARS_2_PORT=8107 + OSS_CLUSTER_HOST=localhost OSS_CLUSTER_PORT=8200 diff --git a/tests/e2e/helpers/conf.ts b/tests/e2e/helpers/conf.ts index e8c1ef643c..f4ee80f89a 100644 --- a/tests/e2e/helpers/conf.ts +++ b/tests/e2e/helpers/conf.ts @@ -144,3 +144,9 @@ export const ossStandaloneRedisGears = { databaseUsername: process.env.OSS_STANDALONE_REDISGEARS_USERNAME, databasePassword: process.env.OSS_STANDALONE_REDISGEARS_PASSWORD }; + +export const ossClusterRedisGears = { + ossClusterHost: process.env.OSS_CLUSTER_REDISGEARS_2_HOST || 'gears-cluster-2-0-node-1', + ossClusterPort: process.env.OSS_CLUSTER_REDISGEARS_2_PORT || '6379', + ossClusterDatabaseName: `${process.env.OSS_CLUSTER_REDISGEARS_2_NAME || 'test_cluster-gears-2.0'}-${uniqueId}` +}; diff --git a/tests/e2e/rte.docker-compose.yml b/tests/e2e/rte.docker-compose.yml index 15db1b3f03..0f3dde512d 100644 --- a/tests/e2e/rte.docker-compose.yml +++ b/tests/e2e/rte.docker-compose.yml @@ -68,7 +68,7 @@ services: image: redislabs/redismod ports: - 8102:6379 - + oss-standalone-redisgears-2-0: image: redislabs/redisgears:edge ports: @@ -160,6 +160,54 @@ services: default: ipv4_address: 172.31.100.223 + # oss cluster with redisgears 2 + gears-cluster-2-0-creator: + image: redis:latest + entrypoint: ['/bin/sh', '-c', 'redis-cli --cluster create 172.31.100.191:6379 172.31.100.192:6379 172.31.100.193:6379 172.31.100.194:6379 172.31.100.195:6379 172.31.100.196:6379 --cluster-replicas 1 --cluster-yes && tail -f /dev/null'] + depends_on: + - gears-cluster-2-0-node-1 + - gears-cluster-2-0-node-2 + - gears-cluster-2-0-node-3 + - gears-cluster-2-0-node-4 + - gears-cluster-2-0-node-5 + - gears-cluster-2-0-node-6 + gears-cluster-2-0-node-1: + image: &gears-cluster-img redislabs/redisgears:edge + command: &gears-cluster-cmd redis-server --protected-mode no --loadmodule /build/target/release/libredisgears.so v8-plugin-path /build/target/release/libredisgears_v8_plugin.so --cluster-enabled yes + networks: + default: + ipv4_address: 172.31.100.191 + gears-cluster-2-0-node-2: + image: *gears-cluster-img + command: *gears-cluster-cmd + networks: + default: + ipv4_address: 172.31.100.192 + gears-cluster-2-0-node-3: + image: *gears-cluster-img + command: *gears-cluster-cmd + networks: + default: + ipv4_address: 172.31.100.193 + gears-cluster-2-0-node-4: + image: *gears-cluster-img + command: *gears-cluster-cmd + networks: + default: + ipv4_address: 172.31.100.194 + gears-cluster-2-0-node-5: + image: *gears-cluster-img + command: *gears-cluster-cmd + networks: + default: + ipv4_address: 172.31.100.195 + gears-cluster-2-0-node-6: + image: *gears-cluster-img + command: *gears-cluster-cmd + networks: + default: + ipv4_address: 172.31.100.196 + # redis enterprise redis-enterprise: build: ./rte/redis-enterprise diff --git a/tests/e2e/tests/critical-path/triggers-and-functions/libraries.e2e.ts b/tests/e2e/tests/critical-path/triggers-and-functions/libraries.e2e.ts index 29373076ad..1a38453e2a 100644 --- a/tests/e2e/tests/critical-path/triggers-and-functions/libraries.e2e.ts +++ b/tests/e2e/tests/critical-path/triggers-and-functions/libraries.e2e.ts @@ -5,7 +5,11 @@ import { TriggersAndFunctionsFunctionsPage, TriggersAndFunctionsLibrariesPage } from '../../../pageObjects'; -import { commonUrl, ossStandaloneRedisGears } from '../../../helpers/conf'; +import { + commonUrl, + ossClusterRedisGears, + ossStandaloneRedisGears +} from '../../../helpers/conf'; import { rte } from '../../../helpers/constants'; import { DatabaseAPIRequests } from '../../../helpers/api/api-database'; import { Common } from '../../../helpers/common'; @@ -55,3 +59,28 @@ test('Verify that function can be invoked', async t => { await t.expect(await triggersAndFunctionsFunctionsPage.Cli.getExecutedCommandTextByIndex()).eql(expectedCommand); await t.click(triggersAndFunctionsFunctionsPage.Cli.cliCollapseButton); }); +test.before(async() => { + await databaseHelper.acceptLicenseTermsAndAddOSSClusterDatabase(ossClusterRedisGears); +}).after(async() => { + await databaseAPIRequests.deleteOSSClusterDatabaseApi(ossClusterRedisGears); +})('Verify that function can be invoked in cluster', async t => { + const functionNameFromFile = 'function'; + const libNameFromFile = 'lib'; + const keyName = ['Hello']; + const argumentsName = ['world', '!!!' ]; + const expectedCommand = `TFCALL "${libNameFromFile}.${functionNameFromFile}" "${keyName.length}" "${keyName}" "${argumentsName.join('" "')}"`; + + await t.click(browserPage.NavigationPanel.triggeredFunctionsButton); + await t.click(triggersAndFunctionsFunctionsPage.librariesLink); + await t.click(triggersAndFunctionsLibrariesPage.addLibraryButton); + await t.setFilesToUpload(triggersAndFunctionsLibrariesPage.uploadInput, [filePathes.invoke]); + await t.click(triggersAndFunctionsLibrariesPage.addLibrarySubmitButton); + await t.click(triggersAndFunctionsLibrariesPage.functionsLink); + await t.click(triggersAndFunctionsFunctionsPage.getFunctionsNameSelector(functionNameFromFile)); + await t.click(triggersAndFunctionsFunctionsPage.invokeButton); + await triggersAndFunctionsFunctionsPage.enterFunctionArguments(argumentsName); + await triggersAndFunctionsFunctionsPage.enterFunctionKeyName(keyName); + await t.click(triggersAndFunctionsFunctionsPage.runInCliButton); + await t.expect(await triggersAndFunctionsFunctionsPage.Cli.getExecutedCommandTextByIndex()).eql(expectedCommand); + await t.click(triggersAndFunctionsFunctionsPage.Cli.cliCollapseButton); +});