Skip to content

Commit 1586992

Browse files
authored
Merge pull request #148 from devsapp/fix-session
fix: fix session
2 parents 1fb1c4f + b901a4a commit 1586992

8 files changed

Lines changed: 342 additions & 114 deletions

File tree

__tests__/e2e/session/run

Lines changed: 29 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
set -e
44
set -v
55

6+
REGION=${REGION:-cn-hangzhou}
7+
68
echo "test session operations..."
79

810
# Deploy function first
@@ -11,16 +13,25 @@ s deploy -y
1113

1214
# Test create session
1315
echo "Testing create session..."
14-
sessionId=$(s cli fc3 session create -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --qualifier LATEST --session-ttl-in-seconds 3600 --session-idle-timeout-in-seconds 1800 -o json | jq -r '.sessionId')
16+
sessionId=$(s cli fc3 session create --region $REGION --function-name fc3-session-${fc_component_function_name:-test} --qualifier LATEST --session-ttl-in-seconds 3600 --session-idle-timeout-in-seconds 1800 -o json | jq -r '.sessionId')
1517
if [ -z "$sessionId" ]; then
1618
echo "Failed to create session"
1719
exit 1
1820
fi
1921
echo "Created session: $sessionId"
2022

23+
# Test create session with disable-session-id-reuse
24+
echo "Testing create session with disable-session-id-reuse..."
25+
sessionIdDisableReuse=$(s cli fc3 session create --region $REGION --function-name fc3-session-${fc_component_function_name:-test} --qualifier LATEST --disable-session-id-reuse -o json | jq -r '.sessionId')
26+
if [ -z "$sessionIdDisableReuse" ]; then
27+
echo "Failed to create session with disable-session-id-reuse"
28+
exit 1
29+
fi
30+
echo "Created session with disable-session-id-reuse: $sessionIdDisableReuse"
31+
2132
# Test get session
2233
echo "Testing get session..."
23-
getSessionResult=$(s cli fc3 session get -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId --qualifier LATEST -o json)
34+
getSessionResult=$(s cli fc3 session get --region $REGION --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId --qualifier LATEST -o json)
2435
if [ -z "$getSessionResult" ]; then
2536
echo "Failed to get session"
2637
exit 1
@@ -29,25 +40,25 @@ echo "Get session result: $getSessionResult"
2940

3041
# Test update session (update sessionTTLInSeconds)
3142
echo "Testing update session with session-ttl-in-seconds..."
32-
updateResult=$(s cli fc3 session update -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId --qualifier LATEST --session-ttl-in-seconds 7200 -o json)
43+
updateResult=$(s cli fc3 session update --region $REGION --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId --qualifier LATEST --session-ttl-in-seconds 7200 -o json)
3344
if [ -z "$updateResult" ]; then
3445
echo "Failed to update session with session-ttl-in-seconds"
3546
exit 1
3647
fi
3748
echo "Update session result: $updateResult"
3849

39-
# Test update session (update sessionIdleTimeoutInSeconds)
40-
echo "Testing update session with session-idle-timeout-in-seconds..."
41-
updateResult2=$(s cli fc3 session update -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId --qualifier LATEST --session-idle-timeout-in-seconds 3600 -o json)
42-
if [ -z "$updateResult2" ]; then
43-
echo "Failed to update session with session-idle-timeout-in-seconds"
50+
# Test update session with disable-session-id-reuse
51+
echo "Testing update session with disable-session-id-reuse..."
52+
updateDisableReuseResult=$(s cli fc3 session update --region $REGION --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId --qualifier LATEST --disable-session-id-reuse -o json)
53+
if [ -z "$updateDisableReuseResult" ]; then
54+
echo "Failed to update session with disable-session-id-reuse"
4455
exit 1
4556
fi
46-
echo "Update session result: $updateResult2"
57+
echo "Update session with disable-session-id-reuse result: $updateDisableReuseResult"
4758

4859
# Test list sessions
4960
echo "Testing list sessions..."
50-
listResult=$(s cli fc3 session list -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} -o json)
61+
listResult=$(s cli fc3 session list --region $REGION --function-name fc3-session-${fc_component_function_name:-test} -o json)
5162
if [ -z "$listResult" ]; then
5263
echo "Failed to list sessions"
5364
exit 1
@@ -56,77 +67,26 @@ echo "List sessions result: $listResult"
5667

