Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions __tests__/e2e/ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -135,3 +135,9 @@ s plan -t ./s.yaml
s info -y -t ./s.yaml
s remove -y -t ./s.yaml
cd ..

echo "test session operations ..."
cd session
export fc_component_function_name=session-$(uname)-$(uname -m)-$RANDSTR
bash ./run
cd ..
11 changes: 11 additions & 0 deletions __tests__/e2e/session/code/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
'use strict';

exports.initializer = (context, callback) => {
console.log('initializing session test function');
callback(null, '');
};

exports.handler = (event, context, callback) => {
console.log('hello session test');
callback(null, 'hello session test');
};
135 changes: 135 additions & 0 deletions __tests__/e2e/session/run
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
#!/bin/bash

set -e
set -v

echo "test session operations..."

# Deploy function first
echo "Deploying function..."
s deploy -y

# Test create session
echo "Testing create session..."
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')
if [ -z "$sessionId" ]; then
echo "Failed to create session"
exit 1
fi
echo "Created session: $sessionId"

# Test get session
echo "Testing get session..."
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)
if [ -z "$getSessionResult" ]; then
echo "Failed to get session"
exit 1
fi
echo "Get session result: $getSessionResult"

# Test update session (update sessionTTLInSeconds)
echo "Testing update session with session-ttl-in-seconds..."
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)
if [ -z "$updateResult" ]; then
echo "Failed to update session with session-ttl-in-seconds"
exit 1
fi
echo "Update session result: $updateResult"

# Test update session (update sessionIdleTimeoutInSeconds)
echo "Testing update session with session-idle-timeout-in-seconds..."
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)
if [ -z "$updateResult2" ]; then
echo "Failed to update session with session-idle-timeout-in-seconds"
exit 1
fi
echo "Update session result: $updateResult2"

# Test list sessions
echo "Testing list sessions..."
listResult=$(s cli fc3 session list -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} -o json)
if [ -z "$listResult" ]; then
echo "Failed to list sessions"
exit 1
fi
echo "List sessions result: $listResult"

# Test list sessions with filters
echo "Testing list sessions with filters..."
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)
if [ -z "$listFilteredResult" ]; then
echo "Failed to list sessions with filters"
exit 1
fi
echo "List sessions with filters result: $listFilteredResult"

# Test list sessions with session-status filter
echo "Testing list sessions with session-status filter..."
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)
if [ -z "$listStatusResult" ]; then
echo "Failed to list sessions with session-status filter"
exit 1
fi
echo "List sessions with session-status filter result: $listStatusResult"

# Test list sessions with limit parameter
echo "Testing list sessions with limit parameter..."
listLimitResult=$(s cli fc3 session list -a quanxi --region cn-hangzhou --function-name fc3-session-${fc_component_function_name:-test} --limit 5 -o json)
if [ -z "$listLimitResult" ]; then
echo "Failed to list sessions with limit parameter"
exit 1
fi
echo "List sessions with limit parameter result: $listLimitResult"

# Test remove session
echo "Testing remove session..."
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)
echo "Remove session result: $removeResult"

# Verify session is removed by trying to get it (should fail)
echo "Verifying session is removed..."
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)
if [[ $getRemovedSessionResult == *"not found"* ]] || [[ $getRemovedSessionResult == *"not exist"* ]]; then
echo "Session successfully removed"
else
echo "Session removal verification failed: $getRemovedSessionResult"
# Don't exit here as this might be a timing issue
fi

# Test create session without optional parameters (should use defaults)
echo "Testing create session with default parameters..."
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')
if [ -z "$sessionId2" ]; then
echo "Failed to create session with default parameters"
exit 1
fi
echo "Created session with defaults: $sessionId2"

# Test create session with only sessionTTLInSeconds
echo "Testing create session with only session-ttl-in-seconds..."
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')
if [ -z "$sessionId3" ]; then
echo "Failed to create session with only session-ttl-in-seconds"
exit 1
fi
echo "Created session with only session-ttl-in-seconds: $sessionId3"

# Test create session with only sessionIdleTimeoutInSeconds
echo "Testing create session with only session-idle-timeout-in-seconds..."
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')
if [ -z "$sessionId4" ]; then
echo "Failed to create session with only session-idle-timeout-in-seconds"
exit 1
fi
echo "Created session with only session-idle-timeout-in-seconds: $sessionId4"

# Clean up additional sessions
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
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
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

