Skip to content

Commit 327d3b5

Browse files
authored
fix: correctly specify the SDK name under test for node-server (#126)
* fix: correctly spec sdk name * return SDK details from node-server-relay * update relay to latest SDK * fix: verify SDK connected to test runner is the same as expected * bump version patch for sdk-test-runner
1 parent 8a856c2 commit 327d3b5

File tree

6 files changed

+47
-23
lines changed

6 files changed

+47
-23
lines changed

.github/workflows/test-sdk-packages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,6 @@ jobs:
4040
uses: ./.github/workflows/test-server-sdk.yml
4141
with:
4242
platform: ${{ matrix.platform }}
43-
sdkName: 'eppo/node-server-sdk'
43+
sdkName: 'node-server-sdk'
4444
sdkRelayDir: 'node-sdk-relay'
4545
secrets: inherit

package-testing/node-sdk-relay/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"test:e2e": "jest --config ./test/jest-e2e.json"
2222
},
2323
"dependencies": {
24-
"@eppo/node-server-sdk": "^3.7.2",
24+
"@eppo/node-server-sdk": "^3.9.3",
2525
"@eslint/js": "^9.16.0",
2626
"@nestjs/common": "^10.0.0",
2727
"@nestjs/core": "^10.0.0",

package-testing/node-sdk-relay/src/app.controller.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { AssignmentDto, BanditDto, BanditTestRunnerInput } from './types';
44
import { EppoClientProxy } from './eppoClientProxy';
55
import { BanditActions, getInstance, init } from '@eppo/node-server-sdk';
66
import getLogger from './main';
7+
import { sdkName, sdkVersion } from '@eppo/node-server-sdk/dist/sdk-data';
78

89
@Controller()
910
export class AppController {
@@ -15,6 +16,11 @@ export class AppController {
1516
return this.appService.getHello();
1617
}
1718

19+
@Get('sdk/details')
20+
getSdkDetails() {
21+
return { sdkName, sdkVersion, supportsBandits: true, supportsDynamicTyping: true };
22+
}
23+
1824
@Post('flags/v1/assignment')
1925
getAssignment(@Body() requestedAssignmentBody: AssignmentDto) {
2026
return this.eppoClientProxy.getAssignment(getInstance(), requestedAssignmentBody);

package-testing/node-sdk-relay/yarn.lock

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -320,10 +320,10 @@
320320
dependencies:
321321
"@jridgewell/trace-mapping" "0.3.9"
322322

323-
"@eppo/js-client-sdk-common@4.8.4":
324-
version "4.8.4"
325-
resolved "https://registry.yarnpkg.com/@eppo/js-client-sdk-common/-/js-client-sdk-common-4.8.4.tgz#a1919233fa52399b86ce75b9eebed1c6d2bac16e"
326-
integrity sha512-cDxOOHjGU0kJLp2zXWGXaH2xcEd/oxsAT4e78jbbhktb+e5vkU3+SCFTvijFykr1h/hQ2a3O1PPP0M8HFfdrZA==
323+
"@eppo/js-client-sdk-common@4.14.1":
324+
version "4.14.1"
325+
resolved "https://registry.yarnpkg.com/@eppo/js-client-sdk-common/-/js-client-sdk-common-4.14.1.tgz#db908420c47a1327921493072892923e58c2039f"
326+
integrity sha512-trXgxPgbS+vFkYd0w0Xb2V9NntE2SgLsThhxoDbRENw1ynb8b8b3MDdwFH+5DheVT1ji6mZ+Qrh40uNIxMptYA==
327327
dependencies:
328328
buffer "npm:@eppo/[email protected]"
329329
js-base64 "^3.7.7"
@@ -332,12 +332,12 @@
332332
spark-md5 "^3.0.2"
333333
uuid "^11.0.5"
334334

335-
"@eppo/node-server-sdk@^3.7.2":
336-
version "3.7.2"
337-
resolved "https://registry.yarnpkg.com/@eppo/node-server-sdk/-/node-server-sdk-3.7.2.tgz#086f5a211ab848792afb4a9292396e60bf5bfd62"
338-
integrity sha512-rFXZx4312AbWTwB2astTCNZv1K9sMfRXvWRYJQuidfojqG8iDH0+l1nBCH9GPSNgNw4hdoh1pj4leX8tTkwRoQ==
335+
"@eppo/node-server-sdk@^3.9.3":
336+
version "3.9.3"
337+
resolved "https://registry.yarnpkg.com/@eppo/node-server-sdk/-/node-server-sdk-3.9.3.tgz#5954ed53ca676880642ed821f37ef07fe06862bd"
338+
integrity sha512-yHPTJkYhHszKWWXKrgtbBr4Ugsf4fCP+6pDi3o6zU8HJu2lK5QN+bROaKAeILwBY8dD+h8+CHZnFZpq1JmdK3g==
339339
dependencies:
340-
"@eppo/js-client-sdk-common" "4.8.4"
340+
"@eppo/js-client-sdk-common" "4.14.1"
341341

342342
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
343343
version "4.4.1"

package-testing/sdk-test-runner/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sdk-test-runner",
3-
"version": "1.3.0",
3+
"version": "1.3.1",
44
"description": "Test runner for SDK package testing",
55
"main": "src/app.ts",
66
"repository": "https://github.com/Eppo-exp/sdk-test-data",

package-testing/sdk-test-runner/src/app.ts

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,8 @@ export default class App {
4040

4141
const sdkRelay = new ClientSDKRelay();
4242
const sdkInfo = await sdkRelay.isReady();
43-
if ('errorMessage' in sdkInfo) {
44-
const error = sdkInfo as SDKConnectionFailure;
45-
log(red('SDK Relay Client failed to load: '));
46-
log(red(error.errorMessage));
43+
44+
if (!this.validateSdkInfo(sdkInfo)) {
4745
return false;
4846
}
4947

@@ -58,10 +56,8 @@ export default class App {
5856

5957
const sdkRelay = new ServerSDKRelay(this.config.sdkServer, this.config.sdkName);
6058
const sdkInfo = await sdkRelay.isReady();
61-
if ('errorMessage' in sdkInfo && typeof sdkInfo.errorMessage === 'string') {
62-
const error = sdkInfo as SDKConnectionFailure;
63-
log(red('SDK Relay Server failed to load: '));
64-
log(red(error.errorMessage));
59+
60+
if (!this.validateSdkInfo(sdkInfo)) {
6561
return false;
6662
}
6763

@@ -70,6 +66,24 @@ export default class App {
7066
return this.innerRun(sdkRelay);
7167
}
7268

69+
private validateSdkInfo(sdkInfo: SDKInfo | SDKConnectionFailure): boolean {
70+
if ('errorMessage' in sdkInfo) {
71+
const error = sdkInfo as SDKConnectionFailure;
72+
log(red('SDK Relay failed to load: '));
73+
log(red(error.errorMessage));
74+
return false;
75+
}
76+
77+
if (sdkInfo && (sdkInfo as SDKInfo).sdkName !== this.config.sdkName) {
78+
const actualName = (sdkInfo as SDKInfo).sdkName;
79+
// Throw an error as setting the test scenarios won't work if the names don't match.
80+
log(red(`SDK name ${actualName} does not match expected ${this.config.sdkName}.`));
81+
return false;
82+
}
83+
84+
return true;
85+
}
86+
7387
private printHeader(): void {
7488
log(`Running tests for ${this.config.sdkType} SDK: ${this.config.sdkName}`);
7589
log(`Test Cluster Details`);
@@ -283,9 +297,13 @@ export default class App {
283297
message: `Value ${JSON.stringify(result.result)} did not match expected ${JSON.stringify(subject.assignment)}`,
284298
});
285299

286-
logIndent(1, red('fail') + ` ${testCaseLabel}:\n` +
287-
` Expected: ${JSON.stringify(subject.assignment, null, 2)}\n` +
288-
` Received: ${JSON.stringify(result.result, null, 2)}`);
300+
logIndent(
301+
1,
302+
red('fail') +
303+
` ${testCaseLabel}:\n` +
304+
` Expected: ${JSON.stringify(subject.assignment, null, 2)}\n` +
305+
` Received: ${JSON.stringify(result.result, null, 2)}`,
306+
);
289307
} else {
290308
testCaseResult.assertions = 1;
291309

0 commit comments

Comments
 (0)