5768
# Test list sessions with filters
5869
echo "Testing list sessions with filters..."
59-
listFilteredResult=$(s cli fc3 session list -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId --qualifier LATEST -o json)
70+
listFilteredResult=$(s cli fc3 session list --region $REGION --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId --qualifier LATEST -o json)
6071
if [ -z "$listFilteredResult" ]; then
6172
echo "Failed to list sessions with filters"
6273
exit 1
6374
fi
6475
echo "List sessions with filters result: $listFilteredResult"
6576

66-
# Test list sessions with session-status filter
67-
echo "Testing list sessions with session-status filter..."
68-
listStatusResult=$(s cli fc3 session list -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --session-status Active -o json)
77+
# Test list sessions with session-status filter (correct case)
78+
echo "Testing list sessions with session-status filter (Active)..."
79+
listStatusResult=$(s cli fc3 session list --region $REGION --function-name fc3-session-${fc_component_function_name:-test} --session-status Active -o json)
6980
if [ -z "$listStatusResult" ]; then
7081
echo "Failed to list sessions with session-status filter"
7182
exit 1
7283
fi
7384
echo "List sessions with session-status filter result: $listStatusResult"
7485

75-
# Test list sessions with limit parameter
76-
echo "Testing list sessions with limit parameter..."
77-
listLimitResult=$(s cli fc3 session list -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --limit 5 -o json)
78-
if [ -z "$listLimitResult" ]; then
79-
echo "Failed to list sessions with limit parameter"
80-
exit 1
81-
fi
82-
echo "List sessions with limit parameter result: $listLimitResult"
83-
84-
# Test remove session
85-
echo "Testing remove session..."
86-
removeResult=$(s cli fc3 session remove -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId --qualifier LATEST -y -o json)
87-
echo "Remove session result: $removeResult"
88-
89-
# Verify session is removed by trying to get it (should fail)
90-
echo "Verifying session is removed..."
91-
getRemovedSessionResult=$(s cli fc3 session get -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId --qualifier LATEST -o json 2>&1 || true)
92-
if [[ $getRemovedSessionResult == *"not found"* ]] || [[ $getRemovedSessionResult == *"not exist"* ]]; then
93-
echo "Session successfully removed"
94-
else
95-
echo "Session removal verification failed: $getRemovedSessionResult"
96-
# Don't exit here as this might be a timing issue
97-
fi
98-
99-
# Test create session without optional parameters (should use defaults)
100-
echo "Testing create session with default parameters..."
101-
sessionId2=$(s cli fc3 session create -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --qualifier LATEST -o json | jq -r '.sessionId')
102-
if [ -z "$sessionId2" ]; then
103-
echo "Failed to create session with default parameters"
104-
exit 1
105-
fi
106-
echo "Created session with defaults: $sessionId2"
107-
108-
# Test create session with only sessionTTLInSeconds
109-
echo "Testing create session with only session-ttl-in-seconds..."
110-
sessionId3=$(s cli fc3 session create -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --qualifier LATEST --session-ttl-in-seconds 1800 -o json | jq -r '.sessionId')
111-
if [ -z "$sessionId3" ]; then
112-
echo "Failed to create session with only session-ttl-in-seconds"
113-
exit 1
114-
fi
115-
echo "Created session with only session-ttl-in-seconds: $sessionId3"
116-
117-
# Test create session with only sessionIdleTimeoutInSeconds
118-
echo "Testing create session with only session-idle-timeout-in-seconds..."
119-
sessionId4=$(s cli fc3 session create -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --qualifier LATEST --session-idle-timeout-in-seconds 900 -o json | jq -r '.sessionId')
120-
if [ -z "$sessionId4" ]; then
121-
echo "Failed to create session with only session-idle-timeout-in-seconds"
122-
exit 1
123-
fi
124-
echo "Created session with only session-idle-timeout-in-seconds: $sessionId4"
125-
126-
# Clean up additional sessions
127-
s cli fc3 session remove -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId2 --qualifier LATEST -y || true
128-
s cli fc3 session remove -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId3 --qualifier LATEST -y || true
129-
s cli fc3 session remove -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId4 --qualifier LATEST -y || true
86+
# Test remove sessions
87+
echo "Testing remove sessions..."
88+
s cli fc3 session remove --region $REGION --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionId --qualifier LATEST -y || true
89+
s cli fc3 session remove --region $REGION --function-name fc3-session-${fc_component_function_name:-test} --session-id $sessionIdDisableReuse --qualifier LATEST -y || true
13090