# Clean up function
echo "Cleaning up..."
s remove -y

echo "All session tests passed!"
77 changes: 77 additions & 0 deletions __tests__/e2e/session/run-windows.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
$ErrorActionPreference = "Stop"

Write-Host "test session operations..."

# Deploy function first
Write-Host "Deploying function..."
s deploy -y

# Test create session
Write-Host "Testing create session..."
$createResult = s cli fc3 session create -a quanxi --region cn-hangzhou --function-name "fc3-session-$($env:fc_component_function_name)" --qualifier LATEST --session-ttl-in-seconds 3600 --session-idle-timeout-in-seconds 1800 -o json | ConvertFrom-Json
$sessionId = $createResult.sessionId
if ([string]::IsNullOrEmpty($sessionId)) {
Write-Error "Failed to create session"
exit 1
}
Write-Host "Created session: $sessionId"

# Test get session
Write-Host "Testing get session..."
$getResult = s cli fc3 session get -a quanxi --region cn-hangzhou --function-name "fc3-session-$($env:fc_component_function_name)" --session-id $sessionId --qualifier LATEST -o json | ConvertFrom-Json
if ($null -eq $getResult) {
Write-Error "Failed to get session"
exit 1
}
Write-Host "Get session result: $($getResult | ConvertTo-Json)"

# Test update session
Write-Host "Testing update session..."
$updateResult = s cli fc3 session update -a quanxi --region cn-hangzhou --function-name "fc3-session-$($env:fc_component_function_name)" --session-id $sessionId --qualifier LATEST --session-ttl-in-seconds 7200 -o json | ConvertFrom-Json
if ($null -eq $updateResult) {
Write-Error "Failed to update session"
exit 1
}
Write-Host "Update session result: $($updateResult | ConvertTo-Json)"

# Test list sessions
Write-Host "Testing list sessions..."
$listResult = s cli fc3 session list -a quanxi --region cn-hangzhou --function-name "fc3-session-$($env:fc_component_function_name)" -o json | ConvertFrom-Json
if ($null -eq $listResult) {
Write-Error "Failed to list sessions"
exit 1
}
Write-Host "List sessions result: $($listResult | ConvertTo-Json)"

# Test list sessions with filters
Write-Host "Testing list sessions with filters..."
$listFilteredResult = s cli fc3 session -a quanxi --region cn-hangzhou list --function-name "fc3-session-$($env:fc_component_function_name)" --session-id $sessionId --qualifier LATEST -o json | ConvertFrom-Json
if ($null -eq $listFilteredResult) {
Write-Error "Failed to list sessions with filters"
exit 1
}
Write-Host "List sessions with filters result: $($listFilteredResult | ConvertTo-Json)"

# Test remove session
Write-Host "Testing remove session..."
$removeResult = s cli fc3 session remove -a quanxi --region cn-hangzhou --function-name "fc3-session-$($env:fc_component_function_name)" --session-id $sessionId --qualifier LATEST -y -o json
Write-Host "Remove session result: $removeResult"

# Test create session without optional parameters (should use defaults)
Write-Host "Testing create session with default parameters..."
$createResult2 = s cli fc3 session create -a quanxi --region cn-hangzhou --function-name "fc3-session-$($env:fc_component_function_name)" --qualifier LATEST -o json | ConvertFrom-Json
$sessionId2 = $createResult2.sessionId
if ([string]::IsNullOrEmpty($sessionId2)) {
Write-Error "Failed to create session with default parameters"
exit 1
}
Write-Host "Created session with defaults: $sessionId2"

# Clean up second session
s cli fc3 session remove -a quanxi --region cn-hangzhou --function-name "fc3-session-$($env:fc_component_function_name)" --session-id $sessionId2 --qualifier LATEST -y

# Clean up function
Write-Host "Cleaning up..."
s remove -y

Write-Host "All session tests passed!"
23 changes: 23 additions & 0 deletions __tests__/e2e/session/s.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
edition: 3.0.0
name: session-test
access: quanxi

vars:
region: ${env('REGION', 'cn-hongkong')}

resources:
sessionTest:
component: ../../..
props:
region: ${vars.region}
functionName: fc3-session-${env('fc_component_function_name', 'test')}
runtime: nodejs18
code: ./code
handler: index.handler
memorySize: 128
timeout: 60
sessionAffinity: GENERATED_COOKIE
instanceLifecycleConfig:
initializer:
handler: index.initializer
timeout: 10
Loading