13191
# Clean up function
13292
echo "Cleaning up..."

__tests__/e2e/session/s.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
edition: 3.0.0
22
name: session-test
3-
access: quanxi
3+
access: default
44

55
vars:
6-
region: ${env('REGION', 'cn-hongkong')}
6+
region: ${env('REGION', 'cn-hangzhou')}
77

88
resources:
99
sessionTest:

__tests__/ut/commands/session_test.ts

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,153 @@ describe('Session', () => {
187187
},
188188
});
189189
});
190+
191+
it('should create session with disableSessionIdReuse when provided', async () => {
192+
const mockResult = {
193+
sessionId: 'session-123',
194+
qualifier: 'LATEST',
195+
sessionTTLInSeconds: 3600,
196+
sessionIdleTimeoutInSeconds: 1800,
197+
disableSessionIdReuse: true,
198+
};
199+
200+
mockFcSdk.createFunctionSession = jest.fn().mockResolvedValue(mockResult);
201+
mockInputs.args = [
202+
'create',
203+
'--qualifier',
204+
'LATEST',
205+
'--session-ttl-in-seconds',
206+
'3600',
207+
'--session-idle-timeout-in-seconds',
208+
'1800',
209+
'--disable-session-id-reuse',
210+
];
211+
session = new Session(mockInputs);
212+
213+
const result = await session.create();
214+
expect(result).toEqual(mockResult);
215+
expect(mockFcSdk.createFunctionSession).toHaveBeenCalledWith('test-function', {
216+
qualifier: 'LATEST',
217+
sessionTTLInSeconds: 3600,
218+
sessionIdleTimeoutInSeconds: 1800,
219+
disableSessionIdReuse: true,
220+
});
221+
});
222+
223+
it('should create session with custom sessionId when provided', async () => {
224+
const mockResult = {
225+
sessionId: 'custom-session-id',
226+
qualifier: 'LATEST',
227+
sessionTTLInSeconds: 3600,
228+
sessionIdleTimeoutInSeconds: 1800,
229+
};
230+
231+
mockFcSdk.createFunctionSession = jest.fn().mockResolvedValue(mockResult);
232+
mockInputs.args = [
233+
'create',
234+
'--qualifier',
235+
'LATEST',
236+
'--session-ttl-in-seconds',
237+
'3600',
238+
'--session-idle-timeout-in-seconds',
239+
'1800',
240+
'--session-id',
241+
'custom-session-id',
242+
];
243+
session = new Session(mockInputs);
244+
245+
const result = await session.create();
246+
expect(result).toEqual(mockResult);
247+
expect(mockFcSdk.createFunctionSession).toHaveBeenCalledWith('test-function', {
248+
qualifier: 'LATEST',
249+
sessionTTLInSeconds: 3600,
250+
sessionIdleTimeoutInSeconds: 1800,
251+
sessionId: 'custom-session-id',
252+
});
253+
});
254+
255+
it('should create session with ossMountConfig when provided', async () => {
256+
const mockResult = {
257+
sessionId: 'session-123',
258+
qualifier: 'LATEST',
259+
sessionTTLInSeconds: 3600,
260+
sessionIdleTimeoutInSeconds: 1800,
261+
};
262+
263+
mockFcSdk.createFunctionSession = jest.fn().mockResolvedValue(mockResult);
264+
mockInputs.args = [
265+
'create',
266+
'--qualifier',
267+
'LATEST',
268+
'--session-ttl-in-seconds',
269+
'3600',
270+
'--session-idle-timeout-in-seconds',
271+
'1800',
272+
'--oss-mount-config',
273+
'{"mountPoints":[{"bucketName":"test-bucket","bucketPath":"cn-hangzhou","mountDir":"/mnt/oss","readOnly":false}]}',
274+
];
275+
session = new Session(mockInputs);
276+
277+
const result = await session.create();
278+
expect(result).toEqual(mockResult);
279+
expect(mockFcSdk.createFunctionSession).toHaveBeenCalledWith('test-function', {
280+
qualifier: 'LATEST',
281+
sessionTTLInSeconds: 3600,
282+
sessionIdleTimeoutInSeconds: 1800,
283+
ossMountConfig: {
284+
mountPoints: [
285+
{
286+
bucketName: 'test-bucket',
287+
bucketPath: 'cn-hangzhou',
288+
mountDir: '/mnt/oss',
289+
readOnly: false,
290+
},
291+
],
292+
},
293+
});
294+
});
295+
296+
it('should create session with polarFsConfig when provided', async () => {
297+
const mockResult = {
298+
sessionId: 'session-123',
299+
qualifier: 'LATEST',
300+
sessionTTLInSeconds: 3600,
301+
sessionIdleTimeoutInSeconds: 1800,
302+
};
303+
304+
mockFcSdk.createFunctionSession = jest.fn().mockResolvedValue(mockResult);
305+
mockInputs.args = [
306+
'create',
307+
'--qualifier',
308+
'LATEST',
309+
'--session-ttl-in-seconds',
310+
'3600',
311+
'--session-idle-timeout-in-seconds',
312+
'1800',
313+
'--polar-fs-config',
314+
'{"userId":1000,"groupId":1000,"mountPoints":[{"polarDbClusterId":"pc-test","instanceId":"pfs-test","mountDir":"/mnt/polar"}]}',
315+
];
316+
session = new Session(mockInputs);
317+
318+
const result = await session.create();
319+
expect(result).toEqual(mockResult);
320+
expect(mockFcSdk.createFunctionSession).toHaveBeenCalledWith('test-function', {
321+
qualifier: 'LATEST',
322+
sessionTTLInSeconds: 3600,
323+
sessionIdleTimeoutInSeconds: 1800,
324+
polarFsConfig: {
325+
userId: 1000,
326+
groupId: 1000,
327+
mountPoints: [
328+
{
329+
polarDbClusterId: 'pc-test',
330+
instanceId: 'pfs-test',
331+
mountDir: '/mnt/polar',
332+
},
333+
],
334+
},
335+
});
336+
});
190337
});
191338

192339
describe('get', () => {
@@ -267,6 +414,18 @@ describe('Session', () => {
267414
};
268415

269416
mockFcSdk.updateFunctionSession = jest.fn().mockResolvedValue(mockResult);
417+
mockInputs.args = [
418+
'update',
419+
'--session-id',
420+
'session-123',
421+
'--qualifier',
422+
'LATEST',
423+
'--session-ttl-in-seconds',
424+
'7200',
425+
'--session-idle-timeout-in-seconds',
426+
'3600',
427+
];
428+
session = new Session(mockInputs);
270429

271430
const result = await session.update();
272431
expect(result).toEqual(mockResult);
@@ -321,6 +480,40 @@ describe('Session', () => {
321480
'timeout must be a number between 0 and 21600',
322481
);
323482
});
483+
484+
it('should update session with disableSessionIdReuse when provided', async () => {
485+
const mockResult = {
486+
sessionId: 'session-123',
487+
qualifier: 'LATEST',
488+
sessionTTLInSeconds: 7200,
489+
sessionIdleTimeoutInSeconds: 3600,
490+
disableSessionIdReuse: true,
491+
};
492+
493+
mockFcSdk.updateFunctionSession = jest.fn().mockResolvedValue(mockResult);
494+
mockInputs.args = [
495+
'update',
496+
'--session-id',
497+
'session-123',
498+
'--qualifier',
499+
'LATEST',
500+
'--session-ttl-in-seconds',
501+
'7200',
502+
'--session-idle-timeout-in-seconds',
503+
'3600',
504+
'--disable-session-id-reuse',
505+
];
506+
session = new Session(mockInputs);
507+
508+
const result = await session.update();
509+
expect(result).toEqual(mockResult);
510+
expect(mockFcSdk.updateFunctionSession).toHaveBeenCalledWith('test-function', 'session-123', {
511+
qualifier: 'LATEST',
512+
sessionTTLInSeconds: 7200,
513+
sessionIdleTimeoutInSeconds: 3600,
514+
disableSessionIdReuse: true,
515+
});
516+
});
324517
});
325518

326519
describe('list', () => {

0 commit comments

Comments
 (0)